将文件/目录权限设置为 0777 会带来哪些风险?

Sta*_*arx 6 permissions php

目前,我无法将文件上传到 Web 文件夹。无论我做什么,即使将文件夹权限设置为 0777 我也无法将文件上传到它。出于好奇,我搜索了将文件权限设置为 0777 时相关的风险。

在这里找到了一个问题 ,但没有得到我正在寻找的答案。

我对这个问题完全不了解。相关风险是什么?

Cap*_*ule 7

在 a 上设置 0777 folder(我在这里谈论的是文件夹,而不是文件)不会像某些人所说的那样涉及任何执行安全风险。

Execute is needed on a directory to access the inode information of the files within. You need this to search a directory to read the inodes of the files within. For this reason the execute permission on a directory is often called search permission instead.

http://content.hccfl.edu/pollock/aunix1/filepermissions.htm

风险是:

  • 任何人都可以读取此文件夹中的文件(前提是文件本身r对尝试读取它的用户/组具有权限,或者对于others
  • 任何人都可以在此文件夹中创建文件(并可选择执行它们,但仅限于由该特定用户创建的文件)
  • 任何人都可以删除此文件夹中其他人拥有的文件(您的文件不受保护,无论他们拥有什么所有者/权限)

如果您想保护某些文件,您必须创建另一个具有“普通”权限的文件夹(仅适用于您的 rw,或适用于您和您的组的 rw)并将您的文件放入其中。

另一方面,没有人可以将不可执行的文件变成可执行文件(如果您不拥有该文件,则不允许使用 chmod)。

没有什么风险?

有些人认为 0777 是由文件夹中的每个文件继承的。这是错误的。没有w权限就不能编辑文件,因为它的父文件夹是0777。没有权限就不能读取文件r

如何保障?

如果您有权访问某个 shell 或者您的 FTP 客户端允许您更改文件的所有者并且您知道您需要哪个所有者,那么您可以创建该文件夹并将其所有者设置为 apache 进程(通常,nobodydaemonapache)和只需设置 0700 权限。问题是,其他用户(例如您在使用 FTP 客户端浏览时)将无法读取稍后由 PHP 创建的文件,这不一定是问题。

好的,但是文件呢?

我不是在谈论files执行固有的风险,因为您没有理由想要强制对x不应该首先执行的文件授予权限。

如果某些 Web 应用程序需要写入现有文件,则将其设置为 0666(如果所有者是 apache 用户,则设置为 0600)就足够了。