2014-11-05 2 views
0

다음 상황에 직면했습니다. 웹 개발 목적을 위해 VirtualBox로 CentOS 7 게스트 VM을 설정했습니다. 저는 LAMP 스택을 설치하고 Apache (vhost, 그룹 vboxsf의 아파치 멤버를 추가하고 방화벽 규칙을 추가)를 구성하여 VirtualBox 공유 폴더에 액세스했습니다. 이제VirtualBox 공유 폴더의 SELinux 보안 컨텍스트를 변경할 수 없습니다.

Virtual machine hostname: dickwan.dev 
Shared Folders: 
    Name | Read-only | Auto-mount 
    ------------------------------------ 
    dickwan | no   | yes 
    ------------------------------------ 


Networking: NAT (with port forwarding rules) 
Port Forwarding Rules: 
    Name | Protocol | Host IP  | Host Port | Guest IP | Guest Port 
    -------------------------------------------------------------------------------------- 
    HTTP | TCP   | . . .  | 8080  | . . .  | 80 
    -------------------------------------------------------------------------------------- 
    MariaDB | TCP   | . . .  | 9306  | . . .  | 3306 
    -------------------------------------------------------------------------------------- 
    SSH  | TCP   | . . .  | 2222  | . . .  | 22 

내 호스트 머신에서, 나는 브라우저를 열고로 이동하면 (우리가 가정 해 봅시다) :

http://dickwan.dev:8080/server-status 

I 게스트에 CentOS 7 VM 게스트 머신의

구성 설정 메시지를 얻으십시오 :

Forbidden 

You don't have permission to access /server-status on this server. 

문제점을 SELinux 보안 컨텍스트 유형 문제점으로 추적했습니다. SELinux가 비활성화되면 모든 것이 잘 작동합니다 (음 ... 괜찮습니다.).

하지만 보안 기능을 종료하는 것이 좋지 않은 것처럼 느껴집니다. 공유 폴더의 컨텍스트를 변경하려고했으나 작업을 수행 할 수 없었습니다.

SELinux를 비활성화하지 않고 Apache를 통해 공유 폴더에 액세스 할 수 있습니까?

답변

1

비슷한 문제가있었습니다 (호스트 및 게스트 OS로 페도라 20 제외). 내가 무슨 짓을 :

sudo를 마운트 -t vboxsf의 shared_folder/미디어/

shared_folder sudo를 에선 -s/미디어/shared_folder /의/var/www /에서

sudo는 chcon -R

- 참조 =은/var/www가의/var/www /에서 shared_folder

그리고 이것은 나 :

작동

보안 컨텍스트를 자동으로 마운트 된 공유 폴더 (VirtualBox에 의해)로 설정하기 전에 성공했지만 수동으로 마운트하지 마십시오.

1

VBox 공유 폴더의 보안 컨텍스트를 변경할 수 없으므로 SELinux 보안을 수정할 수 있습니다 Apache가 컨텍스트에서 작동하도록 허용하는 정책. 이것은 특정 포트를 응용 프로그램에 노출시키기 위해 방화벽에서 포트를 여는 것과 비슷합니다.

먼저 아파치 사용자가 공유 폴더를 소유하고있는 그룹에 속하는지 확인하십시오. 그렇지 않은 경우 다음과 같은 명령을 사용하여 추가 할 수 있습니다 (사용자/그룹 이름이 다를 수 있음). 시스템) :

usermod -aG vboxsf apache 

그런 다음, 당신은 당신의 문제를 해결하기 위해 새로운 보안 정책을 생성 할 수 audit2allow를 사용할 수 있습니다. Here is a good tutorial.

게으른 경우에만 Apache에서 VBox 공유 폴더에 대한 읽기 액세스를 허용하려는 경우 다음 my_httpd_t.te 정책 파일을 적용하고 포함 된 명령을 사용하여 시스템에 적용 할 수 있습니다.

module my_httpd_t 1.0; 

require { 
     type httpd_t; 
     type vmblock_t; 
     class dir read; 
     class file { read getattr open }; 
} 

#============= httpd_t ============== 
allow httpd_t vmblock_t:dir read; 
allow httpd_t vmblock_t:file { getattr open read }; 

# Generated by audit2allow 

# To apply this policy: 
## checkmodule -M -m -o my_httpd_t.mod my_httpd_t.te 
## semodule_package -o my_httpd_t.pp -m my_httpd_t.mod 
## semodule -i my_httpd_t.pp 
## systemctl restart httpd