2013-06-13 14 views
11

Muszę zmienić uprawnienia katalogu htdocs w apache do pewnej grupy i z pewnym odczytać/zapisać/wykonać.Linux: Ustaw tylko uprawnienia do katalogów

Katalogi trzeba mieć uprawnienia 775 i pliki muszą mieć 664.

Jeśli zrobię rekurencyjną 664 do htdocs, wtedy wszystkie pliki i katalogi zmieni się na 664.

I don” t chcesz ręcznie zmienić katalogi.

Czy istnieje sposób na zmianę tylko plików lub katalogów?

Odpowiedz

17

Wykorzystanie znaleźć na -type do ograniczania działań do plików i katalogów. Użyj opcji -o, aby określić alternatywne akcje dla różnych typów, więc musisz uruchomić tylko jeden raz, a nie osobno dla każdego typu.

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} + 
+2

Lepiej użyj wbudowanej obsługi 'chmod's. Zobacz odpowiedź [Gordona Davissona] (http://stackoverflow.com/a/17091413/538512) poniżej –

3

Zastosowanie find szukać katalogów i stosować chmod na nich:

find -type d | xargs chmod 775 

typ zastosowania f dla pliku:

find -type f | xargs chmod 775 
0

try:

find htdocs -type d -exec chmod 775 {} + 
+0

Ustawia uprawnienia do katalogu, ale nie uprawnienia do plików. – Barmar

31

chmod rzeczywiście można to samo zrobić; "symboliczne uprawnienie" oznacza "wykonanie, jeśli ma sens", co zwykle oznacza katalogi, ale nie pliki. Tak, można użyć:

chmod -R u=rwX,go=rX /path/to/htdocs 

Jedynym potencjalnym problemem jest to, że jeśli któryś z prostych plików już wykonać zestaw, chmod zakłada, że ​​to celowe i utrzymuje ją.

+2

Najlepsza odpowiedź zdecydowanie, jeśli masz wystarczająco dużo katalogów rekursywnych, 'xargs' w końcu się nie powiedzie. sprawdź strony [man] (http://ss64.com/bash/chmod.html), aby uzyskać więcej informacji: –

+3

to zasługuje na zaznaczony znacznik wyboru – Pankrates

+0

@Pankrates - dokładnie –

1

powyżej odpowiedź Gordona jest poprawna, ale jeśli starasz się zablokować dostęp do drzewa katalogów, pozostawia skryptów, które są wykonywalne do właściciela także wykonywalny do ktokolwiek przyznano X. kapitał

Używanie

find -type d exec chmod 775 {} + 

lub

find -type d exec chmod 755 {} + 

jest bezpieczniejszy.

0

Używam coś podobnego do rozwiązania przewidzianego przez Gordona:

chmod -R ug=rw,o=r,a+X /path/to/folder/ 

Należy zawsze ustawić 775 folderów i 664 plików, nawet jeśli uprawnienie wykonać został previosly ustawić jakiegoś pliku

Powiązane problemy