Jak stosować rekursywnie katalogi chmod bez wpływu na pliki?

18

Po złożeniu wniosku chmod -Ro katalog uprawnienia są zmieniane dla wszystkich elementów (plików i katalogów). Jak mogę dodać xuprawnienia do wykonywania / wyszukiwania ( ) do katalogów bez modyfikowania plików?

Ivan
źródło

Odpowiedzi:

13

Możesz użyć find .

find ./ -type d -execdir chmod 750 {} +

Gdzie 750 to tryb, który chcesz zastosować, a „./” to katalog, który będziesz rekurencyjnie przeszukiwał.

EDYCJA : Dzięki @Gilles i find (1) poprawiłem to dla dodatkowego bezpieczeństwa i wydajności.

ewindisch
źródło
@Gilles Dzięki, nie jest tak często, że uczę się czegoś nowego o narzędziach uniksowych :-) To jest niesamowite. Ponadto, teraz czytając dokumentację znalezienia , naprawdę należy zamiast tego użyć -execdir.
ewindisch 15.01.11
7

W tym konkretnym przypadku możesz użyć Xzamiast, xktóry dodaje tylko bity do katalogów lub plików, które mają już ustawiony bit wykonywalny dla niektórych użytkowników (tj chmod -R +X my_dir.).

Zasadniczo (np. Jeśli chcesz, aby wszystkie katalogi były czytelne bez wpływu na pliki), możesz użyć findz -type dlub jeśli używasz zsh (lub bash 4 z shopt -s globstar) **/glob (oba bez przekazywania -Rflagi chmod).

sepp2k
źródło
@Gilles: Dobrze, dodałem to do odpowiedzi.
sepp2k
1
„użyj X zamiast x, który dodaje tylko bity do katalogów lub plików, które mają już ustawiony bit wykonywalny dla niektórych użytkowników” - Dzięki! Bardzo za tym tęskniłem!
Ivan