我需要让SFTP访问我服务器上的webroot中的目录。我已将ben_files设置为用户并将其主目录设置为
/var/www/vhosts/mydomain.com/files
如果他连接普通的旧FTP,那就没关系了 - 他只限于那个目录,但要启用SFTP,我必须将他添加到bin / bash shell,这会突然打开我的整个服务器......
有没有办法给他SFTP访问权限,但没有打开我的所有目录?我真的希望他只限于他的家;)
谢谢!
答案 0 :(得分: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
答案 1 :(得分:3)
您可以尝试将其shell设置为/bin/rbash
受限制的外壳 如果以名称rbash启动bash,或者-r选项是 供应于 调用,shell变得受限制。受限制的外壳是 用过的 设置比标准shell更受控制的环境。 它 行为与bash相同,但以下情况除外 是 不允许或不执行:
· changing directories with cd
加上更多......
确保在使用之前完全理解允许和禁止的内容。
答案 2 :(得分:3)
看看rssh。它可能已经打包好您的o / s发行版。
答案 3 :(得分:0)
使用pam_chroot。
这是一本很好的手册:http://www.howtoforge.com/chroot_ssh_sftp_debian_etch
答案 4 :(得分:-2)
您还可以使用以下方法将用户shell设置为/ bin / false:
usermod -s / bin / false username
限制他们进入ssh'ing并且只能sftp(或ftp,如果设置)
我将此用于sftp usres,以及提到的chroot设置(由其他答案覆盖)。