用戶和組管理的相關命令:
useradd、usermod、passwd、userdel
groupadd、groupmod、gpasswd、groupdel
chage, chsh, chfn
id, w, who, whoami
su
useradd:創建用戶
useradd [options] LOGIN
useradd -D [options]
-r: 創建系統用戶
-u UID: 指定UID;
-g GID: 指定用戶所屬基本組,此組必須事先存在
-c 'COMMENT':
-d /PATH/TO/SOMEWHERE:指定用戶的主目錄路徑;此位置不能事先存在,否則,其用戶相關配置文件將被複制;/etc/skel
-s SHELL:設定用戶的默認shell;
cat /etc/shells
-G GID,...:指定所屬的附加組;
-M: 不給用戶創建家目錄;
示例:
[root@Blackghost ~] useradd tank #添加用戶 [root@Blackghost ~] useradd -r zhangy #添加系統用戶 [root@Blackghost ~] useradd -d /home/zhangying zhangying #添加用戶,並且指定,home目錄 [root@Blackghost ~] useradd -g mytest -d /home/hao hao #添加用戶,指定組,並且設定home目錄(此home目錄不能事先存在) [root@Blackghost ~] useradd -e 04/05/13 fxxk #添加用戶,並給用戶設置有效期
練習:創建用戶Oracle,所屬附加組database和sql,ID號爲400, 家目錄爲/home/database;
[root@Blackghost ~] useradd -u 400 -G database,sql -d /home/database oracle
groupadd:創建組
groupadd [OPTIONS] GROUPNAME
-g GID: 指明組ID;
-r: 創建系統組;
示例:
添加一個用戶組[root@Blackghost ~] groupadd mytest添加一個用戶組,並指定GID[root@Blackghost ~] groupadd -g 444 test
id:查看用戶相關的id信息
id [OPTION]... [USER]
-u: UID
-g: GID
-G: Groups
-n: NAME
示例:
[root@localhost ~]# id #顯示當前用戶的信息 uid=0(root) gid=0(root) 組=0(root) [root@localhost ~]# id zhangy #顯示zhangy的信息 uid=999(zhangy) gid=999(zhangy) 組=999(zhangy)
su:switch user, 切換用戶或以其它用戶的身份執行命令
切換方式:
su USERNAME: 非完全切換;非登錄式切換
su - USERNAME或su -l USERNAME: 完全切換;登錄式切換
僅以指定用戶的身份執行指定的命令:
su - USERNAME -c 'COMMAND'
示例:
[root@Blackghost ~] su zhangying #切換用戶,原用戶環境變量 [root@Blackghost ~] su - zhangying #切換用戶,新用戶環境變量 [zhangying@Blackghost ~] su -c ls root #切換用戶執行命令,執行後返回原用戶
usermod:用戶屬性修改
usermod [OPTION]... LOGIN
-u UID
-g GID
-G GID[,GID,...]:修改用戶所屬的附加組;同時使用-a選項爲追加附加組;
-s SHELL
-c 'COMMENT'
-d HOME: 修改用戶的家目錄爲新位置時,用戶原來的文件是不會被移動至新家;-m選項可實現同時將其遷至新的家目錄;
-l LOGIN:
-L:lock user
-U: unlock user
示例:
[root@Blackghost ~] usermod -d /home/bak/ zhangying #更改用戶home目錄 [root@Blackghost ~] usermod -e 05/06/13 zhangying #給用戶加個有效期
1、將 newuser2 添加到組 staff 中# usermod -G staff newuser22、修改 newuser 的用戶名爲 newuser1# usermod -l newuser1 newuser3、鎖定賬號 newuser1# usermod -L newuser14、解除對 newuser1 的鎖定# usermod -U newuser1
passwd:給用戶添加密碼
passwd [OPTION] [UserName]
-l: lock user
-u: unlock user
-n mindays: 最短使用期限;
-x maxdays:默認爲99999天;
-w warndays:
-i inactivedays:
--stdin:從標準輸出接收用戶密碼;
echo 'centos' | passwd --stdin centos
示例:
[root@Blackghost ~] passwd zhangying #給zhangying修改密碼
userdel:刪除用戶
userdel [-r] USERNAME
-r:刪除用戶的同時刪除其家目錄;
groupmod: 組屬性修改
groupmod [OPTION] GROUPNAME
-n GROUP_NAME
-g GID
示例:
[root@Blackghost ~] userdel fxxk #刪除用戶 [root@Blackghost ~] userdel -r hao #刪除用戶,並且刪除用戶home目錄
gpasswd:設定組密碼
用法:gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname 參數: -a:添加用戶到組 -d:從組刪除用戶 -A:指定管理員 -M:指定組成員和-A的用途差不多 -r:刪除密碼 -R:限制用戶登入組,只有組中的成員纔可以用newgrp加入該組 gpasswd groupname:如系統有個peter賬戶,該賬戶本身不是groupname羣組的成員,使用newgrp需要輸入密碼即可
示例:
[root@localhost ~]# gpasswd -A peter test2 #將peter設爲test2組管理員 [root@localhost ~]# gpasswd -a peter test2 #將用戶peter加入到test2組 [root@localhost ~]# gpasswd -d peter test2 #將用戶peter從test2組中移出
newgrp:切換基本組爲指定的組
示例:
[zhangy@localhost ~]# newgrp www #登錄到www羣組
說明:newgrp指令類似login指令,當它是以相同的帳號,另一個羣組名稱,再次登入系統。欲使用newgrp指令切換羣組,您必須是該羣組的用戶,否則將無法登入指定的羣組。單一用戶要同時隸屬多個羣組,需利用交替用戶的設置。若不指定羣組名稱,則newgrp指令會登入該用戶名稱的預設羣組。
groupdel:刪除組
示例:
[root@Blackghost ~] groupdel test #刪除組test
chage:修改用戶賬號及密碼的屬性
chage [OPTION]... LOGIN
參數意思: -m 密碼可更改的最小天數。爲零時代表任何時候都可以更改密碼。 -M 密碼保持有效的最大天數。 -W 用戶密碼到期前,提前收到警告信息的天數。 -E 帳號到期的日期。過了這天,此帳號將不可用。 -d 上一次更改的日期 -I 停滯時期。如果一個密碼已過期這些天,那麼此帳號將不可用。 -l 例出當前的設置。由非特權用戶來確定他們的密碼或帳號何時過期。
示例:
1
[root@localhost ~]# chage -l zhangy #查看用戶密碼設定情況 最近一次密碼修改時間 : 4月 27, 2013 密碼過期時間 : 從不 密碼失效時間 : 從不 帳戶過期時間 : 從不 兩次改變密碼之間相距的最小天數 :-1 兩次改變密碼之間相距的最大天數 :-1 在密碼過期之前警告的天數 :-1 [root@localhost ~]# chage -M 90 zhangy #密碼有效期90天 [root@localhost ~]# chage -d 0 zhangy #強制用戶登陸時修改口令 [root@localhost ~]# chage -d 0 -m 0 -M 90 -W 15 zhangy #強制用戶下次登陸時修改密碼,並且設置密碼最低有效期0和最高有限期90,提前15天發警報提示
2
# chage -E '2014-09-30' test # test這個賬號的有效期是2014-09-30
其它命令:
chfn:改 變 你 的 finger 訊 息
chsh:用於 改變 用戶的 登錄 shell. 如果 沒有在 命令行上 指定 shell, chsh 能夠 做出 提示.
finger:用戶信息查找
whoami:打印與當前生效的用戶 ID 關聯的用戶名。與 id -un 相同。
who:顯示當前已登錄的用戶信息
用法:who [選項]... [ 文件 | 參數1 參數2 ]
示例:
[root@localhost ~]# who #顯示目前登入系統的用戶信息 tank tty1 2013-05-10 08:29 tank pts/0 2013-05-10 08:29 (192.168.56.1) [root@localhost ~]# who -a #顯示目前登入系統的用戶詳細信息 系統引導 2013-05-10 08:11 運行級別 2 2013-05-10 08:11 登錄 tty4 2013-05-10 08:11 814 id=4 登錄 tty5 2013-05-10 08:11 825 id=5 登錄 tty2 2013-05-10 08:11 842 id=2 登錄 tty3 2013-05-10 08:11 845 id=3 登錄 tty6 2013-05-10 08:11 852 id=6 tank - tty1 2013-05-10 08:29 01:08 1395 tank + pts/0 2013-05-10 08:29 . 1493 (192.168.56.1) [root@localhost ~]# who -q #列出所有已登錄用戶的登錄名與用戶數量 tank tank # 用戶數=2 [root@localhost ~]# who -u #列出已登錄的用戶 tank tty1 2013-05-10 08:29 01:08 1395 tank pts/0 2013-05-10 08:29 . 1493 (192.168.56.1) [root@localhost ~]# who -r #查看已登錄的用戶的級別 運行級別 2 2013-05-10 08:11 [root@localhost ~]# who -b #上次系統啓動時間 系統引導 2013-05-10 08:11
w:顯示目前登入系統的用戶信息。
語法:w [-fhlsuV][用戶名稱]
-f 開啓或關閉顯示用戶從何處登入系統。 -h 不顯示各欄位的標題信息列。 -l 使用詳細格式列表,此爲預設值。 -s 使用簡潔格式列表,不顯示用戶登入時間,終端機階段作業和程序所耗費的CPU時間。 -u 忽略執行程序的名稱,以及該程序耗費CPU時間的信息。
示例:
[root@localhost ~]# w #示目前登入系統的用戶信息 09:30:39 up 1:19, 2 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT tank tty1 08:29 1:01m 1.04s 0.91s -bash tank pts/0 192.168.56.1 08:29 0.00s 1.70s 0.13s sshd: tank [priv]