SELinux httpd Schreibzugriff auf ein Verzeichnis

9

Ich bin neu bei SELinux. kam von Debian. Ich möchte httpdZugriff auf ein Verzeichnis geben.

SELinux Alert Browser schlägt vor:

# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp 

Ich konnte nicht verstehen, wie dieser Befehl funktioniert. Ich gebe nirgendwo einen Verzeichnispfad an. Woher weiß es, welches Verzeichnis für httpd zulässig ist?

Bisher habe ich grep verwendet, um Text aus der Ausgabe oder Datei zu extrahieren. Aber hier wird grep für einen Prozess verwendet. Das habe ich nicht bekommen.

Auch was ist die eigentliche Lösung. Wenn ich httpd Schreibzugriff auf ein Verzeichnis gewähren möchte?

Neel Basu
quelle
4
Um Ihre andere Frage zu beantworten, liest audit2allow die SELinux-Protokolldatei und schreibt eine Richtlinie, die alles zulässt, was blockiert wurde. Der Verzeichnisname befindet sich in der Protokollnachricht. Indem Sie nach httpd suchen, schränken Sie es ein wenig ein, aber die Methode ist immer noch breiter als sie sein sollte.
miken32

Antworten:

17

So ändern Sie den Kontext eines Verzeichnisses dauerhaft:

# install semanage if you don't already have it:
yum install policycoreutils-python

# give the directory a new default context. The part at the end is a regex.
semanage fcontext -a -t httpd_sys_rw_content_t "/path/to/directory(/.*)?"

# apply the default context to the directory
restorecon -R /path/to/directory

Hier finden Sie weitere Dokumentationen zu den verschiedenen Kontexten für httpd:

RHEL 7: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrators_Guide/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Tml

RHEL 6: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Services/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.html

Greg
quelle
Perfekt !! Hat für mich in Fedora 26 funktioniert, policycoreutils-python wurde bereits standardmäßig installiert.
Sir_Faenor
5

SELinux verwendet erweiterte Attribute, die an die Verzeichnisstrukturen auf der Festplatte angehängt werden können. Überlegen Sie, ob dies Metadaten sind. Zugriffssteuerungslisten (ACLs) sind andere.

Die erweiterten Attribute, die Sie an ein Verzeichnis anhängen müssen, werden als Kontexte bezeichnet. SELinux verhält sich wie ein Verkehrspolizist und stellt sicher, dass eine ausführbare Datei mit bestimmten Kontexten basierend auf diesen Kontexten auf das Dateisystem zugreifen kann. Mit dem -ZSchalter auf können Sie sehen, was im Verzeichnis verfügbar ist ls.

$ sudo ls -Z /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html

Hier können Sie sehen, dass diese Verzeichnisse den Kontext httpd_sys_script_exec_t:s0im Verzeichnis haben cgi-bin. und das htmldir. hat httpd_sys_content_t:s0.

Sie können diese mit dem folgenden chconBefehl hinzufügen :

$ sudo chcon -t httpd_sys_content_t public_html

Der Befehl, nach dem Sie fragen, lädt einfach das Modul. mypoll.ppIch glaube nicht, dass es Berechtigungen für irgendetwas gewährt. audit.logEs fehlen wahrscheinlich mehr Nachrichten in dem , die Sie mit Ihrem Befehl vermissen, die Ihnen detaillierter mitteilen, was Sie benötigen zu tun, um den Zugang zu ermöglichen.

Ich möchte Sie ermutigen, sich etwas Zeit zu nehmen und sich mit SELinux vertraut zu machen. Es ist zunächst verwirrend, aber im Allgemeinen unkompliziert, nachdem Sie ein wenig Zeit damit verbracht haben. Weitere Informationen finden Sie in den folgenden Ressourcen.

Verweise

slm
quelle
Vielen Dank. Ich werde sie durchgehen. Aber können Sie mir vorerst sagen, was ich tun muss, um Schreibzugriff auf dieses Verzeichnis zu gewähren?
Neel Basu
Wenn es Inhalt ist, den Apache lesen soll, müssen Sie diesen Kontext wahrscheinlich zum chcon -R -t httpd_sys_content_t <dir>
Verzeichnis