Einführung
In diesem Lab lernen Sie, wie Sie in Linux mit verschiedenen Methoden feststellen können, ob eine Datei ausführbar ist. Sie beginnen damit, den test-Befehl mit der Option -x zu verwenden, um die Ausführungsberechtigungen zu prüfen und zu verstehen, wie Sie den Exit-Status interpretieren können.
Als Nächstes werden Sie untersuchen, wie Sie den ls -l-Befehl verwenden können, um detaillierte Dateiberechtigungen anzuzeigen und das Ausführungsflag zu identifizieren. Schließlich lernen Sie, wie Sie den stat-Befehl verwenden können, um die Dateizugriffsinformationen zu untersuchen, was eine weitere Möglichkeit bietet, die Ausführbarkeit zu bestätigen.
Prüfen der Ausführbarkeit mit test -x
In diesem Schritt lernen Sie, wie Sie mithilfe des test-Befehls mit der Option -x prüfen können, ob eine Datei ausführbar ist. Der test-Befehl ist ein integrierter Shell-Befehl, der bedingte Ausdrücke auswertet. Die Option -x prüft speziell auf die Ausführungsberechtigung.
Zunächst erstellen wir eine einfache Textdatei in Ihrem ~/project-Verzeichnis. Wir verwenden den echo-Befehl, um etwas Text in eine Datei namens my_script.sh zu schreiben.
echo "echo 'Hello from the script!'" > ~/project/my_script.sh
Jetzt prüfen wir, ob diese Datei ausführbar ist. Standardmäßig hat eine neu erstellte Datei auf diese Weise keine Ausführungsberechtigungen.
Verwenden Sie den test -x-Befehl, gefolgt vom Pfad zur Datei:
test -x ~/project/my_script.sh
Nachdem Sie diesen Befehl ausgeführt haben, sehen Sie keine Ausgabe, wenn der Test erfolgreich ist (das heißt, die Datei ist NICHT ausführbar). Wenn die Datei ausführbar wäre, würde test -x einen Status von 0 zurückgeben, was in der Shell-Skripting üblicherweise als "wahr" oder "erfolgreich" interpretiert wird, aber standardmäßig nichts auf dem Terminal ausgibt.
Um das Ergebnis des test-Befehls zu sehen, können wir den Exit-Status des vorherigen Befehls mit $? prüfen. Ein Exit-Status von 0 bedeutet, dass der Test wahr war (die Datei ist ausführbar), und ein nicht-null-Status (normalerweise 1) bedeutet, dass der Test falsch war (die Datei ist nicht ausführbar).
echo $?
Sie sollten eine Ausgabe von 1 sehen, was darauf hinweist, dass my_script.sh derzeit nicht ausführbar ist.
Jetzt machen wir die Datei mit dem chmod-Befehl ausführbar. chmod wird verwendet, um die Berechtigungen von Dateien und Verzeichnissen zu ändern. Wir verwenden +x, um die Ausführungsberechtigung für den Besitzer der Datei hinzuzufügen.
chmod +x ~/project/my_script.sh
Jetzt prüfen wir erneut die Ausführbarkeit:
test -x ~/project/my_script.sh
Und prüfen den Exit-Status:
echo $?
Diesmal sollte die Ausgabe 0 sein, was bestätigt, dass die Datei jetzt ausführbar ist.
Schließlich versuchen wir, das Skript auszuführen, um die Ausgabe zu sehen:
~/project/my_script.sh
Sie sollten sehen:
Hello from the script!
Dies bestätigt, dass Sie die Datei erfolgreich ausführbar gemacht und ausgeführt haben.
Prüfen der Berechtigungen mit ls -l
In diesem Schritt lernen Sie, wie Sie detaillierte Dateiberechtigungen mithilfe des ls -l-Befehls anzeigen können. Dieser Befehl liefert eine lange Listenansicht und zeigt verschiedene Attribute von Dateien und Verzeichnissen, einschließlich Berechtigungen, Eigentum, Größe und Änderungszeit.
Navigieren Sie in Ihr ~/project-Verzeichnis, wenn Sie nicht bereits dort sind. Sie können den cd-Befehl verwenden:
cd ~/project
Jetzt listen Sie die Dateien in diesem Verzeichnis mit dem ls -l-Befehl auf:
ls -l
Sie sollten eine Ausgabe ähnlich dieser sehen (die genauen Details wie Datum und Uhrzeit variieren):
-rwxr-xr-x 1 labex labex 30 <date> <time> my_script.sh
Lassen Sie uns den ersten Teil der Ausgabe, der die Dateiberechtigungen darstellt, analysieren: -rwxr-xr-x. Diese Zeichenkette aus zehn Zeichen sagt Ihnen viel darüber, wer was mit der Datei tun kann.
Das erste Zeichen gibt den Dateityp an:
-: Eine normale Datei (wie unseremy_script.sh)d: Ein Verzeichnisl: Ein symbolischer Link
Die nächsten neun Zeichen sind in drei Gruppen à drei Zeichen unterteilt und stellen die Berechtigungen für Folgende dar:
- Besitzer: Der Benutzer, der die Datei besitzt (in diesem Fall
labex). - Gruppe: Die Gruppe, der die Datei gehört (ebenfalls
labex). - Andere: Alle anderen Benutzer auf dem System.
Innerhalb jeder Gruppe von drei Zeichen werden die Berechtigungen wie folgt dargestellt:
r: Lesezugriff (erlaubt das Anzeigen des Dateiinhalts)w: Schreibzugriff (erlaubt das Ändern oder Löschen der Datei)x: Ausführungsberechtigung (erlaubt das Ausführen der Datei als Programm)-: Gibt an, dass die Berechtigung nicht gewährt ist
Für -rwxr-xr-x bedeutet dies:
- Der Besitzer (
labex) hatrwx-Berechtigungen: Lesen, Schreiben und Ausführen. - Die Gruppe (
labex) hatr-x-Berechtigungen: Lesen und Ausführen, aber nicht Schreiben. - Andere haben
r-x-Berechtigungen: Lesen und Ausführen, aber nicht Schreiben.
Diese Ausgabe bestätigt, dass der Besitzer (labex) nach dem Verwenden von chmod +x im vorherigen Schritt jetzt die Ausführungsberechtigung (x) für my_script.sh hat.
Sie können auch ls -l verwenden, um die Berechtigungen von Verzeichnissen zu prüfen. Beispielsweise lassen Sie uns die Berechtigungen für das ~/project-Verzeichnis selbst betrachten:
ls -ld ~/project
Die Option -d teilt ls mit, das Verzeichnis selbst aufzulisten, nicht seinen Inhalt. Die Ausgabe könnte so aussehen:
drwxr-xr-x 2 labex labex 4096 <date> <time> /home/labex/project
Hier gibt das erste Zeichen d an, dass es sich um ein Verzeichnis handelt. Die Berechtigungen rwxr-xr-x bedeuten:
- Der Besitzer (
labex) hat Lese-, Schreib- und Ausführungsberechtigungen für das Verzeichnis. Bei einem Verzeichnis ermöglicht die 'Ausführungs'-Berechtigung Ihnen, in das Verzeichnis zu wechseln und auf seinen Inhalt zuzugreifen. - Die Gruppe (
labex) und Andere haben Lese- und Ausführungsberechtigungen für das Verzeichnis, aber keinen Schreibzugriff.
Das Verständnis der ls -l-Ausgabe ist grundlegend für die Arbeit mit Dateien und Berechtigungen in Linux.
Untersuchen des Dateizugriffs mit stat
In diesem Schritt verwenden Sie den stat-Befehl, um detaillierte Informationen über eine Datei zu erhalten, einschließlich ihrer Zugriffs-, Änderungs- und Statusänderungszeiten sowie ihrer Berechtigungen in einem strukturierterem Format als ls -l.
Der stat-Befehl zeigt den Dateistatus an. Er kann besonders nützlich für Skripte sein oder wenn Sie genaue Zeitstempel benötigen.
Lassen Sie uns stat auf die my_script.sh-Datei anwenden, die Sie in den vorherigen Schritten erstellt haben. Stellen Sie sicher, dass Sie sich im ~/project-Verzeichnis befinden oder geben Sie den vollen Pfad zur Datei an.
stat ~/project/my_script.sh
Sie werden eine Ausgabe ähnlich dieser sehen:
File: /home/labex/project/my_script.sh
Size: 30 Blocks: 8 IO Block: 4096 regular file
Device: <device_id> Inode: <inode_number> Links: 1
Access: (<permissions>/-rwxr-xr-x) Uid: ( 5000/ labex) Gid: ( 5000/ labex)
Access: <date> <time>.<nanoseconds> +<timezone_offset>
Modify: <date> <time>.<nanoseconds> +<timezone_offset>
Change: <date> <time>.<nanoseconds> +<timezone_offset>
Birth: -
Lassen Sie uns einige Schlüsselzeilen in der Ausgabe betrachten:
File: Der Name und der Pfad der Datei.Size: Die Größe der Datei in Bytes.Access: (<permissions>/-rwxr-xr-x): Diese Zeile zeigt die Dateiberechtigungen sowohl im oktalen Format (z.B.0755, wasrwxr-xr-xentspricht) als auch im symbolischen Format, wie Sie es vonls -lkennen, an. Sie zeigt auch die Benutzer-ID (Uid) und Gruppen-ID (Gid) des Dateibesitzers und der Gruppe an.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 (möglicherweise nicht auf allen Dateisystemen verfügbar).
Der stat-Befehl bietet im Vergleich zu ls -l eine detailliertere Ansicht der Dateiinformationen. Er ist besonders hilfreich, wenn Sie Zeitstempel oder die numerische Darstellung der Berechtigungen untersuchen müssen.
Sie können auch stat auf Verzeichnisse anwenden:
stat ~/project
Die Ausgabe wird ähnlich sein, aber der File-Typ wird anzeigen, dass es sich um ein Verzeichnis handelt.
Experimentieren Sie mit stat auf verschiedenen Dateien und Verzeichnissen in Ihrem ~/project-Verzeichnis, um die Unterschiede in der Ausgabe zu sehen.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie prüfen können, ob eine Datei in Linux ausführbar ist, indem Sie den test -x-Befehl verwenden. Sie haben eine einfache Skriptdatei erstellt, test -x verwendet und den Exit-Status (echo $?) überprüft, um ihren anfänglichen nicht ausführbaren Zustand (Exit-Status 1) zu bestätigen. Anschließend haben Sie chmod +x verwendet, um Ausführungsberechtigungen hinzuzufügen und die Änderung mit test -x und echo $? verifiziert, wobei Sie einen Exit-Status von 0 beobachtet haben.
Sie haben auch alternative Methoden zur Prüfung von Dateiberechtigungen untersucht. Mit ls -l haben Sie gelernt, die Berechtigungszeichenkette, insbesondere das 'x'-Zeichen, zu interpretieren, um ausführbare Dateien zu identifizieren. Schließlich haben Sie den stat-Befehl verwendet, um detaillierte Dateiinformationen, einschließlich Zugriffsberechtigungen, anzuzeigen, was eine weitere Möglichkeit bietet, die Ausführbarkeit zu bestätigen.



