Apache: Чи не достатньо chmod 755 для налаштування символьної посилання або псевдоніму на Apache httpd на Mac OS 10.5?


15

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

Перше, що я подумав зробити, це використовувати псевдонім:

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] [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служби.


Дуже дякую за публікацію цього рішення - це мені справді допомогло, витративши віки на пошуки відповіді
Томба

@Tomba Немає проблем.
Євген Йокота

Відповіді:


24

Б'юсь об заклад, що деякий каталог вище того, до якого ви хочете отримати доступ, не має дозволів, щоб Apache мав змогу переходити його. Станьте користувачем, що Apache працює як ( sudo -i -u apacheабо що завгодно), а потім спробуйте перейти в каталог, що цікавить, і lsце. Якщо ви не можете (як очікувалося), то спробуйте потрапити в каталоги вище, по одному, поки один не пустить вас. Підкаталог цього - той, який потрібно o+xвстановити. Шкірку промийте, повторіть, як потрібно.


1
Так, якщо 'Сайти' працюють, у вас, ймовірно, є права проблеми в Документах, якщо «Сайти» не працюють, ви, мабуть, маєте правильну проблему у своєму каталозі користувачів (це може додаватися з філевалтом)
радіус

1
~ / Документів було 700.
Євген Йокота

Якщо я sudo -i -u _wwwпрацюю на OS X (оскільки користувач Apache є _www у конфігурації apache за замовчуванням в OS X), тоді whoamiя все одно отримую своє ім’я користувача, а не _www
Jason S

Щоб повністю змінитися на іншого користувача з 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
Це була правильна відповідь для мене. Я змінив файл конф в / etc / apache2 / користувачів і дозволив 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

Перегляньте каталог / Користувачі (ls -l / Користувачі), щоб побачити права на свого користувача (когось).
Чи правильно доступний каталог "Сайти" на localhost / ~ хтось?


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.