服务器:红帽企业Linux服务器版本6.5(圣地亚哥)
使用openssh-server来允许sftp连接。
我试图限制用户到他们自己的个人主目录。 所以我修改/ etc / passwd设置用户“john”使用/bin/rbash而不是/bin/bash
john:502:503::/home/john:/bin/rbash
如果我这样做,约翰不能通过SFTP连接:连接closures,只要他login(SFTP消息是Connection closed )。 如果我将bash设置为/ bin / bash,他的connexion可以正常工作,但是john可以使用cd遍历整个服务器文件系统。
你能解释我做错了什么,以限制用户通过SFTP连接到自己的目录?
rbash不会让你用前导/运行命令,如果正在尝试,那么它就会退出。
除非你使用内部的sftp-server,否则exec /usr/libexec/sftp-server将会失败。
在sshd_config使用Subsystem sftp internal-sftp可以解决这个问题。
但是,使用rbash不会阻止sftp在文件系统中漫游,您可能想要chroot用户 。
你可以使用没有链接的正常shell,对于restrited shell,在/ etc / profile中放置这个
if [[ $USER == "pluto" ]]; then export PATH=$HOME/bin readonly PATH set -r fi
和
mkdir /home/pluto/bin as root ln -s /bin/ls /home/pluto/bin/ls
这样sftp工作和pluto只能使用ls命令