用戶管理命令(10個命令)


useradd命令

useradd命令:創建新用戶或更新默認的新用戶信息

格式:useradd(選項)(參數)

參數:

-c<備注>:加上備注文字。備注文字會保存在passwd的備注欄位中;
-d<登入目錄>:指定用戶登入時的啟始目錄;
-D:變更預設值;
-e<有效期限>:指定帳號的有效期限;
-f<緩沖天數>:指定在密碼過期后多少天即關閉該帳號;
-g<群組>:指定用戶所屬的群組;
-G<群組>:指定用戶所屬的附加群組;
-m:自動建立用戶的登入目錄;
-M:不要自動建立用戶的登入目錄;
-n:取消建立以用戶名稱為名的群組;
-r:建立系統帳號;
-s<shell>:指定用戶登入后所使用的shell;
-u<uid>:指定用戶id。

注意:

uid范圍:

centos7:

0     超級管理員    
1-200 系統用戶,由系統分配給系統進程使用
201-999 系統用戶,用來運行服務賬戶,不需要登陸系統(動態分配)
1000+ 普通用戶

centos6

1-499 系統用戶
500+  普通用戶

例子:

# 新建用戶加入組:
useradd –g sales jack –G company,employees    //-g:加入主要組、-G:加入次要組

# 建立一個新用戶賬戶,並設置ID:
useradd caojh -u 544

usermod命令

usermod命令:修改系統已經存在的用戶屬性。

格式:usermod(選項)(參數)

參數:

-c<備注>:修改用戶帳號的備注文字;
-d<登入目錄>:修改用戶登入時的目錄;
-e<有效期限>:修改帳號的有效期限;
-f<緩沖天數>:修改在密碼過期后多少天即關閉該帳號;
-g<群組>:修改用戶所屬的群組;
-G<群組>;修改用戶所屬的附加群組;
-l<帳號名稱>:修改用戶帳號名稱;
-L:鎖定用戶密碼,使密碼無效;
-s<shell>:修改用戶登入后所使用的shell;
-u<uid>:修改用戶ID;
-U:解除密碼鎖定。

例子:

# 將newuser2添加到組staff中:
usermod -G staff newuser2

# 修改newuser的用戶名為newuser1:
usermod -l newuser1 newuser

# 鎖定賬號newuser1:
usermod -L newuser1

# 解除對newuser1的鎖定:
usermod -U newuser1

userdel命令

userdel命令:刪除給定的用戶,以及與用戶相關的文件。若不加選項,則僅刪除用戶帳號,而不刪除相關文件。

格式:userdel [options] LOGIN

參數:

-f:強制刪除用戶,即使用戶當前已登錄;
-r:刪除用戶的同時,刪除與用戶相關的所有文件。

例子:

userdel命令很簡單,比如我們現在有個用戶linuxde,其家目錄位於/var目錄中,現在我們來刪除這個用戶:

userdel linuxde       //刪除用戶linuxde,但不刪除其家目錄及文件;
userdel -r linuxde    //刪除用戶linuxde,其家目錄及文件一並刪除;

請不要輕易用-r選項;他會刪除用戶的同時刪除用戶所有的文件和目錄,切記如果用戶目錄下有重要的文件,在刪除前請備份。

其實也有最簡單的辦法,但這種辦法有點不安全,也就是直接在/etc/passwd中刪除您想要刪除用戶的記錄;但最好不要這樣做,/etc/passwd是極為重要的文件,可能您一不小心會操作失誤。

groupadd命令

groupadd命令:用於創建一個新的工作組,新工作組的信息將被添加到系統文件中。

格式:groupadd [options] group

參數:

-g:指定新建工作組的id;
-r:創建系統工作組,系統工作組的組ID小於500;
-K:覆蓋配置文件“/ect/login.defs”;
-o:允許添加組ID號不唯一的工作組。

例子:

# 建立一個新組,並設置組ID加入系統:
[root@xxx ~]# groupadd -g 344 linuxde

passwd命令

passwd命令:用於設置用戶的認證信息,包括用戶密碼、密碼過期時間等。系統管理者則能用它管理系統用戶的密碼。只有管理者可以指定用戶名稱,一般用戶只能變更自己的密碼。

格式:

passwd  [-k]  [-l]  [-u  [-f]]  [-d] [-e] [-n mindays] [-x maxdays] [-w
       warndays] [-i inactivedays] [-S] [--stdin] [username]

參數

