Chmod-Dateien, um der Gruppe rekursiv dieselben Berechtigungen wie dem Benutzer zu geben

9137

Gibt es einen Unix-Befehl, um der Gruppe dieselben Berechtigungen zu erteilen, die der Benutzer derzeit dateiweise für eine Verzeichnisstruktur rekursiv hat? Das heißt, wenn eine Datei für den Benutzer schreibgeschützt ist, sollte sie für die Gruppe schreibbar sein, andernfalls sollte sie nicht für die Gruppe schreibbar sein und so weiter.

12

4 Antworten auf die Frage

21
Joey Adams

Ein großes Lob an Jamessan, weil er uns gezeigt hat, g = u. Auf meinem System scheint das zu funktionieren:

chmod -R g=u dir 
Das ändert auch die Berechtigungen von Verzeichnissen. Die ursprüngliche Frage angegeben Dateien. jamessan vor 14 Jahren 1
@jamessan, welche Verzeichnisse sind. Mike Graham vor 13 Jahren 0
@Mike, nur weil * nix Ihnen erlaubt, so ziemlich alles als Datei zu behandeln, heißt das nicht, dass Verzeichnisse tatsächlich Dateien sind. Selbst wenn man zugeben sollte, dass sie gleich sind, besteht ein funktionaler Unterschied zwischen dem Ändern der Berechtigungen aller Dateien in einer Verzeichnisstruktur und dem Ändern der Berechtigungen aller Dateien und Verzeichnisse in einer Verzeichnisstruktur. jamessan vor 13 Jahren 0
Wieder gibt es eine unkomplizierte Lösung für mein Problem. Warum bin ich nicht überrascht? rzetterberg vor 12 Jahren 0
9
jamessan
find dir -type f -exec chmod g=u '{}' \+ 
0
ℝaphink

Ich kann mir keine einfache Möglichkeit vorstellen, dies mit vorhandenen Befehlen zu tun. Vielleicht würde ein solches Skript helfen:

#!/bin/bash  DIR="$1"  find "$DIR" -ls | while read a b perm c d e f g h i file; do uperm=$ uperm=$(echo "$uperm" | tr -d '-') chmod g=$uperm "$file" done 

Beachten Sie außerdem, dass einige Dauerlizenzen für Benutzer möglicherweise nicht für Gruppen gelten und umgekehrt.

0
sateesh

Ich weiß nicht, ob ein solcher Befehl existiert, aber mithilfe von find und mehrmals aufrufen, können Sie beispielsweise erreichen,
was Sie versuchen

Zum Beispiel:
% find . -type f -perm -u+w -and ! -perm -g+w -exec chmod g+w {} \;

Der obige Befehl durchläuft das aktuelle Verzeichnis ".", Sucht alle Dateien, die über Schreibberechtigungen für
den Benutzer verfügen , jedoch keine Schreibberechtigungen für die Gruppe, und ändert die Berechtigung, so dass die Gruppe beschreibbar ist.

Auf ähnliche Weise verwenden Sie die Variante "invocation", um die Dateiberechtigungen für den Lese- und Ausführungsmodus für die Gruppe zu ändern .