Pliki Chmod rekurencyjnie nadają grupie takie same uprawnienia jak użytkownik

12

Czy istnieje polecenie unix, które daje grupie te same uprawnienia, które użytkownik ma obecnie w rekurencji dla poszczególnych plików, dla drzewa katalogów? To znaczy. jeśli plik jest zapisywalny przez użytkownika, powinien stać się zapisywalny dla grupy, w przeciwnym razie nie powinien być zapisywalny przez grupę i tak dalej.


źródło

Odpowiedzi:

21

Kudos do jamessan za pokazanie nam g = u. W moim systemie to wydaje się działać:

chmod -R g=u dir
Joey Adams
źródło
1
To także zmienia uprawnienia katalogów. Oryginalne pytanie określiło pliki.
jamessan
@jamessan, które katalogi są.
Mike Graham
@Mike, tylko dlatego, że * nix pozwala traktować prawie wszystko jako plik, nie oznacza to, że katalogi są w rzeczywistości plikami. Nawet jeśli ktoś przyznałby, że są takie same, istnieje wyraźna różnica funkcjonalna między zmianą uprawnień wszystkich plików w drzewie katalogów i zmianą uprawnień wszystkich plików i amp; katalogi w drzewie katalogów.
jamessan
Po raz kolejny istnieje proste rozwiązanie mojego problemu. Dlaczego nie jestem zaskoczony?
rzetterberg
9
find dir -type f -exec chmod g=u '{}' \+
jamessan
źródło
0

Nie mogę wymyślić łatwego sposobu, aby to zrobić za pomocą istniejących poleceń. Może taki skrypt mógłby pomóc:

#!/bin/bash

DIR="$1"

find "$DIR" -ls | while read a b perm c d e f g h i file; do
   uperm=${perm:1:3}
   uperm=$(echo "$uperm" | tr -d '-')
   chmod g=$uperm "$file"
done

Pamiętaj również, że niektóre uprawnienia dla użytkowników mogą nie dotyczyć grup i odwrotnie.

ℝaphink
źródło
0

Nie wiem, czy takie polecenie istnieje, ale korzystając z funkcji wyszukiwania i wywołując je kilka razy, można to osiągnąć
na przykład co próbujesz zrobić

Na przykład:
% find . -type f -perm -u+w -and ! -perm -g+w -exec chmod g+w {} \;

Powyższe polecenie przechodzi przez bieżący katalog „.”, Znajduje wszystkie pliki, które mają pisać pozwolenie na
użytkownik, ale nie pisać uprawnienia dla grupy i zmiany tam uprawnienia do zapisu grupowego.

Podobnie używasz wariantu powyżej wywołania, aby zmienić uprawnienia do pliku czytać i wykonać tryb dla grupy.

sateesh
źródło