云网牛站
所在位置:首页 > Linux命令 > 用usermod、gpasswd、Shell Script、Manual Method将用户添加到组

用usermod、gpasswd、Shell Script、Manual Method将用户添加到组

2019-04-01 21:52:10作者:张青稿源:云网牛站

在Linux系统中将用户添加到组的四种方法:usermod、gpasswd、Shell Script、Manual Method,以下是详细的操作方法。

 

前言

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

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

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

Secondary Group:它被称为补充组,它允许用户组在同一组成员文件中执行特定操作。

本文介绍的四种方法:

usermod:usermod命令修改系统帐户文件以反映在命令行上指定的更改,参考usermod命令_Linux usermod命令使用详解:用于修改用户的基本信息

gpasswd:gpasswd命令用于管理/etc/group和/etc/gshadow,每个组都可以拥有管理员,成员和密码,参考gpasswd命令_Linux gpasswd命令使用详解:工作组文件的管理工具

Shell Script:Shell脚本允许管理员自动执行所需的任务。

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

我假设你已经拥有此活动所需的组和用户,在此示例中,我们将使用以下用户和组user1,user2,user3和group是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命令修改系统帐户文件以反映在命令行上指定的更改。

1、如何使用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)

2、如何使用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)

3、如何更改用户的主要组?

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

语法:

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

我们必须使用-g来更改用户的主要组:

# usermod -g mygroup user3

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

# id user3

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

 

方法2:gpasswd命令

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

1、如何使用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)

2、如何使用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

3、如何使用gpasswd命令从组中删除用户?

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

语法:

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

在此示例中,我们将从mygroup中删除user1:

# gpasswd -d user1 mygroup

Removing user user1 from group mygroup

 

方法3:使用Shell脚本

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

例如,user1已与mygroup关联,如果你想使用gpasswd命令将user2和user3添加到mygroup中,它将无法按预期工作,而是直接对组进行修改而不是修改它。

如果你想将多个用户添加到多个组,那么解决方案是什么?在这两个命令中都没有默认选项可用于实现此目的。

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

1、如何使用gpasswd命令将多个用户添加到辅助或补充组?

如果要使用gpasswd命令将多个用户添加到辅助组或补充组,请创建以下小shell脚本。

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

$ cat user-lists.txt

user1

user2

user3

使用以下shell脚本将多个用户添加到单个辅助组,可先参考在Linux系统中运行.sh文件的两种方法

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

2、如何使用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

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命令子频道
精选文章
热门文章