Apache CentOS 7 403 禁止任何人吗?

Apache CentOS 7 403 禁止任何人吗?

我正在尝试设置一种情况,我可以通过 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。您无权访问此服务器上的 /。apache 错误日志显示

[Wed Mar 18 16:12:27.546621 2015] [core:error]
[pid 21204] (13)Permission denied: [client 192.168.1.66:57090]
AH00035: access to / denied (filesystem path '/home/robert')
because search permissions are missing on a component of the path

Apache conf 文件 (/etc/httpd/conf/httpd.conf) 包含虚拟主机的此项

Listen 80
Listen 8080

# Virtual Hosts
<VirtualHost *:8080>
    ServerName 192.168.1.10:8080
#   DocumentRoot /var/www/8080/public_html
    DocumentRoot /home/robert/public_html
</VirtualHost>

/home/robert/public_html/index.html 的权限如下

drwxr-xr-x.   7 root root   66 Mar  9 17:16 home
dr-x---r-x. 15 robert robert 4096 Mar 16 22:51 robert
drwxr-xr-x. 2 robert robert   23 Mar 17 23:28 public_html
-rwxr-xr-x. 1 robert robert 332 Mar 17 23:28 index.html

这似乎是一个权限问题,但我不清楚如何继续。我需要将 apache 用户添加到我的 robert 个人组吗?selinux 在这里做什么?任何帮助都将不胜感激。谢谢。

更新: 好吧,在我看来,所有网站都应该位于 /var/www/ 文件夹下。selinux 似乎希望如此。那么我如何远程 FTP 并访问(读/写)网站文件???假设我希望用户 robert 通过 FTP 访问 /var/www/testweb 并能够读/写那里的文件。如何实现???

更新:我查看了发布的答案并运行了以下三个命令

setsebool -P httpd_enable_homedirs on
setsebool -P ftp_home_dir on
restorecon -r -v /home

看起来它做了一些事情,但结果是一样的。我仍然可以通过 FTP 访问用户文件夹,但网站没有显示...403 错误。

更新:我也尝试运行以下命令,但它在所有文件上都出错了

我运行的命令

chcon -Rv --type=httpd_t /home/robert/public_html

我收到的错误

chcon: failed to change context of ‘index.html’ to ‘unconfined_u:object_r:httpd_t:s0’: Permission denied

我也使用 setenforce 0 关闭了 selinux,但仍然出现 403。希望得到建议...谢谢。

答案1

我想我明白了。Apache 正在运行,但在 selinux 仍在运行的情况下使 ftp 正常工作的最后一条命令是

setsebool -P ftpd_full_access on

一旦我设置了它,FTP 就可以正常工作了。所以现在我可以从我的 Windows 7 机器上使用 FTP,更新、发布更改我的网站文件,Apache 会愉快地提供内容。哇...花了好几天才解决。疯了。我设置了另一个用户只是为了测试,一切都很好。

相关内容