在跟踪 /var/log/cron 时,我注意到 cron 作业由于 PAM 权限而失败。在我的 access.conf 中,我确实有以下未注释的内容,以确保(或我认为确保)root 确实有权运行 cron 作业。
# User "root" should be allowed to get access via cron .. tty5 tty6.
+ : root : cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6
我在 Centos 7 Kernel 3.10.0-693.21.1.el7.x86_64 上,我们已经通过领域、sssd、kerberos 将它连接到我们的 Windows 活动目录实例。我的安装步骤可以在这里找到Best Auth Mech to Connect to Windows AD
我现在不知所措,无法弄清楚可能是什么原因造成的。我仔细检查了root密码没有过期,也没有过期。当前的 root 访问权限是通过 windows 安全组配置的。
任何帮助将不胜感激!
编辑 我在 pam_access.so 的末尾添加了调试并得到以下信息
crond[17411]: pam_access(crond:account): login_access: user=root, from=cron, file=/etc/security/access.conf
crond[17411]: pam_access(crond:account): line 60: - : ALL EXCEPT wheel shutdown sync : LOCAL root
crond[17411]: pam_access(crond:account): list_match: list=ALL EXCEPT wheel shutdown sync, item=root
crond[17411]: pam_access(crond:account): user_match: tok=ALL, item=root
crond[17411]: pam_access(crond:account): string_match: tok=ALL, item=root
crond[17411]: pam_access(crond:account): user_match: tok=wheel, item=root
crond[17411]: pam_access(crond:account): string_match: tok=wheel, item=root
crond[17411]: pam_access(crond:account): user_match: tok=shutdown, item=root
crond[17411]: pam_access(crond:account): string_match: tok=shutdown, item=root
crond[17411]: pam_access(crond:account): user_match: tok=sync, item=root
crond[17411]: pam_access(crond:account): string_match: tok=sync, item=root
crond[17411]: pam_access(crond:account): user_match=1, "root"
crond[17411]: pam_access(crond:account): list_match: list=LOCAL root, item=root
crond[17411]: pam_access(crond:account): from_match: tok=LOCAL, item=cron
crond[17411]: pam_access(crond:account): string_match: tok=LOCAL, item=cron
crond[17411]: pam_access(crond:account): from_match=1, "cron"
crond[17411]: pam_access(crond:account): access denied for user
根'来自'cron'
我最终将我的 access.conf 重新排列到下面。从某种意义上说,我将 cron 条目作为配置文件中的第二个条目,这似乎正确设置了 root 访问 cron 的权限。
如果有人知道,但我怀疑权限是建立在它们在配置中的输入方式上的。即使您通过配置中的条目获得许可,如果该条目之前的一行拒绝您访问,它会覆盖授予条目,因为它首先出现?
如下一行所示:
crond[17411]: pam_access(crond:account): access denied for user root' from cron'
看起来是 cron 拒绝访问。检查您的系统中是否有
cron.allow
orcron.deny
文件,通常在您的/etc
or/etc/cron.d
目录中。如果您有一个cron.allow
文件,您需要在其中添加您的用户,如果您有一个cron.deny
文件并且那里列出了根目录,则您需要将其删除。