使用sftp ChrootDirectory,同时为其他用户提供对同一目录的写访问权


1

我需要允许不受信任的用户SFTP访问其Web服务器根目录下的特定目录。我不希望他访问系统的任何其他部分(包括网络的其余部分),所以我想到使用OpenSSH的 ChrootDirective。基本上类似于所描述的方法 这里

但是,似乎没有办法做到这一点,同时允许Web服务器(或git部署脚本)写入该目录,因为只要我这样做,我得到一个 fatal: bad ownership or modes for chroot directory component "/srv/www/" 错误。

我曾想过在其他地方创建目录 mount --bind 它,但限制似乎适用于chrooted目录,而不仅仅是它的父母,所以我再次遇到同样的问题。

我知道这是一个安全的事情,但这在那里并不真正相关:

  • 其他用户是可信的(好吧,相对而言,他们无论如何也无法添加suid文件)
  • 不受信任的用户只有SFTP访问权限,而不是SSH,所以他们不能以任何方式运行任何东西

那么,我忽略了什么?出于那种混乱的任何理智方式? (最好不要移动到FTP或在两个目录之间设置incron / rsync。)

Answers:


0

您可以将用户的主目录设置为他的chroot文件夹,如您链接到的教程中所述。然后登上 /srv/www/ 到用户主目录的子目录:

mkdir /home/jdoe/srv-www
mount --bind /srv/www /home/jdoe/srv-www

用sftp连接后,他必须进入子目录才能访问内容 /srv/www/。如果您愿意,可以锁定用户主目录和其他文件的权限。


也许我不清楚,但用户必须只能访问网络的子目录,而不是整个...例如。 /home/jdoe/srv-www/downloads ..同时 其他 用户也需要能够访问该目录。
himdel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.