Dateiberechtigungen

LinuxBeginner
Jetzt üben

Einführung

In diesem Lab beschäftigen Sie sich mit Dateiberechtigungen unter Linux. Sie lernen drei wichtige Befehle kennen: chown, touch und chmod. Diese Werkzeuge sind entscheidend, um den Zugriff auf Dateien und Verzeichnisse in einem Linux-System zu verwalten. Am Ende des Labs können Sie Dateien erstellen, Dateibesitzer ändern und Dateiberechtigungen anpassen. Mit diesen Befehlen kontrollieren Sie, wer Dateien lesen, schreiben und ausführen darf.

Eine neue Datei erstellen

Erstellen Sie zunächst mit dem Befehl touch eine neue Datei. Dieser vielseitige Befehl kann neue, leere Dateien anlegen und die Zeitstempel vorhandener Dateien aktualisieren. Sie können sich touch als schnellen Weg vorstellen, eine Datei anzulegen oder ihre letzte Zugriffszeit zu aktualisieren.

Stellen Sie zuerst sicher, dass Sie sich im richtigen Verzeichnis befinden. Sie arbeiten im Verzeichnis project:

cd ~/project

Der Befehl cd steht für „change directory“ und wechselt das Verzeichnis. Das Symbol ~ steht für Ihr Home-Verzeichnis, /project bezeichnet das Unterverzeichnis, in das Sie wechseln möchten. Falls das Verzeichnis project nicht existiert, schlägt dieser Befehl wahrscheinlich fehl. Wenn Sie unsicher sind, sollten Sie das Verzeichnis normalerweise zuerst erstellen. In dieser Lab-Umgebung sollte es jedoch bereits vorhanden sein.

Erstellen Sie nun eine neue Datei mit dem Namen example.txt:

touch example.txt

Dieser Befehl erstellt im aktuellen Verzeichnis eine leere Datei namens example.txt. Überprüfen Sie mit dem Befehl ls, ob die Datei erstellt wurde:

ls

ls steht für „list“ und zeigt die Dateien und Verzeichnisse im aktuellen Verzeichnis an. In der Ausgabe sollte example.txt erscheinen. Falls die Datei nicht angezeigt wird, prüfen Sie, ob Sie den Befehl touch korrekt ausgeführt haben und sich tatsächlich im Verzeichnis ~/project befinden.

Den Besitzer einer Datei ändern

Nachdem Sie eine Datei erstellt haben, ändern Sie nun ihren Besitzer. Mit dem Befehl chown können Sie sowohl den Benutzer- als auch den Gruppenbesitz einer Datei ändern. Der Besitz legt fest, wer Kontrolle über die Datei hat.

Prüfen Sie zunächst den aktuellen Besitz der Datei example.txt:

ls -l example.txt

Der Befehl ls -l („list“ im Langformat) liefert detaillierte Informationen zur Datei, darunter Berechtigungen, Besitzer und Gruppe. Die Ausgabe sollte ungefähr so aussehen:

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

Die einzelnen Bestandteile der Ausgabe:

  1. -rw-rw-r-- stellt die Dateiberechtigungen dar. Dies wird in Schritt 4 genauer erklärt. Das erste Zeichen gibt den Dateityp an (- für eine reguläre Datei, d für ein Verzeichnis usw.). Die übrigen Zeichen zeigen die Lese-, Schreib- und Ausführungsberechtigungen für Besitzer, Gruppe und andere Benutzer.
  2. Das erste labex ist der aktuelle Besitzer der Datei, also der Benutzername des Kontos, dem die Datei gehört.
  3. Das zweite labex ist die aktuelle Gruppe der Datei. Eine Gruppe ist eine Sammlung von Benutzern, die Berechtigungen gemeinsam nutzen können.
  4. 0 ist die Dateigröße in Byte. Da die Datei leer ist, beträgt ihre Größe null.
  5. Jul 29 15:11 gibt Datum und Uhrzeit der letzten Änderung an.
  6. example.txt ist der Dateiname.

Ändern Sie nun den Besitzer der Datei zum Benutzer root. root ist das Administratorkonto in Linux-Systemen und verfügt über besondere Berechtigungen.

sudo chown root:root example.txt

Dieser Befehl bewirkt Folgendes:

  • sudo führt den Befehl mit Root-Berechtigungen aus. Wahrscheinlich werden Sie zur Eingabe Ihres Passworts aufgefordert. chown benötigt erhöhte Berechtigungen, da der Befehl weitreichende Änderungen vornehmen und die Systemsicherheit beeinflussen kann. Ohne sudo erhalten Sie den Fehler „Permission denied“.
  • chown ist der Befehl zum Ändern des Besitzes.
  • root:root legt den neuen Besitzer und die neue Gruppe fest; beide werden auf root gesetzt. Die Syntax lautet owner:group.
  • example.txt ist die Zieldatei.

