Uzupełnię odpowiedzi Rahmu i MV rozwiązaniem technicznym. Wszystko, co następuje, dotyczy tylko systemów typu UNIX.
Przewiń obok sekcji chmod / chown na przykład, używając list ACL - potężniejszego narzędzia niż tryby plików UNIX.
Znajdowanie nazwy użytkownika serwera WWW
Najpierw musisz znać nazwę użytkownika, pod którym działa twój serwer WWW. Jeśli używasz Apache, może to być apache
albo httpd
, www-data
itp Na większości systemów Debian-like, Apache www-data
. W przypadku Nginx też tak jest www-data
.
Aby to sprawdzić, spróbuj:
ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
Upewnij się, że nazwa użytkownika zwracana przez to polecenie jest spójna (na przykład używam nginx 99% czasu, ale to polecenie zwraca tomcat7
, serwer WWW Java zainstalowałem raz) .
Nadawanie uprawnień serwerowi internetowemu: za pomocą chmod
ichown
Wykonanie chmod
666 lub 777 (rozwiązanie tego typu problemów w złych dokumentacjach / samouczkach) może magicznie sprawić, że wszystko zadziała, ale jest niepewne. Przyznanie uprawnień 666 lub 777 zapewni dostęp do „innych”. Więc nie tylko Apache, ale także grandmother
i nsa
(pod warunkiem, że te konta użytkowników istnieją na twoim komputerze - ale tak naprawdę, unikaj robienia tego, chyba że jest to tylko do testowania / rozwiązywania problemów).
Lepiej jest być bardziej szczegółowym i dać uprawnienia tylko Tobie i Apache. Zmień grupę plików, aby zapewnić pełną kontrolę nad plikami na serwerze internetowym. Aby to zrobić, zmień właściciela rekurencyjnie:
chown -R www-data:www-data your/folder/
Ale najprawdopodobniej możesz chcieć zachować pełny dostęp do swoich plików, zmieniając tylko grupę:
chown -R yourusername:www-data your/folder/
Następnie wykonaj odpowiednie czynności, chmod
aby dać grupie www-data
takie same uprawnienia jak Ty. Na przykład, jeśli bieżącym trybem jest 640 (6 dla ciebie, 4 dla danych www, 0 dla innych, co przekłada się na -rw-r -----) , ustaw na 660 (6 dla ciebie, 6 dla www- data, 0 dla innych, tłumacząc na -rw-rw ----) . Zobacz odpowiedź rahmu, aby dowiedzieć się więcej o trybach plików, jest to stary, ale elegancki mechanizm.
Aby uniknąć manipulowania tajemnymi liczbami chmod
, możesz również użyć tej składni:
chmod -R g+rw your/folder/
Oznacza „do uprawnień grupy ( g
), dodawania ( +
) odczytu i zapisu ( rw
) w folderze your/folder/
, rekurencyjnie ( -R
)”.
W 90% przypadków powinno to wystarczyć.
Moja preferowana metoda: korzystanie z list ACL (lista kontroli dostępu)
Czasami pierwsze rozwiązanie nie jest wystarczające. Weźmię przykład Symfony Framework, który rejestruje i buforuje wiele danych. Potrzebuje więc dostępu do zapisu do odpowiedniego folderu.
A chmod
/ chown
metoda może nie być wystarczająca, gdy używasz równolegle z Symfony Konsola CLI (pod moim kontem użytkownika) oraz Web (użytkownika serwer WWW). Powoduje to wiele problemów, ponieważ Symfony stale modyfikuje uprawnienia.
W takim przypadku użyjemy listy kontroli dostępu (ACL), która jest bardziej zaawansowanym sposobem zarządzania uprawnieniami w wielu systemach UNIX.
Oto polecenia podane w oficjalnej dokumentacji Symfony ( zmień app/cache
i app/logs
stosownie do swoich potrzeb ):
W systemie, który obsługuje chmod +a
(tj. Nie Debian / Ubuntu)
sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
W systemie, który nie obsługuje chmod +a
(najczęściej)
Będziesz potrzebować setfacl
narzędzia; może jest domyślnie zainstalowany w twoim systemie, więc spróbuj setfacl -v
sprawdzić, czy polecenie jest dostępne.
Jeśli polecenie nie jest dostępne, a używasz Ubuntu 14.04+, wystarczy zainstalować narzędzie:
sudo apt install acl
W przeciwnym razie postępuj zgodnie z dokumentacją systemu operacyjnego, ponieważ może być konieczna zmiana sposobu montowania partycji ( dokumentacja Ubuntu tutaj ).
I oto jesteśmy:
sudo setfacl -R -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
Nigdy nie miałem żadnych problemów z tą metodą, satysfakcji ani zwrotu pieniędzy.