Linux使用者管理命令(groupadd、groupmod、groupdel、gpasswd、newgrp)詳解

2020-07-16 10:04:34

新增使用者組的命令是 groupadd,命令格式如下:

[[email protected] ~]# groupadd [選項] 組名

選項:
  • -g GID:指定組 ID

新增使用者組的命令比較簡單,舉個例子:

[[email protected] ~]# groupadd group1
#新增group1組
[[email protected] ~]# grep "group1" /etc/group
group1:x:502:

修改使用者組:groupmod

groupmod 命令用於修改使用者組的相關資訊,命令格式如下:

[[email protected] ~]# groupmod [選現] 組名

選項:
  • -g GID:修改組 ID;
  • -n 新組名:修改組名;

例子:

[[email protected] ~]# groupmod -n testgrp group1
#把組名group1修改為testgrp
[[email protected] ~]# grep "testgrp" /etc/group
testgrp:x:502:
#注意GID還是502,但是組名已經改變

不過大家還是要注意,使用者名稱不要隨意修改,組名和 GID 也不要隨意修改,因為非常容易導致管理員邏輯混亂。如果非要修改使用者名稱或組名,則建議大家先刪除舊的,再建立新的。

刪除使用者組:groupdel

groupdel 命令用於刪除使用者組,命令格式如下:

[[email protected] ~]#groupdel 組名
例子:
[[email protected] ~]#groupdel testgrp
#刪除testgrp

不過大家要注意,要刪除的組不能是其他使用者的初始組,也就是說這個組中沒有初始使用者才可以刪除。如果組中有附加使用者,則刪除組時不受影響。

把使用者新增進組或從組中刪除:gpasswd

其實 gpasswd 命令是用來設定組密碼並指定組管理員的,不過我們在前面已經說了,組密碼和組管理員功能很少使用,而且完全可以被 sudo 命令取代,所以 gpasswd 命令現在主要用於把使用者新增進組或從組中刪除。

gpasswd 命令格式如下:

[[email protected] ~]# gpasswd 選項 組名

選項:
  • -a 使用者名稱:把使用者加入組;
  • -d 使用者名稱:把使用者從組中刪除;

舉個例子:

[[email protected] ~]# groupadd grouptest
#新增組grouptest
[[email protected] ~]# gpasswd -a lamp grouptest
Adding user lamp to group grouptest
#把使用者lamp加入grouptest組
[[email protected] ~]# grep "lamp" /etc/group
lamp:x:501:
grouptest:x:505:lamp
#査看一下,lamp使用者已經作為附加使用者加入grouptest組
[[email protected] ~]# gpasswd -d lamp grouptest
Removing user lamp from group grouptest
#把使用者lamp從組中刪除
[[email protected] ~]# grep "grouptest" /etc/group grouptest:x:505:
#組中沒有lamp使用者了

大家注意,也可以使用 usermod 命令把使用者加入某個組,不過 usermod 命令的操作物件是使用者,命令是 "usermod -G grouptest lamp",把使用者名稱作為引數放在最後;而 gpasswd 命令的操作物件是組,命令是"gpasswd -a lamp grouptest",把組名作為引數放在最後。

推薦大家使用 gpasswd 命令,因為這個命令不僅可以把使用者加入使用者組,也可以把使用者從使用者組中刪除。

改變有效組:newgrp

我們說過,每個使用者可以屬於一個初始組(使用者是這個組的初始使用者),也可以屬於多個附加組(使用者是這個組的附加使用者)。既然使用者可以屬於這麼多使用者組,那麼使用者在建立檔案後,預設生效的組身份是哪個呢?

當然是初始使用者組的組身份生效了,因為初始組是使用者一旦登陸就獲得的組身份。也就是說,使用者在建立檔案後,檔案的屬組是使用者的初始組,因為使用者的有效組預設是初始組。既然使用者屬於多個使用者組,那麼能不能改變使用者的有效組呢?使用命令 newgrp 就可以切換使用者的有效組。命令格式如下:

[[email protected] ~]# newgrp 組名

舉個例子,我們已經有了普通使用者 lamp,預設會建立 lamp 使用者組,lamp 組是 lamp 使用者的初始組。我們再把 lamp 使用者加入 group1 組,那麼 group1 組就是 lamp 使用者的附加組。當 lamp 使用者建立檔案 test1 時,test1 檔案的屬組是 lamp 組,因為 lamp 組是 lamp 使用者的有效組。通過 newgrp 命令就可以把 lamp 使用者的有效組變成 group1 組,當 lamp 使用者建立檔案 test2 時,就會發現 test2 檔案的屬組就是 group1 組。命令如下:

[[email protected] ~]# groupadd group1
#新增組group1
[[email protected] ~]# gpasswd -a lamp group1
Adding user lamp to group group1 #把lamp使用者加入group1組
[[email protected] ~]# grep "lamp" /etc/group
lamp:x:501:
group1:x:503:lamp
#lamp使用者既屬於lamp組,也屬於group1組
[[email protected] ~]# su - lamp
#切換成lamp身份,超級使用者切換成普通使用者不用密碼
[[email protected] ~]$ touch test1
#建立檔案test1
[[email protected] ~]$ll test1
-rw-rw-r-- 1 lamp lamp 01月14 05:43 test1
#test1檔案的預設屬組是lamp組
[[email protected] ~]$ newgrp group1
#切換lamp使用者的有效組為group1組
[[email protected] ~]$ touch test2
#建立檔案test2
[[email protected] ~]$ ll test2
-rw-r--r-- 1 lamp group1 01月 14 05:44 test2
#test檔案的預設屬組是group1組

通過這個例子明白有效組的作用了嗎?其實就是當使用者屬於多個組時,在建立檔案時哪個組身份生效。使用 newgrp 命令可以在多個組身份之間切換。