Wiem, że uprawnienia do plików były tu wcześniej uwzględnione, ale staram się omówić koncepcję mojego scenariusza.
- Pliki utworzyłem na starej instalacji ubuntu.
- Skopiowałem pliki do mojej nowej instalacji Ubuntu i umieściłem je w moim katalogu głównym.
- Kiedy próbuję uruchomić pliki (są to pliki PHP), pojawia się błąd związany z uprawnieniami
próbując to naprawić, założyłem, że muszą one nadal należeć do poprzedniego właściciela, więc uruchomiłem chown -R
katalog z moją nazwą użytkownika jako argumentem, aby przejąć na własność wszystkie pliki w katalogu. Należy zauważyć, że nazwy użytkowników między nowymi i starymi instalacjami Ubuntu były takie same.
Gdy próbuję ponownie uruchomić pliki, ten sam problem: błąd 500 z powodu problemów z uprawnieniami. Czy ktoś może mi powiedzieć, jakie inne kroki powinienem podjąć?
Webroot dla mojej instalacji Apache znajduje się w moim folderze domowym. Jeśli utworzę nowe pliki w moim katalogu głównym, będą one również działać zgodnie z oczekiwaniami, to tylko stare pliki powodują problem.
źródło
chmod -R 777 dir
odpowiedni katalog. Nie mogę się powstrzymać przed myśleniem, że jest to lepszy sposóbOdpowiedzi:
W katalogach powyżej katalogu głównego powinien być ustawiony bit wykonawczy, aby umożliwić Apache zejście do tych katalogów.
Jeśli masz swój Webroot położony w
/home/user/htdocs
The/
,/home
,/home/user
i/home/user/htdocs
powinny mieć bit wykonania zestawu.Powyższe rozwiązanie „działa”, ale nie jest idealne. Jeśli utworzyłeś folder, Apache nie może do niego pisać. Dzieje się też odwrotnie.
Można to „naprawić”, ustawiając umask 0007 i dodając się do grupy Apache (dane www, jeśli się nie mylę), aby nowo utworzone pliki i foldery były zapisywane przez grupę.
Alternatywnie możesz zainstalować alternatywny serwer Apache MPM: Apache2 MPM ITK ( informacje na temat konfigurowania ) i dostosować konfigurację, aby serwer Apache działał pod Twoim użytkownikiem.
źródło
Jeśli dokumenty serwera znajdują się w
/home/$USER/public_html
katalogu, musisz uruchomićaby przekazać własność folderu DocumentRoot użytkownikowi
www-data
i grupiewww-data
.Następnie możesz dodać siebie do grupy
www-data
Na koniec musisz ustawić folder DocumentRoot do zapisu przez właściciela (użytkownika danych www) i dla siebie (jako część
www-data
grupy):Dla wygody możesz utworzyć skrypt o nazwie
public_html_fix.sh
zawierającej treść:Zapisz go w środku
/home/$USER/bin
i wykonaj za pomocą:Następnie wywołujesz go, kiedy potrzebujesz, z dowolnego miejsca w systemie plików znajdziesz się tak:
źródło
www-data
grupie, którzy czytają twoje pliki lub piszą w tym celu?chmod -R 775 /home/$USER/public_html
naprawdę okropne.find /home/$USER/public_html -type d -exec chmod 775 {} \;
ifind /home/$USER/public_html -type f -exec chmod 664 {} \;
jest o wiele lepszyOprócz plików chmoding i edycji plików apache .conf chcę powiedzieć, że nic mi nie działało, ponieważ moje pliki znajdowały się na partycji, którą automatycznie zamontowałem za pomocą nautilus. Ogranicza to partycję tylko dla użytkownika.
Aby sprawdzić, czy twoje pliki są widoczne przez
www-root
apache lub przez dowolnego użytkownika (uruchom,ps -aux | grep apache2
aby sprawdzić), uruchom następujące polecenie:i spróbuj odczytać plik z katalogu głównego dokumentu.
Jeśli pliku nie można odczytać, sprawdź, czy:
1) ustawiłeś wszystkie inne uprawnienia do plików
2) użyłeś
FollowSymlinks
w swoich.conf
plikach, jeśli to konieczne3) skonfigurowałeś DocumentRoot
3) zamontuj partycję dla wszystkich użytkowników. Musiałem edytować
/etc/fstab
i określić moją partycję za pomocą jej UUID:Następnie odmontuj partycję za pomocą nautilus i zrób
sudo mount -a
. Jeśli wszystko pójdzie dobrze, twoje pliki są teraz poniżej/mnt
. Zaktualizuj swoje dowiązania symboliczne i gotowe.źródło
Najlepszym sposobem, w jaki znalazłem, aby zawsze to konfigurować, jest sposób, w jaki robi to VirtualMin.
utwórz użytkownika i grupę „myhome”
Ustaw użytkownika apache jako członka grupy „myhome”. Nie na odwrót, jak opisują niektóre wyjaśnienia tutaj
Więc teraz apache odczytuje i wykonuje dostęp do / home / myhome oprócz / home / myhome / www
Użytkownik „myhome” ma dostęp do zapisu
źródło
www-data
należy do grupymyhome
. Wszystkie pliki i katalogi mają uprawnienia do zapisu grupowego i należą do nichmyhome:myhome
. Zrestartowałem apache. Apache wciąż nie może pisać nowych plików i folderów. (Skrypt PHP wykorzystujący www-data: www-data użytkownik / grupa)