• linux 中将用户添加到组的 4 个方法


    Linux 组是用于管理 Linux 中用户帐户的组织单位。对于 Linux 系统中的每一个用户和组,它都有惟一的数字标识号。它被称为 用户 ID(UID)和组 ID(GID)。组的主要目的是为组的成员定义一组特权。它们都可以执行特定的操作,但不能执行其他操作。

    Linux 中有两种类型的默认组。每个用户应该只有一个 主要组primary group 和任意数量的 次要组secondary group。

    • 主要组: 创建用户帐户时,已将主要组添加到用户。它通常是用户的名称。在执行诸如创建新文件(或目录)、修改文件或执行命令等任何操作时,主要组将应用于用户。用户的主要组信息存储在 /etc/passwd 文件中。
    • 次要组: 它被称为次要组。它允许用户组在同一组成员文件中执行特定操作。例如,如果你希望允许少数用户运行 Apache(httpd)服务命令,那么它将非常适合。

    你可能对以下与用户管理相关的文章感兴趣。

    可以使用以下四种方法实现。

    • usermod:修改系统帐户文件,以反映在命令行中指定的更改。
    • gpasswd:用于管理 /etc/group 和 /etc/gshadow。每个组都可以有管理员、成员和密码。
    • Shell 脚本:可以让管理员自动执行所需的任务。
    • 手动方式:我们可以通过编辑 /etc/group 文件手动将用户添加到任何组中。

    我假设你已经拥有此操作所需的组和用户。在本例中,我们将使用以下用户和组:user1user2user3,另外的组是 mygroup 和 mygroup1

    在进行更改之前,我希望检查一下用户和组信息。详见下文。

    我可以看到下面的用户与他们自己的组关联,而不是与其他组关联。

    1. # id user1
    2. uid=1008(user1) gid=1008(user1) groups=1008(user1)
    3. # id user2
    4. uid=1009(user2) gid=1009(user2) groups=1009(user2)
    5. # id user3
    6. uid=1010(user3) gid=1010(user3) groups=1010(user3)

    我可以看到这个组中没有关联的用户。

    1. # getent group mygroup
    2. mygroup:x:1012:
    3. # getent group mygroup1
    4. mygroup1:x:1013:

    方法 1:使用 usermod 命令

    usermod 命令修改系统帐户文件,以反映命令行上指定的更改。

    如何使用 usermod 命令将现有的用户添加到次要组或附加组?

    要将现有用户添加到辅助组,请使用带有 -G 选项和组名称的 usermod 命令。

    语法:

    1. # usermod [-G] [GroupName] [UserName]

    如果系统中不存在给定的用户或组,你将收到一条错误消息。如果没有得到任何错误,那么用户已经被添加到相应的组中。

    1. # usermod -a -G mygroup user1

    让我使用 id 命令查看输出。是的,添加成功。

    1. # id user1
    2. uid=1008(user1) gid=1008(user1) groups=1008(user1),1012(mygroup)

    如何使用 usermod 命令将现有的用户添加到多个次要组或附加组?

    要将现有用户添加到多个次要组中,请使用带有 -G 选项的 usermod 命令和带有逗号分隔的组名称。

    语法:

    1. # usermod [-G] [GroupName1,GroupName2] [UserName]

    在本例中,我们将把 user2 添加到 mygroup 和 mygroup1 中。

    1. # usermod -a -G mygroup,mygroup1 user2

    让我使用 id 命令查看输出。是的,user2 已成功添加到 myGroup 和 myGroup1 中。

    1. # id user2
    2. uid=1009(user2) gid=1009(user2) groups=1009(user2),1012(mygroup),1013(mygroup1)

    如何改变用户的主要组?

    要更改用户的主要组,请使用带有 -g 选项和组名称的 usermod 命令。

    语法:

    1. # usermod [-g] [GroupName] [UserName]

    我们必须使用 -g 改变用户的主要组。

    1. # usermod -g mygroup user3

    让我们看看输出。是的,已成功更改。现在,显示user3 主要组是 mygroup 而不是 user3

    1. # id user3
    2. uid=1010(user3) gid=1012(mygroup) groups=1012(mygroup)

    方法 2:使用 gpasswd 命令

    gpasswd 命令用于管理 /etc/group 和 /etc/gshadow。每个组都可以有管理员、成员和密码。

    如何使用 gpasswd 命令将现有用户添加到次要组或者附加组?

    要将现有用户添加到次要组,请使用带有 -M 选项和组名称的 gpasswd 命令。

    语法:

    1. # gpasswd [-M] [UserName] [GroupName]

    在本例中,我们将把 user1 添加到 mygroup 中。

    1. # gpasswd -M user1 mygroup

    让我使用 id 命令查看输出。是的,user1 已成功添加到 mygroup 中。

    1. # id user1
    2. uid=1008(user1) gid=1008(user1) groups=1008(user1),1012(mygroup)

    如何使用 gpasswd 命令添加多个用户到次要组或附加组中?

    要将多个用户添加到辅助组中,请使用带有 -M 选项和组名称的 gpasswd 命令。

    语法:

    1. # gpasswd [-M] [UserName1,UserName2] [GroupName]

    在本例中,我们将把 user2 和 user3 添加到 mygroup1 中。

    1. # gpasswd -M user2,user3 mygroup1

    让我使用 getent 命令查看输出。是的,user2 和 user3 已成功添加到 myGroup1 中。

    1. # getent group mygroup1
    2. mygroup1:x:1013:user2,user3

    如何使用 gpasswd 命令从组中删除一个用户?

    要从组中删除用户,请使用带有 -d 选项的 gpasswd 命令以及用户和组的名称。

    语法:

    1. # gpasswd [-d] [UserName] [GroupName]

    在本例中,我们将从 mygroup 中删除 user1 。

    1. # gpasswd -d user1 mygroup
    2. Removing user user1 from group mygroup

    方法 3:使用 Shell 脚本

    基于上面的例子,我知道 usermod 命令没有能力将多个用户添加到组中,可以通过 gpasswd 命令完成。但是,它将覆盖当前与组关联的现有用户。

    例如,user1 已经与 mygroup 关联。如果要使用 gpasswd 命令将 user2 和 user3 添加到 mygroup 中,它将不会按预期生效,而是对组进行修改。

    如果要将多个用户添加到多个组中,解决方案是什么?

    两个命令中都没有默认选项来实现这一点。

    因此,我们需要编写一个小的 shell 脚本来实现这一点。

    如何使用 gpasswd 命令将多个用户添加到次要组或附加组?

    如果要使用 gpasswd 命令将多个用户添加到次要组或附加组,请创建以下 shell 脚本。

    创建用户列表。每个用户应该在单独的行中。

    1. $ cat user-lists.txt
    2. user1
    3. user2
    4. user3

    使用以下 shell 脚本将多个用户添加到单个次要组。

    1. vi group-update.sh
    2. #!/bin/bash
    3. for user in `cat user-lists.txt`
    4. do
    5. usermod -a -G mygroup $user
    6. done

    设置 group-update.sh 文件的可执行权限。

    1. # chmod + group-update.sh

    最后运行脚本来实现它。

    1. # sh group-update.sh

    让我看看使用 getent 命令的输出。 是的,user1user2 和 user3 已成功添加到 mygroup 中。

    1. # getent group mygroup
    2. mygroup:x:1012:user1,user2,user3

    如何使用 gpasswd 命令将多个用户添加到多个次要组或附加组?

    如果要使用 gpasswd 命令将多个用户添加到多个次要组或附加组中,请创建以下 shell 脚本。

    创建用户列表。每个用户应该在单独的行中。

    1. $ cat user-lists.txt
    2. user1
    3. user2
    4. user3

    创建组列表。每组应在单独的行中。

    1. $ cat group-lists.txt
    2. mygroup
    3. mygroup1

    使用以下 shell 脚本将多个用户添加到多个次要组。

    1. #!/bin/sh
    2. for user in `more user-lists.txt`
    3. do
    4. for group in `more group-lists.txt`
    5. do
    6. usermod -a -G $group $user
    7. done

    设置 group-update-1.sh 文件的可执行权限。

    1. # chmod +x group-update-1.sh

    最后运行脚本来实现它。

    1. # sh group-update-1.sh

    让我看看使用 getent 命令的输出。 是的,user1user2 和 user3 已成功添加到 mygroup 中。

    1. # getent group mygroup
    2. mygroup:x:1012:user1,user2,user3

    此外,user1user2 和 user3 已成功添加到 mygroup1 中。

    1. # getent group mygroup1
    2. mygroup1:x:1013:user1,user2,user3

    方法 4:在 Linux 中将用户添加到组中的手动方法

    我们可以通过编辑 /etc/group 文件手动将用户添加到任何组中。

    打开 /etc/group 文件并搜索要更新用户的组名。最后将用户更新到相应的组中。

    1. # vi /etc/group

    via: https://www.2daygeek.com/linux-add-user-to-group-primary-secondary-group-usermod-gpasswd/

    作者:Magesh Maruthamuthu 选题:lujun9972 译者:NeverKnowsTomorrow 校对:wxy

    本文由 LCTT 原创编译,Linux 中国 荣誉推出

    订阅“Linux 中国”官方小程序来查看

    订阅“Linux 中国”官方小程序来查看

  • 相关阅读:
    P4141 消失之物(退背包模板)
    P5829 【模板】失配树
    P4827 [国家集训队] Crash 的文明世界
    P4074 [WC2013]糖果公园
    P3242 [HNOI2015]接水果
    P2371 [国家集训队]墨墨的等式
    P4819 [中山市选]杀人游戏
    P5331 [SNOI2019]通信
    BZOJ1082 [SCOI2005]栅栏
    poj1475 Pushing Boxes[双重BFS(毒瘤搜索题)]
  • 原文地址:https://www.cnblogs.com/mouseleo/p/11867107.html
Copyright © 2020-2023  润新知