Мне нужно использовать Puppeteer в системе Centos 7.4.1708, но когда SELinux настроен на Enforcing, я получаю ошибки AVC.

Если я запускаю sudo cat /var/log/messages я получаю:

SELinux is preventing /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome from search access on the directory /sys/fs/cgroup/cpuset.

*****  Plugin restorecon_source (99.5 confidence) suggests   *****************

If you want to fix the label.
/var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome default label should be httpd_sys_content_t.    
Then you can run restorecon.    
Do    
# /sbin/restorecon -v /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome

Это же сообщение появляется возможно 6 или 7 раз.

Когда я пытаюсь сделать вышеупомянутое, restorecon не устанавливает контекст файла.

Установить политику (как root):
semanage fcontext -a -t httpd_sys_content_t '/var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome'

Проверьте политику:
matchpathcon /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome
Показывает:
/var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome system_u:object_r:httpd_sys_content_t:s0

Это выглядит хорошо, но потом ...
Установить новый контекст для файла:
/sbin/restorecon -v /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome

restorecon не работает. Я не получаю никаких ошибок, даже если я использую -vv . Я также пытался форсировать restorecon с -F но это тоже не работает.

Вот текущий контекст файлов:
ls -Z /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome Показывает:
-rwxrwxrwx. root root system_u:object_r:nfs_t:s0 /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome

Текущий контекст - nfs_t потому что я использую синхронизированные папки с nfs в виртуальной коробке Vagrant. Я не могу перейти на smb, потому что он не синхронизируется в обоих направлениях с помощью хоста Windows.

Любые идеи о том, как я могу решить эту проблему? Я был там почти два дня.

Примечание: если я установлю SELinux на Permissive, то Puppeteer/Chromium будет работать без проблем.

Спасибо :)

Изменить: Я должен также упомянуть , у меня есть httpd_use_nfs on

Вот пастбин всех моих логических выражений SELinux.

SELinux логическое

Изменить 2:

Используя совет @HBruijn, я пытаюсь монтировать с определенным контекстом, но получаю ошибку.

Корневая команда AS:
mount 10.0.0.1:/C/Users/Lee/Desktop/www /var/www -o context="system_u:object_r:httpd_sys_content_t:s0"

Ошибка:
mount.nfs: requested NFS version or transport protocol is not supported

Сервер 10.0.0.1 - это мой частный сервер, настроенный в vagrantfile .
config.vm.network "private_network", ip: "10.0.0.0"

Путь экспорта - это тот же путь, который использует Vagrant, когда он монтирует папку в vagrant up например, 10.0.0.1:/C/path/to/directory .

Есть идеи??

1 ответ1

0

Я думаю, что вы пытаетесь решить проблему не с того конца, рассматривали ли вы возможность предоставить вашему веб-серверу доступ к общим ресурсам NFS с помощью:

setsebool -P httpd_use_nfs=1 

РЕДАКТИРОВАТЬ На основании вашего комментария, что вы используете VirtualBox на Windows:

Я думаю, что ваш хост Windows не поддерживает маркировку, и тогда клиент (ваш CentOS) назначает политику безопасности по умолчанию как nfs_t .

Вам может потребоваться установить предпочтительный контекст безопасности в качестве опции монтирования, чтобы переопределить это значение по умолчанию (в команде монтирования или /etc /fstab):

# mount server:/export /var/www/html -o  context="system_u:object_r:httpd_sys_content_t:s0" 

Смотрите руководство по RHEL 6

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .