Linux ist von Natur aus ein Mehrbenutzer-Betriebssystem. In einem Unternehmenssystem würden mehrere Benutzer auf dasselbe System zugreifen. Aber wenn jeder Benutzer auf alle Dateien zugreifen und diese ändern könnte, die anderen Benutzern oder Systemdateien gehören, wäre dies sicherlich ein Sicherheitsrisiko.
Aus diesem Grund verfügen UNIX und damit auch Linux (Linux ist ein Unix-ähnliches System) über integrierte Sicherheitsmaßnahmen. Dadurch wird sichergestellt, dass nur gewünschte Benutzer auf eine Datei oder ein Verzeichnis zugreifen, diese ändern oder ausführen können.
Auf welche Datei welcher Benutzer zugreift, wird unter Linux von zwei Faktoren entschieden:
- Eigentum der Datei
- Dateiberechtigung
Das Verständnis von Dateibesitz und -berechtigung ist für einen Linux-Benutzer von entscheidender Bedeutung. Ich werde diese Begriffe hier im Detail erklären.
Dateieigentum in Linux
Hinweis:Ich könnte hier den Begriff Datei verwenden, aber er gilt auch für Verzeichnisse. Ich denke, Sie wissen sowieso, dass Verzeichnisse Dateien sind.
Jede Datei und jedes Verzeichnis in Linux hat drei Arten von Besitzern:
Benutzer
Benutzer ist der Eigentümer der Datei. Wenn Sie eine Datei erstellen, werden Sie Eigentümer der Datei. Der Eigentümer kann auch geändert werden, aber dazu später mehr.
Gruppe
Jeder Benutzer ist Teil einer oder mehrerer bestimmter Gruppen. Eine Gruppe besteht aus mehreren Benutzern und dies ist eine Möglichkeit, Benutzer in einer Umgebung mit mehreren Benutzern zu verwalten.
Wenn Sie beispielsweise ein Entwicklerteam, ein QA-Team und ein Sysadmin-Team haben, die auf dasselbe System zugreifen, sollten Sie separate Gruppen für sie erstellen. Auf diese Weise können Sie Dateien und die Sicherheit des Systems effektiv verwalten. Das spart Zeit, denn anstatt manuell Berechtigungen für jeden Benutzer hinzuzufügen, können Sie ihn einfach zu einer Gruppe hinzufügen und die Berechtigung für die Gruppe ändern. Wie das geht, erfahren Sie später in diesem Artikel.
Auch wenn Sie der einzige Benutzer des Systems sind, werden Sie immer noch Teil vieler Gruppen sein. Distributionen wie Ubuntu erstellen auch eine Gruppe mit dem Namen des Benutzers.
💡Führen Sie den Befehl Gruppen aus um zu sehen, zu welchen Benutzergruppen Sie gehören.Andere
„Andere“ kann als Supergruppe mit allen Benutzern des Systems betrachtet werden. Grundsätzlich gehört jeder mit Zugriff auf das System zu dieser Gruppe.
Mit anderen Worten:„Benutzer“ ist ein einzelner Benutzer, „Gruppe“ ist eine Sammlung von Benutzern und „Andere“ besteht aus allen Benutzern des Systems.
Dateiberechtigungen in Linux
Jede Datei und jedes Verzeichnis in Linux hat die folgenden drei Berechtigungen für alle drei Arten von Besitzern:
Berechtigungen für Dateien
- Lesen – Kann Dateiinhalte anzeigen oder kopieren
- Schreiben – Kann Dateiinhalte ändern
- Ausführen – Kann die Datei ausführen (wenn sie ausführbar ist)
Berechtigungen für Verzeichnisse
- Lesen – Kann alle Dateien auflisten und die Dateien aus dem Verzeichnis kopieren
- Schreiben – Kann Dateien im Verzeichnis hinzufügen oder löschen (benötigt auch Ausführungsberechtigung)
- Ausführen – Kann das Verzeichnis betreten
Verstehen von Dateiberechtigungen und Eigentumsrechten in Linux
Nachdem Sie sich nun mit der grundlegenden Terminologie von Dateiberechtigungen und Eigentumsrechten vertraut gemacht haben, ist es an der Zeit, sie in Aktion zu sehen.
Sie können den ‚stat-Befehl‘ oder den ‚ls-Befehl‘ verwenden, um die Dateiberechtigungen zu überprüfen.
Wenn Sie den Befehl ls mit der Option -l auf eine Datei anwenden, sehen Sie eine Ausgabe wie diese:
-rwxrw-r-- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt
Lassen Sie mich diese Ausgabe mit einem Bild erklären:
Lassen Sie mich die gesamte Ausgabe im Detail weiter erläutern:
- Dateityp :Bezeichnet den Dateityp. d bedeutet Verzeichnis, – bedeutet normale Datei, l bedeutet symbolischer Link.
- Berechtigungen :Dieses Feld zeigt den Berechtigungssatz für eine Datei. Ich werde es im nächsten Abschnitt im Detail erklären.
- Anzahl der harten Links :Zeigt an, ob die Datei feste Links hat. Die Standardanzahl ist eins.
- Benutzer :Der Benutzer, dem die Dateien gehören.
- Gruppe :Die Gruppe, die Zugriff auf diese Datei hat. Es kann immer nur eine Gruppe Eigentümer einer Datei sein.
- Dateigröße :Größe der Datei in Bytes.
- Änderungszeit :Datum und Uhrzeit der letzten Änderung der Datei.
- Dateiname :Offensichtlich der Name der Datei oder des Verzeichnisses.
Nachdem Sie nun die Ausgabe des Befehls ls -l verstanden haben, konzentrieren wir uns auf den Teil mit den Dateiberechtigungen.
Im obigen Befehl sehen Sie die Dateiberechtigung so im neunstelligen Format :
rwxrw-r--
Jeder Buchstabe bezeichnet eine bestimmte Berechtigung:
- r :Leseberechtigung
- w :Schreibberechtigung
- x :Ausführungsberechtigung
- – :Keine Berechtigung gesetzt
Berechtigungen sind immer in der Reihenfolge Lesen, Schreiben und Ausführen, d. h. rwx. Und dann werden diese Berechtigungen für alle drei Arten von Eigentümern (siehe Abschnitt „Eigentümer“) in der Reihenfolge „Benutzer“, „Gruppe“ und „Sonstige“ festgelegt.
Dieses Bild wird die Dinge besser erklären:
Also, wenn Sie sich jetzt das obige Bild ansehen, können Sie folgendes zu den Dateiberechtigungen sagen:
- Die Datei hat Lese-, Schreib- und Ausführungsberechtigungen für den Benutzerbesitzer. Aber wer ist dieser Nutzungseigentümer der Datei? Sie haben diese Informationen in der Ausgabe von ls -l (d. h. Benutzer abhi).
- Die Datei hat Lese- und Schreibberechtigungen für die Gruppe, aber keine Ausführung. Welche Gruppe ist es? Sie haben die Gruppeninformationen in der Ausgabe des Befehls ls -l (d. h. group itsfoss).
- Die Datei hat nur Leserechte für Andere, d. h. alle, die Zugriff auf das System haben. Sie müssen nicht wissen, um welchen anderen es sich handelt, da „andere“ alle Benutzer bedeutet.
Wenn Sie jetzt noch einmal den gesamten Befehl ls -l sehen, können Sie die Dateiberechtigungen und den Besitz zusammen lesen.
-rwxrw-r-- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt
Die Datei agatha.txt gehört dem Benutzer abhi und abhi hat Lese-, Schreib- und Ausführungsrechte. Alle Mitglieder der Gruppe istfoss haben Lese- und Schreibzugriff auf diese Datei, während alle anderen nur Lesezugriff auf diese Datei haben.
Hinweis:Der Root-Benutzer hat Superkräfte und normalerweise hat er Lese-, Schreib- und Ausführungsberechtigungen für alle Dateien, auch wenn Sie es nicht in den Dateiberechtigungen sehen.
Ein einzelner Benutzer kann Mitglied mehrerer Gruppen sein, aber nur die primäre Gruppe des Benutzers ist Gruppeneigentümer einer vom Benutzer erstellten Datei. Die primäre Gruppe eines Benutzers kann mit dem id-Befehl wie id -gn <username>
gefunden werden . Lassen Sie den Benutzernamen leer, wenn Sie versuchen, Ihre eigene primäre Gruppe zu finden.
Nachdem Sie nun wissen, wie Sie Berechtigungen für eine Datei ermitteln, sehen wir uns an, wie Sie die Berechtigung und den Besitz einer Datei ändern können.
Dateiberechtigungen in Linux ändern
Sie können den Befehl chmod verwenden, um die Berechtigungen für eine Datei in Linux zu ändern.
📚Berechtigungen wurden früher als Zugriffsmodus bezeichnet und daher war chmod die Kurzform von Zugriffsmodus ändern .Es gibt zwei Möglichkeiten, den chmod-Befehl zu verwenden:
- Absolutmodus
- Symbolischer Modus
Chmod im absoluten Modus verwenden
Im absoluten Modus werden Berechtigungen in numerischer Form dargestellt (genauer gesagt im Oktalsystem). In diesem System wird jede Dateiberechtigung durch eine Zahl dargestellt.
- r (lesen) =4
- w (schreiben) =2
- x (Ausführen) =1
- – (keine Berechtigung) =0
Mit diesen numerischen Werten können Sie sie kombinieren und somit kann eine Zahl verwendet werden, um den gesamten Berechtigungssatz darzustellen.
Nummer | Erlaubnis |
---|---|
0 | — |
1 | –x |
2 | -w- |
3 (d. h. 2+1) | -wx |
4 | r– |
5 (d. h. 4+1) | r-x |
6 (also 4+2) | rw- |
7 (also 4+2+1) | rwx |
Können Sie die Dateiberechtigung in Zahlen für die Datei agatha.txt in unserem Beispiel bisher erraten? Richtig, es ist 764.
Nachdem Sie nun wissen, welche Zahl welche Berechtigung darstellt, sehen wir uns an, wie Sie mit diesem Wissen die Dateiberechtigung ändern können.
Angenommen, Sie möchten die Dateiberechtigung für agatha.txt ändern, sodass jeder lesen und schreiben kann, aber niemand sie ausführen kann? In diesem Fall können Sie den chmod-Befehl wie folgt verwenden:
chmod 666 agatha.txt
Wenn Sie jetzt agatha.txt auflisten, sehen Sie, dass die Berechtigung geändert wurde.
-rw-rw-rw- 1 abhishek abhishek 457 Aug 10 11:55 agatha.txt
Chmod im symbolischen Modus verwenden
Das Problem mit dem absoluten Modus besteht darin, dass Sie immer drei Nummern für alle drei Eigentümer angeben sollten, selbst wenn Sie den Berechtigungssatz für nur einen Eigentümer ändern möchten.
Hier können Sie den symbolischen Modus mit dem Befehl chmod verwenden.
Im symbolischen Modus werden Besitzer mit den folgenden Symbolen gekennzeichnet:
- u =Benutzerbesitzer
- g =Gruppenbesitzer
- o =andere
- a =alle (Benutzer + Gruppe + andere)
Der symbolische Modus verwendet mathematische Operatoren, um die Berechtigungsänderungen durchzuführen:
- + zum Hinzufügen von Berechtigungen
- – zum Entfernen von Berechtigungen
- =zum Überschreiben vorhandener Berechtigungen mit neuem Wert
Nun, da Sie wissen, sehen wir uns an, wie Sie den Befehl chmod im symbolischen Modus verwenden.
Wenn Sie in unserem vorherigen Beispiel die Ausführungsberechtigung für den Gruppenbesitzer hinzufügen möchten, können Sie den chmod-Befehl wie folgt verwenden:
chmod g+x agatha.txt
Wenn Sie sich jetzt die Berechtigungen für diese Datei ansehen, sehen Sie, dass die Ausführungsberechtigung jetzt hinzugefügt wurde:
-rw-rwxrw- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt
Sie können auch mehrere Berechtigungsänderungen in einem Befehl kombinieren. Angenommen, Sie möchten die Lese- und Schreibberechtigung entfernen und Ausführungsberechtigungen für „Andere“ hinzufügen. Sie möchten auch die Ausführungsberechtigung für den Benutzerbesitzer hinzufügen. Sie können alles mit einem einzigen Befehl erledigen:
chmod o-rw+x,u+x agatha.txt
Die resultierenden Berechtigungen würden wie folgt aussehen:
-rwxrwx--x 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt
Wenn Sie die Berechtigungen für alle drei Arten von Benutzern gleichzeitig ändern möchten, können Sie dies folgendermaßen tun:
chmod a-x agatha.txt
Dadurch wird die Ausführungsberechtigung für alle entfernt.
-rw-rw---- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt
Einige Leute finden das Konvertieren der Dateiberechtigungen von einem Modus in einen anderen eine lästige Aufgabe. Aus diesem Grund habe ich dieses kleine Tool erstellt, mit dem Sie Linux-Dateiberechtigungen in verschiedenen Modi online berechnen können.
Dateieigentümerschaft in Linux ändern
Um den Eigentümer einer Datei zu ändern, können Sie den Befehl chown verwenden. Sie können leicht erraten, dass chown für Eigentümerwechsel steht.
Sie können den Benutzereigentümer einer Datei folgendermaßen ändern:
chown <new_user_name> <filename>
Wenn Sie sowohl den Benutzer als auch die Gruppe ändern möchten, können Sie den Befehl chown wie folgt verwenden:
chown <new_user_name>:<new_user_group> <filename>
Wenn Sie nur die Gruppe ändern möchten, können Sie entweder den Befehl chown auf diese Weise verwenden:
chown :<new_user_group> <filename>
oder verwenden Sie den Befehl chgrp, der speziell zum Ändern des Gruppeneigentümers einer Datei oder eines Verzeichnisses verwendet wird. Sie können sich denken, dass chgrp für Change Group steht.
chgrp <new_user_group> <filename>
Wenn Sie in unserem bisherigen Beispiel den Benutzerbesitzer und die Gruppe auf root ändern möchten, können Sie den chown-Befehl wie folgt verwenden:
sudo chown root:root agatha.txt
Dadurch wird der Besitz der Datei sowohl für den Benutzer als auch für die Gruppe auf root geändert.
-rw-rw---- 1 root root 457 Aug 10 11:55 agatha.txt
Beachten Sie, dass ich sudo mit chown verwenden musste? Das liegt daran, dass hier der Root beteiligt ist und Sie Superuser-Rechte benötigen, um mit Root umzugehen.
Tipp :Zwei Gruppen können nicht dieselbe Datei besitzen.
Bonus-Tipp:Gibt es einen Vorrang bei Dateiberechtigungen?
Stellen Sie sich eine Situation vor, in der der Eigentümer des Benutzers keine Berechtigungen hat, die Gruppe Leseberechtigung hat, während andere Lese- und Schreibberechtigungen haben.
----r--rw- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt
Wenn der Benutzer abhi nun versucht, die Datei mit dem Befehl cat oder less zu lesen, wird er dazu in der Lage sein? Die Antwort ist nein, weil es keine Leseberechtigung hat.
Aber Benutzer abhi ist Teil der Gruppe itsfoss und die Gruppe hat Lesezugriff. Teufel! andere hat Lese- und Schreibrechte. Dies sollte bedeuten, dass jeder (einschließlich Benutzer abhi) die Datei lesen und schreiben kann, richtig? Falsch!
In Linux gilt der Vorrang von user und dann group und dann to other. Das Linux-System prüft, wer den Prozess initiiert hat (in unserem Beispiel cat oder weniger). Wenn der Benutzer, der den Vorgang initiiert hat, auch der Benutzerbesitzer der Datei ist, werden die Benutzerberechtigungsbits gesetzt.
Wenn der Eigentümer der Datei den Vorgang nicht initiiert hat, überprüft das Linux-System die Gruppe. Wenn der Benutzer, der den Prozess initiiert hat, in derselben Gruppe wie die Besitzergruppe der Datei ist, wird das Gruppenberechtigungsbit gesetzt.
Wenn dieser Prozesseigentümer nicht einmal als Gruppeneigentümer der Datei in der Gruppe ist, werden die anderen Berechtigungsbits gesetzt.
Was kommt als Nächstes?
Ich hoffe, Ihnen hat der Artikel gefallen und Sie verstehen jetzt besser, wie Dateiberechtigungen unter Linux funktionieren.
Es gibt einige erweiterte Dateiberechtigungen wie SUID, GUID und Sticky Bit, die Sie als Nächstes lernen können, wenn Sie möchten.
Wenn Sie Fragen oder Anregungen haben oder einfach nur Danke sagen möchten, hinterlassen Sie bitte unten einen Kommentar. Wenn Ihnen der Artikel gefallen hat, teilen Sie ihn bitte in den sozialen Medien oder in verschiedenen Foren. Dies wird uns und anderen Linux-Benutzern ebenfalls helfen.