用户与安全 -(2)Linux用户与组文件解析

举报
菜鸟级攻城狮 发表于 2021/04/14 09:30:21 2021/04/14
【摘要】 前言前面我们已经学习了Linux用户及组管理的概念及相关命令。今天接着带大家一起了解下与用户账号有关的系统配置文件。用户及组的配置文件在 Linux 系统中,所创建的用户及相关属性信息 (密码除外) 均存放在 /etc/passwd 文件中。由于所有用户对 passwd 文件均有读权限,因此密码信息并未保存在该文件中,而是保存在了 /etc/shadow配置文件中。/etc/passwd/e...

前言

前面我们已经学习了Linux用户及组管理的概念及相关命令。今天接着带大家一起了解下与用户账号有关的系统配置文件。

用户及组的配置文件

在 Linux 系统中,所创建的用户及相关属性信息 (密码除外) 均存放在 /etc/passwd 文件中。由于所有用户对 passwd 文件均有读权限,因此密码信息并未保存在该文件中,而是保存在了 /etc/shadow配置文件中。

/etc/passwd

/etc/passwd 是系统用户配置文件,存储的是用户账户及其相关信息(密码除外)。

图片

在 passwd 配置文件中,一行定义一个用户账号,每行均有7个不同的字段构成,各字段用“:”分割。

从左至右各字段的对应关系及其含义:

用户名:加密的密码:UID:GID:用户名全名或描述信息:用户主目录:登录shell

  • 第一个字段(第一个root):用户名

  • 第二个字段(x):加密的密码(为了安全,使用“x”占位代表)

  • 第三个字段(第一个0):用户ID

  • 第四个字段(第二个0):用户组ID

  • 第五个字段(第二个root):用户的描述信息(默认用户的全名或空值)

  • 第六个字段(/root):用户的主目录

  • 第七个字段(/bin/bash):登录shell(字段为/sbin/nologin,表示禁止登录)

/etc/shadow

为安全起见,用户真实的密码采用 SHA512 散列加密算法,加密后保存在 /etc/shadow 配置文件中,该文件只有 root 用户可以读取。

图片

说明:
  • 第一个字段(root):用户名

  • 第二个字段:加密密码(用户未设置密码时为!!,设置密码后加密显示

  • 第三个字段:上次修改密码的时间距离1970年01月01日多少天

  • 第四个字段:密码最短有效天数,0表示无限制

  • 第五个字段:为密码最长有效天数(默认为99999天,可以理解为永不过期)

  • 第六个字段:密码过期前的警告天数(默认过期前提前7天警告,但进入告警日期后仍可以使用旧密码登录系统)

  • 第七个字段:密码过期后的宽限天数(密码过期后,预留几天给用户修改密码,此时已无法使用旧密码登录系统)

  • 第八个字段:账户失效日期(从1970年01月01日起多少天后账户失效)

  • 第九个字段:暂时保留未使用。

/etc/login.defs

/etc/login.defs文件用于在Linux创建用户时,对用户的一些基本属性做默认设置,例如指定用户的UID和GID的范围、用户的过期时间、密码最大长度,等等。

需要注意的是,该文件针对用户的默认配置对 root 用户无效。并且,当此文件中的配置与 /etc/passwd 和 /etc/shadow 文件中的用户信息有冲突时,系统会以/etc/passwd 和 /etc/shadow 为准。

用grep命令和-v参数过滤掉以#开头的行和空格行图片

参数说明:

  • MAIL_DIR  /var/spool/mail

创建用户时,系统会在目录 /var/spool/mail 中创建一个用户邮箱,比如 cnLinuxer 用户的邮箱是 /var/spool/mail/cnLinuxer。

  • PASS_MAX_DAYS  99999

密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。

  • PASS_MIN_DAYS  0

两次修改密码的最小间隔时间

  • PASS_MIN_LEN 5

指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。

  • PASS_WARN_AGE 7

密码过期前多少天开始提示

  • UID_MIN 500

指定最小 UID 为 500,也就是说,添加用户时,默认 UID 从 500 开始。注意,如果手工指定了一个用户的 UID 是 650,那么下一个创建的用户的 UID 就会从 651 开始,哪怕 500~549 之间的 UID 没有使用。

  • UID_MAX 60000

    指定用户最大的 UID 为 60000。

  • GID_MIN 500

组ID的最小值

  • GID_MAX 60000

组ID的最大值

  • CREATE_HOME yes

使用useradd命令创建用户时是否创建用户家目录。

  • UMASK 077

用户主目录的权限,默认设置为 077。

  • USERGROUPS_ENAB yes

指定删除用户的同时是否删除用户组,准确地说,这里指的是删除用户的初始组,此项默认值为yes。

  • ENCRYPT_METHOD SHA512

指定用户密码采用的加密规则,默认采用 SHA512加密密码

/etc/group

用户组帐号信息保存在 /etc/group 配置文件中,任何用户均可读取。用户组的真实密码保存在 /etc/gshadow 配置文件中。

图片

  说明:
  • 第一个字段:用户组的名称。
  • 第二个字段:为组密码,这里的x仅仅是密码标识,真正加密后的组密码默认保存在/etc/gshadow文件中。
  • 第三个字段:为组ID,也叫作GID。

这里的组 GID 与 /etc/passwd 文件中第 4 个字段的 GID 相对应,实际上,/etc/passwd 文件中使用 GID 对应的群组名,就是通过此文件对应得到的。

  • 第四列为该用户组的 用户成员列表,各用户名间用逗号分割。

/etc/gshadow

/etc/gshadow 文件用于存放组用户的密码信息。

图片

说明:
  • 第一个字段:组名,同 /etc/group 文件中的组名相对应。
  • 第二个字段:组密码,对于大多数用户来说,通常不设置组密码,因此该字段常为空,指的是该群组没有组密码,也不设有群组管理员。

用户设置密码是为了验证用户身份,那用户组设置密码是用来做什么的呢?

用户组密码主要是用来指定组管理员的,由于系统中的用户可能会非常多,root 用户可能没有时间进行用户的组调整,这时可以给用户组指定组管理员,如果有用户需要加入或退出某用户组,可以由该组的组管理员替代 root 进行管理。但是这项功能目前很少使用,我们也很少设置组密码。如果需要赋予某用户调整某个用户组的权限,则可以使用 sudo 命令代替。

  • 第三个字段:组管理员

  • 第四个字段:组中的附加用户,字段显示这个用户组中有哪些附加用户,和 /etc/group 文件中附加组显示内容相同。

到此,我们已经学习了/etc/passwd、/etc/shadow、/etc/group,它们之间的关系。可以这样理解;即先在 /etc/group 文件中查询用户组的 GID 和组名;然后在 /etc/passwd 文件中查找该 GID 是哪个用户的初始组,同时提取这个用户的用户名和 UID;最后通过 UID 到 /etc/shadow 文件中提取和这个用户相匹配的密码。

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。