URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 87870
[ Назад ]

Исходное сообщение
"httpd+php: проблемы с правами"

Отправлено mirya , 17-Янв-10 04:05 
Подземный стук, 5.5 баллов.

Имеется FedoraCore9, на ней апач и пхп. Апач работает под пользователем apache, у пхп выключены всякие safe_mode, open_basedir'ы. Есть директория '/somewhere/dir' с владельцем apache:apache и правами 0777. Далее 2 действия:
1) апач выполняет пхп-скрипт, который делает touch('/somewhere/dir/file1');
2) я из шелла под пользователем apache делаю touch /somewhere/dir/file2 (или php -r "touch('/somewhere/dir/file2');", эффект тот же.
3) ls -l /somewhere/dir

-rw-r--r-- 1 apache apache      0 2010-01-01 01:01 file1
-rw-r--r-- 1 apache apache      0 2010-01-01 01:02 file2

4) пробую повторно из апача с пом. пхп-скрипта touch('/somewhere/dir/file1') - проходит
5) пробую из апача с пом. пхп-скрипта touch('/somewhere/dir/file2') - время модификации не изменилось, выдается ошибка:

PHP Warning:  touch() [<a href='function.touch'>function.touch</a>]: Utime failed: Permission denied

6) из шелла под пользователем apache touch /somewhere/dir/file1, touch /somewhere/dir/file2, php -r "touch('/somewhere/dir/file1');", php -r "touch('/somewhere/dir/file2');"

срабатывают, как и ожидалось.

Это упрощенное описание проблемы, глобально пхп под httpd не в состоянии писать в файлы, которые сам не создал (хоть ему выстави права 0777/0666 и смени владельца на него). Разницы между файлами, созданными пхп из-под веб-сервера и мною под тем же пользователем из шелла я не вижу, но первые для пхп в апаче писабельны, а вторые - нет.

Есть идеи, что с этим делать и где причина?


Содержание

Сообщения в этом обсуждении
"httpd+php: проблемы с правами"
Отправлено SDenis , 17-Янв-10 12:13 
>[оверквотинг удален]
>
>-rw-r--r-- 1 apache apache      0 2010-01-01 01:01
>file1
>-rw-r--r-- 1 apache apache      0 2010-01-01 01:02
>file2
>
>4) пробую повторно из апача с пом. пхп-скрипта touch('/somewhere/dir/file1') - проходит
>5) пробую из апача с пом. пхп-скрипта touch('/somewhere/dir/file2') - время модификации не
>изменилось, выдается ошибка:
>

SeLinux ?
>[оверквотинг удален]
>срабатывают, как и ожидалось.
>
>Это упрощенное описание проблемы, глобально пхп под httpd не в состоянии писать
>в файлы, которые сам не создал (хоть ему выстави права 0777/0666
>и смени владельца на него). Разницы между файлами, созданными пхп из-под
>веб-сервера и мною под тем же пользователем из шелла я не
>вижу, но первые для пхп в апаче писабельны, а вторые -
>нет.
>
>Есть идеи, что с этим делать и где причина?


"httpd+php: проблемы с правами"
Отправлено mirya , 17-Янв-10 14:30 
Таки, в три ночи как-то в голову не пришло:

# ls -aZ

-rw-r--r-- 1 apache apache      unconfined_u:object_r:httpd_sys_content_rw_t:s0 file1
-rw-r--r-- 1 apache apache      unconfined_u:object_r:httpd_sys_content_t:s0 file2

# chcon --reference=file1 *

, и все стало на свои места


"httpd+php: проблемы с правами"
Отправлено cmp , 11-Окт-12 13:57 
аналогичная проблема в centos 6, перенесли сайт с тестового сервера touch не работает, хотя selinux отключен, лечится удалением файлов и пересозданием через web. http сервер nginx, php прикручен как FastCGI.