Dateiberechtigungen

LinuxBeginner
Jetzt üben

Einführung

In diesem Lab tauchen wir in die Welt der Dateiberechtigungen unter Linux ein. Wir werden drei grundlegende Befehle untersuchen: chown, touch und chmod. Diese Werkzeuge sind entscheidend für die Verwaltung des Zugriffs auf Dateien und Verzeichnisse in einem Linux-System. Am Ende dieses Labs werden Sie ein solides Verständnis dafür haben, wie man Dateien erstellt, die Dateizugehörigkeit ändert und Berechtigungen modifiziert. Die Beherrschung dieser Befehle ermöglicht es Ihnen zu kontrollieren, wer Dateien auf Ihrem System lesen, schreiben und ausführen darf.

Dies ist ein geführtes Lab, das Schritt-für-Schritt-Anleitungen bietet, um Ihnen beim Lernen und Üben zu helfen. Folgen Sie den Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Lab für Anfänger ist, mit einer Abschlussquote von 92%. Es hat eine positive Bewertungsrate von 99% von Lernenden erhalten.

Erstellen einer neuen Datei

Beginnen wir damit, eine neue Datei mit dem Befehl touch zu erstellen. Dieser vielseitige Befehl kann neue, leere Dateien anlegen und die Zeitstempel bestehender Dateien aktualisieren. Man kann es sich als eine schnelle Methode vorstellen, eine Datei "anzufassen", um sie entweder ins Leben zu rufen oder ihren letzten Zugriffszeitpunkt zu aktualisieren.

Stellen Sie zunächst sicher, dass Sie sich im richtigen Verzeichnis befinden. Wir werden in Ihrem project-Verzeichnis arbeiten:

cd ~/project

Der Befehl cd steht für "change directory" (Verzeichnis wechseln). Das Symbol ~ repräsentiert Ihr Home-Verzeichnis, und /project gibt das Unterverzeichnis an, in das wir wechseln möchten. Falls das Verzeichnis project nicht existiert, wird dieser Befehl fehlschlagen. Es ist generell eine gute Praxis, das Verzeichnis zuerst zu erstellen, wenn Sie unsicher sind. In dieser Lab-Umgebung sollte das Verzeichnis jedoch bereits vorhanden sein.

Lassen Sie uns nun eine neue Datei namens example.txt erstellen:

touch example.txt

Dieser Befehl erstellt eine leere Datei namens example.txt in Ihrem aktuellen Verzeichnis. Um zu bestätigen, dass die Datei erstellt wurde, verwenden Sie den Befehl ls:

ls

ls steht für "list" (auflisten). Er zeigt Ihnen die Dateien und Verzeichnisse an Ihrem aktuellen Standort an. Sie sollten example.txt in der Ausgabe sehen. Falls nicht, prüfen Sie bitte, ob Sie den touch-Befehl korrekt ausgeführt haben und ob Sie sich tatsächlich im Verzeichnis ~/project befinden.

Ändern des Dateieigentümers

Nachdem wir eine Datei erstellt haben, lernen wir nun, wie man deren Eigentümer ändert. Der Befehl chown ermöglicht es uns, sowohl den Benutzer als auch die Gruppe einer Datei zu modifizieren. Die Eigentümerschaft bestimmt, wer die Kontrolle über die Datei hat.

Prüfen wir zunächst die aktuelle Eigentümerschaft unserer Datei example.txt:

ls -l example.txt

Der Befehl ls -l (Listenformat lang) liefert detaillierte Informationen über die Datei, einschließlich Berechtigungen, Eigentümer und Gruppe. Sie sollten eine Ausgabe ähnlich dieser sehen:

-rw-rw-r-- 1 labex labex 0 Jul 29 15:11 example.txt

