Wie man prüft, ob eine Datei in Linux beschreibbar ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie in Linux mithilfe verschiedener Methoden prüfen können, ob eine Datei beschreibbar ist. Wir beginnen damit, den Befehl test -w zu verwenden, um schnell die Schreibbarkeit zu bestimmen und seine Verwendung in Shell-Skripten zu verstehen.

Als Nächstes überprüfen Sie die Dateiberechtigungen detailliert mithilfe des Befehls ls -l und interpretieren die Ausgabe, um Besitz, Gruppe und andere Berechtigungen zu verstehen. Abschließend untersuchen Sie die Dateizugriffsinformationen umfassender mit dem Befehl stat.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") subgraph Lab Skills linux/echo -.-> lab-558714{{"Wie man prüft, ob eine Datei in Linux beschreibbar ist"}} linux/test -.-> lab-558714{{"Wie man prüft, ob eine Datei in Linux beschreibbar ist"}} linux/ls -.-> lab-558714{{"Wie man prüft, ob eine Datei in Linux beschreibbar ist"}} linux/touch -.-> lab-558714{{"Wie man prüft, ob eine Datei in Linux beschreibbar ist"}} linux/cd -.-> lab-558714{{"Wie man prüft, ob eine Datei in Linux beschreibbar ist"}} end

Prüfen der Schreibbarkeit mit test -w

In diesem Schritt lernen Sie, wie Sie mithilfe des test-Befehls mit der Option -w prüfen können, ob Sie die Berechtigung haben, in eine Datei oder ein Verzeichnis zu schreiben. Das Verständnis von Dateiberechtigungen ist in Linux von entscheidender Bedeutung, da es festlegt, wer Dateien lesen, schreiben und ausführen kann.

Der test-Befehl ist ein integrierter Shell-Befehl, der Bedingungen prüft und einen Exit-Status von 0 (wahr) oder 1 (falsch) zurückgibt. Die Option -w prüft speziell, ob eine Datei oder ein Verzeichnis für den aktuellen Benutzer beschreibbar ist.

Erstellen wir eine einfache Datei in Ihrem ~/project-Verzeichnis. Wir verwenden den touch-Befehl, der eine leere Datei erstellt, wenn sie noch nicht existiert.

Navigieren Sie in Ihr Projektverzeichnis, falls Sie nicht bereits dort sind:

cd ~/project

Jetzt erstellen Sie eine Datei mit dem Namen my_test_file.txt:

touch my_test_file.txt

Sie können überprüfen, ob die Datei erstellt wurde, indem Sie den ls-Befehl verwenden:

ls

In der Ausgabe sollte my_test_file.txt aufgeführt sein.

Jetzt verwenden wir den test -w-Befehl, um zu prüfen, ob Sie in diese Datei schreiben können. Wir kombinieren ihn mit einem echo-Befehl, um das Ergebnis zu sehen.

test -w my_test_file.txt && echo "Writable" || echo "Not writable"

Lassen Sie uns diesen Befehl analysieren:

  • test -w my_test_file.txt: Dies prüft, ob my_test_file.txt beschreibbar ist.
  • && echo "Writable": Wenn der test-Befehl wahr zurückgibt (Exit-Status 0), führt der &&-Operator den nächsten Befehl aus, der "Writable" ausgibt.
  • || echo "Not writable": Wenn der test-Befehl falsch zurückgibt (Exit-Status 1), führt der ||-Operator den nächsten Befehl aus, der "Not writable" ausgibt.

Da Sie die Datei als Benutzer labex in Ihrem Home-Verzeichnis erstellt haben, sollten Sie Schreibberechtigungen haben, und die Ausgabe sollte lauten:

Writable

Der test -w-Befehl wird oft in Shell-Skripten verwendet, um die Berechtigungen zu prüfen, bevor versucht wird, in eine Datei zu schreiben, um potenzielle Fehler zu vermeiden.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Überprüfen der Berechtigungen mit ls -l

In diesem Schritt verwenden wir den ls -l-Befehl, um detaillierte Informationen über Dateien und Verzeichnisse, einschließlich ihrer Berechtigungen, anzuzeigen. Dieser Befehl ist unerlässlich, um zu verstehen, wer auf einem Linux-System auf was zugreifen kann.

Der ls-Befehl listet Dateien und Verzeichnisse auf. Die Option -l liefert ein "langes Listing", das Berechtigungen, Eigentum, Größe und Änderungszeit enthält.

Stellen Sie sicher, dass Sie sich im ~/project-Verzeichnis befinden:

cd ~/project

Jetzt führen Sie den ls -l-Befehl aus, um die Details der Dateien in diesem Verzeichnis anzuzeigen. Sie sollten die Datei my_test_file.txt sehen, die Sie im vorherigen Schritt erstellt haben.

ls -l

Die Ausgabe sieht in etwa so aus:

-rw-rw-r-- 1 labex labex    0 Month Day HH:MM my_test_file.txt

Lassen Sie uns den ersten Teil der Ausgabe analysieren, der die Dateiberechtigungen darstellt:

-rw-rw-r--

Diese Zeichenkette aus zehn Zeichen gibt Ihnen Informationen über den Dateityp und die Berechtigungen für verschiedene Benutzer.

  1. Das erste Zeichen (- in diesem Fall) gibt den Dateityp an.
    • -: Reguläre Datei
    • d: Verzeichnis
    • l: Symbolischer Link
    • Und andere...
  2. Die nächsten neun Zeichen sind in drei Gruppen zu je drei Zeichen unterteilt:
    • Die erste Gruppe (rw-): Berechtigungen für den Besitzer der Datei.
    • Die zweite Gruppe (rw-): Berechtigungen für die Gruppe, zu der die Datei gehört.
    • Die dritte Gruppe (r--): Berechtigungen für andere (alle anderen Benutzer auf dem System).

