2009-10-06 62 views
33

我需要为我的服务器上的webroot内的目录提供SFTP访问权限。我已经设置了ben_files作为一个用户,并建立自己的主目录Linux shell将sftp用户限制到他们的主目录?

/var/www/vhosts/mydomain.com/files

这是所有罚款,如果他与普通的老式FTP连接 - 他只是限制到那个目录,但为了启用SFTP我不得不将他添加到bin/bash外壳,这突然打开了我的整个服务器...

有没有一种方法让他SFTP访问,但没有打开所有我的目录?我真的很喜欢他只限于他的家;)

谢谢!

回答

46

OpenSSH ≥ 4.8支持ChrootDirectory指令。

加入/etc/sshd_config/etc/ssh/sshd_config或任何你安装的全球sshd配置文件是:

 
Match user ben_files 
     # The following two directives force ben_files to become chrooted 
     # and only have sftp available. No other chroot setup is required. 
     ChrootDirectory /var/www/vhosts/mydomain.com/files 
     ForceCommand internal-sftp 
     # For additional paranoia, disallow all types of port forwardings. 
     AllowTcpForwarding no 
     GatewayPorts no 
     X11Forwarding no 
+0

嗨,我得到一些错误 - 启动sshd:/ etc/ssh/sshd_config:第113行:错误配置选项:匹配和/ etc/ssh/sshd_config:第115行:错误的配置选项:ForceCommand。这些都阻止sshd再次回来。有任何想法吗? – MrFidge 2009-10-07 10:44:40

+0

您可能没有足够新的SSH版本。 – ephemient 2009-10-07 14:29:52

+0

啊,是啊,我错过了你的答案 - 我们在4.3,我会考虑让升级。 – MrFidge 2009-10-08 09:27:51

3

你可以尝试如果bash启动名为rbash,或-r选项是 调用所提供 他的壳设置/bin/rbash

受限shell ,在shell成为受限。受限制的外壳是 ,使用 来设置比标准外壳更受控制的环境。 它 行为相同,不同之处来砸下列 是 禁止或不执行:

·  changing directories with cd 

加上更多...

确保你完全理解什么是允许的,不允许前你用这个。

+0

rbash在发行版中,但它似乎不允许sftp - 我将不得不查看配置我猜。谢谢你的提示! – MrFidge 2009-10-06 20:20:16

3

看看rssh。它可能已经被打包用于您的o/s分发。

+0

它没有包装,但这是完美的!我会看看尽快安装;)谢谢! – MrFidge 2009-10-06 20:19:27

-1

您还可以设置用户通过使用shell为/ bin /假:

usermod命令-s /斌/假的用户名

他们范围限制SSH从'ing并且只能sftp(或者ftp,如果设置的话)

我使用sftp usres以及提到的chroot设置(其他答案)。

+0

当我将shell设置为/ bin/false时,我不能再sftp或scp了! – Jeach 2014-08-28 22:20:46

+2

'/ bin/false'限制任何类型的登录尝试。你的信息是错误的。改用'/ sbin/nologin' – hayonj 2015-02-17 20:48:04

相关问题