我对 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 .