Lassen Sie uns diese Ausgabe aufschlüsseln:

  1. -rw-rw-r-- repräsentiert die Dateiberechtigungen (mehr dazu in Schritt 4). Das erste Zeichen gibt den Dateityp an (- für eine reguläre Datei, d für ein Verzeichnis usw.). Die restlichen Zeichen stehen für Lese-, Schreib- und Ausführungsrechte für den Eigentümer, die Gruppe und andere.
  2. Das erste labex ist der aktuelle Eigentümer der Datei. Dies ist der Benutzername, dem die Datei gehört.
  3. Das zweite labex ist die aktuelle Gruppe der Datei. Eine Gruppe ist eine Sammlung von Benutzern, die sich Berechtigungen teilen können.
  4. 0 ist die Dateigröße in Bytes. Da die Datei leer ist, beträgt die Größe null.
  5. Jul 29 15:11 ist das Datum und die Uhrzeit der letzten Änderung.
  6. example.txt ist der Dateiname.

Nun ändern wir den Eigentümer der Datei auf den Benutzer root. root ist das Administratorkonto auf Linux-Systemen und verfügt über besondere Privilegien.

sudo chown root:root example.txt

Das bewirkt dieser Befehl:

  • sudo führt den Befehl mit Root-Rechten aus. Wahrscheinlich werden Sie nach Ihrem Passwort gefragt. chown erfordert erhöhte Rechte, da es ein mächtiger Befehl ist, der die Systemsicherheit beeinflussen kann. Ohne sudo erhalten Sie die Fehlermeldung "Permission denied".
  • chown ist der Befehl zum Ändern der Eigentümerschaft (change owner).
  • root:root legt den neuen Eigentümer und die neue Gruppe fest (beides auf root gesetzt). Die Syntax lautet Eigentümer:Gruppe.
  • example.txt ist die Zieldatei.

Überprüfen wir die Änderung:

ls -l example.txt

Sie sollten nun sehen, dass sowohl der Eigentümer als auch die Gruppe auf root geändert wurden:

-rw-rw-r-- 1 root root 0 Jul 29 15:11 example.txt

Falls Sie immer noch labex anstelle von root sehen, stellen Sie sicher, dass Sie sudo beim Ausführen des chown-Befehls verwendet und Ihr Passwort korrekt eingegeben haben.

Ändern der Eigentümerschaft eines Verzeichnisses

Der Befehl chown kann auch die Eigentümerschaft ganzer Verzeichnisse und deren Inhalte ändern. Dies ist besonders nützlich für die Verwaltung komplexer Verzeichnisstrukturen, bei denen Sie sicherstellen möchten, dass alle Dateien und Unterverzeichnisse denselben Eigentümer haben.

Erstellen wir zunächst ein neues Verzeichnis mit einigen Dateien:

mkdir -p new-dir/subdir
echo "Hello, world" > new-dir/file1.txt
echo "Another file" > new-dir/subdir/file2.txt

Erläuterung der Befehle:

  • mkdir -p new-dir/subdir erstellt das Verzeichnis new-dir und das darin liegende Unterverzeichnis subdir. Die Option -p weist mkdir an, übergeordnete Verzeichnisse bei Bedarf automatisch mitzuerstellen.
  • echo "Hello, world" > new-dir/file1.txt erstellt eine Datei namens file1.txt im Verzeichnis new-dir und schreibt den Text "Hello, world" hinein. Das Symbol > wird zur Umleitung verwendet; es nimmt die Ausgabe des echo-Befehls und leitet sie in die angegebene Datei.
  • echo "Another file" > new-dir/subdir/file2.txt erstellt analog eine Datei namens file2.txt im Unterverzeichnis new-dir/subdir.

Prüfen wir nun die aktuelle Eigentümerschaft:

ls -lR new-dir

ls -lR listet den Inhalt von new-dir rekursiv auf. Die Option -R (recursive) sorgt dafür, dass ls alle Dateien und Unterverzeichnisse innerhalb von new-dir sowie deren Inhalte anzeigt.

Sie sollten etwas Ähnliches wie dies sehen:

new-dir:
total 4
-rw-rw-r-- 1 labex labex 13 Jul 29 09:15 file1.txt
drwxrwxr-x 2 labex labex 23 Jul 29 09:15 subdir

new-dir/subdir:
total 4
-rw-rw-r-- 1 labex labex 13 Jul 29 09:15 file2.txt

Dies zeigt, dass das Verzeichnis new-dir, das Unterverzeichnis subdir und die Dateien file1.txt und file2.txt alle dem Benutzer labex gehören.

