![Linux FTP/SSH 权限](https://linux22.com/image/518359/Linux%20FTP%2FSSH%20%E6%9D%83%E9%99%90.png)
我不太熟悉如何正确设置权限。目前,我们对服务器上的所有内容都执行 sudo 操作,否则我们就没有权限。我刚刚启动并运行了 FTP,但我没有权限在 wordpress 安装中创建目录。我注意到那里的一切...
-rw-r--r-- 1 root root
drwxr-xr-x 7 root root
我知道我不应该更改 root 文件,但为什么 root 拥有一切?以前在这里并设置这一切的服务器人员已经走了。这是最好的方法吗?还是我们应该有一个“webdev”组或类似的东西?
答案1
您肯定需要一个组来执行此操作。我会配置一个用于 FTP 访问的组。将用户放入您想要用于 FTP 用户的组中,然后我建议执行以下操作(假设 FTP 组称为 FTP,基本数据目录为 /ftpdata - 根据需要更改这些):
chown -R nobody:ftp /ftpdata
find /ftpdata -type f -exec chmod 664 {} \;
find /ftpdata -type d -exec chmod 2775 {} \;
这是您正在做的事情...
chown -R nobody:ftp /ftpdata
这会将 /ftpdata 下每个文件和目录的所有者设置为 nobody,将组设置为 ftp。
find /ftpdata -type f -exec chmod 664 {} \;
此命令将 /ftpdata 下的每个文件设置为模式 664,即对于所有者和组而言是可读写的,对于其他所有人来说是只读的。
find /ftpdata -type d -exec chmod 2775 {} \;
此命令将 /ftpdata 下的每个目录设置为 2775,即对于所有者和组而言是读写和执行的,对于所有人来说是读取和执行的,此外,在这些目录中创建的任何新文件都将归 ftp 组所有。
2775 中的 2 是“设置组 ID” - 每当在设置了该位的目录中创建新文件时,它都会使该文件的组与拥有该目录的组相同。如果没有这个,主要组不是 ftp 组的用户将创建由另一个组拥有的文件,并且该组的其他成员可能无法访问这些文件。
答案2
Root 不应该拥有一切。
创建一个组,将您的 FTP 用户添加到该组中。
为所需的目录和文件赋予适当的权限。此命令将使目录和文件可供所有者和组读取和写入,并可供所有人读取。
chmod -R 764 /the/path/to/files
如果这没有帮助,请 Google 搜索“Unix 文件权限”和/或“chmod”以获取进一步解释。