1Ra*_*007 5 permissions centos forbidden apache-2.4
我正在尝试设置一种情况,可以通过 FTP 传输到我的 Linux CentOS 7 服务器并从我的 Windows 7 系统更新网站文件。此时,我可以使用 vsftp (/home/robert) FTP 到我的用户文件夹,并且 Apache 似乎适用于默认网站 (/var/www/html)。我为端口 8080 创建了一个虚拟主机,如果我将其指向 /var/www/8080/public_html,它工作正常,但一旦我将其指向 /home/robert/public_html,它就会返回 403 Forbidden。您没有权限访问此服务器上的 /。\napache 错误日志显示
\n\n[Wed Mar 18 16:12:27.546621 2015] [core:error]\n[pid 21204] (13)Permission denied: [client 192.168.1.66:57090]\nAH00035: access to / denied (filesystem path '/home/robert')\nbecause search permissions are missing on a component of the path\nRun Code Online (Sandbox Code Playgroud)\n\napache conf 文件 (/etc/httpd/conf/httpd.conf) 有此虚拟主机条目
\n\nListen 80\nListen 8080\n\n# Virtual Hosts\n<VirtualHost *:8080>\n ServerName 192.168.1.10:8080\n# DocumentRoot /var/www/8080/public_html\n DocumentRoot /home/robert/public_html\n</VirtualHost>\nRun Code Online (Sandbox Code Playgroud)\n\n/home/robert/public_html/index.html 的权限如下
\n\ndrwxr-xr-x. 7 root root 66 Mar 9 17:16 home\ndr-x---r-x. 15 robert robert 4096 Mar 16 22:51 robert\ndrwxr-xr-x. 2 robert robert 23 Mar 17 23:28 public_html\n-rwxr-xr-x. 1 robert robert 332 Mar 17 23:28 index.html\nRun Code Online (Sandbox Code Playgroud)\n\n这似乎是一个权限问题,但我不清楚如何继续。我需要将 apache 用户添加到我的 robert 个人组吗?selinux 在这里做了什么吗?任何帮助,将不胜感激。谢谢。
\n\n更新: 好吧,在我看来,所有网站都应该位于 /var/www/ 文件夹下。看来selinux 想要这样。那么我如何远程 FTP 并访问(读/写)网站文件???假设我希望用户 robert 通过 FTP 访问 /var/www/testweb 并能够读取/写入那里的文件。这是怎么实现的???
\n\n更新:我查看了发布的答案并运行了下面的三个命令
\n\nsetsebool -P httpd_enable_homedirs on\nsetsebool -P ftp_home_dir on\nrestorecon -r -v /home\nRun Code Online (Sandbox Code Playgroud)\n\n看起来好像做了什么,但结果是一样的。我仍然可以 FTP 到用户文件夹,但网站不显示...403 错误。
\n\n更新:我还尝试运行以下命令,但是它在所有文件上都出错了
\n\n我运行的命令
\n\nchcon -Rv --type=httpd_t /home/robert/public_html\nRun Code Online (Sandbox Code Playgroud)\n\n我收到的错误
\n\nchcon: failed to change context of \xe2\x80\x98index.html\xe2\x80\x99 to \xe2\x80\x98unconfined_u:object_r:httpd_t:s0\xe2\x80\x99: Permission denied\nRun Code Online (Sandbox Code Playgroud)\n\n我还使用 setenforce 0 关闭了 selinux,但仍然得到 403。 \n感谢您的建议...谢谢。
\n我想我明白了。Apache 正在工作,但使 ftp 工作同时仍然运行 selinux 的最后一个命令是
setsebool -P ftpd_full_access on
Run Code Online (Sandbox Code Playgroud)
一旦我设置好了,FTP 就可以正常工作了。现在,我可以从我的 Windows 7 计算机进行 FTP、更新、发布更改我的网站文件,并且 Apache 会愉快地交付内容。哇……花了几天时间才解决。疯狂的。我设置了另一个用户只是为了测试,一切正常。