我想为另一个用户主文件夹的子文件夹设置一个被监禁的 SFTP 帐户,但希望该子文件夹中所有内容的所有者保持不变,包括 sftp 用户上传和创建的新文件和文件夹,同时仍然允许访问该子文件夹的文件和文件夹,就好像 SFTP 用户是父用户一样。
rawny bawb-sftp /home/rawny <- rawny 拥有这个 /home/rawny/sftp <- rawny 也拥有这个,但是 bawb-sftp 可以上传到它,编辑文件等
bawb-sftp 上传文件 /home/rawny/sftp/lol.txt rawny 仍然应该拥有该文件,就好像他首先创建了该文件一样,即使 bawb-sftp 是上传该文件的人。
基本上,我想我要求的是一个 sftp 监狱,它可以作为另一个用户的严格限制的直通/傀儡?
答案1
假设是 Linux,使用组是一种方法。创建一个包含rawny
和的组bawb-sftp
,然后使用chgrp thatgroup /home/rawny/sftp
(假设从空目录开始,否则添加 -R 表示递归)。
接下来,在目录上设置 suid 和 sgid 位,并授予用户和组 rwx 访问权限:(chmod 677? /home/rawny/sftp
将 ? 替换为您想要的世界访问权限。常见的选择是 5(rx)1(x)和 0,具体取决于您是否希望其他人可以访问它。)如果文件夹不为空,不要使用 -R,您需要将 suid/sgid/x 位单独应用于每个文件夹。
suid/sgid 位在 Linux 中的目录上使用时,会导致新创建的文件和子目录自动拥有/分组与目录相同(子目录也将是 suid/sgid),因此在其下创建的所有文件都将由/home/rawny/sftp
拥有rawny
并可以访问它们。请注意,可能需要修改才能创建具有组写入权限的文件(thatgroup
bawb-sftp
umask
参见此处,但使用 umask 00?其中 ? 是 2 6 或 7,与之前的选项相匹配)