在Linux中添加或者从组中删除用户的10个示例

时间:2020-01-09 10:41:13  来源:igfitidea点击:

在本文中,我将讨论以下主题,并分享涉及这些场景的多个实际示例。

  • 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 &lt;用户名> &lt;组名>

在这个例子中,我将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 &lt;用户名1>,&lt;用户名2>,&lt;用户名3> .. &lt;组名>

在此示例中,我将现有用户(即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"是,我们必须定义用户所属的补充组的完整列表,并且只能删除我们要从中删除的补充组。

例如,我的user4devopsadminqa_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"" &lt;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