Мне нужно использовать 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.
Изменить 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
.
Есть идеи??