Nun ändern wir die Eigentümerschaft von new-dir und all seinen Inhalten auf den Benutzer root:

sudo chown -R root:root new-dir

In diesem Befehl:

  • Die Option -R weist chown an, rekursiv zu arbeiten und die Eigentümerschaft aller Dateien und Unterverzeichnisse innerhalb von new-dir zu ändern. Dies ist entscheidend; ohne -R würde sich nur die Eigentümerschaft des Verzeichnisses new-dir selbst ändern, während die darin enthaltenen Dateien weiterhin labex gehören würden.

Überprüfen wir die Änderung:

ls -lR new-dir

Sie sollten nun sehen:

new-dir:
total 4
-rw-rw-r-- 1 root root 13 Jul 29 09:15 file1.txt
drwxrwxr-x 2 root root 23 Jul 29 09:15 subdir

new-dir/subdir:
total 4
-rw-rw-r-- 1 root root 13 Jul 29 09:15 file2.txt

Wie Sie sehen können, hat sich die Eigentümerschaft des Verzeichnisses und aller Inhalte auf root geändert. Dies demonstriert die Mächtigkeit der Option -R für weitreichende Änderungen innerhalb einer Verzeichnisstruktur.

Ändern der Berechtigungen einer Datei

In Linux werden Dateiberechtigungen durch eine Reihe von Buchstaben oder Zahlen dargestellt. Wir untersuchen nun, wie man diese Berechtigungen liest und ändert. Das Verständnis von Berechtigungen ist lebenswichtig, um Ihre Dateien zu sichern und unbefugten Zugriff zu verhindern.

Schauen wir uns zunächst die aktuellen Berechtigungen unserer Datei example.txt an:

ls -l example.txt

Sie könnten so etwas sehen:

-rw-rw-r-- 1 root root 0 Jul 29 15:11 example.txt

Der Teil -rw-rw-r-- stellt die Dateiberechtigungen dar. Hier kommen die numerische und die symbolische Notation ins Spiel. Die Aufschlüsselung:

  • Das erste Zeichen (-) zeigt an, dass es sich um eine reguläre Datei handelt. Andere gängige Indikatoren sind d für Verzeichnis und l für symbolische Verknüpfung (Link).
  • Die nächsten drei Zeichen (rw-) stehen für die Berechtigungen des Eigentümers (Lesen und Schreiben, aber kein Ausführen).
    • r steht für Leseberechtigung (read): Der Eigentümer kann die Datei öffnen und lesen.
    • w steht für Schreibberechtigung (write): Der Eigentümer kann die Datei ändern.
    • x steht für Ausführungsberechtigung (execute): Der Eigentümer kann die Datei ausführen (falls es ein Programm oder Skript ist). Ein - bedeutet, dass die Berechtigung verweigert wird.
  • Die nächsten drei (rw-) gelten für die Gruppe. Sie haben dieselbe Bedeutung wie oben, beziehen sich aber auf Mitglieder der Dateigruppe.
  • Die letzten drei (r--) gelten für "Andere" (alle übrigen Benutzer). Auch sie haben dieselbe Bedeutung, gelten aber für Benutzer, die weder Eigentümer noch Mitglieder der Gruppe sind.

Nun ändern wir diese Berechtigungen mit dem Befehl chmod. chmod steht für "change mode" und erlaubt es Ihnen, diese Berechtigungen zu modifizieren. Wir beginnen mit der numerischen Notation.

sudo chmod 700 example.txt

In diesem Befehl:

  • 700 ist eine numerische Darstellung der Berechtigungen:
    • Die erste Ziffer (7) steht für die Berechtigungen des Eigentümers.
    • Die zweite Ziffer (0) steht für die Berechtigungen der Gruppe.
    • Die dritte Ziffer (0) steht für die Berechtigungen der Anderen.

Jede Ziffer ist eine Zahl von 0 bis 7, die durch Addition der Werte für Lesen (4), Schreiben (2) und Ausführen (1) berechnet wird:

  • 4: Leseberechtigung
  • 2: Schreibberechtigung
  • 1: Ausführungsberechtigung
  • 0: Keine Berechtigung

