我有一台专用服务器,但只有 root 可以访问我的托管目录。当我尝试以其他用户身份访问该目录时,所有其他用户都会被拒绝访问。
我创建了一个新用户,并将该用户添加到 apache 组(因为该目录归 apache 所有)
# usermod -a -G apache newuser
也尝试过
# usermod -g apache newuser
是的,我已重新登录并重启了 SSHD
我已将权限设置为 775,但由于我正在运行 Magento,因此并未递归设置。
drwxrwxr-x+ 8 apache apache 4096 Apr 7 21:52 website
我也尝试使用访问控制列表,如下所示
setfacl -m u:user:rw /var/www/html/website
# file: website
# owner: apache
# group: apache
user::rwx
user:user:rw-
user:userb:rw-
group::r-x
mask::rwx
other::r-x
答案1
如果有人遇到类似的问题,这就是我所做的。我希望这是正确的方法,但我不确定。
权限中的 +
drwxrwxr-x+
表示目录上有有效的访问控制列表。
我按照如下所示递归更改了 ACL 的权限,并为用户添加了执行权限。
setfacl -Rm u:user:rwx /var/www/html/website
答案2
进入top
然后观察 httpd 进程。在 USER 列的最左边应该显示类似“nobody”或“www-userdata”之类的内容。记住它。
然后更改为您的主目录,例如 /home/myuser/public_html。
跑步
cd /home/myuser/
跑步
chown -R nobody:nobody public_html
(如果不同的用户运行 apache 进程,则替换 nobody:nobody)
根据您的 PHP 处理程序(suPHP),您可能需要:
在目录上运行chown user:nobody public_html
,其中用户是该目录所属用户的名称。
为了确保万无一失,请验证文件是否已 chmodded 644 且目录是否已 750/750。public_html 应该是 750,而不是 775
如果您对任何内容发出 775,那么您将暴露自己,并向将利用您的服务器的外部人员授予读取和执行权限。他们可能无法写入文件,但如果他们使用缓冲区溢出漏洞并获得访问权限,他们就不必这样做,并且可以在您的服务器上执行文件。