- 4个文件跟用户、组密切相关:
(本文以centos7为实验版本)
存放用户信息的文件:
/etc/passwd ##存放用户名称、shell等信息 /etc/shadow ##存放用户密码等信息
存放用户组信息的文件:
/etc/group ##存放组名等信息 /etc/gshadow ##存放组密码等信息
下面我们一一介绍这四个文件
-
/etc/passwd
此文件下有什么,我们通过其中两条内容来说明
[[email protected] ~]#cat /etc/passwd root:x:0:0:root:/root:/bin/bash ##root用户 bin:x:1:1:bin:/bin:/sbin/nologin ##系统用户 user2:x:2005:2005::/home/user2:/bin/bash ##普通用户
每一行表示一个用户;
每一行有7个字段,以:隔开;
从左至右每个字段含义:
1、用户名
2、密码(passwd文件已经不存放密码,x只是个符号而已)
3、UID(用户ID,root的UID是0,系统用户UID是1,普通用户UID是2005)
4、GID(用户所属主组ID)
5、描述信息
6、用户家目录
7、用户shell程序类型
下面针对每个字段(除了2字段)我们分别做个实验说明,以user2用户为例:
修改用户名
[[email protected] ~]#usermod -l user22 user2 ##参数-l,是修改用户名字 [[email protected] ~]#getent passwd user22 ##getent命令是获取指定文本内容,本例中就是仅获取文件passwd中的user22信息 user22:x:2005:2005::/home/user2:/bin/bash ##用户名变了,但是其他信息没变
修改用户ID
[[email protected] ~]#usermod -u 2006 user22 ##-u指定UID,原来是2005现在改成2006 [[email protected] ~]#getent passwd user22 user22:x:2006:2005::/home/user2:/bin/bash
修改组ID
[[email protected] ~]#groupmod -g 2006 user2 ##user2是组名,前面只是修改了用户名,并未修改组名 [[email protected] ~]#getent passwd user22 user22:x:2006:2006::/home/user2:/bin/bash ##GID变成2006
修改描述信息
[[email protected] ~]#chfn user22 ##chfn是修改描述信息专用命令 Changing finger information for user22. Name []: user22 Office []: china Office Phone []: 10080 Home Phone []: 10010 Finger information changed. [[email protected] ~]#getent passwd user22 user22:x:2006:2006:user22,china,10080,10010:/home/user2:/bin/bash ##按照chfn对应的格式填写描述信息
修改用户家目录,默认家目录在/home下
[[email protected] app]#usermod -d /app/user22 -m user22 [[email protected] app]#getent passwd user22 user22:x:2006:2006:user22,china,10086,10010:/app/user22:/bin/bash ##用户家目录变成了/app/user22
修改用户shell程序类型,默认是bash
[[email protected] app]# [[email protected] app]#chsh -s /bin/csh user22 Changing shell for user22. Shell changed. [[email protected] app]#getent passwd user22 user22:x:2006:2006:user22,china,10086,10010:/app/user22:/bin/csh ## 将bash改成了csh
以上是关于/etc/passwd的分析
-
/etc/shadow
此文件也是一行一个用户,我们举例分析
[[email protected] app]#cat /etc/shadow aaa:$6$ORtBaa7L$gdkboYX2A5vx6.F.8OPc5kDjPtHFqDQIL2mtix06k15t9C1.ZdoFrIHXP0tlLfMBzPhohL1LM.6uKgxEzA1OO/:17369:0:99999:7:::
9个字段,每个字段以:分开;
各个字段含义如下:
1、用户名
2、加密密码($6表示使用sha512加密)
3、最近一次更改口令的时间,以1970年1月1号为起始时间,单位是天
4、密码最短有效期
5、密码最长有效期
6、密码过期前几天提醒用户
7、密码过期后几天会被锁定,无法登陆
8、从1970年1月1日算起,多少天用户的账户会被锁定,无法使用
9、保留
-
/etc/group
此文件是存放组信息,一行一个组
[[email protected] app]#cat /etc/group aaa:x:2007:
4个字段,用:隔开;
1、组名
2、组密码(x只是标记而已,真正密码存在gshadow文件里)
3、组ID(GID)
4、此组包含的用户(此组是这些用户的辅助组)
为user22添加辅助组aaa
[[email protected] app]#usermod -G aaa user22 ##-G是列出账户的辅助组 [[email protected] app]#getent group aaa aaa:x:2007:user22 [[email protected] app]#id user22 ##查看user22所属的组,其中user2是主组,aaa是其辅助组 uid=2006(user22) gid=2006(user2) groups=2006(user2),2007(aaa)
-
/etc/gshadow
此文件存放用户组的密码信息,每行一个用户组
[[email protected] app]#getent gshadow aaa:!::user22
4个字段,每个字段以:分开;
各字段含义如下:
1、组ID
2、组密码(!表示此组被锁定,组内成员可以不需要密码直接进入,其他人则不被允许)
3、管理员列表,可以管理组密码和成员,可设置多个管理员并以逗号隔开
4、以此组为辅助组的成员列表,也是以逗号隔开(这些成员默认是与group中的成员一致)
在centos6中,普通用户的UID和GID默认是从500-60000
在centos7中,普通用户的UID和GID默认是从1000-60000
具体信息可参考以下命令:
cat /etc/login.defs
至此4个文件大致整理完了,有不足的地方请多多指教!