Main /

Execution Rights

Execution Rights

Ausführungsrechte

Unix-Filesysteme kennen Execution rights, also Ausführungsrechte. Eine Programmdatei wird von der Shell nur als solche behandelt und ausgeführt, wenn Flag (x) auch gesetzt ist. Das ist (im Gegensatz zu Windows) unabhängig vom Dateinamen oder der Extension.

Auf der Shell einfach ein

chmod u+x <File>

bewirkt, dass die Datei <File> jetzt für den eigenen User ausführbar ist.

chmod g+x <File>
macht die Datei für andere Mitglieder der ausführbar, der die Datei <File> zugeordnet ist und
chmod o+x <File>
für alle anderen.

Da UNIX User schreibfaul sind und die Systementwickler das wussten, kann man statt

chmod ugo+x <File>
ein
chmod a+x <File>
(a = all) schreiben um <File> für Gott und die Welt ausführbar zu machen.

Analog kann man mit

chmod u-x <File>
usw. der Datei die Ausführungsrechte auch wieder entziehen.

Enthält die Datei <File> dann in der ersten Zeile einen Shebang, ( #!/usr/bin/Program) wird /usr/bin/Program gestartet mit <File> als Argument. Deshalb lassen sich Skripte unter Unix starten als wären sie binäre Programme (vorausgesetzt sie haben Ausführungsrechte, sonst ist es für die Shell nur ein x-beliebiges Textfile).

<File> braucht selbst keine Ausführungsrechte, wenn es über den Skriptinterpreter /usr/bin/Program gestartet wird, da in diesem Fall der Skriptinterpreter das ausführbare Programm ist und <File> nur das Argument. Doch es ist ja gerade der Witz an der Sache daß man sich nicht merken muß ob ein Skript mit bash, perl, php oder wasauchimmer gestartet werden muss.

Das x-Flag regelt zusätzlich noch, ob ein Ordner geöffnet werden darf. Ordner ohne gesetztem x-Flag sind nicht zugänglich.

Verstanden?

 if ja:
   fein
 else
   man chmod

Elsni fragt: heißt das nicht eigentlich "Execution Permissions"? - grübel...

Frische Änderungen | Menü editieren
zuletzt geändert am 14.03.2006 21:59 Uhr von Elsni
Edit Page | Page History