-d:刪除密碼,僅有系統管理者才能使用;
-f:強制執行;
-k:設置只有在密碼過期失效后,方能更新;
-l:鎖住密碼;
-s:列出密碼的相關信息,僅有系統管理者才能使用;
-u:解開已上鎖的帳號。

例子:

# root賬戶能修改密碼,普通用戶只能修改自己的密碼
[root@localhost ~]# passwd linuxde    //更改或創建linuxde用戶的密碼;
Changing password for user linuxde.
New UNIX password:          //請輸入新密碼;
Retype new UNIX password:   //再輸入一次;
passwd: all authentication tokens updated successfully. //成功;
# 普通用戶如果想更改自己的密碼,直接運行passwd即可,比如當前操作的用戶是linuxde。
[linuxde@localhost ~]$ passwd
Changing password for user linuxde. //更改linuxde用戶的密碼;
(current) UNIX password:   //請輸入當前密碼;
New UNIX password:         //請輸入新密碼;
Retype new UNIX password:  //確認新密碼;
passwd: all authentication tokens updated successfully. //更改成功;
# 讓某個用戶不能修改密碼,可以用`-l`選項來鎖定:
[root@localhost ~]# passwd -l linuxde    //鎖定用戶linuxde不能更改密碼;
Locking password for user linuxde.
passwd: Success           //鎖定成功;

[linuxde@localhost ~]# su linuxde   //通過su切換到linuxde用戶;
[linuxde@localhost ~]$ passwd      //linuxde來更改密碼;
Changing password for user linuxde.
Changing password for linuxde
(current) UNIX password:          //輸入linuxde的當前密碼;
passwd: Authentication token manipulation error     //失敗,不能更改密碼;
# -d參數清空用戶密碼
[root@localhost ~]# passwd -d linuxde  //清除linuxde用戶密碼;
Removing password for user linuxde.
passwd: Success                         //清除成功;

[root@localhost ~]# passwd -S linuxde    //查詢linuxde用戶密碼狀態;
Empty password.                         //空密碼,也就是沒有密碼;

chage命令

chage命令:用來修改帳號和密碼的有效期限。

參數:

-m:密碼可更改的最小天數。為零時代表任何時候都可以更改密碼。
-M:密碼保持有效的最大天數。
-w:用戶密碼到期前,提前收到警告信息的天數。
-E:帳號到期的日期。過了這天,此帳號將不可用。
-d:上一次更改的日期。
-i:停滯時期。如果一個密碼已過期這些天,那么此帳號將不可用。
-l:例出當前的設置。由非特權用戶來確定他們的密碼或帳號何時過期。

例子:

# 查看root賬戶密碼的策略
[root@xxx ~]# chage -l root
Last password change                                    : never
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

#密碼保持有效的最大天數
[root@xxx ~]# chage -l boy
Last password change                                    : Jul 19, 2019
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

[root@xxx ~]# chage -M 60 boy

[root@xxx ~]# chage -l boy
Last password change                                    : Jul 19, 2019
Password expires                                        : Sep 17, 2019
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 60
Number of days of warning before password expires       : 7

id命令

id命令:打印真實有效的用戶和組id

參數:

-g或--group   顯示用戶所屬群組的ID。
-G或--groups   顯示用戶所屬附加群組的ID。
-n或--name    顯示用戶,所屬群組或附加群組的名稱。
-r或--real    顯示實際ID。
-u或--user    顯示用戶ID。
-help         顯示幫助。
-version      顯示版本信息。

例子:

# 用戶組為1000
[root@xxx ~]# id -g boy
1000

# 附加組為1000
[root@xxx ~]# id -G boy
1000

# 用戶uid為1000
[root@xxx ~]# id -u boy
1000

su命令

su命令:使用替代用戶和組ID運行命令

參數:

-c<指令>或--command=<指令>:執行完指定的指令后,即恢復原來的身份;
-f或——fast:適用於csh與tsch,使shell不用去讀取啟動文件;
-l或——login:改變身份時,也同時變更工作目錄,以及HOME,SHELL,USER,logname。此外,也會變更PATH變量;
-m,-p或--preserve-environment:變更身份時,不要變更環境變量;
-s<shell>或--shell=<shell>:指定要執行的shell;
--help:顯示幫助;
--version;顯示版本信息。

例子:

# 切換后boy沒有權限訪問root的家目錄
[root@xxx ~]# su -c ls boy
ls: cannot open directory .: Permission denied
[root@xxx ~]# su -c ls root
1          2.txt            mongodb-linux-x86_64-rhel70-4.0.10.tgz  test2.txt
1.txt      anaconda-ks.cfg  pwd
1.txt.bak  etc.tar.gz       sent

