Linux中把用户添加到组的4个方法总结

 更新时间:2019年04月25日 08:36:01   作者:Magesh Maruthamuthu  
这篇文章主要给大家介绍了关于Linux中把用户添加到组的4个方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

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

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

• 主要组: 创建用户帐户时,已将主要组添加到用户。它通常是用户的名称。在执行诸如创建新文件(或目录)、修改文件或执行命令等任何操作时,主要组将应用于用户。用户的主要组信息存储在 /etc/passwd 文件中。

• 次要组: 它被称为次要组。它允许用户组在同一组成员文件中执行特定操作。例如,如果你希望允许少数用户运行 Apache(httpd)服务命令,那么它将非常适合。

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

在 Linux 中创建用户帐户的三种方法?

如何在 Linux 中创建批量用户?

如何在 Linux 中使用不同的方法更新/更改用户密码?

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

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

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

•Shell 脚本:可以让管理员自动执行所需的任务。

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

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

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

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

# id user1
uid=1008(user1)gid=1008(user1) groups=1008(user1)
 
# id user2
uid=1009(user2)gid=1009(user2) groups=1009(user2)
 
# id user3
uid=1010(user3)gid=1010(user3) groups=1010(user3)

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

#getent group mygroup
mygroup:x:1012:
 
#getent group mygroup1
mygroup1:x:1013:

方法 1:使用 usermod 命令

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

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

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

语法:

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

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

# usermod -a-G mygroup user1

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

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

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

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

语法:

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

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

# usermod -a-G mygroup,mygroup1 user2

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

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

如何改变用户的主要组?

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

语法:

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

 

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

# usermod -g mygroup user3

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

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

方法 2:使用 gpasswd 命令

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

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

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

语法:

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

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

#gpasswd-M user1 mygroup

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

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

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

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

语法:

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

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

#gpasswd-M user2,user3 mygroup1

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

#getent group mygroup1
mygroup1:x:1013:user2,user3

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

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

语法:

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

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

#gpasswd-d user1 mygroup
Removing user user1from group mygroup

方法 3:使用 Shell 脚本

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

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

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

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

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

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

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

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

$ cat user-lists.txt
user1
user2
user3

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

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

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

# chmod +group-update.sh

最后运行脚本来实现它。

#sh group-update.sh

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

#getent group mygroup
mygroup:x:1012:user1,user2,user3

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

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

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

$ cat user-lists.txt
user1
user2
user3

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

$ cat group-lists.txt
mygroup
mygroup1

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

#!/bin/sh
for user in `more user-lists.txt`
do
for group in `more group-lists.txt`
do
usermod -a -G $group $user
done

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

# chmod +x group-update-1.sh

最后运行脚本来实现它。

#sh group-update-1.sh

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

#getent group mygroup
mygroup:x:1012:user1,user2,user3

此外, user1 、 user2 和 user3 已成功添加到 mygroup1 中。

#getent group mygroup1
mygroup1:x:1013:user1,user2,user3

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

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

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

# vi /etc/group

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • Linux常见问题解决方案汇总

    Linux常见问题解决方案汇总

    今天小编就为大家分享一篇关于Linux常见问题解决方案汇总,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Linux的第二网卡的配置全过程

    Linux的第二网卡的配置全过程

    这篇文章主要介绍了Linux的第二网卡的配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Linux虚拟机无网络问题的解决方案(yum无法使用)

    Linux虚拟机无网络问题的解决方案(yum无法使用)

    在下载虚拟机后,由于网络没有配置好,会遇到没网问题,导致yum无法使用,下载不了软件,当我们安装软件时出现下面情况:could not retrieve mirrorlist,所以本文给大家介绍了Linux虚拟机无网络问题的解决方案(yum无法使用),需要的朋友可以参考下
    2024-11-11
  • 简要分析linux系统的启动过程

    简要分析linux系统的启动过程

    接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,这篇文章主要介绍了简要分析linux系统的启动过程,需要的朋友可以参考下
    2018-08-08
  • Linux中jar包启动和jar包后台运行的实现方式

    Linux中jar包启动和jar包后台运行的实现方式

    这篇文章主要介绍了Linux中jar包启动和jar包后台运行的方式,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-08-08
  • Ubuntu14.04虚拟机安装(图文详解)

    Ubuntu14.04虚拟机安装(图文详解)

    本篇文章主要介绍了Ubuntu14.04虚拟机安装,每一步都有详细的图文解释,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-01-01
  • VirtualBox安装Centos6.8出现E_INVALIDARG(0x80070057)的解决方法

    VirtualBox安装Centos6.8出现E_INVALIDARG(0x80070057)的解决方法

    这篇文章主要为大家详细介绍了VirtualBox安装Centos6.8出现E_INVALIDARG(0x80070057)的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Linux curl表单登录或提交与cookie使用详解

    Linux curl表单登录或提交与cookie使用详解

    这篇文章主要给大家介绍了关于Linux curl表单登录或提交与cookie使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Linux samba共享慢的原因及解决方案

    Linux samba共享慢的原因及解决方案

    这篇文章主要介绍了Linux samba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • CentOS MySQL 5.7编译安装步骤详细说明

    CentOS MySQL 5.7编译安装步骤详细说明

    这篇文章主要介绍了CentOS MySQL 5.7编译安装详细介绍的相关资料,这里对安装步骤进行了详细介绍,需要的朋友可以参考下
    2016-12-12

最新评论