SFTP文件限制

是否可以在Linux上使用SFTP并将用户帐户限制为一个目录,以便不能获得其他目录列表? 是的,我必须使用SFTP,FTP只被那些喜欢被黑客攻击的人使用。

例如,我希望有人修改/ var / www / code /中的文件,但我不希望他们能够修改其他任何东西。 我甚至不希望他们看到内容/ tmp /。

(只要安全 ,我会接受一个“快速和肮脏”的解决scheme。)

从sshd_config手册页:

 ChrootDirectory
             指定chroot(2)到authentication之后的path。 这个
             path及其所有组件必须是根拥有的目录
             不能由任何其他用户或组写入。 在chroot之后,
              sshd(8)将工作目录更改为用户的家庭,
              RY。

             该path可能包含以下扩展的标记
             运行时一旦连接用户已被authentication:%%是
             replace为文字'%',%h被主目录replace
             的用户被authentication,并且%u被用户 - 
             该用户的名称。

              ChrootDirectory必须包含必要的文件和directo-
             以支持用户的会话。 用于交互式会话
             这需要至less一个shell,通常是sh(1)和basic / dev
             诸如空(4),零(4),stdin(4),stdout(4),stderr(4),
              arandom(4)和tty(4)设备。 用于文件传输会话使用
              ``sftp'',不需要额外的环境configuration,
             如果使用进程中的sftp服务器,虽然会话
             使用日志logging在chroot目录中需要/ dev / log
              (有关详细信息,请参见sftp-server(8))。

             默认不是chroot(2)。

另一种select也可以是用MySecureShellreplace它们的shell,它给你诸如Chroot,带宽限制,连接限制等等的function。

http://mysecureshell.sourceforge.net/

目前在虚拟主机环境中使用它,必须说它的工作很好。

SFTP不是一个function丰富的解决scheme,比如像vsftpd这样的FTP服务器。 它不支持chroot; 这是你在找什么。 FTPS(而不是SFTP)将是最好的解决scheme,因为它支持encryption,chroot等。vsftpd支持这一点,它很容易设置。

另外,请确保利用pam_listfile模块明确指出允许哪些用户通过ftpslogin。

http://pizzashack.org/rssh/可以让你设置受限制的ssh,以便只运行SFTP / SCP; 它也有助于build立chroot。

正如CarpeNoctem指出的那样,FTPS有时是一个更好的解决scheme。 ssh,SFTP,scp都是非常“低级的”,FTPS(如不安全的FTP)通常是更高级的(虚拟目录,虚拟用户等)。

我认为对于你所描述的情况来说,这两种方法都行得通。

我会使用这个configuration: http : //www.debian-administration.org/articles/590

然后,对于chrootfunction: http : //www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lenny