在 Linux 中,增加用户或改变用户的组属性可以使用 useradd 或者 usermod 命令。useradd 增加一个新用户或者更新默认新用户信息。usermod 则是更改用户帐户属性,例如将其添加到一个已有的组中。
在 Linux 用户系统中存在两类组。第一类是主要用户组,第二类是附加用户组。所有的用户帐户及相关信息都存储在 /etc/passwd 文件中,/etc/shadow 和 /etc/group 文件存储了用户信息。
新增加一个用户并将其列入一个已有的用户组中需要用到 useradd 命令。如果还没有这个用户组,可以先创建该用户组。
命令参数如下:
useradd -G {group-name} username
例如,我们要创建一个新用户 cnzhx 并将其添加到用户组 developers 中。首先需要以 root 用户身份登录到系统中。先确认一下是否存在 developers 这个用户组,在命令行输入:
# grep developers /etc/group
输出类似于:
developers:x:1124:
如果看不到任何输出,那么就需要先创建这个用户组了,使用 groupadd 命令:
# groupadd developers
然后创建用户 cnzhx 并将其加入到 developers 用户组:
# useradd -G developers cnzhx
为用户 cnzhx 设置密码:
# passwd cnzhx
为确保已经将该用户正确的添加到 developers 用户组中,可以查看该用户的属性,使用 id 命令:
# id cnzhx
输出类似于:
uid=1122(cnzhx) gid=1125(cnzhx) groups=1125(cnzhx),1124(developers)
前面命令中用到的大写的 G (-G) 参数就是为了将用户添加到一个附加用户组中,而同时还会为此用户创建一个属于他自己的新组 cnzhx。如果要将该用户同时增加到多个附加用户组中,可以使用英文半角的逗号来分隔多个附加组名(不要加空格)。例如,同时将 cnzhx 增加到 admins, ftp, www, 和 developers 用户组中,可以输入以下命令:
# useradd -G admins,ftp,www,developers cnzhx
要增加用户 cnzhx 到组 developers,可以使用下面的指令:
# useradd -g developers cnzhx # id cnzhx
输出类似于:
uid=1123(cnzhx) gid=1124(developers) groups=1124(developers)
请注意如前面的示例的区别,这里使用了小写字母 g (-g)作为参数,此时用户的主要用户组不再是 cnzhx 而直接就是 developers。
小写字母 g (-g)将新增加的用户初始化为指定为登录组(主要用户组)。此组名必须已经存在。组号(gid)即是此已有组的组号。
将一个已有用户 cnzhx 增加到一个已有用户组 apache 中,使此用户组成为该用户的附加用户组,可以使用带 -a 参数的 usermod 指令。-a 代表 append, 也就是将用户添加到新用户组中而不必离开原有的其他用户组。不过需要与 -G 选项配合使用:
# usermod -a -G apache cnzhx
如果要同时将 cnzhx 的主要用户组改为 apache,则直接使用 -g 选项:
# usermod -g apache cnzhx
如果要将一个用户从某个组中删除,则
gpasswd -d user group
但是这个时候需要保证 group 不是 user 的主组。
1、用户组管理
groupadd 组名 添加用户组
-g :添加组时指定组ID
groupmod 组名 修改用户组信息
-n :修改组名
-g :修改组ID
groupdel 组名 删除组
*如果一个组下有用户,那么这个组是无法删除的。
2、用户管理
useradd [参数] 用户名 添加用户
-g 组名 指定所属组
-d 目录 指定用户主目录
*添加用户时,如果不指定组,系统会创建一个与用户同名的组。
usermod [参数] 用户名
-c 注释 修改备注信息
-l 用户名 修改用户名
-d 目录 修改用户主目录
-g 组名 修改用户组
userdel [参数] 用户名
-r 删除用户主目录
3、密码管理
passwd [选项] 用户名
-S 查看用户密码状态
-l 锁定用户的密码(禁止登陆)
-u 解除用户密码的锁定
-d 删除用户密码
一个用户登录后默认的身份是它的主组身份,可以使用newgrp对它所属组身份进行切换,前提是必须也属于这个组。当前用户身份切换到哪个组,创建的文件就是属于哪个组。
参考资料:
* Linux系统修改文件读写权限chmod、所有者或组chown