In diesem Kapitel werden wir ausführlich über Dateiberechtigung und Zugriffsmodi in Unix diskutieren. Dateieigentum ist eine wichtige Komponente von Unix, die eine sichere Methode zum Speichern von Dateien bietet., Jede Datei in Unix hat die folgenden Attribute-
-
Eigentümerberechtigungen-Die Berechtigungen des Eigentümers bestimmen, welche Aktionen der Eigentümer der Datei für die Datei ausführen kann.
-
Gruppenberechtigungen-Die Berechtigungen der Gruppe bestimmen, welche Aktionen ein Benutzer, der Mitglied der Gruppe ist, zu der eine Datei gehört, für die Datei ausführen kann.
-
Andere (Welt−) Berechtigungen-Die Berechtigungen für andere geben an, welche Aktion alle anderen Benutzer für die Datei ausführen können.,
Die Berechtigungsindikatoren
Bei Verwendung des Befehls ls-l werden verschiedene Informationen zur Dateiberechtigung wie folgt angezeigt −
$ls -l /home/amrood-rwxr-xr-- 1 amrood users 1024 Nov 2 00:10 myfiledrwxr-xr--- 1 amrood users 1024 Nov 2 00:10 mydir
Hier stellt die erste Spalte verschiedene Zugriffsmodi dar, dh die Berechtigung, die einer Datei oder einem Verzeichnis zugeordnet ist.
Die Berechtigungen sind in Dreiergruppen unterteilt, und jede Position in der Gruppe bezeichnet eine bestimmte Berechtigung in dieser Reihenfolge: read (r), write (w), execute (x) −
Dateizugriffsmodi
Die Berechtigungen einer Datei sind die erste Verteidigungslinie in der Sicherheit eines Unix-Systems., Die grundlegenden Bausteine von Unix-Berechtigungen sind die Lese−, Schreib-und Ausführungsberechtigungen, die unten beschrieben wurden –
Read
Gewährt die Fähigkeit zu lesen, dh den Inhalt der Datei anzuzeigen.
Write
Gewährt die Möglichkeit, den Inhalt der Datei zu ändern oder zu entfernen.
Ausführen
Benutzer mit Ausführungsberechtigungen können eine Datei als Programm ausführen.
Verzeichniszugriffsmodi
Verzeichniszugriffsmodi werden wie jede andere Datei aufgelistet und organisiert., Es gibt einige Unterschiede, die erwähnt werden müssen −
Read
Der Zugriff auf ein Verzeichnis bedeutet, dass der Benutzer den Inhalt lesen kann. Der Benutzer kann sich die Dateinamen im Verzeichnis ansehen.
Write
Access bedeutet, dass der Benutzer Dateien aus dem Verzeichnis hinzufügen oder löschen kann.
Execute
Das Ausführen eines Verzeichnisses ist nicht wirklich sinnvoll, betrachten Sie dies also als Traverse-Berechtigung.
Ein Benutzer muss execute Zugriff auf das Verzeichnis bin haben, um den Befehl ls oder cd ausführen zu können.,
Berechtigungen ändern
Um die Datei-oder Verzeichnisberechtigungen zu ändern, verwenden Sie den Befehl chmod (Änderungsmodus). Es gibt zwei Möglichkeiten, chmod zu verwenden — den symbolischen Modus und den absoluten Modus.
Verwenden von chmod im symbolischen Modus
Der einfachste Weg für Anfänger, Datei-oder Verzeichnisberechtigungen zu ändern, ist die Verwendung des symbolischen Modus. Mit symbolischen Berechtigungen können Sie den gewünschten Berechtigungssatz mithilfe der Operatoren in der folgenden Tabelle hinzufügen, löschen oder angeben.
Sr. No., | Chmod operator & Beschreibung |
---|---|
1 |
+ Fügt die benannte Berechtigung(en) auf eine Datei oder ein Verzeichnis. |
2 |
Entfernt die angegebenen Berechtigungen aus einer Datei oder einem Verzeichnis. |
3 |
= Legt die benannte Berechtigung(en). |
Hier ist ein Beispiel mit Testdatei., Das Ausführen von ls -1 in der Testdatei zeigt, dass die Berechtigungen der Datei wie folgt sind −
$ls -l testfile-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Dann wird jeder Beispiel –chmod −Befehl aus der vorherigen Tabelle in der Testdatei ausgeführt, gefolgt von ls −l, damit Sie die Berechtigungsänderungen sehen können –
So können Sie diese Befehle in einer einzigen Zeile kombinieren –
$chmod o+wx,u-x,g = rx testfile$ls -l testfile-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
Mit chmod mit absoluten Berechtigungen
Die zweite Möglichkeit, Berechtigungen mit dem Befehl chmod zu ändern, besteht darin, eine Zahl zu verwenden, um jeden Satz von Berechtigungen für die Datei anzugeben.,
Jeder Berechtigung wird ein Wert zugewiesen, wie die folgende Tabelle zeigt, und die Summe jedes Berechtigungssatzes enthält eine Nummer für diesen Satz.
Hier ist ein Beispiel mit der Testdatei. Das Ausführen von ls -1 in der Testdatei zeigt, dass die Berechtigungen der Datei wie folgt sind −
$ls -l testfile-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Dann wird jeder Beispiel –chmod −Befehl aus der vorherigen Tabelle in der Testdatei ausgeführt, gefolgt von ls-l, damit Sie die Berechtigungsänderungen sehen können –
Ändern von Besitzern und Gruppen
Beim Erstellen eines Kontos unter Unix wird jedem Benutzer eine Eigentümer-ID und eine Gruppen-ID zugewiesen., Alle oben genannten Berechtigungen werden auch basierend auf dem Eigentümer und den Gruppen zugewiesen.
Es stehen zwei Befehle zum Ändern des Besitzers und der Gruppe von Dateien zur Verfügung −
-
chown-Der Befehl chown steht für „change owner“ und wird zum Ändern des Besitzers einer Datei verwendet.
-
chgrp-Der Befehl chgrp steht für „change group“ und dient zum Ändern der Gruppe einer Datei.
Eigentümerwechsel
Der Befehl chown ändert den Besitz einer Datei., Die grundlegende Syntax lautet wie folgt –
$ chown user filelist
Der Wert des Benutzers kann entweder der Name eines Benutzers auf dem System oder die Benutzer-ID (uid) eines Benutzers auf dem System sein.
Das folgende Beispiel hilft Ihnen, das Konzept zu verstehen –
$ chown amrood testfile$
Ändert den Besitzer der angegebenen Datei in den Benutzer amrood.
HINWEIS-Der Superbenutzer root hat die uneingeschränkte Möglichkeit, den Besitz einer Datei zu ändern, aber normale Benutzer können den Besitz nur der Dateien ändern, die sie besitzen.,
Ändern des Gruppenbesitzes
Der Befehl chgrp ändert den Gruppenbesitz einer Datei. Die grundlegende Syntax lautet wie folgt –
$ chgrp group filelist
Der Wert der Gruppe kann der Name einer Gruppe auf dem System oder die Gruppen-ID (GID) einer Gruppe auf dem System sein.
Das folgende Beispiel hilft Ihnen, das Konzept zu verstehen –
$ chgrp special testfile$
Ändert die Gruppe der angegebenen Datei in eine spezielle Gruppe.
SUID-und SGID-Dateiberechtigung
Wenn ein Befehl ausgeführt wird, muss er häufig mit speziellen Berechtigungen ausgeführt werden, um seine Aufgabe auszuführen.,
Wenn Sie beispielsweise Ihr Kennwort mit dem Befehl passwd ändern, wird Ihr neues Kennwort in der Datei /etc/shadow gespeichert.
Als normaler Benutzer haben Sie aus Sicherheitsgründen keinen Lese-oder Schreibzugriff auf diese Datei, aber wenn Sie Ihr Passwort ändern, benötigen Sie die Schreibberechtigung für diese Datei. Dies bedeutet, dass das passwd-Programm Ihnen zusätzliche Berechtigungen erteilen muss, damit Sie in die Datei /etc/shadow schreiben können.
Programme erhalten zusätzliche Berechtigungen über einen Mechanismus, der als Set User ID (SUID) und Set Group ID (SGID) Bits bekannt ist.,
Wenn Sie ein Programm ausführen, für das das SUID-Bit aktiviert ist, erben Sie die Berechtigungen des Programmbesitzers. Programme, für die das SUID-Bit nicht festgelegt ist, werden mit den Berechtigungen des Benutzers ausgeführt, der das Programm gestartet hat.
Dies ist auch bei SGID der Fall. Normalerweise werden Programme mit Ihren Gruppenberechtigungen ausgeführt, stattdessen wird Ihre Gruppe nur für dieses Programm an den Gruppeninhaber des Programms geändert.
Die SUID-und SGID-Bits werden als Buchstabe „s“ angezeigt, wenn die Berechtigung verfügbar ist., Das SUID“ s “ – Bit befindet sich in den Berechtigungsbits, in denen sich normalerweise die Ausführungsberechtigung der Eigentümer befindet.
Zum Beispiel zeigt der Befehl −
, dass das SUID-Bit gesetzt ist und dass der Befehl im Besitz der Wurzel ist. Ein Großbuchstabe S in der Execute-Position anstelle eines Kleinbuchstabens s zeigt an, dass das Execute-Bit nicht gesetzt ist.,
Wenn das Sticky −Bit im Verzeichnis aktiviert ist, können Dateien nur entfernt werden, wenn Sie einer der folgenden Benutzer sind −
- Der Besitzer des Sticky-Verzeichnisses
- Der Besitzer der zu entfernenden Datei
- Der Super-Benutzer root
Um die SUID-und SGID-Bits für jedes Verzeichnis festzulegen, versuchen Sie den folgenden Befehl –
$ chmod ug+s dirname$ ls -ldrwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname$