为什么 selinux 策略适用于从 cronjobs 运行的命令(例如:logrotate),而不适用于直接从命令行运行的命令?
当我从命令行手动运行 logrotate 时,它运行良好。但是当它从 cronjob 运行时,我在 audit.log 中收到一个错误,提醒我 selinux 阻止了对 www 的访问等。
这是为什么?以及如何模拟它从 cronjob 运行以进行测试?
当cron
运行时logrotate
,它的SELinux对地限制一个logrotate_t“类型”。该“类型”被限制修改其他文件类型(又名“逃避限制”)。
当您运行 logrotate 时,您(很可能)从“无限制”类型开始,这意味着它所说的 -logrotate
允许该进程修改文件。您可能还想logrotate
重新启动或发送进程信号(例如通过 postrotate);该活动也可能受到 SELinux 的限制。
我的建议是告诉 SELinux 允许(“允许”) logrotate_t 类型来逃避限制,使用:
semanage permissive -a logrotate_t
Run Code Online (Sandbox Code Playgroud)
这样做是一种适度的解决方案,介于关闭 SELinux和微调允许您需要的限制逃逸(也许使用自定义标签)的策略之间。要恢复此更改,请使用semanage permissive -d logrotate_t
.
模拟 cron 启动过程的最佳方法是将作业放入 cron。或者,我知道runcon
,尽管我无法成功使用它。
归档时间: |
|
查看次数: |
1120 次 |
最近记录: |