SElinux 阻止 cron 运行 Centos 7

SElinux 阻止 cron 运行 Centos 7

我正在使用 cronjob 启动一个脚本,该脚本将在重启时触发我的 teamspeak

它运行良好一段时间,直到我激活 Selinux,cron 不再工作了

我在 cron 日志中发现这个错误:

Aug  2 16:14:21 Manu crond[683]: (teamspeak3-user) Unauthorized SELinux context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 file_context=system_u:object_r:unlabeled_t:s0 (/var/spool/cron/teamspeak3-user)
Aug  2 16:14:21 Manu crond[683]: (teamspeak3-user) FAILED (loading cron table)

我在网上搜索过,有些人在谈论一个已知的错误和解决方法,但对我来说不起作用。

请帮助。

添加的信息:

ls -lZ /var/spool/cron/teamspeak3-user

-rw-------. teamspeak3-user teamspeak3-user system_u:object_r:unlabeled_t:s0 /var/spool/cron/teamspeak3-user

答案1

因此您需要更改 var/spool/cron 下的 cron 文件的类型

尝试这个:

# chcon -t user_cron_spool_t /var/spool/cron/teamspeak3-user

请看这里了解更多信息:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html

答案2

我觉得这chcon是一个快速解决方案。最好通过 semanage 将其设置为规则:

# semanage fcontext -a -t user_cron_spool_t "/var/spool/cron(/.*)?"
# restorecon -R -vv /var/spool/cron

它将在任何系统更新后继续存在并自动应用于新用户的 cronjob。

答案3

我尝试通过 /etc/crontab 中的 cron 作业每天晚上 11:00 自动关闭我的 rhel 7.3 服务器。我遇到了类似的问题,selinux 不允许运行该作业。

但是我通过在 /etc/cron.d/ 中创建一个新的 crontab 文件找到了解决方案,并且 cron 作业成功执行并在 /etc/cron.d/crontab 文件中定义的时间关闭系统。

我从下面的 RHEL 页面第 24.1.2 点“安排 Cron 作业”中找到了解决方案

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-automating_system_tasks

答案4

要修复 /etc/crontab 中作业中类似的错误,我必须执行以下操作:

chcon -t system_cron_spool_t /etc/crontab
systemctl start crond

但不确定如何使其永久存在。红帽氯乙烯变化是暂时的。但它们提供了其他说明这或许就是答案。

相关内容