apache httpd 将 url 映射到 virtualbox 共享文件夹

标签 apache centos virtualbox httpd.conf

我在virtualbox中设置了一个centos7,其中运行apache httpd、mariadb、phpmyadmin等,主机是macos

当我尝试将 url 映射到共享文件夹时,我遇到了错误

Forbidden: You don't have permission to access /tutorial/ on this server.

sudo tail -f/var/log/httpd/error_log
[Wed Oct 19 22:48:23.108758 2016] [autoindex:error] [pid 1469] (13)Permission denied: [client 192.168.144.1:51847] AH01275: Can't open directory for index: /php-tutorial/www/

/etc/httpd/conf.d/tutorial.conf
Alias /tutorial "/php-tutorial/www"

<Directory "/php-tutorial/www">
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>

文件夹权限是
drwxr-xr-x. 1 vagrant vagrant system_u:object_r:vmblock_t:s0 /php-tutorial/www 
drwxr-xr-x. 1 vagrant vagrant system_u:object_r:vmblock_t:s0 /php-tutorial
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html

我不确定这是否可能,如果可能的话,配置它的正确方法是什么。

最佳答案

感谢 ezra-s 强调了可能的问题。

是的,这是因为 SELinux,因为 SELinux 在 Centos 7.2 中默认启用,这是这里使用的客户操作系统。

这个问题有两种不同的解决方案:

  • 快速解决方法,禁用 SELinux
    # vi /etc/selinux/config
    
    SELINUX=enforcing  # <= change enforcing to disabled
    
  • 更好的解决方案,自定义 SELinux 策略
    # yum install -y policycoreutils-python
    # vi httpd_t.te
    
    module httpd_t 1.0;
    
    require {
            type httpd_t;
            type vmblock_t;
            class file { read getattr open };
    }
    
    #============= httpd_t ==============
    allow httpd_t vmblock_t:file { read getattr open };
    
    # checkmodule -M -m -o httpd_t.mod httpd_t.te
    # semodule_package -o httpd_t.pp -m httpd_t.mod
    # semodule -i httpd_t.pp
    # systemctl restart httpd
    

  • 引用:
  • https://github.com/mitchellh/vagrant/issues/6970 ,有人遇到了同样的问题,一步步找到了出路。
  • https://wiki.centos.org/HowTos/SELinux ,很好的介绍了SELinux。
  • 关于apache httpd 将 url 映射到 virtualbox 共享文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40135436/

    相关文章:

    php-fpm 不创建 .sock 文件

    由于mariadb install mysql不会安装但是mariadb没有安装

    linux - 服务器重新启动后自动运行的 Bash 脚本

    tomcat - 无法从本地网络访问Tomcat服务器

    vagrant - 如何从本地VirtualBox/Vagrant开发环境完成生产部署?

    ios - 代理从我的 iPhone/iPad 到 Mac 上的 VirtualBox 的 http 和 https 流量

    java - Apache sqoop未编译

    Java xml dsig DigestValue ( jsr105 Provider apache, oracle )

    apache - 如何以最安全的方式运行Tomcat?

    java - 使用 Apache POI 计算 Excel 文件中的非空行