Was bewirkt die Berechtigung "Ausführen"?

31

Ich bin schockiert, dass ich die Berechtigung "Ausführen" unter Linux immer noch nicht verstehe.

Es gibt drei Berechtigungen: Lesen, Schreiben und Ausführen. Ich verstehe das wörtlich lesen und schreiben, aber was macht die Ausführung genau?

Nehmen wir an, ich habe example.phpmit Ausführungserlaubnis. Was kann ich damit machen example.php?

user45326
quelle

Antworten:

32

Grundsätzlich können Sie das Betriebssystem anweisen, den Code in der Datei auszuführen. Wenn es sich bei der Datei beispielsweise um eine ausführbare Binärdatei handelt, können Sie sie durch Schreibzugriff ändern und durch Lesezugriff anzeigen. Ohne Ausführungsberechtigungen können Sie das Programm jedoch nicht ausführen. Im Fall eines Skripts ist dies etwas komplizierter, da Sie das Programm nicht unbedingt ausführen müssen. Sie können den Inhalt einfach in einen Interpreter einlesen, der selbst über die Ausführungsberechtigung verfügt, aber keine Ausführung benötigt Berechtigungen für das Skript selbst.

Einige Skripte in Linux sind selbst ausführbar, Sie sehen oft eine Zeile oben wie

#! / bin / bash oder

#! / bin / python

Diese Zeile teilt dem Kernel mit, dass die Datei ausgeführt werden kann, indem das entsprechende Programm aufgerufen wird (und nicht nur Text). Dann können Sie einfach Ihr Skript ausführen

./Skript

statt tun zu müssen

Python ./script

bdk
quelle
Was bedeutet dies für nicht textbasierte Dateitypen, z. .pngoder .avi?
Iono
1
Grundsätzlich spielt die Dateierweiterung keine Rolle. Wenn Sie #!/bin/basham Anfang Ihrer .aviDatei haben, wird es als Bash ausgeführt. Wenn es sich um ein echtes AVI-Format handelt, können Sie es wahrscheinlich nicht ausführen, da die Interpretation als Befehle keinen Sinn ergibt und fehlschlägt.
Mifeet
Wird das #!wirklich vom Kernel interpretiert?
Masterxilo
17

"execute" ermöglicht es dem Benutzer, ausführbare Dateien auszuführen. Für Verzeichnisse ist es zulässig, das Verzeichnis mit dem Befehl cd einzugeben.

Phil Rykoff
quelle
1
Dieser Zugang zum Verzeichnisteil ist riesig. Das würde man nie aus dem Namen des Modus selbst erraten.
PrimitiveNom
2

Für praktische Zwecke bedeutet die Berechtigung zum Lesen die Fähigkeit zur Ausführung.

Das Gegenteil ist jedoch nicht der Fall; Die Möglichkeit, die Berechtigung zum Ausführen von Code zu erteilen, ohne die Berechtigung zum Lesen zu erteilen, hat einen gewissen Wert.

Adam Lee
quelle
Das macht tatsächlich sehr viel Sinn.
Masterxilo
Ich hatte eine Verwechslung mit READ / EXECUTE und erwartete eine solche Antwort. Danke
T.Todua
2

Es ist für das Ausführen von Apps über die GUI oder die Befehlszeile. Für "normale" PHP-Nutzung (über Webserver) ändert das nichts. Genau genommen hängt es von der Konfiguration ab, aber in den meisten Fällen benötigen Sie keine + x-Berechtigung, um Ihre PHP-Webseite über einen Browser laden zu können.

Zum Ausführen von der Kommandozeile benötigen Sie:

  • füge #!/usr/bin/phpam Skriptanfang hinzu
  • + x-Berechtigung hinzufügen
  • Ihr Skript muss sich in Ihrem ausführbaren Suchpfad (Umgebungsvariable $ PATH) befinden, oder Sie müssen das Verzeichnis angeben, in dem es sich vor Ihrem Skriptnamen befindet. Dies kann ein absoluter Pfadname wie /etc/xdg/foooder /home/fred/baroder ein relatives Verzeichnis wie dir1/prog1oder sein ./prog2.
Maciek Sawicki
quelle