oracle用户下编辑计划任务时(crontab -e),报错如下:
[oracle@crm-ethanDB ~]$ crontab -l
You (oracle) are not allowed to access to (crontab) because of pam configuration.
什么鬼?
明明前几天还使用过crontab命令,问了下运维同事,最近也没有任何改动。
OK, 按照常规流程,逐顺排查:1)查看/bin/crontab的SSID位是否标记S2)检查/etc/cron* 是否设置了.deny文件限制;3)检查PAM模块,cat /etc/pam.d/crond,文件中配置是否正常4)查看系统日志cat /var/log/secure的错误信息5)查看oracle用户密码过期
具体排查过程:
1)查看/bin/crontab的SSID位是否标记S[root@crm-sbldbdg ~]# ll /bin/crontab-rwsr-xr-x. 1 root root 57664 Oct 16 2017 /bin/crontab
2)检查/etc/cron* 是否设置了.deny文件限制
[root@crm-sbldbdg ~]# ll -dl /etc/cron*drwxr-xr-x. 2 root root 4096 Jan 13 2020 /etc/cron.ddrwxr-xr-x. 2 root root 4096 Jan 13 2020 /etc/cron.daily-rw-------. 1 root root 0 Oct 16 2017 /etc/cron.denydrwxr-xr-x. 2 root root 4096 Jan 13 2020 /etc/cron.hourlydrwxr-xr-x. 2 root root 4096 Dec 28 2013 /etc/cron.monthly-rw-r--r--. 1 root root 451 Dec 28 2013 /etc/crontabdrwxr-xr-x. 2 root root 4096 Dec 28 2013 /etc/cron.weekly
有/etc/cron.deny文件,但没有实际内容,也就不存在什么限制。
注意:
如果存在cron.allow文件,以cron.allow文件优先;果如cron.allow和cron.deny都存在,以cron.allow文件优先;如果只有cron.deny 文件,只能以cron.deny 文件为准。
3)检查PAM模块,cat /etc/pam.d/crond,文件中配置是否正常[root@crm-sbldbdg ~]# cat /etc/pam.d/crond## The PAM configuration file for the cron daemon### No PAM authentication called, auth modules not neededaccount required pam_access.soaccount include password-authsession required pam_loginuid.sosession include password-authauth include password-auth
4)查看系统日志cat /var/log/secure的错误信息。。。Mar 3 16:54:01 crm-ethanDB crond[103891]: pam_unix(crond:account): expired password for user oracle (password aged)==Mar 3 16:54:25 crm-ethanDB su: pam_unix(su-l:session): session opened for user root by root2(uid=1001)Mar 3 16:55:47 crm-ethanDB crontab: pam_unix(crond:account): expired password for user oracle (password aged)。。。
经查看日志信息,有如上报错。
问题基本明了。
5)Chage命令查看oracle用户密码有效期[root@crm-sbldbdg ~]# chage -l oracleLast password change : Aug 31, 2020Password expires : Feb 27, 2021Password inactive : neverAccount expires : neverMinimum number of days between password change : 10Maximum number of days between password change : 180Number of days of warning before password expires : 7
Passwordexpires显示oracle的密码到期时间为Feb 27, 2021。
结论:
问题找到,oracle账号密码到期,导致oracle下的crontab的定时任务不能正常进行,所以报文章开头错如下:[oracle@crm-ethanDB ~]$ crontab -lYou (oracle) are not allowed to access to (crontab) because of pam configuration.
如何破之?
方法:修改oracle密码永不过期[root@crm-sbldbdg ~]# chage -M 99999 oracle
chage -l oracle命令,再看密码过期时间为never[root@crm-sbldbdg ~]# chage -l oracleLast password change : Aug 31, 2020Password expires : neverPassword inactive : neverAccount expires : neverMinimum number of days between password change : 10Maximum number of days between password change : 99999Number of days of warning before password expires : 7Minimum number of days between password change : 10Maximum number of days between password change : 99999Number of days of warning before password expires : 7
经再次验证,oracle下的crontab命令可以正常编辑。
文章至此。
欢迎关注个人微信公众号
近期热文
你可能也会对以下话题感兴趣。点击链接便可查看。Oracle ADG同步技术,DBA必备的一种“后悔药”
Oracle 11g及12c+版本下为啥有些表不能exp导出?
OpenJDK和Oracle JDK有什么区别和联系?
神技_如何快捷下载Oracle补丁的方法?!
趋势篇:oracle 11g,12c,18c,19c之support lifetime
Configuring Kernel Parameters about SHMMAX on HP
对recursive calls的深刻理解
Centos能不能替换RHEL?
RAC1 服务器要重启,喂:RAC2你先顶一下,咋搞?!
对recursive calls的深刻理解
OpenJDK和Oracle JDK有什么区别和联系?
Centos能不能替换RHEL?
PLSQL Developer中控制结果集表格自动提交
alter table T1 add column新增字段执行时间超长,咋回事?
Oracle 11g 异机rman恢复报错ORA-27302:failure occurred at: sskgpcreate
Materialized view物化视图的一个简单应用场景
干货:RHEL7.2生产环境下双节点12c RAC搭建实操
【干货篇】在国内外数据库百家争鸣的时代,DBA们该何去何从?
LINUX环境:MySQL和Oracle开机自启动,咋搞?Logminer:oracle人为误操作之恢复神器
What:ASM自动脱落了
实操:12C RAC环境下的ADG同步库搭建
“神器”:Oracle日志采集分析工具——TFA
Oracle Rac:关闭透明大页的原因及方法
实操篇:Oracle 19c的安装部署
浅谈MySQL三种锁:全局锁、表锁和行锁
Oracle如何访问MySql:透明网关