Changelog
- 08. August 2014 – Fix für Verzeichnisse mit Leerzeichen, Neu: Verzeichnis als Parameter definieren
Gerne teile ich folgendes, kleines Script, das in verschiedenen Situationen durchaus hilfreich sein kann.
„FOLDERS“ und „RECURSIVE“ sind entsprechend anzupassen.
Das Ergebnis wird in eine Datei mit dem Namen „permissions_(datum).log“ geschrieben, die Ausgabe kann später direkt verwendet werden, etwa:
chown root:root /etc/postfix/filter_default; chmod 644 /etc/postfix/filter_default chown root:root /etc/postfix/postfix-files; chmod 644 /etc/postfix/postfix-files chown root:root /etc/postfix/master.cf; chmod 644 /etc/postfix/master.cf chown root:root /etc/postfix/dynamicmaps.cf; chmod 644 /etc/postfix/dynamicmaps.cf chown root:root /etc/postfix/filter_trusted; chmod 644 /etc/postfix/filter_trusted chown root:root /etc/postfix/main.cf; chmod 644 /etc/postfix/main.cf
Neu: Bei Aufruf mit einem Verzeichnis als Parameter, überschreibt dieses die „FOLDER“-Variablen im Script, also etwa: „./script.sh /etc/default“.
Das Script:
nano permissions.sh
Mit dem Inhalt:
#!/bin/bash FOLDERS=( "/etc/postfix" "/etc/fruglu" ); RECURSIVE="yes" LOGFILE="permissions_`date +%d%m%Y_%H%M`.log" [[ -z $1 ]] || FOLDERS="$1" for i in "${FOLDERS[@]}" do if [ $RECURSIVE != "yes" ]; then stat -c 'chown %U:%G "%n"; chmod %a "%n"' "$i"/* >> $LOGFILE else find $i -type f -exec stat -c 'chown %U:%G "%n"; chmod %a "%n"' {} \; >> $LOGFILE fi done
Usage: ./script.sh [VERZEICHNIS]
Vorab als ausführbar markieren: chmod +x script.sh
Im Endeffekt natürlich nichts besonderes, dennoch in wenigen Fällen sehr hilfreich.
Die Datei „/etc/passwd“ mitzusichern, ist in dem Zusammenhang nicht die schlechteste Idee… ;)
Nette Idee, stolpert aber bei Leerzeichen im Datei- oder Ordnernamen. Möglicherweise hilft etwas wie \‘ innerhalb des -c Arguments von stat…
Ups, danke, gar nicht dran gedacht. Habe es mal angepasst, danke für den Hinweis! :)