Überprüfen Sie die Änderung:

ls -l example.txt

Nun sollten sowohl als Besitzer als auch als Gruppe root angezeigt werden:

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

Falls weiterhin labex statt root angezeigt wird, stellen Sie sicher, dass Sie den Befehl chown mit sudo ausgeführt und Ihr Passwort korrekt eingegeben haben.

Den Besitzer eines Verzeichnisses ändern

Mit dem Befehl chown können Sie auch den Besitz ganzer Verzeichnisse einschließlich ihres Inhalts ändern. Sehen Sie sich das nun an. Das ist besonders nützlich, wenn Sie komplexe Verzeichnisstrukturen verwalten und sicherstellen möchten, dass alle Dateien und Unterverzeichnisse denselben Besitzer haben.

Erstellen Sie 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

Die Befehle im Einzelnen:

  • mkdir -p new-dir/subdir erstellt das Verzeichnis new-dir und dessen Unterverzeichnis subdir. Die Option -p weist mkdir an, benötigte übergeordnete Verzeichnisse ebenfalls zu erstellen. Ohne -p würde das Erstellen von new-dir/subdir fehlschlagen, wenn new-dir nicht existiert.
  • echo "Hello, world" > new-dir/file1.txt erstellt im Verzeichnis new-dir die Datei file1.txt und schreibt den Text „Hello, world“ hinein. Das Symbol > dient zur Umleitung: Es leitet die Ausgabe des Befehls echo in die angegebene Datei um.
  • echo "Another file" > new-dir/subdir/file2.txt erstellt auf dieselbe Weise im Verzeichnis new-dir/subdir die Datei file2.txt und schreibt den Text „Another file“ hinein.

Prüfen Sie nun den aktuellen Besitz:

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 einschließlich deren Inhalte auflistet.

Die Ausgabe sollte ungefähr so aussehen:

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

Daran sehen Sie, dass das Verzeichnis new-dir, sein Unterverzeichnis subdir sowie die Dateien file1.txt und file2.txt alle labex gehören.

Ändern Sie nun den Besitz von new-dir und seinem gesamten Inhalt zum Benutzer root:

sudo chown -R root:root new-dir

In diesem Befehl weist die Option -R chown an, rekursiv zu arbeiten und den Besitz aller Dateien und Unterverzeichnisse innerhalb von new-dir zu ändern. Das ist entscheidend: Ohne -R würde sich der Besitz nur des Verzeichnisses new-dir ändern. Die darin enthaltenen Dateien und Unterverzeichnisse würden weiterhin labex gehören.

Überprüfen Sie die Änderung:

ls -lR new-dir

Nun sollte die Ausgabe so aussehen:

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, gehört nun das Verzeichnis einschließlich seines gesamten Inhalts root. Dieses Beispiel zeigt, wie die Option -R umfassende Besitzänderungen innerhalb einer Verzeichnisstruktur ermöglicht.

Die Berechtigungen einer Datei ändern

Unter Linux werden Dateiberechtigungen durch eine Reihe von Buchstaben oder Zahlen dargestellt. Sehen Sie sich an, wie Sie diese Berechtigungen lesen und ändern. Das Verständnis von Berechtigungen ist entscheidend, um Ihre Dateien zu schützen und unbefugten Zugriff zu verhindern.

Prüfen Sie zunächst die aktuellen Berechtigungen der Datei example.txt:

ls -l example.txt

Die Ausgabe könnte ungefähr so aussehen:

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

Der Abschnitt -rw-rw-r-- stellt die Dateiberechtigungen dar. Hier kommen die numerische und die symbolische Schreibweise ins Spiel. Die Bestandteile im Einzelnen:

  • Das erste Zeichen (-) zeigt an, dass es sich um eine reguläre Datei handelt. Weitere häufige Zeichen sind d für ein Verzeichnis und l für einen symbolischen Link.
  • Die nächsten drei Zeichen (rw-) stellen die Berechtigungen des Besitzers dar: Lesen und Schreiben, aber keine Ausführung.
    • r steht für Leseberechtigung: Der Besitzer kann die Datei öffnen und lesen.
    • w steht für Schreibberechtigung: Der Besitzer kann die Datei ändern.
    • x steht für Ausführungsberechtigung: Der Besitzer kann die Datei ausführen, wenn es sich um ein Programm oder Skript handelt. Ein - bedeutet, dass die Berechtigung verweigert wird.
  • Die nächsten drei Zeichen (rw-) gelten für die Gruppe. Sie haben dieselbe Bedeutung, gelten aber für die Mitglieder der Dateigruppe.
  • Die letzten drei Zeichen (r--) gelten für andere Benutzer, also alle übrigen Benutzer. Sie haben ebenfalls dieselbe Bedeutung, gelten aber für Benutzer, die weder Besitzer noch Mitglied der Dateigruppe sind.

