Vorwort Für die Berechtigungen von Dateien oder Verzeichnissen in Linux sollten Sie alle die normalen RWX-Berechtigungen kennen (weitere Informationen zu RWX-Berechtigungen in Linux finden Sie in meinem Blog-Beitrag http://www.cnblogs.com/javaee6/p/3994750.html). Schauen wir uns zunächst an, was die folgenden beiden Berechtigungen sind Es ist sehr seltsam, dass die Berechtigungen des Verzeichnisses /tmp und der Datei passwd so seltsam sind. Warum gibt es s- und t-Berechtigungen? Sie werden es verstehen, nachdem Sie den folgenden Inhalt gelesen haben. setuid und setgid sind Abkürzungen für „Setzen der UID-ID bei Ausführung“ bzw. „Setzen der Gruppen-ID bei Ausführung“. Wir werden sie oft noch einmal als suid und sgid abkürzen. Es handelt sich dabei um Berechtigungsflags, die den Dateizugriff steuern und es Benutzern ermöglichen, ausführbare Dateien mit den Berechtigungen des Besitzers bzw. der Besitzergruppe der ausführbaren Datei auszuführen. Hinweis: Die Demonstrationsumgebung dieses Artikels ist Ubuntu 16.04. SUID Unter Linux werden die Passwörter aller Konten in der Datei /etc/shadow aufgezeichnet und nur root kann diese Datei lesen und schreiben: Wenn ein anderer allgemeiner Kontotester sein Passwort ändern muss, muss er auf die Datei /etc/shadow zugreifen. Auf die Datei /etc/shadow kann jedoch nur root zugreifen. Wie funktioniert das? Tatsächlich kann der Testerbenutzer das Kennwort in der Datei /etc/shadow über die SUID-Funktion ändern. Schauen wir uns die Berechtigungsinformationen der Programmdatei passwd an: Die Berechtigungsinformationen im roten Feld im obigen Bild sind etwas seltsam. Die Eigentümerinformationen lauten rws statt rwx. Wenn s in der x-Berechtigung des Dateieigentümers erscheint, wird es SETUID BITS oder SETUID genannt und hat folgende Eigenschaften:
Als Nächstes sehen wir uns an, wie der Testbenutzer die SUID-Berechtigung zum Ändern des Kennworts verwendet:
Wenn der Testerbenutzer jedoch den Befehl cat ausführt, um die Datei /etc/shadow zu lesen, funktioniert dies nicht: Der Grund ist klar. Der Tester-Benutzer hat keine Berechtigung, die Datei /etc/shadow zu lesen, und das Cat-Programm ist nicht auf SUID eingestellt. Wir können diese beiden Situationen anhand der folgenden Abbildung verstehen: Wenn Sie möchten, dass jeder Benutzer den Inhalt der Datei /etc/shadow über den Befehl cat lesen kann, ist das auch ganz einfach. Legen Sie einfach die SUID-Berechtigung dafür fest: $ sudo chmod 4755 /bin/cat Jetzt hat cat SUID-Berechtigungen. Mal sehen, ob wir den Inhalt von /etc/shadow caten können. Da dies sehr unsicher ist, entfernen Sie schnell die SUID-Berechtigung von cat mit dem folgenden Befehl: $ sudo chmod 755 /bin/cat SGID Wenn das S-Flag in der X-Berechtigung für eine Gruppe erscheint, wird es als SGID bezeichnet. Die Eigenschaften von SGID sind die gleichen wie die von SUID. Wir demonstrieren seine Verwendung anhand des Programms /usr/bin/mlocate. Das Programm mlocate führt schnelle Dateisuchen durch, indem es die Datenbankdatei /var/lib/mlocate/mlocate.db abfragt. Die Berechtigungen des mlocate-Programms werden in der folgenden Abbildung dargestellt: Offensichtlich ist der SGID-Berechtigungssatz vorhanden. Nachfolgend finden Sie die Berechtigungsinformationen der Datenbankdatei /var/lib/mlocate/mlocate.db: Offensichtlich ist sie mit SGID-Berechtigung festgelegt. Nachfolgend finden Sie die Berechtigungsinformationen der Datenbankdatei /var/lib/mlocate/mlocate.db: Wenn der normale Benutzer Tester den Befehl mlocate ausführt, erhält der Tester die Ausführungsberechtigung der Benutzergruppe mlocate. Da die Benutzergruppe mlocate die Leseberechtigung für mlocate.db hat, kann der Tester mlocate.db lesen. Der Ausführungsprozess des Programms ist in der folgenden Abbildung dargestellt: Zusätzlich zu Binärprogrammen kann SGID auch auf Verzeichnisse angewendet werden. Wenn für ein Verzeichnis SGID-Berechtigungen festgelegt sind, verfügt es über die folgenden Funktionen:
Schauen wir uns ein Beispiel an. Wir erstellen ein Testdir-Verzeichnis und legen dessen Berechtigungen wie folgt fest: Derzeit ist Nick der Besitzer des Verzeichnisses Testdir und seine Gruppe ist Tester. Erstellen Sie zunächst eine Datei mit dem Namen „Nickfile“: Die Berechtigungen für diese Datei scheinen nichts Besonderes zu sein. Legen Sie dann die SGID-Berechtigungen für das Testdir-Verzeichnis fest: $ sudo chmod 2775 Testverzeichnis Erstellen Sie dann eine Datei nickfile2: Die Gruppe, zu der die neu erstellte Datei gehört, ist Tester! Zusammenfassend lässt sich sagen, dass, wenn SGID auf eine normale Datei einwirkt, ähnlich wie SUID, der Benutzer beim Ausführen der Datei die Berechtigungen der Gruppe erhält, zu der die Datei gehört. Wenn SGID auf Verzeichnisse angewendet wird, hat es eine sehr wichtige Bedeutung. Wenn ein Benutzer Schreib- und Ausführungsberechtigungen für ein Verzeichnis hat, kann er Dateien in dem Verzeichnis erstellen. Wenn das Verzeichnis mit SGID geändert wird, gehören die vom Benutzer im Verzeichnis erstellten Dateien zu der Gruppe, zu der das Verzeichnis gehört. SBIT Tatsächlich hat SBIT wenig mit SUID und SGID zu tun. SBIT ist die Abkürzung für Restricted Deletion Flag oder Sticky Bit. SBIT funktioniert derzeit nur in Verzeichnissen und wird verwendet, um zu verhindern, dass Nicht-Dateieigentümer Dateien löschen. Ein gängiges Beispiel ist das Verzeichnis /tmp: Das letzte t in den Berechtigungsinformationen gibt an, dass das Verzeichnis mit SBIT-Berechtigung eingerichtet ist. Die Auswirkung von SBIT auf ein Verzeichnis ist: Wenn ein Benutzer eine neue Datei oder ein neues Verzeichnis im Verzeichnis erstellt, sind nur der Benutzer und der Root dazu berechtigt, diese zu löschen. Hinweis: SBIT funktioniert nicht mit Dateien. SUID-, SGID- und SBIT-Berechtigungen festlegen Berechtigungen numerisch festlegen Die den SUID-, SGID- und SBIT-Berechtigungen entsprechenden Nummern lauten wie folgt: SUID->4 SGID->2 SBIT->1 Wenn Sie also SUID-Berechtigungen für eine Datei mit den Dateiberechtigungen „-rwxr-xr-x“ festlegen möchten, müssen Sie vor der ursprünglichen Zahl 755 eine 4 hinzufügen, also 4755: $ chmod 4755 Dateiname In ähnlicher Weise können Sie 2 und 1 verwenden, um die SGID- und SBIT-Berechtigungen festzulegen. Nachdem die Einstellung abgeschlossen ist, ersetzen s, s und t jeweils das x in den Dateiberechtigungen. Tatsächlich können auch S- und T-Situationen auftreten. S und t sind Ersatz für die Berechtigung x. Wenn die Berechtigung x jedoch nicht vorhanden ist, wird sie nach dem Hinzufügen der Berechtigung SUID, SGID oder SBIT als großes S oder großes T angezeigt. Beispielsweise fügen wir einer Datei mit der Berechtigung 666 die Berechtigungen SUID, SGID und SBIT hinzu: Führen Sie chmod 7666 nickfile aus. Da 666 "-rw-rw-rw" bedeutet, was keine x-Berechtigung hat, wird es schließlich zu "-rwSrwSrwT". Ändern der Berechtigungen nach Symboltyp Zusätzlich zur Verwendung von Zahlen zum Ändern von Berechtigungen können Sie auch Symbole verwenden: $ chmod u+s testfile # SUID-Berechtigung zur Testdatei hinzufügen. $ chmod g+s testdir # SGID-Berechtigung zum Testdir-Verzeichnis hinzufügen. $ chmod o+t testdir # SBIT-Berechtigung zum Testdir-Verzeichnis hinzufügen. Zusammenfassen SUID-, SGID- und SBIT-Berechtigungen dienen der Implementierung spezieller Funktionen und sollen einige Nutzungsszenarien ausgleichen, die mit ugo-Berechtigungen nicht erreicht werden können. siehe:
Das könnte Sie auch interessieren:
|
<<: Natives JS zur Implementierung der Dropdown-Box-Auswahlkomponente
>>: Vollständige Schritte zur Installation von mysql5.7 auf dem Mac (mit Bildern und Text)
Laden Sie das Java Development Kit jdk herunter D...
Ich lerne derzeit etwas über Front-End-Leistungsop...
** Installieren Sie mysql-8.0.20 unter Linux ** U...
1. Umgebungsversion Docker-Version 19.03.12 cento...
Die detaillierte Installation und Konfiguration d...
Im vorherigen Artikel haben Sie Docker Desktop in...
In diesem Artikel wird der spezifische Code für d...
Beim Kapseln von Vue-Komponenten werde ich weiter...
Wenn wir in einem Terminal oder einer Konsole arb...
Anforderung: Die Seite muss ein Bild anzeigen, ab...
Ich habe vor Kurzem eine Website mit Anwaltsempfe...
Was ist ein Primärschlüssel? Ein Primärschlüssel ...
In diesem Artikel wird die Methode zum manuellen ...
Dieser Artikel veranschaulicht anhand von Beispie...
Inhaltsverzeichnis forEach() (ES6)-Methode map() ...