![SFTP:被监禁(chrooted)目录中的文件符号链接](https://linux22.com/image/598906/SFTP%EF%BC%9A%E8%A2%AB%E7%9B%91%E7%A6%81%EF%BC%88chrooted%EF%BC%89%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5.png)
我正在尝试设置 sftp,以便少数受信任的人可以访问/编辑/创建一些文件。我已将用户关入其主目录 (/home/name),但遇到了问题。我希望他们也能够访问 VPS 的其他部分,因为它也是游戏服务器、网络主机等,并且我希望他们能够完全控制其被关入目录之外的文件。
我尝试创建指向所需目录的符号链接 (ln -s),但如预期的那样,它不起作用。我尝试 (cp -rl) 指向我想要授予访问权限的文件,它起作用了 - 他们可以编辑目录中的文件,并更改存储在监狱外的文件。但他们无法创建新文件(他们可以,但不会更新监狱外的文件)。我知道我可能没有以“正确的方式”做到这一点,但我该怎么做才能做我想做的事?
答案1
符号链接纯粹是符号:它们只包含路径,因此当您打开符号链接时,操作系统会读取路径并使用该路径。在 chroot 环境中,链接(尤其是具有绝对路径的链接)通常不会指向它们在正常环境中指向的同一位置。
如果服务器操作系统是 Linux,最好的办法是将整个目录绑定挂载到 chroot 目录内的某个位置。使用这种方法时,请务必记住,这不是目录的副本,此处删除的任何内容都将从其他目录中删除(如果用户可以删除mv
文件或,这一点很重要rm -rf
)。要执行此操作:
mount --bind /some/directory /somewhere/else
目录中的文件应该是真实文件。这里的符号链接可能会遇到与您首先尝试链接到文件时遇到的相同问题。