问题记录
在使用调度器DolphinScheduler中有一个定时任务,每天早上执行一个shell脚本,前些日子突然停止的了,查看日志发现:
原来,DolphinScheduler在执行脚本的时候,会使用sudo -r root
,使用root权限去执行。
但是,在使用sudo
时却遇到了权限问题。
sudo: pam_open_session: System error
sudo: policy plugin failed session initialization
排查过程
通过请教运维同事得知,Linux密码是会定期过期的,那么在机器上切换DolphinScheduler排查问题。
尝试执行:
[dolphinscheduler@node01 ~]$ sudo whoami
得到:
sudo: pam_open_session: System error
sudo: policy plugin failed session initialization
通过chage
指令查看/修改帐号和密码的有效期限,得到:
[dolphinscheduler@node01 ~]$ chage -l dolphinscheduler
Last password change : Sep 17, 2021
Password expires : Dec 16, 2021
Password inactive : never
Account expires : never
Minimum number of days between password change : 1
Maximum number of days between password change : 90
Number of days of warning before password expires : 10
内容释义:
最近一次密码修改时间
密码过期时间
密码失效时间
帐户过期时间
两次改变密码之间相距的最小天数
两次改变密码之间相距的最大天数
在密码过期之前警告的天数
果然,dolphinscheduler用户的密码已经过期,我们应该修改重置过期标志。
解决方案
重置用户密码过期标志,密码可更改的最小天数设置为0,密码保持有效的最大天数设置为99999,停滞时期设置为-1即never,帐号到期的日期设置为-1即never:
chage -m 0 -M 99999 -I -1 -E -1 user
再次查看该用户的密码有效期:
[dolphinscheduler@node01 ~]$ chage -l dolphinscheduler
Last password change : Sep 17, 2021
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
尝试使用sudo权限
[dolphinscheduler@node01 ~]$ sudo whoami
root
再次在DolphinScheduler中执行shell脚本,执行成功。
附chage命令详解
chage
修改帐号和密码的有效期限
补充说明
chage命令 是用来修改帐号和密码的有效期限。
语法
chage [选项] 用户名
选项
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。