Я запускаю Apache 2.2 на CentOS 6.5, и у меня проблемы с доступом к общему ресурсу Samba, который я смонтировал.
Мой веб-корень /var/www/html
, и я создал в корне папку с именем intranet
, и я подключаю общий ресурс к этой папке, используя следующую строку в fstab:
\\remote.server\share\intranet /var/www/html/intranet cifs rw,auto,guest,uid=apache,gid=apache 0 0
Я могу получить доступ к этому общему ресурсу и прочитать / записать его как root. Я также могу sudo -u apache
читать и писать акцию. Насколько я могу судить на системном уровне, общий ресурс монтируется точно так, как нужно.
Однако, когда я пытаюсь получить доступ к общему ресурсу, перейдя в http:\\myserver\intranet
Я получаю следующее сообщение:
You don't have permission to access /intranet/ on this server.
Однако когда я umount intranet
, Я могу получить доступ к простой папке intranet
с участием http:\\myserver\intranet
успешно, что говорит мне о моем httpd.conf
и .htaccess
настроен правильно.
Насколько я могу судить, проблема в том, что где-то по ходу дела какое-то разрешение не переводится правильно. Я не уверен, что еще я могу сделать, чтобы решить эту проблему.
РЕДАКТИРОВАТЬ: Я понимаю, что ничего не сказал, но мои файлы httpd.conf и .htaccess настроены на FollowSymLinks
. Я успешно протестировал это, связав тестовый каталог и открыв его.
Хорошо, я понял это. Проблема была в SELinux.
Политика httpd_use_cifs
был установлен в офф. Я смог увидеть это, запустив:
getsebool -a | grep httpd
Потом я увидел это httpd_use_cifs --> off
. Оставалось только изменить политику:
setsebool -P httpd_use_cifs on
Обратите внимание -P
flag записывает политики на диск, поэтому они сохранятся после перезагрузки. Вы можете опустить флаг -P, чтобы временно проверить изменение политики, не записывая его на диск.
Самая простая вещь для меня - это символическая ссылка на / var / www / html /, например ln-s / path / to / share / linkname.