Un tel problème peut dépendre du système d'exploitation que vous utilisez et de sa configuration. Certaines distributions Linux (principalement celles basées sur RHEL comme CentOS ou Fedora) sont livrées avec SELinux activé par défaut. Cela peut être vérifié et modifié temporairement avec les commandes suivantes:
root@ls:~# /usr/sbin/getenforce
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce
Permissive
Vous pouvez également avoir une vue plus complète de la configuration actuelle avec:
root@ls:~# /usr/sbin/sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
Cette modification peut être rendue permanente en modifiant le /etc/selinux/config
fichier et en définissant la SELINUX
variable sur permissive
ou disabled
.
Mais, la bonne façon de résoudre ce type de problème , si vous êtes effectivement dans cette situation, est de vérifier le /var/log/audit/audit.log
fichier journal. Il contiendra tous les événements liés aux règles SELinux. Vous devrez alors probablement donner à votre script le contexte correct, c'est-à-dire être autorisé à être exécuté par l'utilisateur apache / php. La vérification du contexte de sécurité SELinux se fait avec ls -Z
:
root@ls:~# ls -alZ /var/www/cgi-bin/
drwxr-xr-x root root system_u:object_r:httpd_sys_script_exec_t .
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t ..
Cette liste l'utilisateur, le rôle et le type de chaque fichier / répertoire. Ici, le httpd_sys_script_exec_t
type donne aux fichiers du répertoire cgi l'autorisation d'être exécuté par httpd. Votre script shell devrait probablement avoir le même type.
Vous pouvez également alimenter les audit.log
lignes de la audit2allow
commande. Il vous fournira les modifications nécessaires pour rendre SELinux heureux. Mais généralement, les changements suggérés doivent être effectués sur la politique SELinux elle-même, ce qui n'est pas ce que vous devez faire dans votre cas (néanmoins, cette sortie peut donner une idée de ce qui se passe).
La page suivante décrit un problème similaire et différentes façons de le résoudre: http://sheltren.com/stop-disabling-selinux
x
) sur le fichier? Avez-vous spécifié l'interpréteur de script dans une ligne de shebang?