如何从组中删除Linux用户

时间:2020-03-05 15:29:16  来源:igfitidea点击:

用户可以是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我们必须指定我们要保留用户的辅助组。
让我用一个例子解释。

$groups testuser
testuser : testuser testgroup1 testgroup2 root

为了从"testgroup1"和'testgroup2'组中删除用户'testuser',运行以下命令(即仅在'root'组和它的主要'testuser'组中保留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

我们现在将手动编辑最后两个条目来删除测试程序,然后从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