Linux groupadd命令介绍
groupadd命令是group add的缩写,用来创建一个新的用户组,新用户组的信息将被添加到系统文件中。用户组是Linux系统中管理用户权限的一种机制,可以将多个用户归属到同一个组,从而方便地设置组内用户的文件访问权限、进程管理权限等。用户组也可以用来控制用户对系统资源的使用,如磁盘配额、CPU时间等。groupadd命令是系统管理员常用的命令之一,可以用来创建不同类型的用户组,如普通用户组、系统用户组等。
Linux groupadd命令适用的Linux版本
groupadd命令是Linux系统中的标准命令,可以在多数Linux发行版(如Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora、Raspbian)的主要终端命令解释器(包括bash、zsh、csh、ksh、fish、tcsh)中使用
。不过,不同的Linux发行版可能会有一些细微的差异,如默认的用户组ID范围、配置文件的位置等。因此,在使用groupadd命令时,建议先查看系统的man手册,了解具体的用法和参数。可以使用以下命令查看man手册:
man groupadd
Linux groupadd命令的基本语法
groupadd命令的基本语法格式如下:
groupadd [选项] 用户组名
其中,用户组名是必须指定的参数,用来指定要创建的用户组的名称。用户组名应该是唯一的,不能与已有的用户组或用户重复。用户组名的长度不能超过32个字符,且只能包含字母、数字、下划线、短划线或点号。用户组名不能以短划线开头,也不能包含冒号。
Linux groupadd命令的常用选项说明
groupadd命令支持以下常用的选项:
选项 | 说明 |
---|---|
-f, --force | 如果指定的用户组已经存在,该选项将使命令以成功状态退出。如果与-g或--gid选项一起使用,并且指定的用户组ID已经存在,该选项将强制忽略给定的用户组ID,而分配一个新的唯一的用户组ID。 |
-g, --gid 用户组ID | 指定新建用户组的数字ID。用户组ID应该是非负的,且唯一,除非使用-o或--non-unique选项。如果不指定该选项,命令将分配一个默认的用户组ID,大于系统中任何已有的用户组ID。 |
-h, --help | 显示帮助信息,提供groupadd命令的用法和选项的说明。适合快速查阅命令的文档。 |
-K, --key KEY=VALUE | 覆盖配置文件/etc/login.defs中的默认值。可以指定多个-K选项。可以修改配置文件中定义的参数,如GID_MIN和GID_MAX等。 |
-o, --non-unique | 允许创建用户组ID不唯一的用户组。适合创建有重复用户组ID的用户组。 |
-p, --password 密码 | 设置用户组的加密密码。密码由crypt(3)函数返回,对用户可见,且存储在/etc/gshadow文件中。默认情况下,密码是禁用的,且必须符合系统的密码策略。 |
-r, --system | 创建系统用户组。系统用户组的数字ID在SYS_GID_MIN和SYS_GID_MAX范围内,这两个参数在/etc/login.defs文件中定义,而不是GID_MIN和GID_MAX。 |
-R, --root CHROOT_DIR | 在指定的CHROOT_DIR目录中应用更改,并使用该目录中的配置文件。适合在chroot环境中管理用户组。 |
Linux groupadd命令的实例
以下是一些使用groupadd命令的实例:
创建一个普通用户组
要创建一个普通用户组,只需要指定用户组名即可。例如,要创建一个名为demo的用户组,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo groupadd demo
如果创建成功,命令不会有任何输出。可以使用以下命令查看用户组的信息:
[linux@bashcommandnotfound.cn ~]$ grep demo /etc/group
demo:x:1001:
可以看到,系统为demo用户组分配了一个用户组ID为1001的项。
创建一个指定用户组ID的用户组
要创建一个指定用户组ID的用户组,可以使用-g或--gid选项。例如,要创建一个用户组ID为2000的用户组,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo groupadd -g 2000 test
如果创建成功,命令不会有任何输出。可以使用以下命令查看用户组的信息:
[linux@bashcommandnotfound.cn ~]$ grep test /etc/group
test:x:2000:
可以看到,系统为test用户组分配了指定的用户组ID为2000的项。
创建一个系统用户组
要创建一个系统用户组,可以使用-r或--system选项。系统用户组的用户组ID通常小于1000,用来管理系统服务或进程。例如,要创建一个名为sysdemo的系统用户组,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo groupadd -r sysdemo
如果创建成功,命令不会有任何输出。可以使用以下命令查看用户组的信息:
[linux@bashcommandnotfound.cn ~]$ grep sysdemo /etc/group
sysdemo:x:999:
可以看到,系统为sysdemo用户组分配了一个用户组ID为999的项。
创建一个有密码的用户组
要创建一个有密码的用户组,可以使用-p或--password选项。密码应该是由crypt(3)函数返回的加密字符串,可以使用openssl命令生成。例如,要创建一个密码为123456的用户组,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo groupadd -p $(openssl passwd -crypt 123456) passdemo
如果创建成功,命令不会有任何输出。可以使用以下命令查看用户组的信息:
[linux@bashcommandnotfound.cn ~]$ grep passdemo /etc/group
passdemo:x:1002:
[linux@bashcommandnotfound.cn ~]$ grep passdemo /etc/gshadow
passdemo:6kx4ZtHm9ra9A::
可以看到,系统为passdemo用户组分配了一个用户组ID为1002的项,并在/etc/gshadow文件中存储了用户组的加密密码。
Linux groupadd命令的注意事项
在使用groupadd命令时,需要注意以下几点:
- 如果指定的用户组名或用户组ID已经存在,命令会报错并退出,除非使用-f或--force选项。
- 如果不指定用户组ID,命令会根据/etc/login.defs文件中的GID_MIN和GID_MAX参数,自动分配一个用户组ID。如果这两个参数没有定义,或者定义的范围内没有可用的用户组ID,命令会报错并退出。
- 如果指定的用户组名不符合命名规则,命令会报错并退出。
- 如果指定的用户组密码不符合密码策略,命令会报错并退出。
- 如果使用-R或--root选项,在指定的目录中创建用户组,需要确保该目录中有相应的配置文件和系统文件,否则命令会报错并退出。
如果在使用groupadd命令时,遇到以下错误信息:
bash: groupadd: command not found
说明系统中没有安装groupadd命令,需要先安装shadow-utils包,才能使用groupadd命令。可以使用以下命令安装shadow-utils包:
[linux@bashcommandnotfound.cn ~]$ sudo yum install shadow-utils
或者
[linux@bashcommandnotfound.cn ~]$ sudo apt install shadow-utils
具体的安装命令取决于系统的包管理工具。
评论区