Fedora 25 et apache sont sur notre serveur.
Je veux faire en sorte que le script php sur notre site web puisse changer les paramètres de crontab.Selinux bloque la commande crontab de php
J'ai créé le script php test suivant:
<?php
system("echo '*/2 * * * * date > /var/www/logs/testlog.txt' | crontab - 2>&1");
Mais cela n'a pas fonctionné. J'ai reçu le message:
/var/spool/cron/#tmp.mh203-95.XXXXG0KrFF: Permission denied
Je regardai à la sortie de sealert -a /var/log/audit/audit.log
et trouvé:
SELinux is preventing crontab from write access on the directory /var/spool/cron.
D'accord. Il semble que Apache n'est pas autorisé l'accès en écriture à /var/spool/cron
parce que ce répertoire n'a pas le httpd_sys_rw_content_t label
. J'ai donc exécuté la commande: chcon -v -R -t httpd_sys_rw_content_t /var/spool/cron
Mon script php a commencé à fonctionner. La commande crontab -l a donné une sortie normale.
Mais le nouveau problème est apparu. :(Les tâches cron n'a pas été exécuté
Dans le répertoire/var/log/Cron j'ai vu l'erreur.
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)
Après beaucoup de temps de recherche ... Je trouve que le/var/spool/cron doit avoir l'étiquette user_cron_spool_t
J'exécutais:.. chcon -v -R -t user_cron_spool_t /var/spool/cron
les tâches cron commencé à travaux Mais mon script php ne fonctionne pas à nouveau le même problème au début
sealert a suggéré que les commandes comme... :
ausearch -c 'crontab' --raw | audit2allow -M my-crontab
semodule -X 300 -i mon-crontab.pp
Mais cela n'a pas aidé.
Qu'est-ce qui me manque? Comment résoudre le problème? Puis-je combiner deux étiquettes user_cron_spool_t
et httpd_sys_rw_content_t
pour /var/spool/cron directory
?