Da ich noch einer der verbliebenen Entwickler bin, der mit Batch-Dateien auf DOS-Rechnern groß geworden ist, habe ich immer wieder Schwierigkeiten mit Dateiberechtigungen und Shells. Beim Skripten auf DOS-Rechnern waren die Rechte nicht so das Thema. Adminrechte hatte der, der vorm Rechner saß (!?). Ich hoffe echt, das mal Microsoft dieses Monster einstellt und PowerShell das Ruder überläßt.
Aber ich sitze hier an meinem MacBook und das Terminal bietet mir Standardmäßig die Unix-Shell zsh an. Wer überhaupt nicht mit dem Terminal und Shell klarkommt, der macht mit dem Terminal Benutzerhandbuch für macOS einen guten Start.
Zugriff verweigert (permission denied)
Der Klassiker. Die Sicherheit setzt hier einfache Maßstäbe. Eine ausführbare Datei muß erstmal die nötigen Rechte haben, um überhaupt ausgeführt werden zu dürfen. Gibts die nicht, erscheint eine Fehlermeldung:
/Users/me/dev/test.zsh
zsh: permission denied: /Users/me/dev/test.zsh
Wir wissen nicht was los ist, also erstmal Rechte checken:
ls -l /Users/me/dev/test.zsh
-rw-r--r-- me team ...
Erklärung der Dateiberechtigungen
-rw-r--r-- me team ...
{Dateirechte} {Eigentümer} {Arbeitsgruppe} ...
x--------- 1 Dateityp
-xxx------ 2..4 Eigentümerrechte
----xxx--- 5..7 Gruppenrechte
-------xxx 8..10 Rechte alle Anderen
r = read (Lesen), w=write (Schreiben), x=execute (Ausführen)
| Alle | chmod +x [Dateiname] | -rwxr-xr-x |
| Benutzer | chmod u+x [Dateiname] | -rwxr--r-- |
| Gruppe | chmod g+x [Dateiname] | -rw-r-xr-- |
| Alle anderen | chmod o+x [Dateiname] | -rw-r--r-x |
Mit -x werden die Rechte wieder entfernt.
Es sind keine Rechte zum Ausführen vergeben, also Rechte nachtragen:
chmod +x /Users/me/dev/test.zsh
Anschließend Rechte kontrollieren:
ls -l /Users/me/dev/test.zsh
-rwxr-xr-x ...
Abschließend erneut ausführen:
/Users/me/dev/test.zsh
...