昨天,我的主管将他的一个目录挂载到我的服务器上。问题是,我无法访问它们,而且我现在无法联系他。当我输入 URL 时,出现此错误:
Forbidden
You don't have permission to access /~<username>/core/ on this server.
我尝试进入“核心”目录并执行以下操作:
chmod -R 755 *.*
但即使更改了所有权限,我仍然无法访问!奇怪的是,我能访问和编辑文件。
答案1
Apache 需要访问文件系统路径中的每个目录/~<username>/core/
。
这几乎总是一个权限问题/home
。
chmod 755 /home/
应该可以帮你修复它。
或者 Justin 谈到的 SELinux 问题。
答案2
如果您使用 SELinux(默认情况下),那么您需要允许 Apache 访问用户主目录:
setsebool -P httpd_enable_homedirs on
就这样。
答案3
请注意,*.* 在 unix 中的含义与在 ms-dos 和 windows 中的含义不同。文件名“扩展名”在 unix 中并不像在 DOS 中那样重要,它们只是组成文件名的字符串的一部分。
chmod -R 755 *.*
仅更改名称中带有“.”的文件和目录的权限。要更改所有文件(无论它们是否带有.),请尝试:
chmod -R 755 *
甚至更好的是,只有目录(而不是普通文件)需要是可执行的,因此请尝试以下操作:
chmod -R a+rX,u+w *
这会将所有文件更改为所有用户可读、所有者可写,并且还会在目录上设置执行位(“X”而不是“x”)。
答案4
您在服务器上使用 SELinux 吗?如果您使用并且将其设置为“强制”,则可能需要将目录的上下文更新为httpd_sys_content_t
,否则 Apache 将被拒绝访问。
您可以通过执行以下操作来更改目录的上下文:
chcon -Rv --type=httpd_sys_content_t /~<username>/core
这会将目录的上下文及其内容更改为适合 HTTPD 服务(即 Apache)工作的上下文。
更多信息可以在这里找到: http://wiki.centos.org/HowTos/SELinux/