SELinux: restorecon ändert den Kontext nicht in httpd_sys_content_t

790
turrican_34

Ich muss Puppeteer auf einem Centos 7.4.1708-System verwenden, aber wenn ich SELinux auf Enforcing gesetzt habe, erhalte ich AVC-Fehler.

Wenn ich renne, sudo cat /var/log/messagesbekomme ich:

SELinux is preventing /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome from search access on the directory /sys/fs/cgroup/cpuset.  ***** Plugin restorecon_source (99.5 confidence) suggests *****************  If you want to fix the label. /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome default label should be httpd_sys_content_t.  Then you can run restorecon.  Do  # /sbin/restorecon -v /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome 

Dieselbe Nachricht erscheint vielleicht 6 oder 7 Mal.

Wenn ich jedoch versuche, die obigen Schritte auszuführen, wird der Kontext der Datei von restorecon nicht festgelegt.

Richtlinie festlegen (als root):
semanage fcontext -a -t httpd_sys_content_t '/var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome'

Richtlinien
matchpathcon /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome
überprüfen: Zeigt:
/var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome system_u:object_r:httpd_sys_content_t:s0

Das sieht gut aus, aber dann ...
Neuen Kontext in eine Datei setzen:
/sbin/restorecon -v /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome

restoreconfunktioniert nicht. Ich bekomme keine Fehler, auch wenn ich es benutze -vv. Ich habe auch zu zwingen versucht, restoreconmit, -Faber das funktioniert auch nicht.

Hier ist der aktuelle Kontext der Dateien:
ls -Z /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome Zeigt:
-rwxrwxrwx. root root system_u:object_r:nfs_t:s0 /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome

Der aktuelle Kontext ist darauf zurückzuführen, nfs_tdass ich synchronisierte Ordner mit einer nfsvirtuellen Box in Vagrant verwende. Ich kann nicht zu smb wechseln, da es nicht auf beiden Wegen mit einem Windows-Host synchronisiert wird.

Irgendwelche Ideen, wie ich dieses Problem beheben kann? Ich bin jetzt seit fast zwei Tagen dabei.

Hinweis: Wenn ich SELinux auf Permissive gesetzt habe, läuft Puppenspieler / Chromium ohne Probleme.

Vielen Dank :)

Edit: Ich sollte auch erwähnen, dass ich mich httpd_use_nfsgesetzt habe on.

Hier ist ein Pastebin aller meiner SELinux-Booleschen.

SELinux-Booleaner

Edit 2:

Mit dem Rat von @HBruijn versuche ich, mit definiertem Kontext zu mounten, erhalte aber einen Fehler.

AS-Root-Befehl:
mount 10.0.0.1:/C/Users/Lee/Desktop/www /var/www -o context="system_u:object_r:httpd_sys_content_t:s0"

Error:
mount.nfs: requested NFS version or transport protocol is not supported

Server 10.0.0.1ist mein privater Server in vagrantfile.
config.vm.network "private_network", ip: "10.0.0.0"

Der Exportpfad ist derselbe Pfad, den Vagrant verwendet, wenn ein Ordner angehängt wird, vagrant upz 10.0.0.1:/C/path/to/directory.

Irgendwelche Ideen??

0

1 Antwort auf die Frage

0
HBruijn

Ich denke, Sie versuchen, das Problem am falschen Ende zu lösen. Haben Sie in Betracht gezogen, Ihrem Webserver stattdessen Zugriff auf NFS-Freigaben zu gewähren:

setsebool -P httpd_use_nfs=1 

BEARBEITEN Basierend auf Ihrem Kommentar, dass Sie VirtualBox unter Windows ausführen:

Ich denke, Ihr Windows-Host unterstützt keine Kennzeichnung, und der Client (Ihr CentOS) weist dann eine Standardsicherheitsrichtlinie zu nfs_t.

Möglicherweise müssen Sie Ihren bevorzugten Sicherheitskontext als Mount-Option festlegen, um diesen Standard zu überschreiben (im Mount-Befehl oder in / etc / fstab):

# mount server:/export /var/www/html -o context="system_u:object_r:httpd_sys_content_t:s0" 

Siehe das RHEL 6 Handbuch

Entschuldigung, ich habe vergessen zu erwähnen, dass ich bereits httpd_use_nfs -> on habe. Ich werde das OP bearbeiten. vor 5 Jahren 0
Ich habe einen Pastebin von allen meinen anderen SELinux-Booleschen hinzugefügt. vor 5 Jahren 0
Verstehe ich zu verstehen, dass Sie VirtualBox unter Windows mit einem CentOS-Gastbetriebssystem ausführen? HBruijn vor 5 Jahren 0
Ja das ist richtig. Verwenden des winnfsd-Plugins, um nfs in Windows zum Laufen zu bringen. vor 5 Jahren 0
Wenn ich das als root ausführen, erhalte ich folgende Fehlermeldung: `mount.nfs: Server-Server konnte nicht aufgelöst werden: Name oder Dienst nicht bekannt mount.nfs: Vorgang bereits ausgeführt` turrican_34 vor 5 Jahren 0
Sie müssen den Servernamen und die Pfade von `server: / export / var / www / html` in das ändern, was für Ihr aktuelles Setup relevant ist HBruijn vor 5 Jahren 0
Von wo würde ich exportieren, wenn meine `/ var / www / html'-Dateien vom Host-Betriebssystem stammen? Muss ich den Host-OS-Ordner mit einem Gastordner synchronisieren, z. B. `/ fromhost / www / html`, dann diesen Pfad als Exportpfad verwenden. `mount server: / fromhost / www / html / var / www / html -o context =" system_u: object_r: httpd_sys_content_t: s0 "` turrican_34 vor 5 Jahren 0
Die Verwendung von Mount funktioniert aus irgendeinem Grund nicht. Bitte siehe Edit 2 im OP. Der Fehler `mount.nfs: Die angeforderte NFS-Version oder das Transportprotokoll werden nicht unterstützt. ' turrican_34 vor 5 Jahren 0