Eu preciso usar o Puppeteer em um sistema Centos 7.4.1708, mas quando eu tenho o SELinux configurado como Enforcing estou recebendo erros de AVC.
Se eu executar sudo cat /var/log/messages
, obtenho:
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
Esta mesma mensagem aparece talvez 6 ou 7 vezes.
Quando eu tento fazer o acima, porém, restorecon não irá definir o contexto do arquivo.
Definir política (como root):% semanage fcontext -a -t httpd_sys_content_t '/var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome'
Verificar política:
matchpathcon /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome
Shows: /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome system_u:object_r:httpd_sys_content_t:s0
Isso parece bom, mas depois ...
Definir novo contexto para o arquivo:
/sbin/restorecon -v /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome
restorecon
não funciona. Eu não recebo nenhum erro mesmo se eu usar -vv
.
Eu também tentei forçar restorecon
com -F
, mas isso não funciona.
Aqui está o contexto atual dos arquivos:
ls -Z /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome
Shows: -rwxrwxrwx. root root system_u:object_r:nfs_t:s0 /var/www/html/node_modules/puppeteer/.local-chromium/linux-549031/chrome-linux/chrome
O contexto atual é nfs_t
porque eu uso pastas sincronizadas com nfs
na caixa virtual do Vagrant. Não consigo mudar para o smb porque ele não é sincronizado nos dois modos usando um host do Windows.
Alguma ideia de como posso corrigir este problema? Eu estou nisso há quase dois dias.
Nota: Se eu definir o SELinux como Permissivo, o Puppeteer / Chromium será executado sem problemas.
Obrigado :)
Editar: também devo mencionar que tenho httpd_use_nfs
definido como on
.
Aqui está um pastebin de todos os meus booleanos do SELinux.
SELinux booleanos
Editar 2:
Usando o conselho de @HBruijn eu tento montar com contexto definido, mas recebo erro.
Como comando raiz:% mount 10.0.0.1:/C/Users/Lee/Desktop/www /var/www -o context="system_u:object_r:httpd_sys_content_t:s0"
Erro: mount.nfs: requested NFS version or transport protocol is not supported
Servidor 10.0.0.1
é a configuração do meu servidor privado em vagrantfile
.
config.vm.network "private_network", ip: "10.0.0.0"
O caminho de exportação é o mesmo que o Vagrant usa quando monta uma pasta em vagrant up
, por exemplo, 10.0.0.1:/C/path/to/directory
.
Alguma ideia?