Apache: Czy chmod 755 nie wystarcza do skonfigurowania dowiązania symbolicznego lub aliasu w Apache httpd w Mac OS 10.5?

15

Na moim komputerze z systemem Mac OS 10.5 chciałbym skonfigurować podfolder ~/Documentspodobny ~/Documents/foo/htmldo http: // localhost / foo .

Pierwszą rzeczą, o której pomyślałem, było użycie Aliasu w następujący sposób:

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options Indexes FollowSymLinks MultiViews

    Order allow,deny
    Allow from all
</Directory>

To mi 403 zabronione. W dzienniku błędów dostałem:

[error] [client ::1] (13)Permission denied: access to /foo denied

Omawiany podfolder ma dostęp do chmod 755. Próbowałem podać polubienia takie jak http: //localhost/foo/test.php , ale to też nie działało. Następnie spróbowałem trasy z dowiązaniem symbolicznym.

Wszedł /Library/WebServer/Documentsi zrobił dowiązanie symboliczne do ~/Documents/foo/html. Katalog główny ma

Options Indexes FollowSymLinks MultiViews

To wciąż mnie 403 zabronione:

Symbolic link not allowed or link target not accessible: /Library/WebServer/Documents/foo

Czego jeszcze potrzebuję, aby to skonfigurować?

Rozwiązanie :

$ chmod 755 ~/Documents

Zasadniczo folder, który ma być udostępniony, i cały jego folder nadrzędny musi być widoczny wwwdla użytkownika usługi.

Eugene Yokota
źródło
Dziękuję bardzo za opublikowanie tego rozwiązania - to naprawdę pomogło mi po spędzeniu wieków szukania odpowiedzi
Tomba
@Tomba Nie ma problemu.
Eugene Yokota,

Odpowiedzi:

24

Założę się, że jakiś katalog powyżej tego, do którego chcesz uzyskać dostęp, nie ma uprawnień pozwalających Apache na przechodzenie przez niego. Zostań użytkownikiem, na którym działa Apache jako ( sudo -i -u apachelub cokolwiek innego), a następnie spróbuj przejść do katalogu zainteresowań i lsto. Jeśli nie możesz (zgodnie z oczekiwaniami), spróbuj wchodzić do katalogów powyżej, jeden po drugim, dopóki nie wpuścisz. Podkatalog tego katalogu musi być o+xustawiony. Spłucz, spłucz, powtórz w razie potrzeby.

womble
źródło
1
Tak, jeśli „Witryny” działają, prawdopodobnie masz odpowiedni problem z Dokumentami, jeśli „Witryny” nie działają, prawdopodobnie masz odpowiedni problem z katalogiem użytkowników (może się to wiązać z filevault)
promień
1
~ / Dokumenty wyniosły 700.
Eugene Yokota
Jeśli korzystam sudo -i -u _wwwz systemu OS X (ponieważ użytkownik Apache ma domyślną konfigurację Apache w systemie OS X), to robię to whoami, nadal otrzymuję swoją nazwę użytkownika, a nie _www
Jason S
Aby w pełni zmienić na innego użytkownika za pomocą sudo, używam samego „-”: sudo - www-data(dla Ubuntu).
Alexis Wilke
2

Posługiwać się +FollowSymlinks

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options +Indexes +FollowSymLinks +MultiViews

    Order allow,deny
    Allow from all
</Directory>
Dave Cheney
źródło
Według httpd.apache.org/docs/2.0/en/mod/core.html#options „jeśli wszystkie opcje dyrektywy opcji są poprzedzone symbolem + lub -, opcje zostaną scalone”. Jak to pomoże ~ / Dokumentom jest 700?
Eugene Yokota
AFAIK FollowSymLinks nie włącza tej opcji, pozwala ją tylko włączyć na niższym poziomie hierarchii katalogów.
Dave Cheney
1
To była dla mnie poprawna odpowiedź. Zmodyfikowałem plik conf w / etc / apache2 / users i zezwoliłem na FollowSymLinks (bez +). Pamiętaj, aby zrestartować.
superluminarny
1

Sprawdź, czy przechowalnia plików nie jest włączona. Miałem ten sam problem. Próbowałem wszystkiego, co mogłem znaleźć. Nic nie działało. Ale po godzinie próby zrozumienia tego przypomniałem sobie, że mam włączoną przechowalnię plików.

Wyłączenie go rozwiązało problem.

Kok
źródło
1

Sprawdź własność dowiązania symbolicznego. Ponieważ korzystasz z systemu Mac OS X, właścicieli dowiązań symbolicznych można zmienić. W /Library/WebServer/Documentsdols -l

Jeśli twój dowiązanie symboliczne ~/Documents/foo/htmljest wywoływane fooi ma uprawnienia takie jak

lrwxr-xr--  1 root  wheel 27  2 Nov 17:00 foo -> /Users/username/Documents/foo/html

Następnie domyślnie na OS X Apache działa jako użytkownik _www i grupa _www, więc w wyżej wspomnianym przypadku nie będzie mógł przejść do dowiązania symbolicznego do ~/Documents/foo/html

Uruchom man 8 chownna terminalu systemowym lub spójrz na to online man chown

Zobaczysz, że użycie tej -hopcji zmieni własność samego dowiązania symbolicznego, a nie pliku, na który wskazuje (jego źródło). Następnie możesz zrobić coś takiego

sudo chown -h :_www foo 

Spowoduje to zmianę simlink na

lrwxr-xr--  1 root  _www 27  2 Nov 17:02 foo -> /Users/username/Documents/foo/html

a grupa Apache _www będzie mogła przejść przez link.

Jason S.
źródło
0

Sprawdź katalog / Users (ls -l / Users), aby zobaczyć prawa użytkownika (kogoś).
Czy katalog „Witryny” jest poprawnie dostępny na localhost / ~ kogoś?

promień
źródło
localhost / ~ ktoś pracuje.
Eugene Yokota