服務器上有Fedora 25和apache。
我想這樣做,我們的網站上的PHP腳本可以更改crontab設置。Selinux從php中阻止crontab命令
我創建了下面的測試PHP腳本:
<?php
system("echo '*/2 * * * * date > /var/www/logs/testlog.txt' | crontab - 2>&1");
但沒有奏效。我得到的消息:
/var/spool/cron/#tmp.mh203-95.XXXXG0KrFF: Permission denied
我看着輸出sealert -a /var/log/audit/audit.log
發現:
SELinux is preventing crontab from write access on the directory /var/spool/cron.
好。聽起來像apache不允許對/var/spool/cron
的寫入訪問,因爲該目錄沒有httpd_sys_rw_content_t label
。 所以我執行命令: chcon -v -R -t httpd_sys_rw_content_t /var/spool/cron
我的PHP腳本開始工作。 crontab -l命令提供正常輸出。
但出現新問題。 :(這個cron任務未執行
在/ var /日誌/ cron的我看到的錯誤:
Mar 23 18:05:01 mh203-95 crond[1653]: (apache) Unauthorized SELinux context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 file_context=system_u:object_r:httpd_sys_rw_content_t:s0 (/var/spool/cron/apache)
Mar 23 18:05:01 mh203-95 crond[1653]: (apache) FAILED (loading cron table)
經過研究大量的時間......我發現,在/ var /卷軸/ cron的必須有user_cron_spool_t
標籤,以便我執行:。chcon -v -R -t user_cron_spool_t /var/spool/cron
開始工作這個cron任務,但我的PHP腳本沒有像一開始重新工作,同樣的問題
sealert建議喜歡的命令。 :
ausearch -c'crontab'--raw | audit2allow -M my-crontab
semodule -X 300 -i my-crontab.pp
但它沒有幫助。
我錯過了什麼? 如何解決問題? 我可以以某種方式將兩個標籤user_cron_spool_t
和httpd_sys_rw_content_t
合併爲/var/spool/cron directory
?