如何在Linux中创建组– groupadd命令

时间:2020-02-23 14:37:57  来源:igfitidea点击:

在本教程中,我们将学习如何使用groupadd命令在Linux中创建一个组。

什么是Linux组?

Linux组用于管理用户的特权。
我们可以为组定义一组特权,例如对特定资源的读,写访问。
然后,该组中的所有用户将自动获得对该资源的访问权限。

简单来说,组是用户的集合。
它有助于我们快速向一组用户授予特权。
例如," sudo"是一个组,该组中的任何用户都会自动获得超级用户特权。

如何在Linux中创建组?

Linux groupadd命令用于在Linux中创建一个组。
这是特定于Linux的命令,可以在所有发行版中使用,例如Ubuntu,CentOS和Debian。

Linux groupadd命令语法

groupadd命令的语法为:

groupadd [options] GROUP

让我们看一些示例,以了解groupadd命令及其各种选项的用法。

Linux创建组

可以由root用户或者使用sudo特权的超级用户运行groupadd命令。

root@localhost:~# groupadd test_users

如果创建了组,则不会出现任何错误或者成功消息。

组信息存储在/etc/group文件中。
我们可以在此文件中查看新创建的组信息。

root@localhost:~# cat /etc/group | grep test_users
test_users:x:1004:
root@localhost:~#

Linux创建组

上面的数字表示组ID,它是一个整数值。
我们还可以使用" getent"命令来获取组的详细信息。

root@localhost:~# getent group test_users
test_users:x:1004:theitroad
root@localhost:~#

如果该组已经存在,则错误

如果该组已经存在,则会显示错误消息。
让我们再次运行上述命令。

root@localhost:~# groupadd test_users
groupadd: group 'test_users' already exists
root@localhost:~# 

Linux组已存在错误

创建具有组ID的组

使用-g选项创建组时,我们也可以指定组ID。

root@localhost:~# groupadd -g 1005 test_users1
root@localhost:~# cat /etc/group | grep 1005
test_users1:x:1005:
root@localhost:~# 

如果组ID已被使用,您将收到一条错误消息。

root@localhost:~# groupadd -g 1005 test_users2
groupadd: GID '1005' already exists
root@localhost:~# 

Linux groupadd强制成功选项

如果该组已经存在,我们可以指定-f或者–force选项以成功退出。

root@localhost:~# groupadd -f test_users
root@localhost:~#

如果我们要使用强制成功选项创建一个组并且该组ID已经存在,则将忽略组ID并创建该组。

root@localhost:~# groupadd -f -g 1005 test_users2
root@localhost:~# cat /etc/group | grep test_users2
test_users2:x:1006:
root@localhost:~# 

注意,由于我们使用了-f选项,因此使用不同的组ID创建了Linux组。

Linux groupadd帮助

如果需要有关groupadd命令用法的帮助,请使用-h选项。

root@localhost:~# groupadd -h
Usage: groupadd [options] GROUP

Options:
-f, --force                   exit successfully if the group already exists,
                              and cancel -g if the GID is already used
-g, --gid GID                 use GID for the new group
-h, --help                    display this help message and exit
-K, --key KEY=VALUE           override /etc/login.defs defaults
-o, --non-unique              allow to create groups with duplicate
                              (non-unique) GID
-p, --password PASSWORD       use this encrypted password for the new group
-r, --system                  create a system account
-R, --root CHROOT_DIR         directory to chroot into
    --extrausers              Use the extra users database

root@localhost:~# 

Linux groupadd -K选项

我们可以使用-K选项覆盖/etc/login.defs文件中存在的GID_MIN和GID_MAX值。

这意味着新的组ID将取自使用-K选项提供的范围。
让我们看一个示例以清楚地了解此功能。

root@localhost:~# cat /etc/login.defs | grep GID
GID_MIN			 1000
GID_MAX			60000
root@localhost:~# 
root@localhost:~# groupadd -K GID_MIN=20000 -K GID_MAX=21000 test_users6
root@localhost:~# cat /etc/group | grep test_users6
test_users6:x:20000:
root@localhost:~# 

如果查看早期的命令,则分配的组ID接近1000。
但是在上面的groupadd命令中,使用的组ID为20000。

用密码创建组

我们可以使用-p选项创建一个带有密码的组。

root@localhost:~# groupadd -p abc123 test_users_pwd
root@localhost:~# 

但是,我从未亲自使用过它,也从未见过有人在使用它。
实际上,gpasswd的手册页指出这是一个安全问题。

root@localhost:~# man gpasswd

 Notes about group passwords
     Group passwords are an inherent security problem since more than one person is permitted to
     know the password. However, groups are a useful tool for permitting co-operation between
     different users.'

创建系统组

我们可以使用-r选项来创建系统组。

普通组和系统组之间没有区别。
唯一的区别是组ID分配。

对于普通组,组ID的分配范围是1000到60000(默认值)。
对于系统组,组ID小于1000。

同样,组ID不重要或者不提供任何其他特权。

root@localhost:~# groupadd -r system_group
root@localhost:~# cat /etc/group | grep system_group
system_group:x:999:
root@localhost:~#

请注意,分配的组ID为999。