Ändern Sie diese Berechtigungen nun mit dem Befehl chmod. chmod steht für „change mode“ und ermöglicht das Anpassen der Berechtigungen. Beginnen Sie mit der numerischen Schreibweise.

sudo chmod 700 example.txt

In diesem Befehl bedeutet:

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

Jede Ziffer liegt zwischen 0 und 7. Sie wird durch Addition der Werte für Lesen (4), Schreiben (2) und Ausführen (1) berechnet:

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

7 als erste Ziffer gibt dem Besitzer Lese- (4), Schreib- (2) und Ausführungsberechtigungen (1): 4+2+1=7.
0 als zweite Ziffer gibt der Gruppe keine Berechtigungen (0+0+0=0).
0 als dritte Ziffer gibt anderen Benutzern keine Berechtigungen (0+0+0=0).

700 bedeutet daher: Besitzer: Lesen, Schreiben, Ausführen. Gruppe: keine Berechtigungen. Andere: keine Berechtigungen.

Überprüfen Sie die Änderung:

ls -l example.txt

Nun sollte die Ausgabe so aussehen:

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

Der Besitzer verfügt jetzt über die Berechtigungen rwx (Lesen, Schreiben und Ausführen), während die Gruppe und andere Benutzer keine Berechtigungen haben.

Die Berechtigungen eines Verzeichnisses ändern

Das Ändern von Verzeichnisberechtigungen funktioniert ähnlich wie das Ändern von Dateiberechtigungen. Üben Sie dies, indem Sie ein neues Verzeichnis erstellen und seine Berechtigungen ändern. Verzeichnisberechtigungen bestimmen, wer den Inhalt des Verzeichnisses auflisten, darin neue Dateien erstellen und bereits vorhandene Dateien darin aufrufen darf.

Erstellen Sie zunächst ein neues Verzeichnis und setzen Sie ungewöhnliche Berechtigungen:

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

Prüfen Sie nun die aktuellen Berechtigungen:

ls -ld ~/test-dir

Die Option -d in ls -l weist ls an, das Verzeichnis selbst statt seines Inhalts aufzulisten. Ohne -d würde ls die Dateien und Unterverzeichnisse innerhalb von test-dir auflisten, das derzeit leer ist. Die Ausgabe sollte so aussehen:

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

Das d am Anfang zeigt an, dass es sich um ein Verzeichnis handelt. rwx------ bedeutet, dass der Besitzer Lese-, Schreib- und Ausführungsberechtigungen besitzt, während die Gruppe und andere Benutzer keine Berechtigungen haben. Für Verzeichnisse gilt:

  • Die Leseberechtigung (r) ermöglicht das Auflisten des Verzeichnisinhalts mit ls.
  • Die Schreibberechtigung (w) ermöglicht das Erstellen neuer Dateien und Unterverzeichnisse im Verzeichnis.
  • Die Ausführungsberechtigung (x) ermöglicht den Zugriff auf Dateien und Unterverzeichnisse im Verzeichnis, also beispielsweise den Wechsel mit cd.

Ändern Sie nun die Berechtigungen:

chmod -R 755 ~/test-dir

In diesem Befehl:

  • -R wendet die Änderung rekursiv auf alle Dateien und Unterverzeichnisse an. In diesem Fall ist das Verzeichnis leer. Es ist dennoch eine gute Vorgehensweise, beim Arbeiten mit Verzeichnissen diese Option einzubeziehen, falls Sie später Dateien hinzufügen.
  • 755 gibt dem Besitzer Lese-, Schreib- und Ausführungsberechtigungen sowie der Gruppe und anderen Benutzern Lese- und Ausführungsberechtigungen.

