-
4个文件跟用户、组密切相关:
(本文以centos7为实验版本)
存放用户信息的文件:
1
2
|
/etc/passwd
##存放用户名称、shell等信息
/etc/shadow
##存放用户密码等信息
|
存放用户组信息的文件:
1
2
|
/etc/group
##存放组名等信息
/etc/gshadow
##存放组密码等信息
|
下面我们一一介绍这四个文件
-
1
/etc/passwd
此文件下有什么,我们通过其中两条内容来说明
1
2
3
4
|
[root@CentOS7 ~]
#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用户为例:
修改用户名
1
2
3
|
[root@CentOS7 ~]
#usermod -l user22 user2 ##参数-l,是修改用户名字
[root@CentOS7 ~]
#getent passwd user22 ##getent命令是获取指定文本内容,本例中就是仅获取文件passwd中的user22信息
user22:x:2005:2005::/home/user2:/bin/bash
##用户名变了,但是其他信息没变
|
修改用户ID
1
2
3
|
[root@CentOS7 ~]
#usermod -u 2006 user22 ##-u指定UID,原来是2005现在改成2006
[root@CentOS7 ~]
#getent passwd user22
user22:x:2006:2005::/home/user2:/bin/bash
|
修改组ID
1
2
3
|
[root@CentOS7 ~]
#groupmod -g 2006 user2 ##user2是组名,前面只是修改了用户名,并未修改组名
[root@CentOS7 ~]
#getent passwd user22
user22:x:2006:2006::/home/user2:/bin/bash
##GID变成2006
|
修改描述信息
1
2
3
4
5
6
7
8
9
|
[root@CentOS7 ~]
#chfn user22 ##chfn是修改描述信息专用命令
Changing finger information
for
user22.
Name []: user22
Office []: china
Office Phone []: 10080
Home Phone []: 10010
Finger information changed.
[root@CentOS7 ~]
#getent passwd user22
user22:x:2006:2006:user22,china,10080,10010:/home/user2:/bin/bash
##按照chfn对应的格式填写描述信息
|
修改用户家目录,默认家目录在/home下
1
2
3
|
[root@CentOS7 app]
#usermod -d /app/user22 -m user22
[root@CentOS7 app]
#getent passwd user22
user22:x:2006:2006:user22,china,10086,10010:/app/user22:/bin/bash
##用户家目录变成了/app/user22
|
修改用户shell程序类型,默认是bash
1
2
3
4
5
6
|
[root@CentOS7 app]
#
[root@CentOS7 app]
#chsh -s /bin/csh user22
Changing shell
for
user22.
Shell changed.
[root@CentOS7 app]
#getent passwd user22
user22:x:2006:2006:user22,china,10086,10010:/app/user22:/bin/csh
## 将bash改成了csh
|
以上是关于/etc/passwd的分析
-
1
/etc/shadow
此文件也是一行一个用户,我们举例分析
1
2
|
[root@CentOS7 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、保留
-
1
/etc/group
此文件是存放组信息,一行一个组
1
2
|
[root@CentOS7 app]
#cat /etc/group
aaa:x:2007:
|
4个字段,用:隔开;
1、组名
2、组密码(x只是标记而已,真正密码存在gshadow文件里)
3、组ID(GID)
4、此组包含的用户(此组是这些用户的辅助组)
为user22添加辅助组aaa
1
2
3
4
5
|
[root@CentOS7 app]
#usermod -G aaa user22 ##-G是列出账户的辅助组
[root@CentOS7 app]
#getent group aaa
aaa:x:2007:user22
[root@CentOS7 app]
#id user22 ##查看user22所属的组,其中user2是主组,aaa是其辅助组
uid=2006(user22) gid=2006(user2) groups=2006(user2),2007(aaa)
|
-
1
/etc/gshadow
此文件存放用户组的密码信息,每行一个用户组
1
2
|
[root@CentOS7 app]
#getent gshadow
aaa:!::user22
|
4个字段,每个字段以:分开;
各字段含义如下:
1、组ID
2、组密码(!表示此组被锁定,组内成员可以不需要密码直接进入,其他人则不被允许)
3、管理员列表,可以管理组密码和成员,可设置多个管理员并以逗号隔开
4、以此组为辅助组的成员列表,也是以逗号隔开(这些成员默认是与group中的成员一致)
在centos6中,普通用户的UID和GID默认是从500-60000
在centos7中,普通用户的UID和GID默认是从1000-60000
具体信息可参考以下命令:
1
|
cat /etc/login.defs
|
至此4个文件大致整理完了,有不足的地方请多多指教!
本文转自 a_pan 51CTO博客,原文链接:http://blog.51cto.com/panpangao/1950016