账户配置文件

概述

参考:

passwd

参考:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin

shadow

参考:

注意:该文件中通常是没有任何 读、写、执行 权限的,不推荐直接使用系统终端直接修改该文件(比如 vi、sed 等命令),而是通过专用的 chage、useradd、userdel 等等工具修改本文件

shadow 是一个文件,其中包含系统帐户的密码信息和可选的老化信息。如果要维护密码安全,则普通用户不得读取此文件。该文件的每一行包含 9 个字段,以冒号 : 分隔,顺序如下:

  • login name(登录名称) # 操作系统中有效的账户名称
  • encrypted password(加密的密码) # 账户对应的密码,该字段的密码是加密后的字符串。
    • 该字段可以为空,这种情况下,无需密码即可登录系统。不过一般默认情况,系统的 PAM 模块会阻止这种行为。
    • ! 开头的表示密码被锁定
  • date of last password change(上次更改密码的日期) # 上次更改密码的日期。该字段的值,是从 1970 年 1 月 1 日开始到上次修改密码时经过的天数。
  • minimum password age(最小密码期限) # 简称 MIN_DAYS。自从上次密码修改之后,至少需要 INT 天才可以再次被修改。
    • 如果不满足天数要求,当使用 passwd 命令修改密码时,则会出现如下报错 You must wait longer to change your password,并且直接退出程序,终止用户的修改密码操作。
  • maximum password age(最大密码期限) # 简称 MAX_DAYS。 密码可以使用的最大天数。如果超过了使用天数,将会被强制更改密码,否则无法登录。值为 -1 则不再限制密码可以使用的最大天数
  • password warning period(密码警告期限) # 简称 WARN_DAYS。密码到期前发出警告的天数。值为 0 则表示仅在到期日发出警告,负值或不指定值表示不发出警告。
  • password inctivity period(密码不活动期限) #
  • account expiration data(账户到期日) #
  • reserved field(保留字段) #
root:$6$lWEIpm976ef7vNzK$EI.F1OKITgSvYTFjjEe.qfYbGfKKLXmA9NNQroH3H0ZqLy8wfC914AyvpGtz9p1Ls8I8cg62jxygziZuA30Fl.::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
mail:*:18353:0:99999:7:::
operator:*:18353:0:99999:7:::
games:*:18353:0:99999:7:::
ftp:*:18353:0:99999:7:::
nobody:*:18353:0:99999:7:::
systemd-network:!!:18545::::::
dbus:!!:18545::::::
polkitd:!!:18545::::::
sshd:!!:18545::::::
postfix:!!:18545::::::
tcpdump:!!:18545::::::
chrony:!!:18545::::::

login.defs

参考:

/etc/login.defs 文件在不同的发行版中,属于不同的包

  • CentOS 发行版中,属于 shadow-utils 包。
    • 配置文件中的参数用来控制 shadow-utils 包中所有工具的行为
  • Ubuntu 发型版中,属于 login 包。
    • 配置文件中的参数用来控制 login 包中所有工具的行为

/etc/login.defs 文件定义了影子密码套件的站点特定配置。该文件是必需的。缺少此文件不会阻止系统运行,但可能会导致不受欢迎的操作。

该文件是一个可读的文本文件,文件的每一行描述一个配置参数。这些行由配置名称和值组成,以空格分隔。空白行和注释行将被忽略。注释以“#”井号开头,井号必须是该行的第一个非白色字符。

参数值可能有四种类型:字符串、布尔值、数字和长数字。字符串由任何可打印的字符组成。布尔值应该是值是或否。未定义的布尔参数或具有除这些值以外的值的参数将被赋予无值。数字(常规和长整数)可以是十进制值、八进制值(值前面加 0)或十六进制值(值前面加 0x)。常规和长数值参数的最大值取决于机器。

参数详解

账户密码相关

PASS_MAX_DAYS(INT) # 密码可以使用的最大天数。如果超过了使用天数,将会被强制更改密码,否则无法登录。默认值:99999。值为 -1 则不再限制密码可以使用的最大天数

  • 对应 shadow 文件中的第 5 个字段 maximum password age

PASS_MIN_DAYS(INT) # 自从上次密码修改之后,至少需要 INT 天才可以再次被修改。

  • 对应 shadow 文件中的第 4 个字段 minimum password age

PASS_WARN_AGE(INT) # 密码到期前发出警告的天数。值为 0 则表示仅在到期日发出警告,负值或不指定值表示不发出警告。

  • 对应 shadow 文件中的第 6 个字段 password warning period

注意:

  • PASS_MAX_DAYS、PASS_MIN_DAYS、PASS_WARN_AGE 这三个参数仅在创建账户时才会生效,当创建账户时,会读取这三个参数的值,并写入到 /etc/shadow 文件的对应字段中。也就是说,如果我修改了这些参数的值,已经存在的账户并不受影响
    • 如果想要让当前账户获取这些配置,使用 chage 命令、或者直接修改 /etc/shadow 文件即可。

最后修改 June 7, 2024: promql (39d242fb)