1

UPDATE2

Если я сделаю ls внутри смонтированного каталога, скрипт php сработает хотя бы один раз. Странно, нет.


Я хочу получить доступ к каталогу из моего php-скрипта, который монтируется из

  • сервер datadev (Linux datadev 2.6.22.18-0.2-default # 1 SMP 2008-06-09 13:53:20 +0200 x86_64 x86_64 x86_64 GNU/Linux)

  • в wwwdev (Linux wwwdev 2.6.22.19-0.1-default # 1 SMP 2008-10-14 22:17:43 +0200 x86_64 x86_64 x86_64 GNU/Linux)

через НФС

  • /etc/exports - это как (попробовал некоторые вещи, которые мне не помогли)

    • /var/lib/firebird/data 10.0.0.20 (rw, no_root_squash)
    • /var/lib/firebird/data 10.0.0.20 (rw, setuid, no_root_squash)

    • /var/lib/firebird/data -mapall = wwwrun:wheel 10.0.0.20 (rw)

    • /var/lib/firebird/data 10.0.0.20 (rw, all_squash, anonuid = 30, anongid = 100)

  • /etc/fstab похож на

    • 10.0.0.21:/var/lib/firebird/data /var/lib/firebird/data nfs по умолчанию 0 0

Я могу получить доступ к каталогу из оболочки, но php выдает ошибку « Отказано в доступе» (ошибка Permission denied (errno 13) если я выполняю команду chdir ('/var/lib/firebird/data');

[root][wwwdev /var/lib/firebird/data] ls -la
total 44G
-rw-rw---- 1 firebird firebird   64M Jun 10 15:43 ?
-rw-rw---- 1 firebird firebird  307M Jun 15 10:27 ?OQben.gdb
drwxr-xr-x 2 firebird firebird   16K Jul 21 16:55 ./
drwxr-xr-x 3 firebird wheel     4.0K Jul 21 11:36 ../

-

[root][datadev /var/lib/firebird/data] ls -la
total 44G  
-rw-rw---- 1 firebird firebird   64M Jun 10 15:43 ?
-rw-rw---- 1 firebird firebird  307M Jun 15 10:27 ?OQben.gdb
drwxr-xr-x 2 firebird firebird   16K Jul 21 16:55 ./
drwxr-x--- 4 firebird firebird  4.0K May  7 12:19 ../

мой php скрипт может редактировать файл config.ini

root][wwwdev /var/lib/edumate/imacs/radek/3.0] ls -la
total 128K
drwxr-xr-x 19 wwwrun wheel 4.0K Jul 21 16:27 ./
drwxr-xr-x  6 wwwrun wheel 4.0K Jul 19 14:28 ../
-rw-r--r--  1 wwwrun wheel 1.8K Jul 21 15:08 config.ini

ОБНОВИТЬ

Я хочу что-то, что уже работает для меня. Я смонтировал каталог с моего Mac на тот же сервер wwwdev. wwwdev является клиентом nfs в обоих случаях. /etc /exports на mac содержит эту строку в /Users/radek/Sites -mapall=root:wheel -network 10.0.0.0 -mask 255.255.255.0

4 ответа4

1

Как предлагали другие, вы должны изменить разрешения экспортируемых каталогов, чтобы веб-пользователь (wwwrun) минимальный доступ к ним. На что именно вы их измените, зависит от вашей системы и требований безопасности.

Если по какой-то причине вы не можете изменить права доступа к каталогу, вы можете добавить веб-пользователя (wwwrun) в группу (firebird) на локальном компьютере. Я не совсем уверен, как NFS справится с этим, если GID будут отличаться на двух полях, но мы можем разобраться в этом, если это так.

Вероятно, это не самый безопасный способ сделать это, но я не уверен в ваших ограничениях для этого.

Просто любопытно ... по какой причине веб-серверу понадобится прямой доступ к этому местоположению? Если это местоположение ваших файлов базы данных, это может открыть новый путь повреждения данных, если вы не будете особенно осторожны. Не лучше ли использовать разъем Firebird/InterBase?

1

Чтобы изменить разрешения для подключенного диска, убедитесь, что пользователю Apache разрешен доступ в файле fstab.

Учетная запись пользователя Apache указана в файле конфигурации Apache (httpd.conf) и может быть чем-то вроде «www-data» (в зависимости от конфигурации).

Смотрите эту статью: Как редактировать и понимать /etc /fstab

EDIT1

Если с fstab проблем нет, то следующая остановка - с SELinux.
Из документации по политике nfs Selinux :

Политика SELinux настраивается на основе минимального доступа. Поэтому по умолчанию политика SElinux не разрешает nfs обмениваться файлами.

Если вы хотите поделиться файлами для чтения / записи, вы должны установить логическое значение nfs_export_all_rw.

setsebool -P nfs_export_all_rw 1

Чтобы быть абсолютно уверенным, что SELinux не мешает, смотрите Как отключить SELinux.

EDIT2

Следующий и последний шаг, который я могу найти, - проверить, правильно ли вы экспортировали общие ресурсы с сервера NFS. Вот некоторые ссылки, которые могут указать путь:

Ошибка «Отказано в доступе» при монтировании NFS
Совместное использование ресурсов NFS

0

Обычно Apache работает под другим пользователем (например, www). Вы получаете доступ к каталогам через root ... и, конечно, вам разрешено это делать.

Измените разрешения для смонтированной папки, чтобы отразить, что Apache-User разрешено их вводить.

0

наш сисадмин решил проблему для меня. Он говорит что он

  • создал новую группу xyz на сервере и клиенте nfs, а затем добавил в эту группу firebird и wwwrun
  • размонтируйте dir и настройте пользователя, группу, разрешение одинаково для обоих (сервер и клиент)
  • установил его снова, и он работает, так как ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .