Wiem, że to pytanie jest często zadawane, ale rozwiązania, które widziałem, nie działały dla mnie.
Mam włączony tylko jeden wirtualny host i próbuję umożliwić dostęp do folderu, który nie znajduje się w katalogu głównym dokumentu
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /movies /home/username/Videos/Movies
<Directory /home/username/Videos/Movies/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Ustawiam /etc/apache2/envvars
w następujący sposób
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=public
Upewniłem się, że / home / nazwa użytkownika / Wideo / i jego podfoldery są własnością username:public
, ustawiłem uprawnienia na 777 (po 775 nie działało) i upewniłem się, że użytkownik www-data
należy do grupy public
.
Teraz, kiedy przeglądam http://localhost/movies
, dostaję
[Mon Apr 21 11:28:14.971844 2014] [core:error] [pid 1385:tid 140067725104896] (13)Permission denied: [client 127.0.0.1:46603] AH00035: access to /movies/ denied (filesystem path '/home/username/Videos') because search permissions are missing on a component of the path
Ale kiedy ustawiam /etc/apache2/envvars
uruchamianie Apache pod username
(moją własną nazwą użytkownika) wszystko działa dobrze. Problem dotyczy uprawnień, ale nie widzę tego w moim przypadku; szczególnie gdy ustawię uprawnienia na 777
. Jakieś pomysły?
Wersja PS Ubuntu to 14.04, Apache to 2.4.7 i nie edytowałem innych plików konfiguracyjnych.
źródło
/home
z włączoną ACL? (na końcu bitów uprawnień jest znak „+”, jeśli tak jest (sprawdź zls -l
))Odpowiedzi:
Zrób
chmod +x
na swoim katalogu użytkownika i uruchom ponownie apache. Uprawnienia 755 powinny działać. Miałem problemy z 644 .źródło
namei -m /home/youruser/public_html/yourfile.ext
lub wypróbować people.apache.org/~igalic/hacks/parsepath/home/username
aby uzyskać do niego szybki dostęp.Jeśli w przypadku problemu z selinux, zamiast po prostu go wyłączyć, ta strona i ta strona dają polecenie udzielenia dostępu:
źródło
~/public_html/
część katalogiem głównym treści, którą próbowałem podać.chcon -R -t httpd_sys_content_t /var/www/html/phpmyadmin/
(w mojej sytuacji)Możliwe, że masz włączony selinux. Próbować
Jeśli wyświetla się komunikat „Wymuszanie”, spróbuj
i spróbuj rozwiązać problem.
źródło
Napotkałem ten sam problem, po wielu godzinach prób znalazłem rozwiązanie, które dokładnie rozwiązuje problem:
https://wiki.apache.org/httpd/13PermissionDenied
Zasadniczo serwer Apache wymaga nie tylko uprawnień do odczytu wszystkich obsługiwanych plików, ale także uprawnień do wykonywania wszystkich katalogów na ścieżce wirtualnego hosta.
Nazwę narzędzia można wykorzystać do znalezienia problemów z uprawnieniami, wymieniając uprawnienia wzdłuż każdego komponentu ścieżki:
W moim przypadku katalog na mojej ścieżce ma uprawnienie 700, co powoduje problem. Po zmianie na 701 problem został rozwiązany.
źródło
Wystąpił ten problem, gdy próbowałem uruchomić apache w kontenerze dokera na hoście Ubuntu 16.04, który korzystał z jądra 4.4 zamiast 4.10.
Po uruchomieniu tego polecenia na hoście i ponownym wdrożeniu wszystko było w porządku:
źródło
chmod
lubchown
wewnątrz pojemnika, i na chwilę tłumi on błędy Apache 403, ale po pewnym czasie cofa się. O ile mi wiadomo, nie ma interweniującego restartu kontenera ani innych istotnych zmian, które mogłyby być tego przyczyną. Ponieważ rzeczywiście korzystam z wersji 16.04, próbowałem zainstalować ten plik binarny, a moje 403 są na razie wstrzymane. Będę miał na to oko i dzięki!