Linux用户配置文件(passwd & shadow | group & gshadow)

Posted Xavier Jiezou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用户配置文件(passwd & shadow | group & gshadow)相关的知识,希望对你有一定的参考价值。

摘要

本文将讨论 Linux 用户管理中涉及的四个配置文件。

引言

这四个文件是用户管理的核心,系统中用户和用户组的任何操作,最终的落脚点就是这四个文件。这四个文件可以分为两组,第一组文件中存放着用户相关配置数据,第二组文件中存放着用户组相关配置数据。

  • 用户相关配置数据
    • /etc/passwd:系统用户花名册
    • /etc/shadow:系统用户影子文件
  • 用户组相关配置数据
    • /etc/group:系统用户组花名册
    • /etc/gshadow:系统用户组影子文件

用法

/etc/passwd 里面有很多行,每行存储了一个用户的信息。每行有七个字段,每个字段用冒号分隔:

  • 第一字段:用户名
  • 第二字段:密码(用 x 来代替,真的密码是放在 /etc/shadow 文件中)
  • 第三字段:用户 UID
  • 第四字段:用户的主用户组 GID
  • 第五字段:用户描述(如果不设置就是空)
  • 第六字段:用户家目录所在位置
  • 第七字段:用户使用的 Shell 类型

/etc/shadow 是 /etc/passwd 的影子文件。一般来说,shadow 文件内容的行数与 passwd 文件内容行数应该是相同的。shadow 文件每行也存储着用户的信息,和 passwd 文件互为补充。两个文件合在一起就可以完整的描述系统中的每个用户。shadow 文件每行有九个字段:

  • 第一字段:用户名
  • 第二字段:被加密的用户密码(如果该字段是星号或感叹号,表示该用户不能作为普通用户正常登录系统)
  • 第三字段:密码最后一次修改(从 1970/1/1 日起到密码最后一次被修改的天数)
  • 第四字段:密码修改最小时间间隔(两次修改用户密码之间所需的最小天数,默认是 0,表示可以随时修改用户密码)
  • 第五字段:密码修改最大时间间隔(用户密码保持有效的最大天数,默认是 99999,大概 273 年来,也就是不强制定期更好的意思)
  • 第六字段:密码失效警告时间(从系统开始警告用户到用户密码正式失效之间的天数,默认是 7,表示不启用该功能)
  • 第七字段:用户口令作废多少天后,系统会禁用此用户,禁用后系统将不允许此用户登录,也不会提示用户过期(默认为空,表示不启用该功能)
  • 第八字段:用户失效时间(相当于规定了用户的生存期,单位为天,相对的起始时间也是 1970/1/1。期满后该用户就无法登录了,默认为空,表示此用户永久可用)
  • 第九字段:保留字段。目前为空。

/etc/group 里面有很多行,每行存储了一个用户组的信息。每行有四个字段,每个字段用冒号分隔:

  • 第一字段:用户组名
  • 第二字段:用户组密码(用户组密码很少用到,只有在大型服务器上针对很多用户和组指定一些关系结构比较复杂的权限模型时,设置用户组密码才有必要。默认用 x 替代,真的密码放在 /etc/gshadow 文件中)
  • 第三字段:用户组 GID
  • 第四字段:从属该用户组的用户列表,如果多个用户,使用逗号分隔。如果该字段为空,并不一定表示该用户组没有用户,因为如果该用户组是某个用户的主用户组,这个用户是不会显示在列表中的。

/etc/gshadow 是 /etc/group 的影子文件。一般来说,gshadow 文件内容的行数与 group 文件内容行数应该是相同的。gshadow 文件每行也存储着用户组的信息,和 group 文件互为补充。两个文件合在一起就可以完整的描述系统中的每个用户组。gshadow 文件每行有四个字段:

  • 第一字段:用户组名
  • 第二字段:用户组加密后的密码(空或感叹号表示没有密码)
  • 第三字段:组管理者(可以为空,如果有多个用户组管理者需要用逗号分隔)
  • 第四字段:从属该用户组的用户列表

当我们使用 useradd 命令添加用户,并使用 passwd 命令为刚添加的用户设置密码时,就会自动将用户信息写入 /etc/passwd 和 /etc/shadow 文件中。同理,使用 groupadd 命令添加用户组时,也会自动将信息写入 /etc/group 和 /etc/gshadow。理论上,我们可以通过修改这些配置文件的内容来修改用户或用户组的任意属性,但却不推荐这么做。因为手动修改配置文件很容易造成系统用户或用户组管理混乱。

为什么要将用户信息分开存到两个文件中呢?出于系统需求,passwd 文件对于所有用户都是可读的,因为用户需要保护的信息如密码就不能放在 passwd 中了,这部分信息就放在了 shadow 文件中。shadow 文件只有根用户才能查看和修改,相对更加安全。用户组信息分开存放的原因和用户信息分开存放的原因完全相同。

root@centos:~# ls -l /etc/passwd
-rw-r--r-- 1 root root 4500 61 00:30 /etc/passwd
root@centos:~# ls -l /etc/shadow
-rw-r----- 1 root shadow 5251 61 00:30 /etc/shadow
root@centos:~# ls -l /etc/group
-rw-r--r-- 1 root root 1664 61 00:30 /etc/group
root@centos:~# ls -l /etc/gshadow
-rw-r----- 1 root shadow 1354 61 00:30 /etc/gshadow

参考

中国大学 MOOC | Linux 系统管理 | 主题 06 管好用户 | 小节 7 用户配置文件

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于Linux用户配置文件(passwd & shadow | group & gshadow)的主要内容,如果未能解决你的问题,请参考以下文章

Linux中/etc/passwd配置文件详解

linux用户配置文件passwd和密码配置文件shadow,用户管理,组管理

Linux系统管理之用户和组配置文件

菜鸟学Linux之:用户账户管理下的/etc/passwd和/etc/shadow

linux - 用户配置文件

linux关于用户和组的几个配置文件—/etc/passwd/etc/shadow/etc/group和/etc/gshadow