为什么这些权限不能实现我的愿望?

为什么这些权限不能实现我的愿望?

我正在尝试将我的文件夹设为“apache”所有,然后 chmod 该文件夹,以便只有所有者和组可以访问它。我试图这样做是为了阻止访问者直接执行用户上传的文件。以下是我使用的命令:

chown -R apache uploads
chmod -R 770 uploads

来源:http://www.mysql-apache-php.com/fileupload-security.htm

相反,似乎虽然它阻止访问者查看文件,但它不允许 Apache 为他们提供服务。你有什么想法吗?

答案1

正如上面大部分所述:

  • 你的命令看起来不错,所以我怀疑你所做的事情的假设有问题
  • 请确保 apache 用户和组名为“apache”,而不是“apache2”、“httpd”或“www-data”或类似的名称
  • chmod -R 770 设置目录的执行位这些目录中的文件。您只应在目录中设置“x”位以允许目录遍历。

如果您想要排除“用户”组的所有用户访问“上传”目录,您可以将该目录明确分配给“用户”组,然后设置限制性组权限:

# group permissions override permissions for "others"
chown -R www-data:users /mydir
# group has no permissions, "others" can read and traverse
chmod 0705 /mydir
# change permissions on subdirs only
find /mydir -type d -exec chmod 0705 {} \;
# files should by default not be executeable anyway
find /mydir -type f -exec chmod a-x,o-w {} \;

如果你想找到 apache 用户,请执行(仅在 Linux 上)

ps axu | grep apache | grep -v root 

并查看最左边的列。也许在 grep 命令中用 httpd 替换 apache。谢谢,

尼克。

答案2

世界位需要只读。尝试chmod -R 774 uploads

应该先阅读文档。:) 看来 770 应该可以工作。确保 apache 守护进程用户和组拥有上传权限。组部分对于通过 Web 浏览器提供文件非常重要。

相关内容