Linux用戶和用戶組以及相關命令(下)

用戶和組管理的相關命令介紹以及使用:

大體上涉及到的命令有:useradd,usermod,passwd,userdel,groupadd,groupmod,gpasswd,groupdel,chage,chsh,chfn,id,w, who,whoami,su,finger


1、useradd:create a new user or update default new user information.

    用法:

       useradd [options] LOGIN

         useradd -D

         useradd -D [options]

    參數:

        -r:創建系統用戶 

[root@ST_server ~]# useradd -r tom   
[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:497:497::/home/tom:/bin/bash
[root@ST_server ~]#

創建了一個tom的用戶,在centos6環境下,系統用戶範圍是1-499,tom的userID爲497,所以能看出這個tom屬於系統用戶


        -u:指定用戶UID號碼,這個號碼是唯一的

[root@ST_server ~]# useradd -u8000 tom
Creating mailbox file: File exists
[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:8000:8000::/home/tom:/bin/bash

通過-u指定爲8000創建了用戶tom,我們能發現創建之後的tom的userID爲8000


        -g:指定用戶所屬基本組,並且這個組必須預先存在

[root@ST_server ~]# useradd -g huangyisan tom
[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:506:502::/home/tom:/bin/bash
[root@ST_server ~]# cat /etc/group | grep 502
huangyisan:x:502:huangyisan1,huangyisan3

通過-g參數將tom指定爲huangyisan這個組爲主組,cat信息能發現tom的GID爲502,而502對應的組是huangyisan這個組,說明-g生效。同時需要注意,在group文件中,huangyisan這個組內,第四段內並不存在tom。


        -G:指定用戶所屬的附屬組,並且這個組必須預先存在

[root@ST_server ~]# useradd -G huangyisan tom
[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:506:506::/home/tom:/bin/bash
[root@ST_server ~]# cat /etc/group | grep huangyisan
huangyisan:x:502:huangyisan1,huangyisan3,tom

通過-G對 tom用戶指定了附屬組爲huangyisan,然後我們通過passwd查看,發現tom的GID並沒變成502,說明tom的主組還是保留爲tom;查看group信息,huangyisan組的末尾部分,多了tom,說明tom成爲了huangyisan組中的附屬成員


-g和-G還是存在區別的,通過上面兩個例子比較可以得到答案。一個用戶會同時擁有主組權限和附屬組的權限,但一個用戶只能屬於一個主組,可以屬於多個附屬組。


        -c:給添加的用戶指定別名,該別名可以是註釋信息

[root@ST_server ~]# useradd -c "mage jiaoyu" tom
[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:506:506:mage jiaoyu:/home/tom:/bin/bash

通過-c指定別名後,在passwd文件內第五部分信息內多出了mage jiaoyu的commit。


        -d:指定用戶的家目錄

[root@ST_server ~]# useradd -d /home/tom1 tom
[root@ST_server ~]# ls /home/tom1/ 
[root@ST_server ~]# ls /home/tom1/ -a
.  ..  .bash_logout  .bash_profile  .bashrc
[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:506:506::/home/tom1:/bin/bash

通過-d將tom用戶的家目錄指定爲/home/tom1下面,查看passwd文件,發現tom的家目錄是/home/tom1,;同時進入家目錄ls -a我們能夠發現tom用戶的環境變量已經被添加進來了。這些環境變量是從/etc/skel下面複製到用戶的家目錄內的。有效的利用/etc/skel可以在創建用戶的時候節約大把時間,比如定製化用戶的環境變量


        -s:指定用戶使用的shell環境

[root@ST_server ~]# useradd -s /bin/csh tom
[root@ST_server ~]# !cat
cat /etc/passwd | grep tom
tom:x:506:506::/home/tom:/bin/csh

通過-s指定了tom用戶的shell環境爲csh,通過passwd的最後一個部分能看到是csh了,默認不指定則爲/bin/bash。在/etc/shells下面記錄了當前可用所有shell的環境。


       -M:不給用戶創建家目錄

[root@ST_server ~]# useradd -M tom
[root@ST_server ~]# !cat
cat /etc/passwd | grep tom
tom:x:506:506::/home/tom:/bin/bash
[root@ST_server ~]# ls /home/tom
ls: cannot access /home/tom: No such file or directory

通過-M指定創建tom,在passwd中的第六個部分是存在tom的家目錄的,但是ls /home/tom發現查看並沒有這個目錄。


       -p:給用戶設定密碼,但這個密碼是加密後的密碼

[root@ST_server ~]# useradd -phuangyisan tom
[root@ST_server ~]# cat /etc/shadow | grep tom
tom:huangyisan:16658:0:99999:7:::

通過-p給tom用戶指定了huangyisan的密碼,去查看shadow文件,發現huangyisan已經是被加密後的密碼了。之後通過用戶名爲tom,密碼爲huangyisan登陸,發現無法登陸。


2、usermod:usermod - modify a user account.

    用法:

        usermod [options] LOGIN

     參數:

        -u:重新指定用戶UID,該UID必須唯一

[root@ST_server ~]# cat /etc/passwd| grep tom
tom:x:506:506::/home/tom:/bin/bash
[root@ST_server ~]# usermod -u 605 tom
[root@ST_server ~]# cat /etc/passwd| grep tom
tom:x:605:506::/home/tom:/bin/bash

原先tom的UID爲506,通過-u將tom的UID修改成了605


        -g:重新指定用戶GID,該GID必須已經存在

[root@ST_server ~]# cat /etc/passwd| grep tom
tom:x:605:506::/home/tom:/bin/bash
[root@ST_server ~]# usermod -g 502 tom
[root@ST_server ~]# cat /etc/passwd | grep tom  
tom:x:605:502::/home/tom:/bin/bash

原先tom的GID爲506,通過-g將tom的GID修改成了502


        -G:重新指定用戶所屬組id,該所屬組id必須已經存在

[root@ST_server ~]# cat /etc/group | grep huangyisan
huangyisan:x:502:huangyisan1,huangyisan3,tom
huangyisan1:x:503:
huangyisan3:x:505:
[root@ST_server ~]# usermod -G 503 tom
[root@ST_server ~]# cat /etc/group | grep huangyisan
huangyisan:x:502:huangyisan1,huangyisan3
huangyisan1:x:503:tom
huangyisan3:x:505:

原先tom存在於502的huangyisan的所屬組中,通過-G指定後,將tom劃分到了503的huangyisan1的所屬組中。

還沒完

[root@ST_server ~]# usermod -a -G 502 tom
[root@ST_server ~]# cat /etc/group | grep huangyisan
huangyisan:x:502:huangyisan1,huangyisan3,tom
huangyisan1:x:503:tom
huangyisan3:x:505:

結合-a參數,可以讓tom同時存在與兩個所屬組中,即502和503。


        -s:重新指定用戶shell模式,該shell必須存在與/etc/shells裏面

[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:605:502::/home/tom:/bin/bash
[root@ST_server ~]# usermod -s csh tom
[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:605:502::/home/tom:csh

原先tom的shell模式爲bash,通過-s指定後,成了csh


        -c:重新指定用戶commit別名

[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:605:502::/home/tom:csh
[root@ST_server ~]# usermod -c "mage jiaoyu" tom
[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:605:502:mage jiaoyu:/home/tom:csh

原先tom的commit爲空,通過-c指定後成了mage jiaoyu


        -d:重新指定用戶家目錄

[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:605:502:mage jiaoyu:/home/tom:csh
[root@ST_server ~]# usermod -d /home/tom1 tom
[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:605:502:mage jiaoyu:/home/tom1:csh
[root@ST_server ~]# ls -a /home/tom1
ls: cannot access /home/tom1: No such file or directory

原先tom的家目錄爲/home/tom,通過-d指定後,成爲了/home/tom1,但是該目錄實際上並不存在

還沒完

[root@ST_server ~]# !cat  
cat /etc/passwd | grep tom
tom:x:605:502:mage jiaoyu:/home/tom:csh
[root@ST_server ~]# usermod -m -d /home/tom1 tom
[root@ST_server ~]# cat /etc/passwd | grep tom
tom:x:605:502:mage jiaoyu:/home/tom1:csh
[root@ST_server ~]# ls -a /home/tom1/
.  ..  .bash_logout  .bash_profile  .bashrc

對原先命令加上-m參數,則能將原先家目錄下所有問題件搬移到新的家目錄,同時原先的家目錄刪除。


        -l:重新指定用戶的用戶名

[root@ST_server ~]# cat /etc/passwd | grep "tom"
tom:x:605:502:mage jiaoyu:/home/tom:csh
[root@ST_server ~]# usermod -l cisco tom
[root@ST_server ~]# cat /etc/passwd | grep "tom"
cisco:x:605:502:mage jiaoyu:/home/tom:csh

通過-l 對tom用戶重命名爲cisco,但是家目錄還是/home/tom


        -L:鎖定指定用戶

通過ssh命令無法進行登陸被鎖定的用戶,但是root用戶下su 用戶是可以登陸的。

        -U:對用戶解除鎖定

使得可以通過ssh命令進行登陸。對-L的解鎖操作


        bash-4.1$情況解決方法

出現這種情況,一般是缺少家目錄,或者家目錄內缺失對應的環境變量,方法是創建家目錄,並且把環境變量放到家目錄中。同時將這些文件賦予對應用戶所屬者和所屬組。

[root@ST_server ~]# su tom
bash-4.1$ exit
exit
[root@ST_server ~]# mkdir /home/tom
mkdir: cannot create directory `/home/tom': File exists
[root@ST_server ~]# cp -a /etc/skel/.[^.]* /home/tom
[root@ST_server ~]# chown tom.tom /home/tom -R
[root@ST_server ~]# su tom
Welcome!
[tom@ST_server root]$

3、passwd:update user's authentication tokens

    用法:

        passwd [OPTION] [UserName]

    參數:

        -l:鎖定用戶

[root@ST_server ~]# passwd -l tom
Locking password for user tom.
passwd: Success

通過-l對tom用戶進行鎖定,ssh無法進行登陸,但root還是可以su到tom用戶下的。


        -u:解鎖用戶

[root@ST_server ~]# passwd -u tom
Unlocking password for user tom.
passwd: Success

通過-u對tom用戶解鎖,ssh可以進行登錄。


        -n:密碼最小生存期限

        -x:密碼最大生存期限

        -w:用戶賬號到期之前提醒天數

        -i:密碼超出指定日期後寬恕天數

[root@ST_server ~]# cat /etc/shadow | grep tom
tom:$6$OmVyNj5A$b6KUC9y3WEdYs63xoCDISBnLJySQukIbEb6MnCd1xV8JHcrkDNrcsPIEQ9nje.ZY.Vb4aYA10ZUCYX805FoUb0:16659:0:99999:7:::
[root@ST_server ~]# passwd -n 20 -x 40 -w 10 -i 15 tom
Adjusting aging data for user tom.
passwd: Success
[root@ST_server ~]# cat /etc/shadow | grep tom
tom:$6$OmVyNj5A$b6KUC9y3WEdYs63xoCDISBnLJySQukIbEb6MnCd1xV8JHcrkDNrcsPIEQ9nje.ZY.Vb4aYA10ZUCYX805FoUb0:16659:20:40:10:15::

比較倒數六段可以得到相應結果。


        --stdin:從標準輸出接受用戶和密碼

[root@ST_server ~]# echo "cisco" | passwd --stdin tom
Changing password for user tom.
passwd: all authentication tokens updated successfully.

echo部分爲密碼部分,--stdin部分爲用戶名。將tom的密碼修改成cisco

這樣的好處是避免兩次輸入密碼,可以用在腳本里面。


        -d:清除用戶密碼

[root@ST_server ~]# passwd -d tom
Removing password for user tom.
passwd: Success

如果使用useradd創建用戶後,沒有設置密碼,則這個用戶屬於鎖定狀態;但是如果創建了用戶,並且也給予了密碼,之後使用passwd -d清除密碼後,還是可以登陸的,不是鎖定狀態。


4、userdel:delete a user account and related files

    用法:

        userdel [options] LOGIN

    參數:

        不帶參數:僅刪除用戶

[root@ST_server ~]# userdel tom
[root@ST_server ~]# ll /home/tom/
total 4
drwxr-xr-x. 2 605 506 4096 Aug 11 21:12 11111
[root@ST_server ~]# cat /etc/passwd | grep tom
[root@ST_server ~]# 
[root@ST_server mail]# ll /var/spool/mail/ | grep tom
-rw-rw----. 1         605 mail 0 Aug 11 20:41 tom

上面可以發現,不帶參數,將刪除tom這個用戶,passwd裏面不存在了,但是tom的家目錄和郵箱還是存在的。


        -r:刪除用戶的同時,刪除其家目錄和郵箱,用戶未登錄狀態

[root@ST_server mail]# userdel -r jack 
[root@ST_server mail]# ll /home/jack
ls: cannot access /home/jack: No such file or directory
[root@ST_server mail]# ll /var/spool/mail/ | grep jack

通過-r參數,將jack的用戶,家目錄和郵箱一併刪除。

[root@ST_server mail]# userdel -r jack 
userdel: user jack is currently logged in

當jack用戶屬於登陸狀態時,無法刪除家目錄和郵箱以及用戶,會出提示,用戶退出後還可以登陸

         

        -f:刪除用戶同時,刪除其家目錄和郵箱,即便用戶處於登陸狀態

[root@ST_server home]# userdel -f mary
userdel: user mary is currently logged in
[root@ST_server home]# cat /etc/passwd | grep mary
[root@ST_server home]#

當mary用戶處於登陸狀態時,無法刪除家目錄,郵箱,但是用戶被刪除。同時退出後,用戶無法再次登陸。


5、groupmod:modify a group definition on the system

    用法:

        groupmod [options] GROUP

    參數:

        -n:更變用戶組名字

[root@ST_server home]# cat /etc/group | grep -w  ^huangyisan1
huangyisan1:x:503:
[root@ST_server home]# groupmod -n huangyisan13 huangyisan1
[root@ST_server home]# cat /etc/group | grep -w  ^huangyisan1
[root@ST_server home]# cat /etc/group | grep -w  ^huangyisan13
huangyisan13:x:503:

通過-n對huangyisan1組名重新指定爲huangyisan13


        -g:更變用戶組的GID

[root@ST_server home]# cat /etc/group | grep -w  ^huangyisan13
huangyisan13:x:503:
[root@ST_server home]# groupmod -g 550 huangyisan13
[root@ST_server home]# cat /etc/group | grep -w  ^huangyisan13
huangyisan13:x:550:

通過-g對huangyisan13組的GID更變爲550


6、gpasswd:administer /etc/group and /etc/gshadow

    用法:

        gpasswd [option] group

    參數:

         不帶參數:給用戶組添加密碼

[root@ST_server home]# gpasswd  huangyisan
Changing the password for group huangyisan
New Password: 
Re-enter new password: 
[root@ST_server home]# newgrp ^C

        

        -a:將指定用戶加入到指定組中

[root@ST_server home]# gpasswd -a tom huangyisan
Adding user tom to group huangyisan
[root@ST_server home]# cat /etc/group | grep -w ^huangyisan
huangyisan::502:huangyisan1,huangyisan3,tom

bash-4.1$ newgrp huangyisan
Password:

通過-a將tom加入到了huangyisan組,huangyisan是tom的附屬組。


        -d:將指定用戶從指定組中刪除

[root@ST_server home]# gpasswd -d tom huangyisan
Removing user tom from group huangyisan
[root@ST_server home]# cat /etc/group | grep -w ^huangyisan
huangyisan::502:huangyisan1,huangyisan3

通過-d將tom從附屬組huangyisan中刪除


        -r:清除組的密碼

[root@ST_server home]# gpasswd -r huangyisan
[root@ST_server home]#

使用-r清除組的密碼


7、newgrp:log in to a new group

    用法:

        newgrp [-] [group]

    參數:

        無相應參數

[tom@ST_server home]$ touch test
touch: setting times of `test': Permission denied
[tom@ST_server home]$ cd /home/tom/
[tom@ST_server ~]$ touch test
[tom@ST_server ~]$ ll test 
-rw-rw-r--. 1 tom tom 0 Aug 12 19:37 test
[tom@ST_server ~]$ newgrp huangyisan
Password: 
Welcome!
[tom@ST_server ~]$ touch test1
[tom@ST_server ~]$ ll test1 
-rw-r--r--. 1 tom huangyisan 0 Aug 12 19:38 test1
[tom@ST_server ~]$

在沒用newgrp把tom加入huangyisan組的時候,tom用戶創建的test,所屬組是tom,當用newgrp將tom暫時放入huangyisan組後,tom創建test1的所屬組是huangyisan。此時只要exit,則可以重新回到tom組。newgrp命令主要是給當前用戶暫時賦予某個其他用戶組。在tom將自己暫時加入huangyisan組提示需要密碼,是因爲gpasswd huangyisan對huangyisan組加了密碼導致的。


8.groupdel:delete a group

    用法:

        groupdel group

    參數:

        無相應參數

[root@ST_server home]# groupdel tom
groupdel: cannot remove the primary group of user 'tom'

爲什麼不能刪除呢?因爲tom的主組是tom組,如果刪了,那麼tom用戶將沒有他的主組,這是不合理的。我們可以手動創建一個組,然後再刪除。

[root@ST_server home]# groupadd tom1
[root@ST_server home]# cat /etc/shadow | grep tom1
[root@ST_server home]# cat /etc/gshadow | grep tom1
tom1:!::
[root@ST_server home]# cat /etc/group | grep tom1
tom1:x:615:
[root@ST_server home]# groupdel tom1
[root@ST_server home]# cat /etc/gshadow | grep tom1
[root@ST_server home]# cat /etc/group | grep tom1
[root@ST_server home]#

通過查看gshadow和和group文件能發現tom1被刪除了。


9、chage:change user password expiry information

    用法:

        chage [options] [LOGIN]

    參數:

        -l:查看指定用戶密碼有效期限等參數

[root@ST_server home]# chage -l tom
Last password change					: Aug 12, 2015
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

通過-l顯示了tom用戶密碼的有效期等參數


        -d:指定密碼最後修改日期

        -E:密碼有效期,0表示即可過期,-1表示永不過期

        -m:密碼修改最小天數

        -M:密碼修改最大天數

        -W:密碼過期之前告警天數

[root@ST_server home]# chage -d 100 -E 10 -m 5 -M 8 -W 3 tom
[root@ST_server home]# chage -l tom
Last password change					: Apr 11, 1970
Password expires					: Apr 19, 1970
Password inactive					: never
Account expires						: Jan 11, 1970
Minimum number of days between password change		: 5
Maximum number of days between password change		: 8
Number of days of warning before password expires	: 3

和最上面的chage -l tom作比較。




還有其他命令chfn, chsh, finger, whoami, who, w等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章