Somit gibt 7 (erste Ziffer) dem Eigentümer Lese- (4), Schreib- (2) und Ausführungsrechte (1): 4+2+1=7.
0 (zweite Ziffer) gibt der Gruppe keine Berechtigungen (0+0+0=0).
0 (dritte Ziffer) gibt Anderen keine Berechtigungen (0+0+0=0).

Daher bedeutet 700: Eigentümer: Lesen, Schreiben, Ausführen. Gruppe: keine. Andere: keine.

Überprüfen wir die Änderung:

ls -l example.txt

Sie sollten nun sehen:

-rwx------ 1 root root 0 Jul 29 15:11 example.txt

Der Eigentümer hat nun rwx-Rechte, während die Gruppe und Andere keinerlei Rechte haben.

Ändern der Berechtigungen eines Verzeichnisses

Das Ändern von Berechtigungen für Verzeichnisse funktioniert ähnlich wie bei Dateien. Üben wir dies, indem wir ein neues Verzeichnis erstellen und dessen Berechtigungen modifizieren. Verzeichnisberechtigungen steuern, wer den Inhalt auflisten, neue Dateien erstellen und auf bereits vorhandene Dateien zugreifen darf.

Erstellen wir zuerst ein neues Verzeichnis und setzen ungewöhnliche Berechtigungen:

mkdir ~/test-dir
chmod 700 ~/test-dir

Prüfen wir nun die aktuellen Berechtigungen:

ls -ld ~/test-dir

Die Option -d bei ls -l weist ls an, das Verzeichnis selbst aufzulisten, anstatt dessen Inhalt. Ohne -d würde ls die Dateien innerhalb von test-dir anzeigen, das momentan leer ist. Sie sollten sehen:

drwx------ 2 labex labex 4096 Jul 29 15:45 /home/labex/test-dir

Das d am Anfang zeigt an, dass es ein Verzeichnis ist. rwx------ bedeutet, dass der Eigentümer volle Rechte hat, während Gruppe und Andere keine Rechte haben. Für Verzeichnisse gilt:

  • Leseberechtigung (r) erlaubt es, den Inhalt des Verzeichnisses mit ls aufzulisten.
  • Schreibberechtigung (w) erlaubt es, neue Dateien und Unterverzeichnisse im Verzeichnis zu erstellen.
  • Ausführungsberechtigung (x) erlaubt es, in das Verzeichnis zu wechseln (mit cd) und auf darin enthaltene Dateien zuzugreifen.

Nun ändern wir die Berechtigungen:

chmod -R 755 ~/test-dir

In diesem Befehl:

  • -R wendet die Änderung rekursiv auf alle Dateien und Unterverzeichnisse an. Es ist gute Praxis, dies bei Verzeichnissen zu verwenden, auch wenn sie leer sind, falls später Dateien hinzugefügt werden.
  • 755 gibt dem Eigentümer Lese-, Schreib- und Ausführungsrechte, während Gruppe und Andere Lese- und Ausführungsrechte erhalten.

Aufschlüsselung von 755:

  • Eigentümer (7): Lesen (4) + Schreiben (2) + Ausführen (1) = 7
  • Gruppe (5): Lesen (4) + Ausführen (1) = 5
  • Andere (5): Lesen (4) + Ausführen (1) = 5

Überprüfen wir die Änderung:

ls -ld ~/test-dir

Sie sollten nun sehen:

drwxr-xr-x 2 labex labex 4096 Jul 29 15:45 /home/labex/test-dir

Dies zeigt deutlich den Wechsel der Berechtigungen: Von einem Zustand, in dem nur der Eigentümer Zugriff hatte (700), zu einem Zustand, in dem der Eigentümer vollen Zugriff hat, während andere lesen und eintreten dürfen (755). Jetzt kann jeder den Inhalt von test-dir auflisten, aber nur der Eigentümer kann neue Dateien erstellen oder bestehende ändern.

Verwendung der symbolischen Notation für Berechtigungen

Während die numerische Notation kompakt ist, kann die symbolische Notation intuitiver sein, besonders wenn man nur eine einzelne Berechtigung ändern möchte. Die symbolische Notation verwendet Buchstaben für Benutzer, Gruppe und Andere sowie Operatoren zum Hinzufügen oder Entfernen von Rechten.