Innerhalb jeder Gruppe von drei Zeichen:

  • r: Leseberechtigung (erlaubt das Anzeigen des Dateiinhalts oder das Auflisten der Verzeichnisinhalte).
  • w: Schreibberechtigung (erlaubt das Ändern der Datei oder das Erstellen/Löschen von Dateien in einem Verzeichnis).
  • x: Ausführungsberechtigung (erlaubt das Ausführen der Datei als Programm oder das Betreten eines Verzeichnisses).
  • -: Gibt an, dass die Berechtigung nicht gewährt ist.

Für my_test_file.txt mit den Berechtigungen -rw-rw-r-- gilt also:

  • Der Besitzer (labex) hat Leseberechtigung (r) und Schreibberechtigung (w).
  • Die Gruppe (labex) hat Leseberechtigung (r) und Schreibberechtigung (w).
  • Andere haben nur Leseberechtigung (r).

Diese Ausgabe erklärt, warum der test -w-Befehl im vorherigen Schritt für den Benutzer labex "Writable" zurückgegeben hat – weil der Besitzer (labex) Schreibberechtigung (w) hat.

Das Verständnis der ls -l-Ausgabe ist grundlegend für die Verwaltung von Dateien und Berechtigungen in Linux.

Klicken Sie auf Weiter, um fortzufahren.

Untersuchung des Dateizugriffs mit stat

In diesem Schritt verwenden wir den stat-Befehl, um detaillierte Informationen über eine Datei oder ein Dateisystem zu erhalten. Während ls -l Ihnen einen schnellen Überblick gibt, bietet stat einen viel umfassenderen Einblick in die Dateimetadaten, einschließlich Zugriffs-, Änderungs- und Statusänderungszeiten.

Stellen Sie sicher, dass Sie sich im ~/project-Verzeichnis befinden:

cd ~/project

Jetzt verwenden wir den stat-Befehl für die Datei my_test_file.txt, die Sie zuvor erstellt haben:

stat my_test_file.txt

Die Ausgabe wird recht detailliert sein und könnte in etwa so aussehen:

  File: my_test_file.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: ---h/---d       Inode: ---         Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 5000/   labex)   Gid: ( 5000/   labex)
Access: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Modify: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Change: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
 Birth: -

Schauen wir uns einige der wichtigsten Informationen an, die stat liefert:

  • File: Der Name der Datei.
  • Size: Die Größe der Datei in Bytes.
  • Access: (0664/-rw-rw-r--): Diese Zeile zeigt die Berechtigungen sowohl im oktalen (0664) als auch im symbolischen (-rw-rw-r--) Format an. Dies entspricht den Berechtigungen, die wir mit ls -l gesehen haben.
  • Uid: ( 5000/ labex): Die Benutzer-ID (UID) und der Benutzername des Dateibesitzers.
  • Gid: ( 5000/ labex): Die Gruppen-ID (GID) und der Gruppenname der Gruppe, zu der die Datei gehört.
  • Access: Der Zeitpunkt des letzten Zugriffs (Lesen) auf die Datei.
  • Modify: Der Zeitpunkt der letzten Änderung des Dateiinhalts.
  • Change: Der Zeitpunkt der letzten Änderung der Dateimetadaten (z. B. Berechtigungen, Eigentum usw.).
  • Birth: Die Erstellungszeit der Datei (kann auf einigen Dateisystemen nicht verfügbar sein).

Der stat-Befehl bietet einen tieferen Einblick in die Eigenschaften einer Datei als ls -l. Er ist besonders nützlich, wenn Sie genaue Zeitstempel oder detaillierte Informationen über Dateieigentum und -berechtigungen in verschiedenen Formaten benötigen.

Sie können stat auch mit Optionen verwenden, um spezifische Informationen zu erhalten. Beispielsweise, um nur die Zugriffsberechtigungen im oktalen Format anzuzeigen:

stat -c "%a" my_test_file.txt

Dieser Befehl verwendet die Option -c, um ein benutzerdefiniertes Format anzugeben. "%a" ist der Format-Spezifizierer für Zugriffsberechtigungen im oktalen Format. Die Ausgabe sollte lauten:

664

Dies entspricht der oktalen Berechtigung 0664, die in der vollständigen stat-Ausgabe angezeigt wird (die führende Null wird oft weggelassen).

Klicken Sie auf Weiter, um dieses Lab abzuschließen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob eine Datei in Linux beschreibbar ist, indem man den test -w-Befehl verwendet. Dieser Befehl ist eine einfache und effektive Methode, um Schreibberechtigungen zu bestimmen und wird oft in Shell-Skripten eingesetzt, um Fehler zu vermeiden. Wir haben geübt, eine Datei zu erstellen und dann test -w in Kombination mit den Operatoren && und || zu verwenden, um anzuzeigen, ob die Datei beschreibbar ist.

Wir haben auch untersucht, wie man Dateiberechtigungen mit dem ls -l-Befehl überprüft. Dieser Befehl liefert detaillierte Informationen über Dateieigentum, Gruppe und Berechtigungen in einem menschenlesbaren Format. Schließlich haben wir gelernt, wie man Details zum Dateizugriff mit dem stat-Befehl untersucht. Dieser Befehl bietet umfassendere Informationen über den Status einer Datei, einschließlich Zugriffs-, Änderungs- und Statusänderungszeitstempel.