Apache 无法更改VirtualBox共享文件夹的SELinux安全上下文

Apache 无法更改VirtualBox共享文件夹的SELinux安全上下文,apache,virtualbox,selinux,centos7,Apache,Virtualbox,Selinux,Centos7,我面临以下情况。出于web开发的目的,我已经设法使用VirtualBox设置了CentOS 7来宾VM。我安装了一个LAMP堆栈,并配置了Apache(vhost,添加了组vboxsf的Apache成员,添加了防火墙规则)来访问VirtualBox共享文件夹 来宾CentOS 7 VM来宾计算机的配置设置: Virtual machine hostname: dickwan.dev Shared Folders: Name | Read-only | Auto-mount

我面临以下情况。出于web开发的目的,我已经设法使用VirtualBox设置了CentOS 7来宾VM。我安装了一个LAMP堆栈,并配置了Apache(vhost,添加了组vboxsf的Apache成员,添加了防火墙规则)来访问VirtualBox共享文件夹

来宾CentOS 7 VM来宾计算机的配置设置:

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
现在,在我的主机中,我打开浏览器并导航到(假设):

我得到的信息是:

Forbidden

You don't have permission to access /server-status on this server.
我已经找到了一个SELinux安全上下文类型的问题。 当SELinux被禁用时,一切正常(好吧……好吧,嗯)

但我觉得仅仅关闭安全功能是一种糟糕的做法。我已尝试更改共享文件夹的上下文,但无法执行该操作

是否有机会在不停用SELinux的情况下通过Apache访问共享文件夹?

我遇到了类似的问题(除了作为主机和来宾操作系统的Fedora 20)。我所做的:

sudo mount-t vboxsf共享\u文件夹/媒体/共享\u文件夹

sudo ln-s/media/shared_文件夹//var/www/

sudo chcon-R--reference=/var/www/var/www/shared\u文件夹

这对我很有用:)


在我尝试将安全上下文设置为自动装入的共享文件夹(通过VirtualBox)之前,但没有成功,因此我手动装入它

由于无法更改VBox共享文件夹的安全上下文,您可以修改SELinux安全策略以允许Apache使用该上下文。这类似于在防火墙中打开端口以向应用程序公开某个端口

首先,确保您的apache用户属于拥有共享文件夹的组的一部分,如果不是,您可以使用如下命令添加它(系统上的用户名/组名可能不同):

然后,您可以使用生成新的安全策略来解决您的问题

如果您很懒,只想允许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
usermod -aG vboxsf apache
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