Ein solches Problem kann vom verwendeten Betriebssystem und der Konfiguration abhängen. Einige Linux-Distributionen (hauptsächlich solche, die auf RHEL basieren, wie CentOS oder Fedora) werden mit standardmäßig aktiviertem SELinux ausgeliefert. Dies kann mit den folgenden Befehlen überprüft und vorübergehend geändert werden:
root@ls:~# /usr/sbin/getenforce
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce
Permissive
Sie können die aktuelle Konfiguration auch vollständiger anzeigen:
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
Diese Änderung kann dauerhaft vorgenommen werden, indem Sie die /etc/selinux/config
Datei bearbeiten und die SELINUX
Variable auf permissive
oder setzendisabled
.
Aber der richtige Weg , um diese Art von Problem zu lösen , wenn Sie tatsächlich in dieser Situation sind, ist das überprüfen /var/log/audit/audit.log
Protokolldatei. Es enthält alle Ereignisse, die sich auf SELinux-Regeln beziehen. Dann sollten Sie Ihrem Skript wahrscheinlich den richtigen Kontext geben, dh die Berechtigung, vom Apache / PHP-Benutzer ausgeführt zu werden. Das Überprüfen des SELinux-Sicherheitskontextes erfolgt mit 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 ..
Diese Liste enthält den Benutzer, die Rolle und den Typ jeder Datei / jedes Verzeichnisses. Hier diehttpd_sys_script_exec_t
gibt Typ den Dateien im cgi-Verzeichnis die Berechtigung, von httpd ausgeführt zu werden. Ihr Shell-Skript sollte wahrscheinlich denselben Typ haben.
Sie können die audit.log
Zeilen auch an den audit2allow
Befehl übergeben. Sie erhalten die Änderungen, die erforderlich sind, um SELinux glücklich zu machen. In der Regel müssen die vorgeschlagenen Änderungen jedoch an der SELinux-Richtlinie selbst vorgenommen werden. Dies ist jedoch nicht das, was Sie in Ihrem Fall tun sollten.
Auf der folgenden Seite werden ein ähnliches Problem und verschiedene Lösungsmöglichkeiten beschrieben: http://sheltren.com/stop-disabling-selinux
x
) für die Datei festgelegt? Haben Sie den Script-Interpreter in einer Shebang-Zeile angegeben?