Ich benötige eine Klärung / Bestätigung / Ausarbeitung der verschiedenen Rollen, die DAC, ACL und MAC in der Linux-Dateisicherheit spielen.
Nach einigen Recherchen aus der Dokumentation ist dies mein Verständnis des Stacks:
- SELinux muss Ihnen den Zugriff auf das Dateiobjekt erlauben.
- Wenn die ACLs einer Datei (zB
setfacl
,getfacl
für einen ACL - mount) ausdrücklich erlaubt / Zugriff auf das Objekt verweigert, dann ist keine weitere Verarbeitung erforderlich ist . - Ansonsten liegt es an den Berechtigungen der Datei (rwxrwxrwx DAC-Modell).
Vermisse ich etwas? Gibt es Situationen, in denen dies nicht der Fall ist?
linux
permissions
selinux
acl
Belmin Fernandez
quelle
quelle
Antworten:
Wenn ein Prozess eine Operation an einer Datei ausführt, führt der Linux-Kernel die Prüfung in der folgenden Reihenfolge durch:
Discretionary Access Control (DAC) oder vom Benutzer vorgegebene Zugriffskontrolle. Dies umfasst sowohl klassische UNIX-Berechtigungsprüfungen als auch POSIX-Zugriffssteuerungslisten (Access Control Lists, ACL) . Klassische UNIX-Überprüfungen vergleichen die aktuelle Prozess-UID und -GID mit der UID und -GID der Datei, auf die zugegriffen wird, hinsichtlich der eingestellten Modi (Lesen / Schreiben / Ausführen). Die Zugriffssteuerungsliste erweitert die klassischen UNIX-Prüfungen, um weitere Optionen zur Berechtigungssteuerung zu ermöglichen.
Obligatorische Zugangskontrolle (MAC) oder richtlinienbasierte Zugangskontrolle. Dies wird mit Linux Security Modules (LSM) implementiert, die keine echten Module mehr sind (früher waren sie es, aber sie wurden fallengelassen). Sie ermöglichen zusätzliche Überprüfungen, die auf anderen Modellen als den klassischen UNIX-Sicherheitsüberprüfungen basieren. Alle diese Modelle basieren auf einer Richtlinie, die beschreibt, welche Art von Aktionen für welchen Prozess in welchem Kontext zulässig sind.
Hier ist ein Beispiel für Inodes-Zugriff (einschließlich Dateizugriff), um meine Antwort mit Links zu einem Online- Linux- Querverweis zu untermauern . Die angegebenen "
function_name
(filename: line)" beziehen sich auf die 3.14-Version des Linux-Kernels.Die Funktion
inode_permission
( fs / namei.c: 449 ) überprüft zuerst das Dateisystem selbst (sb_permission
in fs / namei.c: 425 ) auf Leseberechtigungen und ruft dann__inode_permission
( fs / namei.c: 394 ) auf, um zu prüfen, ob Lese- / Schreib- / Ausführungsberechtigungen vorliegen Berechtigungen und POSIX-ACL für einen Inode indo_inode_permission
( fs / namei.c: 368 ) (DAC) und dann für LSM-bezogene Berechtigungen (MAC) insecurity_inode_permission
( security / security.c: 550 ).Es gab nur eine Ausnahme zu dieser Reihenfolge (DAC dann MAC): Es war für die MMAP-Prüfungen. Dies wurde jedoch in der 3.15-Version des Linux-Kernels behoben ( relevantes Commit ).
quelle
DAC
==Discretionary Access Control
, http://en.wikipedia.org/wiki/Discretionary_access_controlMAC
==Mandatory Access Control
, http://en.wikipedia.org/wiki/Mandatory_access_controlACL
==Access Control List
, http://en.wikipedia.org/wiki/Access_control_listDas
ACL
gibt die Steuerelemente an, die von der Steuerungsmethode angewendet werden sollen,DAC
oderMAC
.MAC
ist explizit, zentral gesteuert und erlaubt Benutzern nicht, Berechtigungen für ein Objekt zu erteilen, es sei denn, sie verfügen über explizite Berechtigungen, währendDAC
Benutzer anderen Benutzern Zugriff auf Objekte gewähren können, auf die sie zugreifen können.MAC
ACL
s wird immer zuerst auf eine Anforderung angewendet, und wenn der Zugriff verweigert wird, wird die Verarbeitung gestoppt. Wenn der Zugriff zulässig ist, werden dieDAC
ACL
s angewendet, und wenn der Zugriff verweigert wird, wird die Verarbeitung gestoppt. Nur wenn beideMAC
undDAC
ACL
s Zugriff gewähren, kann der Benutzer auf das angeforderte Objekt zugreifen.SELinux
ist eineMAC
Implementierung für Linux (es gibt andere), während die traditionellenrwx
Dateiberechtigungen, kombiniert mit dem Benutzer und der Gruppe, die Eigentümer sind, die Gesamtheit bildenDAC
ACL
. DieSELinux
"Politik" ist im Wesentlichen dieMAC
ACL
.quelle
setfacl
?setacl
Erweitert das Basis-DateisystemACL
, so dass mehr als ein Benutzer oder eine GruppeACL
für Dateien und Verzeichnisse zugewiesen werden kann . Dies ist ebenfalls eineDAC
Implementierung und wird daher nach demSELinux
MAC
ACL
s angewendet .setfacl
überschreiben die explizit festgelegten ACLs die herkömmlichen Berechtigungen. Stimmt das in jedem Fall?setacl
/setfacl
ACL
s das traditionelle 'simple'ACL
in der Datei überschreiben .setfacl
gehört zur Antwort.Tut mir leid, aber ich denke, einige der Antworten hier sind möglicherweise falsch. Direkt von Fedoras http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html :
quelle