У меня есть настройки сервера с Centos 5.6, Apache 2.2.19 и PHP 5.2.17. PHP обрабатывается suPHP.

В глобальном php.ini
safe_mode = off
open_basedir = none

Apache настроен на работу как nobody в конфигурации suPHP.

У меня есть две настройки домена в:
/home/user1/public_html и /home/user2/public_html

Обе директории public_html имеют права доступа 0750 с группой nobody

Все файлы / каталоги в каждом пользовательском каталоге принадлежат этому пользователю, и для этой группы также установлена группа.

Я запускаю сценарий в /home/user1/public_html/scripts/functions.php который пытается создать каталог в /home/user2/public_html/user_files (с разрешениями chmod, установленными в 0757), однако я получаю ошибка разрешения запрещена ...

Я предполагаю, что это связано с тем фактом, что PHP запускается как nobody , но я не уверен, что изменить, чтобы разрешить сценариям в папке каждого пользователя записывать в папку другого пользователя, если я не сделаю папку пользователя доступной для записи кем-то, что звучит не очень безопасно ...

Кто-нибудь знает, где я иду не так?

РЕДАКТИРОВАТЬ:

drwx--x--x    root.root      /home  
drwx-wx--x    user2.user2    /home/user2
drwxrwx---    user2.nobody   /home/user2/public_html 
drwxrwxrwx    user2.nobody   /home/user2/public_html/user_files

3 ответа3

1

Каталог /home/user2/public_html/user_files принадлежит xxx:nobody и поставляется с разрешениями 757 , правильно?
757 означает, что он доступен для чтения / чтения любому, но доступ на запись предоставляется только пользователям, не nobody в группу никто . Таким образом, ваша проблема может быть решена, если вы просто измените группу этого каталога или, что лучше, измените разрешения на 775 . С 775 владелец и группа имеют разрешения на запись, поэтому они могут создавать в нем дополнительные файлы / каталоги, но никто другой не может записывать в этот каталог.

1

У меня была похожая проблема на F15, и SELinux был виновником в моем случае. Пытаться:

chcon -R -h -t http_sys_rw_content_t /home/user2/public_html/user_files

Используйте ту же команду для любых других каталогов, где вы хотите, чтобы у Apache был доступ к R/W. Если это работает, используйте semanage, чтобы сделать изменение контекста постоянным при перезагрузках.

0

В конце я создал новую группу, содержащую user1 и user2, и просто изменил владельца группы в соответствующих папках, чтобы разрешить запись в несколько папок.

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