Es gibt Fedora 25 und Apache auf unserem Server.
Ich möchte, dass das PHP-Skript auf unserer Website crontab Einstellungen ändern kann.Selinux blockiert den Befehl crontab von PHP
Ich habe den folgenden Test PHP-Skript:
<?php
system("echo '*/2 * * * * date > /var/www/logs/testlog.txt' | crontab - 2>&1");
Aber es hat nicht funktioniert. Ich habe die Nachricht:
/var/spool/cron/#tmp.mh203-95.XXXXG0KrFF: Permission denied
ich am Ausgang sah von sealert -a /var/log/audit/audit.log
und gefunden:
SELinux is preventing crontab from write access on the directory /var/spool/cron.
Okay. Es klingt wie Apache ist der Schreibzugriff auf /var/spool/cron
nicht erlaubt, da dieses Verzeichnis nicht die httpd_sys_rw_content_t label
hat. Also habe ich den Befehl ausgeführt: chcon -v -R -t httpd_sys_rw_content_t /var/spool/cron
Mein PHP-Skript begann zu arbeiten. Der Befehl crontab -l gab eine normale Ausgabe.
Aber das neue Problem erschien. :(Die cron-Aufgaben nicht ausgeführt wurde
im Verzeichnis/var/log/cron ich den Fehler gesehen.
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)
Nach vielen Zeit der Forschung ... fand ich, dass das Verzeichnis/var/spool/cron muss das user_cron_spool_t
Label so ausgeführt. I:. chcon -v -R -t user_cron_spool_t /var/spool/cron
die cron Aufgaben arbeiten begonnen Aber mein pHP-Skript hat nicht wieder das gleiche Problem wie am Anfang
sealert vorgeschlagen, die Befehle wie... :
ausearch -c 'crontab' - Zeichnung | audit2allow -M my-crontab
semodul -X 300 -i my-crontab.pp
Aber es hat nicht geholfen.
Was fehlt mir? Wie löst man das Problem? Kann ich die beiden Labels user_cron_spool_t
und httpd_sys_rw_content_t
für /var/spool/cron directory
kombinieren?