# Hilfreiche Bash-Schnipsel ## Dateien mit anderer Endung versehen ```for datei in $(ls *.tif) do mv ”$datei” ”{$datei%.tif}.pdf” done ``` ## Löschen von Leerzeichen in Dateinamen und Ersetzen mit _ `for f in *\ *; do mv ”$f” ”${f// /_}”; done` ## chmod chmod ugo user/group/other chmod g+ws --> die Gruppe bekommt Schreibrechte und das setgid wird gesetzt Numerisch 2755 = rwxr-Sr-x chmod g+s → setgid + execute (s) chmod g+S → nur setgid, ohne execute (S) Das heisst kleines s wenn auch x gesetzt ist, groß s ohne execute (cper chmod kann man nur ein kleines s setzen) Beispiel: Ohne setgid: /projekt ├── alice erstellt datei1 → Gruppe: alice └── bob erstellt datei2 → Gruppe: bob Mit setgid: /projekt ├── alice erstellt datei1 → Gruppe: projektteam └── bob erstellt datei2 → Gruppe: projektteam Das verhindert dauerndes: chgrp projektteam datei Wann nutzt man das setgid konkret? Sehr sinnvoll für: gemeinsame Entwickler-Verzeichnisse Team-Ordner auf Servern Webserver-Verzeichnisse geteilte Upload-/Projektbereiche Es gibt drei spezielle Bits: u+s → setuid (User-ID) g+s → setgid (Group-ID) o+t → sticky bit Beispiele: chmod u+s datei # setuid chmod g+s datei # setgid chmod +t verzeichnis # sticky bit In ls -l erscheinen sie an unterschiedlichen Stellen: -rwsr-sr-t ^ ^ ^ | | └─ sticky bit (others) | └──── setgid (group) └─────── setuid (user) Also: setgid heißt wörtlich "set group ID", daher gibt es kein u+g-Äquivalent oder so – es ist fest an die Gruppenrechte gekoppelt. Die Logik ist: setuid → Prozess übernimmt Besitzer-ID setgid → Prozess übernimmt Gruppen-ID sticky → Sonderregel für Verzeichnisse (z. B. /tmp) a+x oder ugo+x Eine Datei für alle Nutzer ausführbar machen. u+r Der Eigentümer darf (zusätzlich zu vorhandenen Rechten) lesen. a+w oder ugo+w Alle dürfen zusätzlich zu vorhandenen Rechten schreiben. g-w Der Gruppe werden die Schreibrechte entzogen. o=r Andere Benutzer dürfen nur lesen, nicht schreiben oder ausführen. g=rw Die Gruppe darf nur lesen und schreiben, ein eventuell vorhandenes Ausführungsrecht wird entfernt. u+s Setzt das SetUID-Bit ## Nächstes Thema - Platzhalter