如何從組中刪除 Linux 用戶

在 Linux 中,用戶可以是一個主要組和一個或多個次要(補充)組的成員。 文件“/etc/group”定義了 Linux 系統中每個用戶的組成員身份。

在本教程中,我們將學習如何在 Linux 中從組中刪除用戶。 我們將使用兩種方法,我還將展示如何通過從“/etc/group”文件中刪除來手動從組中刪除用戶。

創建 Linux 用戶

出於本教程的目的,我們將創建一個名為“testuser”的用戶。 創建新用戶時,也會為該用戶創建一個同名的新主要組。

我們將通過發出以下命令來創建一個新用戶:

$ sudo useradd -m testuser

現在我們可以為該用戶創建密碼:

$ sudo passwd testuser
Changing password for user testuser.
New password:
BAD PASSWORD: The password contains the user name in some form
Retype new password:
passwd: all authentication tokens updated successfully.

我使用了與用戶名相同的密碼,所以我收到一條警告,提示密碼不應以某種形式包含用戶名。

將用戶添加到組

首先,我們將使用 groupadd 命令創建兩個新組,如下所示:

$ sudo groupadd testgroup1
$ sudo groupadd testgroup2

現在我們將“testuser”用戶添加到上面創建的兩個組,並使用以下命令添加到“root”組:

$ sudo usermod -a -G root testuser
$ sudo usermod -a -G testgroup1 testuser
$ sudo usermod -a -G testgroup2 testuser

好的,現在如果我們查看“/etc/group”文件,可以看到“testuser”是所有三個組的成員。

$ cat /etc/group
root:x:0:testuser
.............
testuser:x:1001:
testgroup1:x:1002:testuser
testgroup2:x:1003:testuser

找出用戶所屬的組

我們還可以使用兩種替代方法來檢查用戶屬於哪個組,如下所示

$ groups testuser
testuser : testuser testgroup1 testgroup2 root

$ id -nG testuser
testuser testgroup1 testgroup2 root

如您所見,輸出非常相似,並且這些命令完成相同的任務。

使用 usermod 從組中刪除用戶

我們可以使用 usermod 命令一次從一個或多個組中刪除一個用戶。 使用 usermod,您必須指定要將用戶保留在哪些次要組中。讓我解釋一下 example.

$ groups testuser
testuser : testuser testgroup1 testgroup2 root

為了從 ‘testgroup1’ 和 ‘testgroup2’ 組中刪除用戶 ‘testuser’,請運行以下命令(即只將 testuser 留在 ‘root’ 組中,並且它是主要的 ‘testuser’ 組):

$ sudo usermod -G root testuser

Results
$ groups testuser
testuser : testuser root

因此,為了將用戶保留在更多組中,您需要提及以逗號 (,) 分隔的組名,例如:

$ sudo usermod -G root,testgroup1 testuser

Results
# groups testuser
testuser : testuser root testgroup1

使用 gpasswd 從組中刪除用戶

另一個實現類似結果的命令是 gpasswd。 與 usermod 不同,我們使用此命令從指定組中刪除用戶。
要從特定組中刪除用戶,我們可以使用 gpasswd 命令:

$ sudo gpasswd -d testuser root
Removing user testuser from group root

$ groups testuser
testuser : testuser testgroup1 testgroup2

$ sudo gpasswd -d testuser testgroup1
Removing user testuser from group testgroup1

$ groups testuser
testuser : testuser testgroup2

從組中刪除用戶(手動)

我們還可以通過手動編輯文件“/etc/group”從組中刪除用戶。 此方法的效果將在重新啟動後應用於用戶。

您可以使用您喜歡的文本編輯器來編輯“/etc/group”文件:

$ cat /etc/group
.............
sssd:x:993:
sshd:x:74:
chrony:x:992:
vagrant:x:1000:
slocate:x:21:
vboxsf:x:991:
testuser:x:1001:
testgroup1:x:1002:testuser
testgroup2:x:1003:testuser

$ groups testuser
testuser : testuser testgroup1 testgroup2 root

我們現在將手動編輯最後兩個條目以刪除 testuser 並將其從 testgroup1 和 testgroup2 中刪除(編輯後的文件應如下所示):

$ cat /etc/group
.............
sssd:x:993:
sshd:x:74:
chrony:x:992:
vagrant:x:1000:
slocate:x:21:
vboxsf:x:991:
testuser:x:1001:
testgroup1:x:1002:
testgroup2:x:1003:

更改將在重新啟動後發生,現在用戶已從這兩個組中刪除:

$ groups testuser
testuser : testuser root

結論

在本教程中,我們學習瞭如何使用 usermod、gpasswd 從組中刪除用戶,以及如何從“/etc/group”文件中手動刪除用戶。

這些指令可用於任何 Linux 系統,如 Ubuntu、CentOS、 Fedora 和許多其他人。 如果您有任何疑問,請在下面的評論中告訴我們。