上周我在我的电脑上安装了Fedora 20,创建了一个Web服务器(LAMP)并将Document Root更改为我的Dropbox文件夹。
来自
的/ var / www / html等
到
/家庭/ ivnbrv /收存箱
一开始我发现了SELinux的一些问题,谷歌搜索我发现这是以这种方式解决的。
$ chcon-R-u system_u-t httpd_sys_content_t /home/ivnbrv/Dropbox
然后更改
中设置的此目录的所有者/etc/httpd/conf/httpd.conf中
User ivnbrv
Group apache
$ chown-R ivnbrv.apache /home/ivnbrv/Dropbox
现在我尝试使用PHP上传文件
move_uploaded_file()
我看到了这个错误
PHP警告:move_uploaded_file(/ 家用/ ivnbrv / Dropbox的/网站/文件/公/ noticia / IMG /大/ 2010201.jpg): 无法打开流:/ home / ivnbrv / Dropbox中的权限被拒绝 第113行的/ Site / upload.php
我该怎么做才能使这项工作?
答案 0 :(得分:3)
由于你的情况有点远离标准 - 即。您的文档根目录位于homedir中,除其他外 - 我想提醒您,以下建议仅供您使用,以确定您的权限问题的主要原因。请记住,SELinux系统最重要的一点是提供所需的最小权限集;因此,这些步骤可能并非都是必要的,因为它们可能会进一步降低系统的安全性。
注意此外,也许最重要的是,您需要确保您的DAC策略允许对您的服务器拥有必要的rwx权限,因为SELinux仅在之后生效允许DAC权限;即如果目录/文件中不允许使用apache,则DAC策略会阻止它,而SELinux甚至不会处理它。
尝试将public
目录和子目录的文件上下文更改为public_content_rw_t
。
# semanage fcontext -a -t public_content_rw_t "/home/ivnbrv/Dropbox/Site/files/public(/.*)?"
接着是
# restorecon -R -v /home/ivnbrv/Dropbox/Site/files/public/
此外,您应该检查以确保您使用了正确的sebooleans
:
# getsebool -a |grep -i http
AFAIK,httpd_builtin_scripting
,httpd_can_network_connect
和httpd_enable_homedirs
应设置为 。
# setsebool httpd_... on
对任何需要启用的布尔值执行上述命令。但是,此更改是暂时的,除非您还将-P
选项添加到setsebool
以使其保持持久性。
检查以确保您的php脚本具有
所需的文件上下文ls -alZ /path/to/dir/with/scripts
如果没有,您可以通过执行
将其更改为httpd_sys_script_exec_t
# semanage fcontext -a -t httpd_sys_script_exec_t '/home/ivnbrv/Dropbox/Site/.*\/php5?'
# semanage fcontext -a -t httpd_sys_script_rw_t '/home/ivnbrv/Dropbox/Site/files/public/noticia/img(/.*)?'
# restorecon -R -v /home/ivnbrv/Dropbox/
与往常一样,请查看SELinux's wikipages了解更多详情和信息。 fedora wiki pages上提供了大量有用的信息,包括许多场景和工作流程方法;以及官方Fedora Docs - Security Guide。
答案 1 :(得分:0)
在/ etc / http / conf / httpd中查找如下行:
<Directory />
AllowOverride none
Require all denied
</Directory>
并添加以下内容:
<Directory /home>
AllowOverride None
Require all granted
</Directory>
然后重启你的apache服务
答案 2 :(得分:0)
尝试将执行权限设置为:/home/
,/home/ivnbrv/
和/home/ivnbrv/Dropbox
:
chmod o+x /home/
chmod o+x /home/ivnbrv/
chmod o+x /home/ivnbrv/Dropbox
然后重启你的apache。
我建议,将您的用户添加到www-data组(在我的情况下)或apache:
adduser your-user www-data