SELinux : restorecon이 컨텍스트를 httpd_sys_content_t로 변경하지 않습니다


0

Centos 7.4.1708 시스템에서 Puppeteer를 사용해야하지만 SELinux를 Enforcecing으로 설정하면 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이 파일의 컨텍스트를 설정하지 않습니다.

정책 설정 (루트로) :
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

현재 컨텍스트는 Vagrant running virtual box nfs_t와 동기화 된 폴더를 사용하기 때문 nfs입니다. Windows 호스트를 사용하여 두 가지 방법으로 동기화하지 않기 때문에 smb로 변경할 수 없습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 나는 거의 이틀 동안 그것을했습니다.

참고 : SELinux를 Permissive로 설정하면 Puppeteer / Chromium이 문제없이 실행됩니다.

감사 :)

편집 : 또한로 httpd_use_nfs설정했다고 언급해야 합니다 on.

여기 내 모든 SELinux 부울의 pastebin이 있습니다.

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.

어떤 아이디어 ??

답변:


0

잘못된 끝에서 문제를 해결하려고한다고 생각합니다. 웹 서버에 NFS 공유에 대한 액세스 권한을 부여하는 것을 고려한 적이 있습니다.

setsebool -P httpd_use_nfs=1 

편집 Windows에서 VirtualBox를 실행하고 있다는 의견에 따라 :

내가 생각하는 윈도우 호스트가 표시 한 후 클라이언트 (사용자에 CentOS)와 같은 기본 보안 정책을 할당을 지원하지 않습니다 nfs_t.

mount 명령 또는 / etc / fstab에서 기본값을 재정의하기 위해 선호하는 보안 컨텍스트를 마운트 옵션으로 설정해야 할 수도 있습니다.

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

RHEL 6 매뉴얼 참조


죄송합니다 httpd_use_nfs --> on. 이미 가지고 있음을 언급하지 않았습니다 . OP를 편집하겠습니다.

다른 모든 SELinux 부울의 pastebin을 추가했습니다.

CentOS 게스트 OS를 사용하여 Windows에서 VirtualBox를 실행하고 있음을 이해하고 있습니까?
HBruijn

네 맞습니다. winnfsd 플러그인을 사용하여 Windows에서 nfs가 작동하도록합니다.

루트로 실행하면 다음 오류가 발생합니다. mount.nfs: Failed to resolve server server: Name or service not known mount.nfs: Operation already in progress
turrican_34

0

마운트로 아래 옵션을 설정하십시오. 그들은 CIFS 마운트에서 나를 위해 일했습니다. nfs에서도 작동 할 수 있습니다. uid = gid = file_mode = dir_mode = fscontext =

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.