Linux 权限 / chown 与 ftp

Linux 权限 / chown 与 ftp

我对 Linux 权限/所有权存在(我猜是基本)问题。

我有 FTP 用户“ftp”。然后,我的服务器上的所有文件都归属于不同的用户“nginx”。

为了使网站正常运行,我需要将所有文件设置为用户 nginx,否则它们会返回各种错误。

要更改 FTP 服务器上的文件,我需要将权限设置为用户“ftp”,否则当我尝试编辑文件时会被拒绝权限。

如何解决这个问题?

chown -R ftp:ftp现在,当我想通过 FTP 编辑某些文件时,我总是必须这样做。

答案1

听起来您需要一个用于 ftp 和 nginx 的公共组。就您而言,您可能可以使用 ftp 组。我不知道您的 Web 服务器是否需要对文件的写访问权限,但如果不需要,请进入您的内容目录并运行以下命令:

chown -Rh ftp:ftp .
find . -type d -exec chmod g+rxs {} \;
find . -type f -exec chmod g+r {} \;

如果你确实需要来自 Web 服务器的写权限,请执行以下操作:

chown -Rh ftp:ftp .
find . -type d -exec chmod g+rwxs {} \;
find . -type f -exec chmod g+rw {} \;

这些命令将使所有内容归 ftp:ftp 所有,并使这些文件可读且(在第二种情况下)可由 ftp 组中的任何人写入。它还会在所有目录上设置 setgid 位,这将使所有新文件归 ftp 组所有。完成后,将 nginx 用户添加到 ftp 组:

usermod -a -G ftp nginx

并重新启动您的 Web 服务器以使其生效。

您可能还需要强制将写入这些目录的所有文件设置为可由该组写入。您可以通过将 ftp 和 web 服务器的 umask 设置为 002 来实现这一点,或者使用 acl:

setfacl -Rdm g::rwx .

相关内容