Die Bestandteile von 755:

  • Besitzer (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 Sie die Änderung:

ls -ld ~/test-dir

Nun sollte die Ausgabe so aussehen:

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

Die Änderung ist deutlich zu erkennen: Zuvor hatte nur der Besitzer Zugriff (700), jetzt verfügt der Besitzer über vollständigen Zugriff und andere Benutzer können lesen und ausführen (755). Nun kann jeder den Inhalt von test-dir auflisten und auf Dateien darin zugreifen. Neue Dateien erstellen oder vorhandene Dateien ändern kann jedoch nur der Besitzer.

Die symbolische Schreibweise für Berechtigungen verwenden

Die numerische Schreibweise ist zwar kompakt, aber die symbolische Schreibweise kann intuitiver sein, insbesondere wenn Sie nur eine einzelne Berechtigung ändern möchten. Bei der symbolischen Schreibweise stehen Buchstaben für Benutzer, Gruppe und andere Benutzer. Operatoren dienen dazu, Berechtigungen hinzuzufügen oder zu entfernen.

Erstellen Sie in diesem Schritt ein kleines Shell-Skript und fügen Sie ihm anschließend die Ausführungsberechtigung hinzu.

Erstellen Sie zunächst eine neue Skriptdatei mit folgendem Inhalt:

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

Diese Befehle bewirken Folgendes:

  • Der erste Befehl echo erstellt script.sh und schreibt die erste Zeile #!/bin/bash hinein. Diese Zeile wird Shebang genannt und weist Linux an, das Skript mit Bash auszuführen.
  • Der zweite Befehl echo fügt mit >> eine neue Zeile am Ende der Datei hinzu. Er schreibt echo "Hello, World", wodurch das Skript bei der Ausführung Hello, World ausgibt.

Prüfen Sie mit folgendem Befehl, ob die Datei nun zwei getrennte Zeilen enthält:

cat script.sh

Die Ausgabe sollte so aussehen:

#!/bin/bash
echo "Hello, World"

Prüfen Sie nun die anfänglichen Berechtigungen:

ls -l script.sh

Die Ausgabe sollte ungefähr so aussehen:

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

Wie Sie sehen, besitzt das Skript zunächst nur für Besitzer und Gruppe Lese- und Schreibberechtigungen sowie für andere Benutzer eine Leseberechtigung. Die Ausführungsberechtigung fehlt jedoch. Sie ist erforderlich, um das Skript als Programm auszuführen.

Versuchen Sie, das Skript auszuführen:

./script.sh

Sie sollten den Fehler „Permission denied“ sehen, da das Skript noch keine Ausführungsberechtigung besitzt. Der Teil ./ weist die Shell an, das Skript im aktuellen Verzeichnis auszuführen.

Fügen Sie nun dem Besitzer mithilfe der symbolischen Schreibweise die Ausführungsberechtigung hinzu:

chmod u+x script.sh

In diesem Befehl bedeutet:

  • u steht für den Benutzer, also den Besitzer. Weitere Angaben sind g für die Gruppe, o für andere Benutzer und a für alle, also Benutzer, Gruppe und andere.
  • +x fügt die Ausführungsberechtigung hinzu. Das Symbol + fügt eine Berechtigung hinzu, während - eine Berechtigung entfernt.

u+x bedeutet also: „Ausführungsberechtigung für den Besitzer hinzufügen.“

Überprüfen Sie die Änderung:

ls -l script.sh

Nun sollte die Ausgabe so aussehen:

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

Der Besitzer besitzt jetzt die Berechtigungen rwx (Lesen, Schreiben und Ausführen).

Führen Sie das Skript erneut aus:

./script.sh

Diesmal sollte folgende Ausgabe erscheinen:

Hello, World

Dieses Beispiel zeigt deutlich, warum Skripte eine Ausführungsberechtigung benötigen, und verdeutlicht den Unterschied vor und nach dem Hinzufügen dieser Berechtigung. Mit der symbolischen Schreibweise können Sie gezielt einzelne Berechtigungen ändern, ohne die gesamte numerische Darstellung neu berechnen zu müssen.

Zusammenfassung

In diesem Lab haben Sie wichtige Linux-Befehle zur Verwaltung von Dateiberechtigungen kennengelernt:

  1. Mit touch haben Sie neue Dateien erstellt und vorhandene Zeitstempel aktualisiert.
  2. Sie haben gelernt, mit chown den Besitz von Dateien und Verzeichnissen zu ändern, einschließlich rekursiver Änderungen für gesamte Verzeichnisstrukturen.
  3. Sie haben chmod sowohl mit numerischer als auch mit symbolischer Schreibweise verwendet, um Datei- und Verzeichnisberechtigungen zu ändern. Dabei haben Sie die unterschiedlichen Berechtigungsstufen für Besitzer, Gruppe und andere Benutzer kennengelernt.
  4. An praktischen Beispielen haben Sie gesehen, warum Berechtigungen wichtig sind, etwa weil Skripte zum Ausführen eine Ausführungsberechtigung benötigen.
  5. Sie haben die Unterschiede zwischen numerischer und symbolischer Schreibweise bei chmod sowie die geeigneten Einsatzbereiche beider Varianten kennengelernt.

Diese Befehle sind entscheidend, um die Sicherheit und Zugriffskontrolle in Linux-Systemen zu gewährleisten. Gehen Sie beim Ändern von Berechtigungen stets vorsichtig vor, insbesondere bei der Verwendung von sudo, da falsche Änderungen erhebliche Auswirkungen auf die Systemsicherheit und die Funktionsfähigkeit haben können. Überprüfen Sie Ihre Befehle immer, bevor Sie sie ausführen, und machen Sie sich klar, welche Folgen die geplanten Änderungen haben.