我看到几个帖子说文件上传后出现意外文件权限问题。我试过他们的解决方案,但没有成功,我不得不以我的方式提出这个问题。
我在 Debian 6 上运行 Nginx 。nobody:nogroup
我将根 Web 文件夹更改/usr/share/nginx/html
为nobody:nogroup
。现在我使用 WinSCP 将文件上传到机器,但我使用root
帐户。如果我创建新目录或更新新文件,所有权将是root:root
。我是 Linux 世界的新手,我目前在将某些内容上传到我的服务器后打开一个 shell 来更改 wwwroot 的所有权。
以 root 身份上传文件但保留文件和目录的最佳做法是什么nobody:nogroup
?我是否应该为 nobody 帐户设置密码并使用此帐户上传文件?
答案1
您可以更改上传目录的组chgrp nogroup UPLOAD_DIR
并为其设置组 ID chmod g+s UPLOAD_DIR
- 在此目录中创建的文件将具有组nogroup
。您可以使用设置默认权限umask 002
(也许在启动 WinSCP 会话时?),并且所有文件都将具有rw
组的权限。所有者仍然是 root,但 Nginx 进程应该能够通过nogroup
成员身份管理文件。
答案2
我不知道有任何针对新文件的自动解决方案。不过,如果你发现你需要不断手动更改所有权,你可以利用各种 WinSCP 功能来让你的生活更轻松。
WinSCP 允许改变所有权在 GUI 中(但是如果您使用 OpenSSH 服务器,则必须使用数字 GID/UID)。
或者,您可以从 WinSCP 本身执行chown
命令,以避免打开单独的 shell 终端。您甚至可以设置一个自定义命令 chown nobody:nogroup .
在 WinSCP 中加快此速度。
您甚至可以为命令分配键盘快捷键,以使操作更加简单:
要更新文件,请确保禁用传输设置转移到临时文件名因为这实际上会为每次传输创建一个新文件(默认情况下仅适用于超过 100 KiB 的文件)。禁用时,WinSCP 仅更新现有文件,因此所有权得以保留。
https://winscp.net/eng/docs/resume#automatic
https://winscp.net/eng/docs/ui_pref_resume