Apache: Разве chmod 755 недостаточно для настройки символической ссылки или псевдонима в Apache httpd в Mac OS 10.5?

15

На моем Mac OS 10.5 машины, я хотел бы создать вложенную папку, ~/Documentsкак ~/Documents/foo/htmlбыть HTTP: // локального / Foo .

Первое, что я подумал сделать, это использовать Alias ​​следующим образом:

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

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

    Order allow,deny
    Allow from all
</Directory>

Это заставило меня 403 Запрещено. В error_log я попал:

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

У рассматриваемой подпапки есть доступ chmod 755. Я пытался указать лайки, такие как http: //localhost/foo/test.php , но это тоже не сработало. Затем я попробовал маршрут символической ссылки.

Зашел /Library/WebServer/Documentsи сделал символическую ссылку на ~/Documents/foo/html. Корень документа имеет

Options Indexes FollowSymLinks MultiViews

Это все еще заставило меня 403 Запрещено:

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

Что еще мне нужно настроить?

Решение :

$ chmod 755 ~/Documents

В общем случае папка, к которой необходимо предоставить общий доступ, и вся ее папка-предок должны быть доступны для просмотра пользователю wwwслужбы.

Евгений Йокота
источник
Большое спасибо за публикацию этого решения - это действительно помогло мне после долгих лет поиска ответа
Томба
@ Томба Нет проблем.
Евгений Йокота

Ответы:

24

Держу пари, что какой-то каталог выше того, к которому вы хотите получить доступ, не имеет разрешений, позволяющих Apache проходить его. Станьте пользователем, под которым работает Apache ( sudo -i -u apacheили каким-либо другим), затем попробуйте перейти в интересующий вас каталог ls. Если вы не можете (как и ожидалось), попробуйте попасть в каталоги над ним, один за другим, пока один не впустит вас. Подкаталог этого каталога должен быть o+xустановлен. Вспенить, промыть, повторить при необходимости.

ombble
источник
1
Да, если «Сайты» работают, у вас, вероятно, есть проблема с документами, если «Сайты» не работают, у вас, вероятно, есть проблема с вашим пользовательским каталогом (это может быть добавлено с filevault)
radius
1
~ / Документов было 700.
Юджин Йокота
Если я работаю sudo -i -u _wwwв OS X (поскольку пользователь Apache является _www в конфигурации apache по умолчанию в OS X), то я получаю whoami, но я все равно получаю свое имя пользователя, а не _www
Джейсон С
Чтобы полностью перейти на другого пользователя с помощью sudo, я использую «-» отдельно sudo - www-data(для Ubuntu).
Алексис Вилке
2

использование +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>
Дейв Чейни
источник
Согласно httpd.apache.org/docs/2.0/en/mod/core.html#options , «если всем параметрам в директиве Options предшествует символ + или -, параметры объединяются». Как это поможет ~ / Документы 700?
Юджин Йокота
AFAIK FollowSymLinks не включает эту опцию, только позволяет включить ее на более низком уровне иерархии каталогов.
Дейв Чейни
1
Это был правильный ответ для меня. Я изменил файл conf в / etc / apache2 / users и разрешил FollowSymLinks (без +). Не забудьте перезапустить.
Сверхсветовой
1

Убедитесь, что хранилище файлов не включено. У меня такая же проблема. Я перепробовал все остальное, что смог найти. Ничего не получалось. Но после часа попыток выяснить это, я вспомнил, что у меня включено хранилище файлов.

Отключение решило проблему.

боб
источник
1

Проверьте владение символической ссылкой. Поскольку вы работаете в Mac OS X, владельцы символических ссылок могут быть изменены. В /Library/WebServer/Documentsделатьls -l

Если ваша символическая ссылка ~/Documents/foo/htmlназывается fooи имеет права доступа, такие как

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

Затем по умолчанию в OS X Apache запускается как пользователь _www и группа _www, поэтому в вышеупомянутом случае он не сможет пройти по символической ссылке на ~/Documents/foo/html

Запустите man 8 chownна своем системном терминале или посмотрите на него онлайн, человек чоун

Вы увидите, что использование этой -hопции изменит владельца самой символической ссылки, а не файла, на который она указывает (это источник). Тогда вы можете сделать что-то вроде

sudo chown -h :_www foo 

Это изменит симлинк на

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

и группа Apache _www сможет пройти по ссылке.

Джейсон С
источник
0

Проверьте каталог / Users (ls -l / Users), чтобы увидеть права на вашего пользователя (кого-то).
Также каталог 'Sites' правильно доступен на localhost / ~ somebody?

радиус
источник
localhost / ~ кто-то работает.
Юджин Йокота