You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04下配置root通过su切换用户时跳过密码过期强制修改提示的方法

Ubuntu 22.04下配置root通过su切换用户时跳过密码过期强制修改提示的方法

我完全理解你的困扰——在Ubuntu 22.04上,哪怕是root用户用su - user1切换到密码过期的账号,都会被强制要求改密码,但CentOS下就没这个问题。确实这是两者PAM(Pluggable Authentication Modules)配置的差异导致的,下面我一步步带你调整配置,实现你想要的效果:

步骤1:备份配置文件(重要)

首先,我们先备份su的PAM配置文件,避免修改出错后无法恢复:

sudo cp /etc/pam.d/su /etc/pam.d/su.bak

步骤2:编辑su的PAM配置

打开su的配置文件进行编辑:

sudo nano /etc/pam.d/su

在文件中找到account include common-account这一行,在它之前添加如下配置:

account    [success=1 default=ignore]  pam_succeed_if.so quiet ruser eq root

解释一下这行的作用:

  • pam_succeed_if.so是PAM的一个条件判断模块,这里用来检查发起su操作的原始用户(ruser)是不是root。
  • success=1表示如果条件满足(发起者是root),就跳过后面的1个模块——也就是common-account里负责检查密码过期的模块。
  • quiet参数是为了避免输出不必要的日志信息。

这样配置后,root切换到过期账号时会跳过密码过期检查,但依然会执行账号有效性的其他必要验证(比如用户是否存在、是否被锁定等),而普通用户登录该过期账号时,还是会被正常要求修改密码,完全符合你的需求。

步骤3:保存配置并测试

在nano编辑器中按Ctrl+O保存文件,回车确认后按Ctrl+X退出。

现在测试一下效果:用root执行su - user1,你会发现直接进入了user1的会话,不会再弹出修改密码的提示了。

备选方案

如果你觉得上述条件判断的方式不够直观,也可以直接使用pam_expire.so模块的rootok参数,同样在account include common-account之前添加:

account    required     pam_expire.so rootok

rootok参数会让pam_expire.so模块直接跳过root发起的密码过期检查,效果和前面的方法一致。

备注:内容来源于stack exchange,提问作者Utz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:23:10