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:
-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,dfür ein Verzeichnis usw.). Die übrigen Zeichen zeigen die Lese-, Schreib- und Ausführungsberechtigungen für Besitzer, Gruppe und andere Benutzer.- Das erste
labexist der aktuelle Besitzer der Datei, also der Benutzername des Kontos, dem die Datei gehört. - Das zweite
labexist die aktuelle Gruppe der Datei. Eine Gruppe ist eine Sammlung von Benutzern, die Berechtigungen gemeinsam nutzen können. 0ist die Dateigröße in Byte. Da die Datei leer ist, beträgt ihre Größe null.Jul 29 15:11gibt Datum und Uhrzeit der letzten Änderung an.example.txtist 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:
sudoführt den Befehl mit Root-Berechtigungen aus. Wahrscheinlich werden Sie zur Eingabe Ihres Passworts aufgefordert.chownbenötigt erhöhte Berechtigungen, da der Befehl weitreichende Änderungen vornehmen und die Systemsicherheit beeinflussen kann. Ohnesudoerhalten Sie den Fehler „Permission denied“.chownist der Befehl zum Ändern des Besitzes.root:rootlegt den neuen Besitzer und die neue Gruppe fest; beide werden aufrootgesetzt. Die Syntax lautetowner:group.example.txtist 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/subdirerstellt das Verzeichnisnew-dirund dessen Unterverzeichnissubdir. Die Option-pweistmkdiran, benötigte übergeordnete Verzeichnisse ebenfalls zu erstellen. Ohne-pwürde das Erstellen vonnew-dir/subdirfehlschlagen, wennnew-dirnicht existiert.echo "Hello, world" > new-dir/file1.txterstellt im Verzeichnisnew-dirdie Dateifile1.txtund schreibt den Text „Hello, world“ hinein. Das Symbol>dient zur Umleitung: Es leitet die Ausgabe des Befehlsechoin die angegebene Datei um.echo "Another file" > new-dir/subdir/file2.txterstellt auf dieselbe Weise im Verzeichnisnew-dir/subdirdie Dateifile2.txtund 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 sinddfür ein Verzeichnis undlfür einen symbolischen Link. - Die nächsten drei Zeichen (
rw-) stellen die Berechtigungen des Besitzers dar: Lesen und Schreiben, aber keine Ausführung.rsteht für Leseberechtigung: Der Besitzer kann die Datei öffnen und lesen.wsteht für Schreibberechtigung: Der Besitzer kann die Datei ändern.xsteht 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:
700ist 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.
- Die erste Ziffer (
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: Leseberechtigung2: Schreibberechtigung1: Ausführungsberechtigung0: 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 mitls. - 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 mitcd.
Ändern Sie nun die Berechtigungen:
chmod -R 755 ~/test-dir
In diesem Befehl:
-Rwendet 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.755gibt 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
echoerstelltscript.shund schreibt die erste Zeile#!/bin/bashhinein. Diese Zeile wird Shebang genannt und weist Linux an, das Skript mit Bash auszuführen. - Der zweite Befehl
echofügt mit>>eine neue Zeile am Ende der Datei hinzu. Er schreibtecho "Hello, World", wodurch das Skript bei der AusführungHello, Worldausgibt.
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:
usteht für den Benutzer, also den Besitzer. Weitere Angaben sindgfür die Gruppe,ofür andere Benutzer undafür alle, also Benutzer, Gruppe und andere.+xfü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:
- Mit
touchhaben Sie neue Dateien erstellt und vorhandene Zeitstempel aktualisiert. - Sie haben gelernt, mit
chownden Besitz von Dateien und Verzeichnissen zu ändern, einschließlich rekursiver Änderungen für gesamte Verzeichnisstrukturen. - Sie haben
chmodsowohl 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. - An praktischen Beispielen haben Sie gesehen, warum Berechtigungen wichtig sind, etwa weil Skripte zum Ausführen eine Ausführungsberechtigung benötigen.
- Sie haben die Unterschiede zwischen numerischer und symbolischer Schreibweise bei
chmodsowie 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.



