『學了就忘』Linux使用者管理 — 52、使用者組管理相關命令

繁華似錦Fighting發表於2021-11-26

1、新增使用者組

新增使用者組的命令是groupadd

命令格式如下:

[root@localhost ~]# groupadd [選項] 組名

選項:

  • -g:GID。指定組ID。(一般不會用)

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

# 新增group1組
[root@localhost ~]# groupadd group1

# 檢視使用者組是否建立
[root@localhost ~]# grep "groupl" /etc/group
group1:x:502:

2、刪除使用者組

groupdel命令用於刪除使用者組。

命令格式如下:

[root@localhost ~]# groupdel 組名

例子:

# 刪除group1組
[root@localhost ~]# groupdel group1

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

3、把使用者新增進組或從組中刪除

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

命令格式如下:

[root@localhost ~]# gpasswd [選項] 組名

選項:

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

舉個例子:

# 新增組grouptest
[root@localhost ~]# groupadd grouptest

# 把使用者user1加入grouptest組
[root@localhost ~]# gpasswd -a user1 grouptest 
Adding user user1 to group grouptest

# 檢視一下,user1使用者已經作為附加使用者加入grouptest組
[root@localhost ~]# grep "user1" /etc/group 
user1:x:501:
grouptest:x:505:user1


# 把使用者user1從組中刪除
[root@localhost ~]# gpasswd -d user1 
grouptest Removing user userl from group grouptest


# 組中沒有user1使用者了
[root@localhost ~]# grep "grouptest" /etc/group 
grouptest:x:505:

說明:

之前我們說過,使用usermod命令可以把使用者加入某個組,那usermod命令和gpasswd命令有什麼區別?

  • usermod命令的操作物件是使用者,命令是usermod -G grouptest user1,把使用者名稱作為引數放在最後(也就是grouptest是組,user1是使用者);而gpasswd命令的操作物件是組,命令是gpasswd-a user1 grouptest,把組名作為引數放在最後(user1是使用者,grouptest是組,和usermod命令位置相反)。
  • usermod命令和gpasswd命令,理論上用哪一個都可以,推薦使用gpasswd命令,原因gpasswd命令只新增附加組,而usermod命令根據不同的選項可以新增初始組和附加組。
  • gpasswd命令不但能把使用者新增進附加組中,而且gpasswd命令還有從組中刪除使用者的功能。gpasswd命令更為方便。

提示:用vim編輯器,手動編輯也是可以的,同樣效果。只是手工寫的方式不適合做指令碼。

注意:在刪除組的時候,如果組中有沒有初始組的使用者(也就是把當前組作為初始組的使用者),需要把該使用者刪除掉,才能把該使用者組刪除。

4、有效組(瞭解)

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

當然是初始使用者組的組身份生效了,因為初始組是使用者一旦登入就直接獲得的組身份。也就是說,使用者在建立檔案後,檔案的屬組是使用者的初始組,因此使用者的有效組預設是初始組。

既然使用者屬於多個使用者組,那麼能不能改變使用者的有效組呢?
使用命令newgrp就可以切換使用者的有效組。

命令格式如下:

[root@localhost ~]# newgrp 組名

舉個例子:

  • 我們已經有了普通使用者user1,預設會建立user1使用者組,user1組是user1使用者的初始組。我們再把user1使用者加入group1組,那麼group1組就是user1使用者的附加組。
  • user1使用者建立檔案test1時,test1檔案的屬組是user1組,因為user1組是user1使用者的有效組。通過newgrp命令就可以把user1使用者的有效組變成group1組。
  • user1使用者建立檔案test2時,就會發現test2檔案的屬組就是group1組。使用newgrp命令可以在多個組身份之間切換。

相關文章