Относительно вашей проблемы и SELinux:
В Интернете полно сообщений людей, которые рекомендуют отключить SELinux. Это, безусловно, самое простое "решение", но оно не идеально в производственной среде, так как делает ваш сервер более уязвимым.
Вчера я сделал второе погружение в изучение SELinux. Мне очень помог следующий доклад Томаса Кэмерона :
SELinux для простых смертных (40 минут)
Я не знаю, какой дистрибутив Linux вы используете (и я не уверен, насколько сильно SELinux отличается от других), но CentOS предоставляет руководство по SELinux.
Краткое введение:
SELinux "контексты" отображаются в формате user:role:type:range
. По умолчанию SELinux поставляется в targeted
режиме, который ограничивает доступ к ресурсам по атрибуту type
.
Вы можете добавить флаг -Z
к таким командам, как ps
, ls
, cp
, mv
, mkdir
, netstat
и другие, чтобы просмотреть контексты SELinux для различных ресурсов.
Чтобы просмотреть контексты SELinux вашей веб-папки, запустите:
ls -lZ /usr/share/nginx/html
Чтобы просмотреть контекст вашего процесса nginx
, запустите:
ps -auxZ | grep -i nginx
Существуют также "логические значения" SELinux, которые можно включать / отключать для общих случаев использования. Чтобы просмотреть список логических значений, связанных с веб-сервером (в данном случае nginx
), выполните:
getsebool -a | grep -i httpd
Чтобы обновить логическое значение, вы можете установить его с помощью команды setsebool
. Пример:
setsebool httpd_read_user_content 1
Я хочу обратиться к документации по SELinux для нескольких других команд (потому что именно поэтому они их и поместили). Несколько других полезных команд:
- Маркировка SELinux
- Полезные утилиты
Это то, где я сейчас нахожусь с моим ноу-хау SELinux. Я знаю, что это старый пост, но я надеюсь, что это поможет другим.