Wie funktionieren Linux-Dateiberechtigungen?
Wenn Sie Linux schon länger verwenden (und sogar OS X), sind Sie wahrscheinlich auf einen Fehler gestoßen. Aber was genau sind sie und warum sind sie notwendig oder nützlich? Lassen Sie uns einen Blick nach innen werfen.
Nutzerberechtigung
Damals waren Computer riesige Maschinen, die unglaublich teuer waren. Um das Beste aus ihnen herauszuholen, wurden mehrere Computerterminals angeschlossen, die es vielen Benutzern ermöglichten, ihren Geschäften gleichzeitig nachzugehen. Die Datenverarbeitung und -speicherung erfolgte auf der Maschine, während die Terminals selbst kaum mehr als ein Mittel zum Anzeigen und Eingeben von Daten waren. Wenn Sie darüber nachdenken, greifen wir so ziemlich auf die Daten in der „Cloud“ zu. Schauen Sie sich das Cloud-MP3-System von Amazon, Gmail und Dropbox an. Sie werden feststellen, dass Änderungen lokal vorgenommen werden können, während alle Daten remote gespeichert werden.
(Bild: Zenith Z-19-Terminal "dumm"; Kredit: ajmexico)
Damit dies funktioniert, müssen einzelne Benutzer über Konten verfügen. Ihnen muss ein Abschnitt des Speicherbereichs zugewiesen werden, und es muss ihnen erlaubt sein, Befehle und Programme auszuführen. Jeder erhält bestimmte "Benutzerberechtigungen", die festlegen, was er tun kann und wo nicht, wo er auf dem System Zugriff hat und keinen Zugriff hat und dessen Dateien er ändern kann. Jeder Benutzer wird auch in verschiedene Gruppen eingeteilt, die weiteren Zugriff gewähren oder einschränken.
Dateizugriff
In dieser verrückten Multi-User-Welt haben wir bereits Grenzen gesetzt, was die Benutzer tun können. Aber was ist, worauf sie zugreifen? Nun, jede Datei hat eine Reihe von Berechtigungen und einen Besitzer. Die Besitzerkennung, die normalerweise beim Erstellen der Datei gebunden ist, gibt an, zu welchem Benutzer sie gehört, und nur dieser Benutzer kann seine Zugriffsberechtigungen ändern.
In der Linux-Welt werden Berechtigungen in drei Kategorien unterteilt: Lesen, Schreiben und Ausführen. Mit dem Lesezugriff kann der Inhalt einer Datei angezeigt werden, mit dem Schreibzugriff kann der Inhalt einer Datei geändert werden. Mit „Ausführen“ können Anweisungen wie ein Skript oder ein Programm ausgeführt werden. Jede dieser Kategorien wird auf verschiedene Klassen angewendet: Benutzer, Gruppe und Welt. "Benutzer" bedeutet den Eigentümer, "Gruppe" bedeutet jeden Benutzer, der sich in derselben Gruppe befindet wie der Eigentümer, und "Welt" bedeutet jeden und jeden.
Ordner können auch mit diesen Berechtigungen eingeschränkt werden. Sie können beispielsweise zulassen, dass andere Personen in Ihrer Gruppe Verzeichnisse und Dateien in Ihrem Basisordner anzeigen, nicht jedoch Personen außerhalb Ihrer Gruppe. Wahrscheinlich möchten Sie den Schreibzugriff auf sich selbst beschränken, sofern Sie nicht an einem freigegebenen Projekt arbeiten. Sie können auch ein freigegebenes Verzeichnis erstellen, in dem alle Dateien in diesem Ordner angezeigt und geändert werden können.
Berechtigungen in Ubuntu ändern
GUI
Um die Berechtigungen einer Datei zu ändern, die Sie in Ubuntu besitzen, klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie "Eigenschaften".
Sie können ändern, ob der Eigentümer, die Gruppe oder andere Personen lesen und schreiben, nur lesen oder nichts tun können. Sie können auch ein Kontrollkästchen aktivieren, um die Ausführung der Datei zuzulassen. Dadurch wird es gleichzeitig für Besitzer, Gruppe und andere Benutzer aktiviert.
Befehlszeile
Sie können dies auch über die Befehlszeile tun. Wechseln Sie in ein Verzeichnis, in dem sich Dateien befinden, und geben Sie den folgenden Befehl ein, um alle Dateien in einer Liste anzuzeigen:
ls -al
Neben jeder Datei und jedem Verzeichnis wird ein spezieller Abschnitt angezeigt, in dem die Berechtigungen beschrieben werden. Es sieht aus wie das:
-rwxrw-r-
Das r steht für "lesen", das w steht für "schreiben" und das x steht für „Ausführen“. Verzeichnisse beginnen mit einem „d“ anstelle eines „-“. Sie werden auch feststellen, dass es 10 Leerzeichen gibt, die Werte enthalten. Sie können den ersten ignorieren, und dann gibt es 3 Sätze von 3. Der erste Satz ist für den Eigentümer, der zweite Satz ist für die Gruppe und der letzte Satz ist für die Welt.
Um die Berechtigungen einer Datei oder eines Verzeichnisses zu ändern, betrachten wir die grundlegende Form des Befehls chmod.
chmod [Klasse] [Operator] [Berechtigung] Datei
chmod [ugoa] [+ oder -] [rwx] -Datei
Das mag auf den ersten Blick kompliziert erscheinen, aber glauben Sie mir, es ist ziemlich einfach. Zuerst schauen wir uns die Klassen an:
- o: Dies ist für den Besitzer.
- g: Dies ist für die Gruppe.
- o: Dies ist für alle anderen.
- a: Dies ändert die Berechtigungen für alle oben genannten.
Als nächstes die Betreiber:
- +: Das Pluszeichen fügt die folgenden Berechtigungen hinzu.
- -: Das Minuszeichen entfernt die folgenden Berechtigungen.
Immer noch bei mir? Und der letzte Abschnitt ist derselbe wie bei der Überprüfung der Berechtigungen einer Datei:
- r: Erlaubt Lesezugriff.
- w: Erlaubt Schreibzugriff.
- x: Erlaubt die Ausführung.
Lassen Sie uns es jetzt zusammenstellen. Angenommen, wir haben eine Datei mit dem Namen "todo.txt", die die folgenden Berechtigungen hat:
-rw-rw-r-
Das heißt, der Besitzer und die Gruppe können lesen und schreiben, und die Welt kann nur lesen. Wir möchten die Berechtigungen auf diese ändern:
-rwxr-
Das heißt, der Besitzer verfügt über vollständige Berechtigungen und die Gruppe kann lesen. Wir können dies in 3 Schritten tun. Zuerst fügen wir die Ausführungsberechtigung für den Benutzer hinzu.
chmod u + x todo.txt
Dann entfernen wir die Schreibberechtigung für die Gruppe.
chmod g-w todo.txt
Zuletzt entfernen wir die Leseberechtigungen für alle anderen Benutzer.
chmod o-r todo.txt
Wir können diese auch in einem Befehl kombinieren:
chmod u + x, g-w, o-r todo.txt
Sie können sehen, dass jeder Abschnitt durch Kommas getrennt ist und keine Leerzeichen vorhanden sind.
Hier sind einige nützliche Berechtigungen:
- -rwxr-xr-x: Der Besitzer verfügt über alle Berechtigungen, Gruppen- und andere Benutzer können Dateiinhalte lesen und ausführen.
- -rwxr-r-: Der Besitzer verfügt über alle Berechtigungen, Gruppen- und andere Benutzer können nur Dateien lesen (nützlich, wenn andere Benutzer Ihre Dateien nicht stören.
- -rwx-: Besitzer hat volle Berechtigungen, alle anderen haben keine (nützlich für persönliche Skripte).
- -rw-rw--: Besitzer und Gruppe können lesen und schreiben (nützlich für die Zusammenarbeit mit Gruppenmitgliedern).
- -rw-r-r-: Besitzer können lesen und schreiben, Gruppen und andere Benutzer können nur Dateien lesen (nützlich zum Speichern persönlicher Dateien in einem gemeinsam genutzten Netzwerk).
- -rw--: Besitzer kann lesen und schreiben, alle anderen haben keine (nützlich zum Speichern persönlicher Dateien).
Es gibt ein paar andere Dinge, die Sie mit chmod machen können - wie setuid und setgid -, aber sie sind ein wenig vertieft, und die meisten Benutzer müssen sie sowieso nicht wirklich verwenden.
Die Root- oder Super-User- und Systemdateien
Heutzutage führen wir nicht immer Systeme mit mehreren Benutzern aus. Warum sollten wir uns noch um Berechtigungen kümmern??
Nun, Unix und seine Derivate - unter anderem Linux, OS X - unterscheiden auch die vom Benutzer ausgeführten Dinge, die von einem Administrator oder mit Administratorrechten ausgeführt werden, und die Dinge, die das System selbst ausführt. Daher benötigen Dinge, die für das System wesentlich sind, Administratorrechte, um sie zu ändern oder auf sie zuzugreifen. Auf diese Weise versauen Sie nichts aus Versehen.
Um Änderungen an Systemdateien vorzunehmen, verwenden Sie in Ubuntu "sudo" oder "gksudo", um Administratorrechte zu erhalten. In anderen Distros wechseln Sie zu "root" oder dem "Super-User", der dasselbe tut, bis Sie sich abmelden.
Beachten Sie, dass in beiden Fällen das Ändern von Dateiberechtigungen dazu führen kann, dass Programme nicht funktionieren, dass der Eigentümer der Datei unbeabsichtigt den Root-Benutzer (und nicht den Eigentümer) ändert und das System dadurch weniger sicher ist (durch Erteilen weiterer Berechtigungen). Daher wird empfohlen, die Berechtigungen für Dateien - insbesondere Systemdateien - nicht zu ändern, es sei denn, dies ist erforderlich oder Sie wissen, was Sie tun.
Dateiberechtigungen sind vorhanden, um ein grundlegendes Sicherheitssystem für Benutzer bereitzustellen. Wenn Sie wissen, wie sie funktionieren, können Sie grundlegende Freigaben in einer Umgebung mit mehreren Benutzern einrichten, "öffentliche" Dateien schützen und einen Hinweis darauf geben, wann ein Problem mit dem Besitz von Systemdateien auftritt.
Glaubst du, du kannst die Dinge leichter erklären? Eine Korrektur haben? Möchten Sie sich an die alten Zeiten erinnern? Machen Sie eine Pause und schreiben Sie Ihre Kommentare in die Kommentare.