更新 #1:

更新 #1:

我正在尝试在 Linux 机器上设置文件夹权限。我有这个主文件夹:/home/master/staging

此文件夹包含包含用户 sftp 放置点的子文件夹。我需要为此设置文件夹权限。

我有以下用户:

主服务器 sftpuser1 sftpuser2

Master 的主目录是 /home/MASTER

我对文件夹 /home/master/staging/ 进行了以下操作:

drwxrwx---. 19 MASTER MASTER  4096 Apr 14 02:21 .
drwxrwx---.  6 MASTER MASTER   199 Mar  5 12:20 ..
drwxrwx---.  2 MASTER MASTER    10 Apr 15 00:51 MASTER
drwxrwxr-x.  2 sftpuser1 MASTER    10 Apr 15 00:28 sftpuser1
drwxrwxr-x.  2 sftpuser2 MASTER    10 Feb 15 08:02 sftpuser2

假设 MASTER 是 MASTER 组的组所有者,我阅读了以下内容:

MASTER "should" be able to read/write all folders
sftpuser1 should be able to read/write in folder /staging/sftpuser1
sftpuser2 should be able to read/write in folder /staging/sftpuser2

sftpuser1 和 2 已按以下方式设置:

usermod sftpuser1 -s /bin/false
usermod sftpuser1 -d /home/master/staging/sftpuser1
usermod sftpuser2 -s /bin/false
usermod sftpuser2 -d /home/master/staging/sftpuser2

综上所述,两个 sftp 用户都无法使用 sftp 查看自己的文件夹,并且用户 MASTER 无法在本地进入这两个 sftpuser 文件夹。所有权限都被拒绝。

我这里遗漏了什么?目标是 sftpuser1 只能看到 sftpuser1;sftpuser2 只能看到 sftpuser2;而 MASTER 应该能够看到所有这些。谢谢!

更新 #1:

MASTER 现在能够查看 sftpuser 的文件夹。组权限解决了这个问题。

答案1

不存在“组的组所有者”之类的东西(在 *nix 中也没有“文件夹”,我们称之为目录,因为它应该是目录)。在传统的 *nix 权限中,所有者是用户,还有组和其他。

由于您已经修复了 MASTER 用户的访问权限,因此您需要允许 sftpuserX 访问。但您的父目录 /home/master 仅允许 MASTER 用户和 MASTER 组访问它。这就是您的 sftpuserX 无法访问 /home/master/sftpuserX 目录的原因。

除非您在 chroot 环境中运行 sftp,否则这种设置不是一个好主意。因为如果您允许 sftpuserX 读取 /home/master 目录,他们实际上将有权访问 MASTER 用户主目录中的每个文件。

我更愿意建议您为这些用户创建一个单独的目录,例如 /home/master/sftpuserX,将其组更改为 MASTER,并允许 g+rwx(完全组访问)访问该目录(保留 sftpuserX 作为所有者和完全访问权限)。如果您确实需要从那里访问这些目录,您可以添加从 /home/master/ 到 /home/sftpuserX 目录的符号链接。

另外,可以使用 ACL 扩展权限(检查 getfacl 和 setfacl 命令)。它们允许权限具有更大的灵活性,但管理起来会变得更加复杂。

相关内容