# 切換為boy同時更換家目錄
[root@xxx ~]# su -l boy
Last login: Fri Jul 19 04:22:40 EDT 2019 on pts/0
[boy@xxx ~]$ pwd
/home/boy

visudo命令

visudo命令:編輯 / etc/sudoers 文件的專屬命令。

例子:

[root@xxx ~]# cat /etc/sudoers
## Sudoers allows particular users to run various commands as  
## the root user, without needing the root password.  
## 該文件允許特定用戶像root用戶一樣使用各種各樣的命令,而不需要root用戶的密碼  
##  
## Examples are provided at the bottom of the file for collections  
## of related commands, which can then be delegated out to particular  
## users or groups.  
## 在文件的底部提供了很多相關命令的示例以供選擇,這些示例都可以被特定用戶或  
## 用戶組所使用   
##  
## This file must be edited with the 'visudo' command.  
## 該文件必須使用"visudo"命令編輯  
  
## Host Aliases  
## Groups of machines. You may prefer to use hostnames (perhaps using   
## wildcards for entire domains) or IP addresses instead.  
## 對於一組服務器,你可能會更喜歡使用主機名(可能是全域名的通配符)  
## 、或IP地址,這時可以配置主機別名  
# Host_Alias     FILESERVERS = fs1, fs2  
# Host_Alias     MAILSERVERS = smtp, smtp2  
  
## User Aliases  
## These aren't often necessary, as you can use regular groups  
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname   
## rather than USERALIAS  
## 這並不很常用,因為你可以通過使用組來代替一組用戶的別名  
# User_Alias ADMINS = jsmith, mikem  
  
## Command Aliases  
## These are groups of related commands...  
## 指定一系列相互關聯的命令(當然可以是一個)的別名,通過賦予該別名sudo權限,  
## 可以通過sudo調用所有別名包含的命令,下面是一些示例  
  
## Networking 網絡操作相關命令別名  
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient  
, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig  
, /sbin/mii-tool  
  
## Installation and management of software 軟件安裝管理相關命令別名  
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum  
  
## Services 服務相關命令別名  
# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig  
  
## Updating the locate database 本地數據庫升級命令別名  
# Cmnd_Alias LOCATE = /usr/bin/updatedb  
  
## Storage 磁盤操作相關命令別名  
# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe  
, /bin/mount, /bin/umount  
  
## Delegating permissions 代理權限相關命令別名  
# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp   
  
## Processes 進程相關命令別名  
# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall  
  
## Drivers 驅動命令別名  
# Cmnd_Alias DRIVERS = /sbin/modprobe  
  
# Defaults specification  
  
#  
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.   
#         You have to run "ssh -t hostname sudo <cmd>".  
# 一些環境變量的相關配置,具體情況可見man soduers  
Defaults    requiretty  
  
Defaults    env_reset  
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"  
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"  
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"  
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"  
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"  
  
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin  
  
## Next comes the main part: which users can run what software on   
## which machines (the sudoers file can be shared between multiple  
## systems).  
## 下面是規則配置:什么用戶在哪台服務器上可以執行哪些命令(sudoers文件可以在多個系統上共享)  
## Syntax(語法):  
##  
##  user    MACHINE=COMMANDS 用戶 登錄的主機=(可以變換的身份) 可以執行的命令  
##  
## The COMMANDS section may have other options added to it.  
## 命令部分可以附帶一些其它的選項  
##  
## Allow root to run any commands anywhere   
## 允許root用戶執行任意路徑下的任意命令  
root    ALL=(ALL)   ALL  
  
## Allows members of the 'sys' group to run networking, software,   
## service management apps and more.  
## 允許sys中戶組中的用戶使用NETWORKING等所有別名中配置的命令  
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE  
, DRIVERS  
  
## Allows people in group wheel to run all commands  
## 允許wheel用戶組中的用戶執行所有命令  
%wheel  ALL=(ALL)   ALL  
  
## Same thing without a password  
## 允許wheel用戶組中的用戶在不輸入該用戶的密碼的情況下使用所有命令  
# %wheel    ALL=(ALL)   NOPASSWD: ALL  
  
## Allows members of the users group to mount and unmount the   
## cdrom as root  
## 允許users用戶組中的用戶像root用戶一樣使用mount、unmount、chrom命令  
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom  
  
## Allows members of the users group to shutdown this system  
## 允許users用戶組中的用戶關閉localhost這台服務器  
# %users  localhost=/sbin/shutdown -h now  
  
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)  
## 讀取放置在/etc/sudoers.d/文件夾中的文件(此處的#不意味着這是一個聲明)  
#includedir /etc/sudoers.d  

