SELinux, сокращение от Security Enhanced Linux, является модулем безопасности Linux, который является частью многих дистрибутивов Linux.
Хотя SELinux повышает безопасность сервера (несмотря на то, что создается NSA), это часто приводит к некоторым неожиданным ошибкам, связанным с доступом / разрешением.
Если вы получаете одну из таких ошибок на сервере с включенным SELinux, и нет очевидных проблем с правами на файл, вы должны проверить, вызвана ли проблема SELinux.
Чтобы проверить статус SELinux, запустите:
# sestatus
Вы должны получить что-то вроде этого:
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 28
“Current mode: enforcing” означает, что SELinux запущен.
Чтобы временно отключить SELinux, запустите:
# setenforce 0
Если это устраняет проблему, и вы больше не получите ошибки «permission denied», это означает, что проблема была вызвана SELinux.
Повторно включите его с помощью setenforce 1 и попытайтесь найти основную причину.
# setenforce 1
Чтобы помочь устранить неполадки, вы можете проверить файлы журнала SELinux, расположенные в /var/log/audit/audit.log.
Очень часто проблема вызвана неправильным контекстом безопасности (также называемой меткой безопасности), назначенной для затронутых файлов или папок.
Чтобы просмотреть контекст безопасности, который SELinux применил к файлам или папкам, выполните одну из следующих команд (все они отображают контексты безопасности только в разных форматах):
ls -Z or ls --context ls --lcontext ls --scontext
Чтобы изменить контекст безопасности, вы можете использовать команду chcon, например:
# chcon -R -t httpd_sys_content_t /www/sites
httpd_sys_content_t – доступ только для чтения в Apache
httpd_sys_rw_content_t – доступ для чтения / записи Apache
httpd_log_t – файлы журнала Apache
httpd_cache_t – кеширование Apache
или используйте справочный каталог:
# chcon -R --reference=/var/www/html /www/sites