Jak zmienić wszystkie pliki na 644 i wszystkie foldery na 755 przy użyciu chmod
z linux
wiersza polecenia? (Terminal)
http://superuser.com
:: P, ale to pytanie pomogło mi tutaj, dzięki.
chmod -R u+rwX,go+rX,go-w /foo
Jak zmienić wszystkie pliki na 644 i wszystkie foldery na 755 przy użyciu chmod
z linux
wiersza polecenia? (Terminal)
http://superuser.com
:: P, ale to pytanie pomogło mi tutaj, dzięki.
chmod -R u+rwX,go+rX,go-w /foo
Odpowiedzi:
Jednym podejściem może być użycie find:
find /desired_location -type d -print0 | xargs -0 chmod 0755
find /desired_location -type f -print0 | xargs -0 chmod 0644
sudo find /your/location -type f -exec chmod 644 {} \;
plików i sudo find /your/location -type d -exec chmod 755 {} \;
katalogów
chmod -R a=r,u+w,a+X /foo
?
unable to execute /bin/chmod: Argument list too long
Najłatwiej jest to zrobić:
chmod -R u+rwX,go+rX,go-w /path/to/dir
co w zasadzie oznacza:
do ch
ange pliku mod
es -R
ecursively podając:
u
ser: uprawnienia ead r
, w
obrządkowe i e X
ecute,g
rupa i o
nne użytkownicy: r
EAD i e X
ecute uprawnienia, ale nie -w
ryt zgody.Pamiętaj, że X
spowoduje to, że katalog będzie wykonywalny, ale nie plik, chyba że jest już możliwy do przeszukiwania / wykonywania.
+X
- uczynić katalog lub plik możliwym do przeszukiwania / wykonywania przez wszystkich, jeśli jest już możliwy do przeszukiwania / wykonywania przez kogokolwiek.
Sprawdź man chmod
więcej szczegółów.
Zobacz także: Jak przeskoczyć wszystkie katalogi oprócz plików (rekurencyjnie)? w SU
Najkrótszy, jaki mogłem wymyślić, to:
chmod -R a=r,u+w,a+X /foo
który działa na GNU / Linux, i ogólnie wierzę w Posix (z mojego czytania: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html ).
To robi:
Co ważne, uprawnienie kroku 1 usuwa wszystkie bity wykonania, więc krok 3 dodaje tylko bity wykonania z powrotem dla katalogów (nigdy plików). Ponadto wszystkie trzy kroki mają miejsce przed ponownym przekierowaniem katalogu do katalogu (więc nie jest to równoważne np
chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo
ponieważ a = r usuwa x z katalogów, więc chmod nie może się w nich ponownie znaleźć.)
Najłatwiejsze do zapamiętania są dwie operacje:
chmod -R 644 dirName
chmod -R +X dirName
+ X wpływa tylko na katalogi.
Na https://help.directadmin.com/item.php?id=589 piszą:
Jeśli potrzebujesz szybkiego sposobu zresetowania danych public_html do 755 dla katalogów i 644 dla plików, możesz użyć czegoś takiego:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
Testowałem i ... działa!
To działało dla mnie:
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;
find /A -type X -exec chmod Y '{}' \;
Wykonaj obie czynności za jednym razem z:
find -type f ... -o -type d ...
Jak w, znajdź typ f LUB wpisz d, i wykonaj pierwszy ... dla plików, a drugi ... dla katalogów. Konkretnie:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +
Pozostaw to, --changes
jeśli chcesz, aby działało po cichu.
Jeśli potrzebujesz szybkiego sposobu zresetowania danych public_html do 755 dla katalogów i 644 dla plików, możesz użyć czegoś takiego:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
dodatkowo, jeśli wiesz, że PHP działa jako użytkownik, a nie jako „apache”, możesz ustawić pliki PHP na 600, dla dodatkowego poziomu bezpieczeństwa, np .:
find . -type f -name '*.php' -exec chmod 600 {} \;
Możesz znaleźć ten zasób tutaj: https://help.directadmin.com/item.php?id=589
To też może działać:
chmod -R 755 * // All files and folders to 755.
chmod -R 644 *.* // All files will be 644.