Linux设置用户账号的密码永不过期

好的,在 Linux 系统中,有多种方法可以设置用户账号的密码永不过期。这在服务器环境中为特定服务账号或管理员账号提供了便利,但在生产环境中需格外谨慎,因为它会带来安全风险

图片[1]_Linux设置用户账号的密码永不过期_知途无界

下面我将为您汇总从临时到永久、从单个用户到全局策略的各种方法。

方法一:使用 chage 命令(最常用、最推荐)

chage 命令是专门用于修改用户密码过期信息的工具。它的 -M 选项可以设置密码的最大有效期(天数)。

核心原理​:将密码最大有效期设置为 99999(一个很大的数字,约等于 273 年),或者设置为 -1(在某些系统上表示永不过期)。

1. 为指定用户设置密码永不过期

# 方法 A: 使用一个大数值 (推荐,兼容性更好)
sudo chage -M 99999 username

# 方法 B: 使用 -1 (如果系统支持)
sudo chage -M -1 username

示例:将用户 deployuser 的密码设置为永不过期

sudo chage -M 99999 deployuser

2. 验证设置结果

使用 chage -l 命令查看用户的密码过期策略详情。

sudo chage -l username

输出示例:​

Last password change                                    : Oct 26, 2023
Password expires                                        : never  # <--- 这里显示 never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999 # <--- 或者这里显示 99999
Number of days of warning before password expires       : 7

Maximum number of days between password change 显示为 99999never 时,即表示密码永不过期。


方法二:使用 passwd 命令

passwd 命令主要用于修改密码,但也提供了设置密码过期策略的选项。

  • -n:设置密码最短使用天数(默认 0)。
  • -x:设置密码最长使用天数(默认 99999)。
  • -w:设置密码过期前的警告天数。
  • -i:设置密码过期后的宽限天数。

为指定用户设置密码永不过期

通过将最长使用天数 (-x) 设置为 99999 来实现。

sudo passwd -x 99999 username

示例:将用户 dbadmin 的密码设置为永不过期

sudo passwd -x 99999 dbadmin

验证:​
同样可以使用 chage -l dbadmin 来确认设置已生效。


方法三:直接编辑 /etc/shadow 文件(不推荐新手)

/etc/shadow 文件存储了用户的加密密码和相关的过期信息。每行对应一个用户,字段之间用冒号分隔。

字段格式:​
username:password:last_change:min_age:max_age:warn:inactive:expire

  • max_age:密码最长使用天数。​将其设置为 99999 即表示永不过期。​

操作步骤:​

  1. 备份文件(至关重要!):​sudo cp /etc/shadow /etc/shadow.bak
  2. 使用 vipw -s 命令安全编辑(推荐):​
    vipw -s 会锁定文件并调用默认编辑器,防止多人同时编辑导致损坏。 sudo vipw -s 找到对应用户的行,将第 5 个字段(从 0 开始计数)修改为 99999
    ​**例如,将 deployuser:...:180:... 修改为 deployuser:...:99999:...**​
  3. 或者使用 sed 命令直接修改(快捷但有风险):​sudo sed -i.bak -E 's/^([^:]+):[^:]*:[^:]*:[^:]*:)[0-9]+:/\199999:/' /etc/shadow
    • -i.bak:直接修改文件并创建一个 .bak 备份。
    • 这个正则表达式比较复杂,建议优先使用 vipw -s

警告​:直接编辑 /etc/shadow 风险较高,容易因格式错误导致用户无法登录。除非你非常熟悉其格式,否则请优先使用前两种方法。


方法四:设置新创建的用户默认密码永不过期

如果你希望所有新创建的用户默认密码都永不过期,可以修改 /etc/login.defs 文件。

操作步骤:​

  1. 编辑 /etc/login.defs 文件: sudo nano /etc/login.defs
  2. 找到 PASS_MAX_DAYS 这一行,并将其值修改为 99999# Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_WARN_AGE 7
  3. 保存并退出。

注意​:此方法只对新创建的用户生效,对已存在的用户无效。已存在用户的策略仍需用 chagepasswd 命令单独设置。


方法五:使用 usermod 命令(间接方法)

usermod 命令主要用于修改用户属性,它本身没有直接设置密码过期天数的选项。但是,我们可以结合 -e--expiredate)选项来间接实现。

  • -e YYYY-MM-DD:设置账号的过期日期。
  • -e ""-e 0:有些资料说这能取消账号过期,但对密码过期策略影响不大。

更标准的做法是先用 usermod 修改其他属性,再用 chage 设置密码策略。​​ 因此,usermod 通常不被视为设置密码永不过期的直接方法。


总结与安全建议

方法命令优点缺点适用场景
​**chage**​sudo chage -M 99999 user官方推荐,功能专一,安全可靠需单独为每个用户设置绝大多数情况下的首选
​**passwd**​sudo passwd -x 99999 user命令简单,易于记忆功能不如 chage 丰富快速为单个用户设置
​**编辑 /etc/shadow**​sudo vipw -s可批量、精确修改高风险,易出错,不推荐高级用户,脚本批量处理
​**修改 /etc/login.defs**​编辑文件可设置新用户默认策略不影响现有用户需要为新系统或所有新用户设定默认规则

安全建议

  1. 最小权限原则​:只为确实需要永不过期的服务账号或特定管理员账号设置此策略。切勿为普通用户账号设置密码永不过期。
  2. 加强其他安全措施​:对于设置了密码永不过期的账号,应加强监控和审计,并确保其密码足够强壮。可以考虑结合使用 SSH 密钥认证来代替密码登录,从根本上提升安全性。
  3. 定期审查​:定期使用 chage -l 命令审查这些账号的策略,确保其必要性依然存在。
  4. 文档化​:将设置了密码永不过期的账号记录在案,并告知团队成员,避免遗忘和管理混乱。
© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞72 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容