Назад | Перейти на главную страницу

Как настроить SELinux для nginx для доступа к символической ссылке на смонтированный каталог

У меня есть виртуальная машина libvirt, на которой запущен nginx с общей файловой системой, смонтированной в виртуальной машине nginx, и я хочу открыть каталог в этом монтировании. nginx, похоже, работает нормально, и я могу получить доступ к основным локальным файлам и подкаталогам в / usr / share / nginx / html. У меня есть символическая ссылка от монтирования к местоположению nginx по умолчанию через

ln -sf /mnt/h_drive/ss4/ /usr/share/nginx/html/

..и я вижу ss4 dir из браузера, но когда я нажимаю на него, я получаю сообщение «403 Forbidden» и вижу следующее в моем /var/log/nginx/error.log

2017/10/18 17:52:16 [error] 30806#0: *1 opendir() "/usr/share/nginx/html/ss4" failed (13: Permission denied), client: xxx.xxx.xxx.xxx, server: _, request: "GET /opt/ss4/ HTTP/1.1", host: "example.com"

если я отключу selinux с помощью setenforce 0 Я могу получить доступ ко всему.

Что мне нужно сделать, чтобы получить доступ к этому креплению?

советы по устранению неполадок ..

Установить как root

$ yum install setroubleshoot-server -y

$ aureport -a # дает отчет об отказах

$ ausearch -m avc -ts недавние # последние 10 мин.

У вас должна быть возможность обновить политику

$ sudo audit2allow -a

Вы бы увидели нечто подобное в вашем собственном случае при запуске вышеуказанного отчета.

nginx system_u: system_r: httpd_t: s0 5 файл getattr unlimited_u: object_r: puppet_etc_t: s0 denied 616

Создать политику

$ audit2allow -a -M читать

Сделать новую политику активной

$ semodule -i read.pp

В конце концов я наткнулся на следующее решение:

semanage allow httpd_t nfs_t:dir read;

Спасибо @bell за советы по устранению неполадок, я обязательно буду ссылаться на них для будущих проблем!