Heim > Artikel > System-Tutorial > Grundprinzipien der Linux-Berechtigungskontrolle
In diesem Artikel werden hauptsächlich die Grundprinzipien der Berechtigungskontrolle in Linux-Systemen vorgestellt.
SicherheitsmodellIn Linux-Systemen sind alle unsere Vorgänge im Wesentlichen Prozesse, die auf Dateien zugreifen. Um auf Dateien zugreifen zu können, müssen wir zunächst die entsprechenden Zugriffsberechtigungen einholen. Die Zugriffsberechtigungen werden über das Sicherheitsmodell im Linux-System abgerufen.
Für das Sicherheitsmodell in Linux-Systemen müssen wir die folgenden zwei Punkte kennen:
Beachten Sie, dass MAC und DAC sich nicht gegenseitig ausschließen. DAC ist das grundlegendste Sicherheitsmodell und normalerweise der am häufigsten verwendete Zugriffskontrollmechanismus, über den Linux verfügen muss. MAC ist ein erweiterter Sicherheitsmechanismus, der auf DAC basiert und zu den optionalen Modulen gehört. Vor dem Zugriff führen Linux-Systeme normalerweise zuerst eine DAC-Prüfung durch. Wenn dies fehlschlägt, schlägt der Vorgang direkt fehl. Wenn das System das MAC-Modul unterstützt, führt es anschließend eine MAC-Berechtigungsprüfung durch.
Um die beiden zu unterscheiden, nennen wir das Linux-System, das MAC unterstützt, SELinux, was bedeutet, dass es sich um ein System mit erhöhter Sicherheit für Linux handelt.
Hier werden wir über das DAC-Sicherheitsmodell in Linux-Systemen sprechen.
DAC-SicherheitsmodellDer Kerninhalt von DAC ist: Unter Linux hat ein Prozess theoretisch die gleichen Berechtigungen wie der Benutzer, der ihn ausführt. Alles, was dazu gehört, dreht sich um diesen Kern.
Benutzer- und Gruppen-ID-InformationskontrolleBenutzer-, Gruppen-, Passwortinformationen
Speichern Sie Benutzer- und Gruppeninformationen über /etc/passwd und /etc/group und speichern Sie Passwörter und ihre Änderungsinformationen über /etc/shadow, mit einem Datensatz pro Zeile.
Benutzer und Gruppen werden durch UID bzw. GID dargestellt. Ein Benutzer kann gleichzeitig mehreren Gruppen angehören. Standardmäßig muss jeder Benutzer einer GID mit derselben UID und demselben Namen angehören.
Für /etc/passwd ist jedes Datensatzfeld Benutzername: Passwort (verschlüsselt und in /etc/shadow gespeichert): UID: GID (Standard-UID): Beschreibungskommentar: Home-Verzeichnis: Login-Shell (das erste laufende Programm)
Für /etc/group lauten die Felder jedes Datensatzes: Gruppenname: Passwort (im Allgemeinen gibt es kein Gruppenpasswort): GID: Benutzerliste der Gruppenmitglieder (durch Kommas getrennte Benutzer-UID-Liste)
Für /etc/shadow lauten die Felder jedes Datensatzes: Anmeldename: Verschlüsseltes Passwort: Zeitpunkt der letzten Änderung: Minimales Zeitintervall: Maximales Zeitintervall: Warnzeit: Inaktivitätszeit:
Beispiel
Im Folgenden finden Sie Beispiele für Benutzer- und Gruppeninformationen. Die Passwortinformationen in /etc/shadow werden verschlüsselt und gespeichert, es wird kein Beispiel bereitgestellt.
Informationen zur DateiberechtigungskontrolleDateityp
Dateitypen unter Linux sind wie folgt:
Zugriffskontrollgruppe
Zur Kontrolle in drei Gruppen unterteilt:
Konfigurierbare Berechtigungen
Allgemeine (aber nicht alle) Berechtigungswerte sind unten aufgeführt, einschließlich:
Beispiel
Sie können den Dateityp und die Berechtigungen über ls -l überprüfen und die Berechtigungen über chmod ändern.
Zum Beispiel
In der Ausgabe gibt das erste Zeichen den Dateityp an, einschließlich gewöhnlicher Datei (-), Verzeichnisdatei (d), Socket-Datei (s), Pipe-Datei (p), Zeichendatei (c) und Blockdatei (b). , Datei verknüpfen (l); Der Teil -rwxr-xr-x ab dem zweiten Zeichen stellt das Berechtigungsbit der Datei mit insgesamt 9 Bits dar.
Für die Datei /usr/bin/qemu-i386 hat diese Berechtigungskontrolle folgende Bedeutung:
Berechtigungen für test/, test2/, test3/:
festgelegtProzessberechtigungen
Für Prozesse beziehen sich die folgenden Attribute auf Dateizugriffsberechtigungen:
Beispiel
Wir können ps und top verwenden, um Prozesse mit euid und ruid auszuwählen und anzuzeigen. Oder verwenden Sie oben, um die EUID und RuID des Prozesses anzuzeigen
Beispiel oben angezeigt:
Geben Sie zuerst oben ein, um etwa Folgendes zu erhalten:
Hier wird die Option -d verwendet, um die Aktualisierungsfrequenz von top zu verlängern und so die Bedienung zu vereinfachen. Wie hier zu sehen ist, repräsentiert nur das USER-Feld die effektive Benutzer-ID des entsprechenden Prozesses.
Öffnen Sie die Anzeigeoptionen für die gelesene Benutzer-ID:
a. Geben Sie während der Ausführung des oberen Befehls f ein, und Sie sehen eine Zeile ähnlich der folgenden:
b. Geben Sie c ein, um den Anzeigeschalter des echten Benutzernamens zu aktivieren.
c. Drücken Sie abschließend die Eingabetaste, um zum Anfang zurückzukehren, und Sie sehen die Option für die echte Benutzer-ID. Geben Sie zu diesem Zeitpunkt „o“ ein, um die Spaltenreihenfolge anzupassen. Schließlich können wir die Ausgabe einschließlich der „effektiven Benutzer-ID“ und der „echten Benutzer-ID“ wie folgt sehen:
Berechtigungskontrollstrategie für ProzesszugriffsdateienRegeln
Grobe Berechtigungskontrollstrategie für Prozesszugriffsdateien
Für einen Prozess zum Zugriff auf Dateien ist die EUID das Wichtigste, daher konzentrieren sich alle Berechtigungsattribute auf die EUID.
Berechtigungsattribute durch Ausführung der Exec-Datei ändern
Beim Aufrufen einer ausführbaren Datei über exec:
Wie folgt:
Ändern Sie Berechtigungsattribute durch den Systemaufruf setuid(uid)
Beim Ändern von Berechtigungsattributen über setuid(uid):
Beispiel
Noch ein paar besondere Beispiele:
Benutzer-ID festlegen
Wie bereits erwähnt, bedeutet diese Ausgabe für die Datei /usr/bin/sudo
Wenn ein normaler Benutzerprozess den Sudo-Befehl ausführt, erhält er Ausführungsberechtigungen über das x in anderen und verwendet dann das s im Benutzer, um vorübergehend die Berechtigungen des Eigentümers (Root) der ausführbaren Sudo-Datei zu erhalten, dh Superberechtigungen .
Das ist auch der Grund, warum normale Benutzer über den sudo-Befehl viele Befehle mit Administratorrechten ausführen können.
Stick-Bit einrichten
Nach dieser Einstellung hat jeder Lese-, Schreib- und Ausführungsberechtigungen für das Verzeichnis /tmp, was nicht anders ist. Allerdings ist das Sticky-Bit t im anderen Teil gesetzt und seine Funktion ist ganz anders.
Wenn das Sticky-Bit im Verzeichnis nicht gesetzt ist, kann jeder mit Schreibrechten für das Verzeichnis alle darin enthaltenen Dateien und Unterverzeichnisse löschen, auch wenn er nicht der Eigentümer der entsprechenden Datei ist und danach keine Lese- oder Schreibberechtigung hat; Wenn das Sticky-Bit gesetzt ist, kann der Benutzer nur Dateien und Unterverzeichnisse, die ihm gehören, schreiben oder löschen.
Aus diesem Grund kann jeder Dateien und Verzeichnisse in das Verzeichnis /tmp schreiben, aber nur Dateien oder Verzeichnisse schreiben und löschen, die ihm gehören.
Zitieren Sie ein Anwendungsfragment des man-Programms, um die Verwendung von „set-user-id“ und „saved set-user-id“ zu beschreiben
Das Man-Programm kann zum Anzeigen von Online-Hilfehandbüchern verwendet werden. Das Man-Programm kann installiert werden, um Set-User-ID oder Set-Group-ID für einen bestimmten Benutzer oder eine bestimmte Gruppe anzugeben.Das man-Programm kann Dateien an bestimmten Speicherorten lesen oder überschreiben, was normalerweise durch eine Konfigurationsdatei (normalerweise /etc/man.config oder /etc/manpath.config) oder Befehlszeilenoptionen konfiguriert wird.
Das Man-Programm führt möglicherweise einige andere Befehle aus, um die Datei zu verarbeiten, die die angezeigte Manpage enthält.
Um Verarbeitungsfehler zu vermeiden, wechselt man zwischen zwei Privilegien: den Privilegien des Benutzers, der den man-Befehl ausführt, und den Privilegien des Besitzers des man-Programms.
Der Hauptthread, der verstanden werden muss: Wenn nur man ausgeführt wird, sind die Prozessprivilegien die Privilegien des man-Benutzers. Wenn ein untergeordneter Prozess über man ausgeführt wird (z. B. ein Shell-Befehl über !bash), wechselt der Benutzer zu der aktuelle Benutzer und wechselt nach der Ausführung zurück.
Der Ablauf ist wie folgt:
Tatsächlich ist die Art und Weise, wie wir die Setuid-Funktion verwenden, nicht besonders korrekt, da das Programm möglicherweise die Benutzer-ID auf root setzt. Zu diesem Zeitpunkt ändert setuid alle drei UIDs in die von Ihnen festgelegte ID, aber wir benötigen nur Legen Sie eine effektive Benutzer-ID fest.
Das obige ist der detaillierte Inhalt vonGrundprinzipien der Linux-Berechtigungskontrolle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!