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ć apachealbo httpd, www-dataitp 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ą chmodichown
Wykonanie chmod666 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 grandmotheri 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, chmodaby dać grupie www-datatakie 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/ chownmetoda 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/cachei app/logsstosownie 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ć setfaclnarzędzia; może jest domyślnie zainstalowany w twoim systemie, więc spróbuj setfacl -vsprawdzić, 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.