jcu*_*bic 5 fedora selinux symlink apache-httpd
我有一个文件:
js/jquery.terminal-src.js: symbolic link to ../../repo/js/jquery.terminal-src.js
Run Code Online (Sandbox Code Playgroud)
当我尝试使用浏览器打开它时:
http://localhost/projects/jcubic/terminal/test/js/jquery.terminal-src.js
我有 403 错误被禁止,文件有权限
-rw-rw----. 1 kuba kuba 291604 08-27 22:20 ../../repo/js/jquery.terminal-src.js
Run Code Online (Sandbox Code Playgroud)
和 apache2 无法打开该文件,我已经安装了 SeLinux 并且我正在使用 Fedora Distro。
我有这个 /var/log/audit/audit.log
type=AVC msg=audit(1503868547.512:625): avc: denied { getattr } for
pid=519 comm="httpd" path="/home/kuba/projects/jcubic/terminal/test/css/jquery.
terminal-src.css" dev="sda3" ino=26608576 scontext=system_u:system_r:
httpd_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=lnk_file
permissive=0
Run Code Online (Sandbox Code Playgroud)
我已将 apache 用户添加到kuba组中,并且projects是/var/www/html目录中的符号链接。其他文件,甚至是目录的符号链接,都可以正常工作。
我也尝试将 kuba 组设置为每个目录甚至 /home 但这不起作用(并且所有目录都已属于kuba组)
我需要配置什么才能使 apache 打开符号链接文件?
我不想禁用 SeLinux,因为它安装在 Fedora 上有其他原因吗?
您可以使用audit2why来找出拒绝访问的原因,以及是否存在允许访问的 SELinux布尔值。
SELinux booleanhttpd_enable_homedirs允许 Apache 读取主目录,在您的情况下应该足够了。您可以使用 (as root) 启用它setsebool -P httpd_enable_homedirs 1。
如果您需要更改 SELinux 策略,您可以使用audit2allow生成一个策略模块以允许访问。
在 Unix 权限之后检查 SELinux 规则。SELinux 规则只会添加更严格的访问控制规则,而不会降低现有文件权限的限制。
Apache 具有FollowSymLinks和SymLinksIfOwnerMatch 选项,它们会影响符号链接的处理方式。默认情况下启用FollowSymlinks并且 Apache 遵循符号链接,但可以在<Directory>配置文件的部分或.htaccess文件中更改这些选项。