如果我将目录 a 的 Chmod 改为 777。Everyone 到底是什么意思?是指不使用密码或其他方式连接 FTP 的任何人吗?
我有一个 Wordpress CMS,我正在尝试安装一个插件,但是它决定无法将插件下载到临时目录,所以我猜我需要 chmod 某些东西,没有说什么。但我不想 chmod 为 777 并让任何人都可以访问服务器?
答案1
正如 Christopher Evans 所说,将插件和临时目录的所有权转让给运行 Web 服务器的用户(或组),并设置适当的权限。如果您无权转让目录,那么您只能将模式设置为 777(全球可写)。
其余所有内容都是简略的 Unix 权限讲座 - 您可以从中获得相同的内容,但man chmod
包含更多详细信息。
Unix 权限的三个字段是所有者,团体和其他。
每个字段都是一个位掩码,其值为1(执行(&列出目录的内容)),2(写)和4(读)
文件的权限由这些值决定 -
- 777授予所有者、组和“其他人”(既不是所有者也不是组内的人员)完全访问权限,以读取、写入/修改和执行/列出相关文件/目录的内容。
- 007仅向“其他”人员授予该级别的访问权限——所有者无权访问
- 770授予用户和组完全访问权限,但拒绝其他所有人
这可能就是您想要做的 - 保留自己为所有者并将目录 chown 给网络服务器的组。
答案2
user group other(anybody)
chmod 777 directory - gives rwx - rwx - rwx
r - read
w - write
x - execute
基本上您授予了完全访问权限。
答案3
我建议将插件或临时目录的所有权转让给运行 Web 服务器的用户。
答案4
正如其他答案所述,这三个数字按以下顺序确定访问权限:
- 所有者(匹配 UID)
- 文件 GID 的成员(不包括所有者)
- 前两个规范未涵盖的任何 UID。
因此,您可以拥有一个文件,该文件实际上向文件组或所有者以外的人授予更多访问权限:
[dave@store01 tmp]$ touch this
[dave@store01 tmp]$ sudo chmod 007 this
[dave@store01 tmp]$ ls -l this
-------rwx 1 dave users 0 Jan 20 22:15 this
[dave@store01 tmp]$ cat this
cat: this: Permission denied
例外情况是 root。任何 root 拥有 root 控制权的文件都不能被拒绝给 root(*)。
[root@store01 tmp]# touch that
[root@store01 tmp]# chmod 007 that
[root@store01 tmp]# ls -l that
-------rwx 1 root root 0 Jan 20 22:17 that
[root@store01 tmp]# cat that
[root@store01 tmp]#
在您的特定情况下,将目录的 chmod 设置为 777 意味着任何可以访问该目录的人都可以完全访问所有内容。最简单的方法可能是授予 777 访问目标目录的权限,进行上传,然后立即锁定目录。您不会希望您的系统保持这种状态。
我个人会尝试了解哪个 UID 与失败的交易有关,并查看授予不同的所有权或组访问权限是否会更好,这取决于我立即想要做的事情以及我将来可能想要做的事情。
--
(*) = 使用此机制。ACL 和扩展属性会让事情变得更加复杂,但这超出了这个问题的范围