Apache 无法更改VirtualBox共享文件夹的SELinux安全上下文
我面临以下情况。出于web开发的目的,我已经设法使用VirtualBox设置了CentOS 7来宾VM。我安装了一个LAMP堆栈,并配置了Apache(vhost,添加了组vboxsf的Apache成员,添加了防火墙规则)来访问VirtualBox共享文件夹 来宾CentOS 7 VM来宾计算机的配置设置: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
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