Linux shell将sftp用户限制在他们的主目录下?

我需要给我的服务器上的webroot内的目录SFTP访问。 我已经build立了ben_files作为用户,并设置他的主目录

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

这一切都很好,如果他连接到普通的旧FTP – 他只限于该目录,但启用SFTP我不得不将他添加到bin / bash shell,这突然打开我的整个服务器…

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

谢谢!

OpenSSH≥4.8支持ChrootDirectory指令。

添加到/etc/sshd_config/etc/ssh/sshd_config或任何您的安装程序的全局sshd配置文件是:

匹配用户ben_files
         #以下两个指令强制ben_files变成chroot
         #只有sftp可用。 没有其他的chroot设置是必需的。
         ChrootDirectory /var/www/vhosts/mydomain.com/files
         ForceCommand internal-sftp
         #对于额外的偏执狂,禁止所有类型的端口转发。
         AllowTcpForwarding号码
         GatewayPorts no
         X11转发号码

您可以尝试将其shell设置为/bin/rbash

RESTRICTED SHELL如果bash以名称rbash启动,或者在调用时提供了-r选项,则shell将受到限制。 受限制的外壳用于设置比标准外壳更受控制的环境。 它的行为与bash的行为相同,但不允许或不执行以下行为:

  · changing directories with cd 

加上更多…

确保你完全理解什么是允许和不允许的,然后再使用它。

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

使用pam_chroot。

这是一个很好的手册: http : //www.howtoforge.com/chroot_ssh_sftp_debian_etch

您还可以使用以下命令将用户shell设置为/ bin / false:

usermod -s / bin / false用户名

限制他们从ssh'ing和只能sftp(或FTP,如果它的设置)

我用这个sftp usres,以及提到的chroot设置(被其他答案覆盖)。