Das Modell in fünf Minuten
SELinux vergibt jedem Prozess und jeder Datei ein Label. Eine Regel erlaubt dann, dass Prozesse mit Label A auf Dateien mit Label B zugreifen dürfen. Alles, was nicht ausdrücklich erlaubt ist, wird verweigert. Mehr ist es im Kern nicht.
# Kontext von Dateien
ls -Z /var/www/html
# system_u:object_r:httpd_sys_content_t:s0
# Kontext von Prozessen
ps -eZ | grep httpd
# system_u:system_r:httpd_t:s0
# Kontext deiner eigenen Sitzung
id -ZDer interessante Teil ist der dritte: der Typ. httpd_t ist die Domäne des Webservers, httpd_sys_content_t der Typ für Inhalte, die er lesen darf. Passt beides nicht zusammen, gibt es eine Verweigerung.
Die drei Modi
| Modus | Verhalten | Wofür |
|---|---|---|
Enforcing | verweigert und protokolliert | Produktivbetrieb, das Ziel |
Permissive | erlaubt, protokolliert aber die Verweigerung | Fehlersuche und Einführung neuer Anwendungen |
Disabled | gar kein SELinux | kein sinnvoller Anwendungsfall auf einem Server |