我需要给我的服务器上的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设置(被其他答案覆盖)。