是否可以在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