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

简介:
  • 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


相关文章
|
数据安全/隐私保护
43Linux - 用户/权限管理(修改文件所属组:chgrp)
43Linux - 用户/权限管理(修改文件所属组:chgrp)
55 0
|
15天前
|
存储 Shell Linux
用户和用户组
本文介绍了Linux系统中的用户账户和组的基本概念,包括普通用户和超级用户(root)的定义和区别,以及组的概念和作用。文章还详细描述了用户账户和组的相关文件(如/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow)的结构和内容,并提供了创建和删除用户账户及组的基本命令和选项。
46 1
|
6月前
|
Linux
用户组管理命令
用户组管理命令。
25 1
|
6月前
|
Shell Linux 数据安全/隐私保护
用户,用户组相关操作
用户,用户组相关操作
58 0
|
数据安全/隐私保护
38Linux - 用户/权限管理(修改用户所在组:usermod)
38Linux - 用户/权限管理(修改用户所在组:usermod)
38 0
|
Linux 编译器 数据安全/隐私保护
【Linux】下的权限管理/关于root用户和普通用户的区别/不同用户的访问权限有什么不同?/到底什么是粘滞位?
1.Linux下用户的分类 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
|
存储 Linux Shell
用户和用户组管理|Linux常用命令(一)
用户和用户组管理|Linux常用命令(一)
231 0
用户和用户组管理|Linux常用命令(一)
|
Shell Linux 数据安全/隐私保护