php-在FEDORA 20上拒绝的权限,APACHE

上周,我在计算机上安装了Fedora 20,创建了一个Web服务器(LAMP),并将文档根目录更改为我的Dropbox文件夹.

/var/www/html

/home/ivnbrv/Dropbox

一开始,我发现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 Warning: move_uploaded_file (/
home/ivnbrv/Dropbox/Site/files/public/noticia/img/large/2010201.jpg):
failed to open stream: Permission denied in / home / ivnbrv / Dropbox
/ Site / upload.php on line 113

我该怎么做才能使这项工作正常???

解决方法:

由于您的情况与标准有所不同-即您的Document Root目录位于homedir中,除其他外-我想提醒您,以下建议仅用于您确定权限问题的主要原因.请记住,SELinux系统最重要的一点是提供所需的最小权限集.因此,这些步骤可能不是全部必需的,因为它们可能会进一步降低系统的安全性.

注意另外,也许是最重要的一点,您需要确保DAC策略允许对服务器具有必要的rwx权限,因为SELinux仅在允许DAC权限之后才生效;否则,可能会更改.也就是说,如果不允许在目录/文件上使用rwx,则DAC策略会阻止它,而SELinux甚至不会处理它.

>尝试将公共目录和子目录的文件上下文更改为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/

>此外,您应检查并确保已使用以下命令启用了正确的seboolean:

# getsebool -a |grep -i http

AFAIK,httpd_builtin_scripting,httpd_can_network_connect和httpd_enable_homedirs应该设置为on.

    # setsebool httpd_... on

对需要启用的所有布尔值执行上面的命令.但是,此更改是临时的,除非您还向setsebool添加-P选项以使其持久.

>检查并确保您的php-script具有必要的文件上下文

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.

上一篇:云计算第一章:服务器硬件及linux初体验


下一篇:忘记centos的root用户密码怎么办?