Я хочу прочитать файл из домашнего каталога, где я могу получить файлы с других серверов, которым я могу доверять.
Мой index.php находится в /var/www/html/index.php
файла, который я хочу читать с помощью PHP file_get_contents находится в /home/user123/subdir/info.txt
Как читать файл с PHP из домашнего каталога (CentOS 7, Apache 2.4, SELinux)
Погрешность я получаю: file_get_contents(/home/user123/subdir/info.txt): failed to open stream: Permission denied (2)
aureport --avc
показывает ошибку Отрицание
05.09.2014 14:17:16 httpd system_u:system_r:httpd_t:s0 6 dir getattr unconfined_u:object_r:user_home_dir_t:s0 denied 53606
Что я пробовал до сих пор (без успеха):
chcon -R -t httpd_sys_script_rw_t /home/user123/*
chcon -R -t httpd_user_content_t /home/user123/*
добавить директорию в апач UserDir конфигурации (/etc/httpd/conf.d/userdir.conf
)
<Directory "/home/user123/*">
AllowOverride None
Require all granted
</Directory>
Что я упускаю/что я делаю неправильно?
Информация для системы:
Server version: Apache/2.4.6 (CentOS)
PHP version 5.4.16
SELinux enforcing
CentOS 7
UPDATE разрешение апач
грант читать HomeDir решить ошибку отрицания от SELinux
setsebool -P httpd_enable_homedirs on
Но file_get_contents(/home/user123/subdir/info.txt): failed to open stream: Permission denied (2)
это стил там ...
У вас есть хотя бы '701' на'/home/user123'? Пользователь Apache должен иметь возможность перемещаться в него для отображения содержимого. 'chmod o + x/home/user123' (тогда, конечно,' o + r' в целевом файле) –
(и +1 для решения вашей проблемы SELinux без «setenforce 0»). Не нужно устанавливать ' httpd_user_content_t' на все в '/ home/user123', как вы это сделали, и это может вызвать другие проблемы. Вместо этого вы можете просто установить его в каталоге, в котором apache будет читать «chcon -R -t httpd_user_content_t/home/user123/subdir'. Я использую этот подход. Чтобы вернуть старый контекст в домашний каталог, просто «restorecon -R/home/user123» перед установкой 'httpd_user_content_t'. –
Обратите внимание, что, хотя установка этого контекста перед 'httpd_enable_homedirs' не показала ничего, я считаю, что это действительно необходимо в дополнение к' httpd_enable_homedirs'. –