sudo 命令

sudo命令:用來以其他身份來執行命令,預設的身份為root。在/etc/sudoers中設置了可執行sudo指令的用戶。若其未經授權的用戶企圖使用sudo,則會發出警告的郵件給管理員。用戶使用sudo時,必須先輸入密碼,之后有5分鍾的有效期限,超過期限則必須重新輸入密碼。

格式:

 sudo -h | -K | -k | -V
     sudo -v [-AknS] [-a type] [-g group] [-h host] [-p prompt] [-u user]
     sudo -l [-AknS] [-a type] [-g group] [-h host] [-p prompt] [-U user]
          [-u user] [command]
     sudo [-AbEHnPS] [-a type] [-C num] [-c class] [-g group] [-h host]
          [-p prompt] [-r role] [-t type] [-T timeout] [-u user] [VAR=value]
          [-i | -s] [command]
     sudoedit [-AknS] [-a type] [-C num] [-c class] [-g group] [-h host]
          [-p prompt] [-T timeout] [-u user] file ...

參數:

-b:在后台執行指令;
-h:顯示幫助;
-H:將HOME環境變量設為新身份的HOME環境變量;
-k:結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;。
-l:列出目前用戶可執行與無法執行的指令;
-p:改變詢問密碼的提示符號;
-s<shell>:執行指定的shell;
-u<用戶>:以指定的用戶作為新的身份。若不加上此參數,則預設以root作為新的身份;
-v:延長密碼有效期限5分鍾;
-V :顯示版本信息。

相關知識:

sudo的工作過程如下:

1,當用戶執行sudo時,系統會主動尋找/etc/sudoers文件,判斷該用戶是否有執行sudo的權限

2,確認用戶具有可執行sudo的權限后,讓用戶輸入用戶自己的密碼確認

3,若密碼輸入成功,則開始執行sudo后續的命令

4,root執行sudo時不需要輸入密碼(eudoers文件中有配置root ALL=(ALL) ALL這樣一條規則)

5,若欲切換的身份與執行者的身份相同,也不需要輸入密碼

例子:

# 開啟日志記錄功能
1.創建sudo.log文件
touch /var/log/sudo.log

2./etc/rsyslog.conf配置文件最后面添加一行
local2.debug          /var/log/sudo.log            #空白處不能用空格鍵,必需用tab鍵

3./etc/ sudoers配置文件最后添加如下

Defaults logfile=/var/log/sudo.log
Defaults loglinelen=0
Defaults !syslog

4.重啟syslog服務
[root@localhost .ssh]systemctl restart syslog

5.確定進程
[root@localhost .ssh]# ps -aux |grep rsyslog

6.測試
測試賬戶使用sudo命令,在root用戶查看是否有記錄
# 第一個終端記錄sudo
[root@xxx ~]# tail -f /var/log/sudo.log
Jul 19 05:12:36 : root : TTY=pts/1 ; PWD=/root ; USER=root ; COMMAND=/bin/ls

# 第二個終端使用sudo
[root@xxx ~]# sudo ls
1          2.txt            mongodb-linux-x86_64-rhel70-4.0.10.tgz  test2.txt
1.txt      anaconda-ks.cfg  pwd
1.txt.bak  etc.tar.gz       sent


相關文件

與用戶、組賬戶信息相關的文件

存放用戶信息:

/etc/passwd
/etc/shadow

存放組信息:

/etc/group
/etc/gshadow

用戶信息文件分析(每項用:隔開)

例如:jack:X:503:504:::/home/jack/:/bin/bash
jack  //用戶名
X  //口令、密碼
503  //用戶id(0代表root、普通新建用戶從500開始)
504  //所在組
:  //描述
/home/jack/  //用戶主目錄
/bin/bash  //用戶缺省Shell

組信息文件分析

例如:jack:$!$:???:13801:0:99999:7:*:*:
jack  //組名
$!$  //被加密的口令
13801  //創建日期與今天相隔的天數
0  //口令最短位數
99999  //用戶口令
7  //到7天時提醒
*  //禁用天數
*  //過期天數

可以編輯/etc/login.defs來設定幾個參數,以后設置口令默認就按照參數設定為准:

PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

當然在/etc/default/useradd可以找到如下2個參數進行設置:

# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

通過修改配置文件,能對之后新建用戶起作用,而目前系統已經存在的用戶,則直接用chage來配置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM