首页 > 代码库 > 跟用户、用户组相关的4个文件

跟用户、用户组相关的4个文件

  • 4个文件跟用户、组密切相关:

    (本文以centos7为实验版本)

    存放用户信息的文件:

/etc/passwd    ##存放用户名称、shell等信息
/etc/shadow    ##存放用户密码等信息

    存放用户组信息的文件:

/etc/group  ##存放组名等信息
/etc/gshadow  ##存放组密码等信息

    下面我们一一介绍这四个文件


  • /etc/passwd

    此文件下有什么,我们通过其中两条内容来说明

[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用户为例:


    修改用户名

[root@CentOS7 ~]#usermod -l user22  user2  ##参数-l,是修改用户名字
[root@CentOS7 ~]#getent passwd user22  ##getent命令是获取指定文本内容,本例中就是仅获取文件passwd中的user22信息
user22:x:2005:2005::/home/user2:/bin/bash   ##用户名变了,但是其他信息没变

    

    修改用户ID

[root@CentOS7 ~]#usermod -u 2006 user22  ##-u指定UID,原来是2005现在改成2006
[root@CentOS7 ~]#getent passwd user22
user22:x:2006:2005::/home/user2:/bin/bash


    修改组ID

[root@CentOS7 ~]#groupmod -g 2006 user2  ##user2是组名,前面只是修改了用户名,并未修改组名
[root@CentOS7 ~]#getent passwd user22
user22:x:2006:2006::/home/user2:/bin/bash   ##GID变成2006


    修改描述信息

[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下

[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

[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的分析

  • /etc/shadow

    此文件也是一行一个用户,我们举例分析

[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、保留


  • /etc/group

    此文件是存放组信息,一行一个组

[root@CentOS7 app]#cat /etc/group
aaa:x:2007:

    4个字段,用:隔开;

    1、组名

    2、组密码(x只是标记而已,真正密码存在gshadow文件里)

    3、组ID(GID)

    4、此组包含的用户(此组是这些用户的辅助组)

    

    为user22添加辅助组aaa

[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)


  • /etc/gshadow

    此文件存放用户组的密码信息,每行一个用户组

[root@CentOS7 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个文件大致整理完了,有不足的地方请多多指教!

本文出自 “a_pan” 博客,请务必保留此出处http://panpangao.blog.51cto.com/10624093/1950016

跟用户、用户组相关的4个文件