用户和用户组
Linux用户组的所有信息都存放在/etc/group文件中。具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件。
将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
用户组的所有信息都存放在/etc/group文件中。此文件的格式是由冒号(:)隔开若干个字段,这些字段具体如下:组名:口令:组标识号:组内用户列表
具体解释:
组名:组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
口令:口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*。
组标识号:组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.
组内用户列表:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
例如 root:x:0:root,linuxsir,用户组root,x是密码段,表示没有设置密码,GID是0,root用户组下包括root、linuxsir以及GID为0的其它用户。
组管理
1)groupadd 用于添加一个用户组。
格式:groupadd [-g -o GID] GROUP
其中:
GROUP:是要添加的组名
-g:用于指定 GID,默认为使用当前最大的 GID 加1
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
举例:
1. 添加一个新组 leader
# groupadd leader
# grep leader /etc/group
leader:x:504:
# grep leader /etc/gshadow
leader:!::
2)groupmod 用于修改系统已存在的用户组属性。
格式:groupmod [options] GROUP
其中:
GROUP:为要修改的组账户名
常用选项:
-g GID:重新指派 GID
-n NEW_GROUP:更改组名为 NEW_GROUP
举例:
1. 将 leader 组更名为 leaders
# groupmod -n leaders leader
# grep leader /etc/group
leaders:x:504:
2. 将 leaders 组的 GID 改为 3000
# groupmod -g 3000 leaders
# grep leader /etc/group
leaders:x:3000:
3)groupdel 用于删除系统已存在的组账号。
格式:groupdel GROUP
其中:GROUP 为要删除的组账户名
例如:删除 leaders 组
# groupdel leaders
# grep leaders /etc/group
# grep leaders /etc/gshadow
4)newgrp用于切换用户组。
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限,newgrp主要用于在多个用户组之间进行切换,
语法格式为:newgrp <用户组>
例如:将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。
# newgrp root
用户管理
1)useradd 用于添加用户账号或设置添加用户使用的默认信息。格式如下:
格式1:useradd [options] LOGIN
格式2:useradd -D
格式3:useradd -D [options]
说明:
格式1:用于添加用户账号,LOGIN为用户登录账号
格式2:用于显示添加用户使用的默认信息
格式3:用于设置添加用户使用的默认信息
添加用户选项:
-u UID 指定新用户的 UID,默认为使用当前最大的 UID加1,此值必须为唯一的ID值,除非用-o选项。
-g GROUP 指定新建用户登录时所属的默认组,或者叫主组。此群组必须已经存在。
-G GROUP1[,GROUP2,…[,GROUPN]]] 指定新用户的附加组
-d HOME_DIR 指定新用户的登录目录
-s SHELL 指定新用户使用的 Shell,默认为 bash
-m 创建新用户的home目录,默认值
-M 不创建新用户的自家目录
使用举例:
1. 创建一个新用户 newuser,同时创建用户home目录
# useradd newuser
2. 创建一个新用户 tom,同时加入附加组中
# useradd -G staff tom
# useradd -s /bin/sh -g group –G adm,root gem
3. 创建一个新用户 webmaster,不创建用户home目录,指定登录目录 /www,同时加入apache附加组中
# useradd -d /www -M -G apache webmaster
2)usermod 用于修改系统已存在的组账号。格式如下:usermod [options] LOGIN
其中:
LOGIN:为要修改的用户账号名
options:常用的选项包括-c, -d, -m, -M, -g, -G, -s, -u以及-o等
,这些选项的意义与useradd
命令中的选项一样,可以为用户指定新的资源值。
添加了如下选项:
-a 代表 append, 也就是将用户添加到新用户组中而不必离开原有的其他用户组。不过需要与 -G 选项配合使用
-l NEW_LOGIN 修改用户帐号为NEW_LOGIN。
-f 失效日 帐号过期多少天后永久禁用。
-e 过期日 增加或修改用户账户的过期时间。
-L 锁定用户密码,使密码无效。
-U 解除密码锁定。
举例:
1. 将 newuser2 添加到组staff 中
# usermod -G staff newuser2
2. 修改 newuser 的用户名为 newuser1
# usermod -l newuser1 newuser
3. 要增加用户 cnzhx 到apache组,可以使用下面的指令
# usermod -a -G apache cnzhx
# id cnzhx
4. 如果要同时将 cnzhx 的主要用户组改为 apache,则直接使用 -g 选项
# usermod -g apache chzhx
# id chzhx
5. 锁定账号 newuser1
# usermod -L newuser1
6. 解除对 newuser1 的锁定
# usermod -U newuser1
3)userdel 用于删除系统已存在的组账号。
格式:userdel [-r] LOGIN
其中:
LOGIN:为要删除的用户账号名
-r:同时删除用户的自家目录和 mail 的假脱机文件
例如:
1. 删除用户 webmaster
# userdel webmaster
2. 删除用户 newuser1,同时删除其自家目录
# userdel -r newuser1
4)passwd 修改用户密码。格式:passwd [option] LOGIN
可使用的选项:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
用户管理工具
1)管理用户(user)的工具或命令
useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;
2)管理用户组(group)的工具或命令groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件;
Reference
- http://cnzhx.net/blog/linux-add-user-to-group/
- http://blog.csdn.net/ithomer/article/details/9971003