在Linux中添加或者从组中删除用户的10个示例
在本文中,我将讨论以下主题,并分享涉及这些场景的多个实际示例。
Linux中不同类型的组
将用户添加到组(单个)
将用户添加到多个组
更改用户的主要组
从群组中删除用户
因此,当我们说Linux"将用户添加到组"时,我们是指哪个组?
Linux中有两种类型的组
初级组
补充或者次要小组
主要组与补充组之间的区别
主组:
- 在
/etc/passwd
中的用户的组成员资格字段中列出的组。
hynman:x:1000:1000::/home/hynman:/bin/bash
例如,这里的'hynman'是具有'GID 1000'的主要组的一部分,即'hynman`('因此主要组名与登录名相同)'
# grep 1000 /etc/group hynman:x:1000:
当我们使用
useradd
创建用户时,根据/etc/login.defs中的USERGROUPS_ENAB变量,将创建一个主要组/将其分配给用户。
如果此变量设置为yes,将为用户创建一个与她的"登录名"同名的组。
如果将变量设置为no,则useradd
会将新用户的主要组设置为/etc/default/useradd
中的GROUP变量指定的值,或者默认为100在Linux上,每个文件和目录都有一个用户所有者和一个组所有者。
组所有权是在创建文件时设置的,除非另行配置,否则它将设置为创建文件的用户的主要组。一次用户只能是一个主要组的一部分。
补充(或者辅助)组:
一个用户可以是多个补充组的一部分
用户是其成员但未在/etc/passwd文件中定义其成员资格的组。
创建新文件时,补充组将不会自动成为那些文件的所有者。
另请阅读:
如何仅从Linux中的某些用户,组或者主机限制或者允许ssh
1.创建一个新用户并添加到现有的主要组中
默认情况下,当我们创建一个新用户时,将使用与该用户相同的名称来创建一个新的主组。
但是我们也可以使用
useradd
来创建一个用户并将这个用户添加到任何现有的组中因此,该组将不会成为新用户的主要组
在此示例中,我将创建一个新的组管理员
# groupadd admin
验证组是否存在
# getent group admin admin:x:1003:
接下来,我将创建一个新用户user1,并使用useradd -g <primary_group> <user_name>
将此用户添加到管理组。
# useradd -g admin user1
验证" user1"的主要组
# id user1 uid=1003(user1) gid=1003(admin) groups=1003(admin)
2.创建一个新用户并添加到现有的补充组中
我们要创建一个新用户并将其添加到补充组中(请注意,请在此处将用户添加到补充组中,而不是主要组中)
我的Linux服务器上有以下组列表
# egrep 'admin|devops|qa_team' /etc/group admin:x:1003: devops:x:1004: qa_team:x:1005:
我将创建一个新用户user2,并使用useradd -G <sec_group1>,<sec_group2>,<sec_group3> .. <user_name>
将该用户添加到所有这些补充组中。
# useradd -G admin,devops,qa_team user2
验证补充组。
请"注意",因为我们没有使用-g
指定主要组,所以将创建一个新的组`user2'并将其分配给该用户作为主要组
# id user2 uid=1003(user2) gid=1006(user2) groups=1006(user2),1003(admin),1004(devops),1005(qa_team)
3.创建一个新用户并添加到现有的主要和补充组中
现在我们将上述两个参数组合在一起,即-g添加-primary_group和-G添加-supplementary_group。
devops和qa_team的Supplementary_group`
# useradd -g admin -G devops,qa_team user3
验证新的用户组详细信息
# id user3 uid=1003(user3) gid=1003(admin) groups=1003(admin),1004(devops),1005(qa_team)
4.更改现有用户的主要组
我有一个当前添加到他自己的主要组中的用户
# id user4 uid=1004(user4) gid=1006(user4) groups=1006(user4)
我将使用usermod
将该用户的主要组更改为admin
# usermod -g admin user4
验证" user4"的新主组
# id user4 uid=1004(user4) gid=1003(admin) groups=1003(admin)
5.使用usermod将用户添加到组(补充或者辅助)
要将用户添加到组,我们可以使用
usermod
或者gpasswd
命令我们只能将用户添加到补充组
在这个例子中,我将
user4
添加到devops
补充组中。
将用户添加到组的语法:usermod -G <sec_group> <user_name>
# usermod -G devops user4
验证用户详细信息
# id user4 uid=1004(user4) gid=1003(admin) groups=1003(admin),1004(devops)
6.使用usermod将用户添加到多个组(补充或者辅助)
我们还可以使用" usermod -G <sec_group1>,<sec_group2>,<sec_group3>"语法将用户添加到多个补充组中。qa_team
)
# usermod -G devops,qa_team user4
验证用户详细信息
# id user4 uid=1004(user4) gid=1003(admin) groups=1003(admin),1004(devops),1005(qa_team)
7.使用gpasswd将用户添加到组(补充或者辅助)
与
usermod
类似,我们也可以使用gpasswd
将用户添加到组中将用户添加到组的语法是
gpasswd -M <用户名> <组名>
在这个例子中,我将user4
添加到devops
中作为补充组。
# gpasswd -M user4 devops
验证用户详细信息
# id user4 uid=1004(user4) gid=1006(user4) groups=1006(user4),1004(devops)
或者,我们也可以使用gpasswd -a <用户名> <组名>`
在这个例子中,我将user4
添加到qa_team
作为补充组。
# gpasswd -a user4 qa_team Adding user user4 to group qa_team
验证用户详细信息
# id user4 uid=1004(user4) gid=1006(user4) groups=1006(user4),1005(qa_team)
8.将多个用户添加到同一组
我们需要用户" gpasswd"将多个用户添加到同一组中。
目前,我已经拥有" admin"组,该组目前不包含任何用户。
# egrep admin /etc/group admin:x:1003:
将多个用户添加到单个组的语法为gpasswd -M <用户名1>,<用户名2>,<用户名3> .. <组名>
在此示例中,我将现有用户(即user1,user2和user3)添加为admin作为补充组
# gpasswd -M user1,user2,user3 admin
验证管理员组详细信息
# egrep admin /etc/group admin:x:1003:user1,user2,user3
9.从组(补充或者辅助)中删除用户
目前,我的user4
是三个不同补充组的一部分
# id user4 uid=1004(user4) gid=1006(user4) groups=1006(user4),1003(admin),1004(devops),1005(qa_team)
gpasswd是从qa_team组中删除user4的最佳工具
# gpasswd -d user4 qa_team Removing user user4 from group qa_team
我们也可以使用usermod
命令从组中删除用户。
问题" usermod"是,我们必须定义用户所属的补充组的完整列表,并且只能删除我们要从中删除的补充组。
例如,我的user4
是devops
,admin
和qa_team
的一部分。
因此要从" qa_team"中删除" user4",我们将用户重新添加到" devops"和" admin"组(而不是" qa_team")中。
# usermod -G devops,admin user4
验证用户详细信息
# id user4 uid=1004(user4) gid=1006(user4) groups=1006(user4),1003(admin),1004(devops)
我会推荐使用gpasswd从群组中删除用户
10.从补充组中删除多个用户
没有"单个命令"可以从一个组中删除多个用户,但是我们可以使用一个小的脚本。
目前,我有" admin",其中有三个用户
# egrep admin /etc/group admin:x:1003:user1,user2,user3
我将编写一个小脚本来从管理员组中删除所有3个用户
从同一组中删除多个用户
11.从所有组(补充或者辅助)中删除用户
我们可以使用
gpasswd
从组中删除用户但是,如果一个用户是多个组的一部分,那么我们需要多次执行" gpasswd"
或者编写脚本以从所有补充组中删除用户
另外,我们可以使用
usermod -G"" <user_name>
目前,我的user4
是多个补充组的一部分
# groups user4 user4 : user4 admin devops qa_team
要从所有补充组中删除用户,请使用:
# usermod -G "" user4
验证用户详细信息
# id user4 uid=1004(user4) gid=1006(user4) groups=1006(user4)
或者使用:
# groups user4 user4 : user4