Erstellen wir zunächst eine neue Skriptdatei mit Inhalt:

cd ~/project
echo '#!/bin/bash\necho "Hello, World"' > script.sh

Dieser Befehl erledigt zwei Dinge:

  1. Er erstellt eine Datei namens script.sh. Die Endung .sh wird üblicherweise für Shell-Skripte verwendet. Shell-Skripte sind ausführbare Dateien, die eine Reihe von Befehlen enthalten.
  2. Er schreibt zwei Zeilen in die Datei:
    • #!/bin/bash (genannt Shebang) teilt dem System mit, dass dies ein Bash-Skript ist. Die Shebang-Zeile gibt den Interpreter an, der zur Ausführung des Skripts verwendet werden soll.
    • echo "Hello, World" ist der Befehl, der beim Ausführen des Skripts "Hello, World" ausgibt.
    • \n ist ein Zeilenumbruch, damit die Befehle in separaten Zeilen stehen.

Prüfen wir die ursprünglichen Berechtigungen:

ls -l script.sh

Sie sollten so etwas sehen:

-rw-rw-r-- 1 labex labex 32 Jul 29 16:30 script.sh

Wie man sieht, hat das Skript anfangs nur Lese- und Schreibrechte für Eigentümer und Gruppe sowie Leserechte für Andere. Es fehlt die Ausführungsberechtigung, die nötig ist, um es als Programm zu starten.

Versuchen wir, das Skript auszuführen:

./script.sh

Sie sollten die Fehlermeldung "Permission denied" erhalten, da das Skript noch nicht ausführbar ist. Das ./ weist die Shell an, das Skript im aktuellen Verzeichnis auszuführen.

Fügen wir nun die Ausführungsberechtigung für den Eigentümer mittels symbolischer Notation hinzu:

chmod u+x script.sh

In diesem Befehl:

  • u bezieht sich auf den User (Eigentümer). Andere Optionen sind g für Group, o für Others und a für All (alle drei).
  • +x fügt die Ausführungsberechtigung hinzu. Das + fügt ein Recht hinzu, während - ein Recht entfernt.

Somit bedeutet u+x: "Füge dem Eigentümer das Ausführungsrecht hinzu."

Überprüfen wir die Änderung:

ls -l script.sh

Sie sollten nun sehen:

-rwxrw-r-- 1 labex labex 32 Jul 29 16:30 script.sh

Der Eigentümer hat nun rwx-Rechte.

Versuchen wir nun erneut, das Skript auszuführen:

./script.sh

Diesmal sollten Sie die Ausgabe sehen: "Hello, World"

Dieses Beispiel verdeutlicht, warum wir Skripten Ausführungsrechte geben müssen und wie die symbolische Notation es erleichtert, gezielte Änderungen vorzunehmen, ohne die gesamte numerische Darstellung neu berechnen zu müssen.

Zusammenfassung

In diesem Lab haben wir die wichtigsten Linux-Befehle zur Verwaltung von Dateiberechtigungen kennengelernt:

  1. Wir haben touch verwendet, um neue Dateien zu erstellen und Zeitstempel zu aktualisieren.
  2. Wir haben gelernt, wie man mit chown die Eigentümerschaft von Dateien und Verzeichnissen ändert, einschließlich rekursiver Änderungen für ganze Strukturen.
  3. Wir haben geübt, chmod sowohl mit numerischer als auch mit symbolischer Notation einzusetzen, um Berechtigungen für Eigentümer, Gruppe und Andere zu steuern.
  4. Wir haben praktische Beispiele gesehen, warum Berechtigungen wichtig sind, etwa beim Ausführen von Skripten.
  5. Wir haben die Unterschiede zwischen numerischer und symbolischer Notation bei chmod geklärt und gelernt, wann welche Methode angemessener ist.

Diese Befehle sind grundlegend für die Sicherheit und Zugriffskontrolle in Linux-Systemen. Gehen Sie beim Ändern von Berechtigungen immer vorsichtig vor, besonders bei der Verwendung von sudo, da fehlerhafte Änderungen die Systemsicherheit und Funktionalität beeinträchtigen können. Prüfen Sie Ihre Befehle vor der Ausführung stets doppelt.