Centos6下限制用户只能sftp并出不了家目录
时间:2014-05-04 22:39 来源:linux.it.net.cn 作者:it
一般托管在我服务器上的网站我都不提供任何管理方式,因为这样比较安全,同时也一直懒得去研究怎么把sftp限制在家目录里,而且不想搭ftp……
所以说该来的总是要来的,因为各种各样的原因,今天就设法来搞定这个问题。
事实再一次证明,网上的教程一般都是坑爹的,可能不久以后有别人按我这篇东西操作以后也会这么想……
言归正传,我首先尝试了rssh,叉这东西各种不靠谱,反正我配置完了能连却不给看目录
接下来在各种Google时发现CentOS6以后自带的OpenSSH版本就已经支持Chroot了(版本4.8以上),然后开始研究自带的。
我所使用的系统为CentOS 6.2
下面开始配置Chroot
1.检查OpenSSH版本
ssh -v
高于4.8就行了,老版本系统OpenSSH版本过低的话就先升级下,升级方法自己Google
2.创建用户
useradd woodragon
3.配置sshd_config
vim /etc/ssh/sshd_config
找到下面这行在前面加个#将其注释掉
Subsystem sftp /usr/libexec/openssh/sftp-server
在最后添加如下内容
Subsystem sftp internal-sftp
Match User woodragon
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
注:
Match User woodragon
最后面的就是希望匹配的用户名,多个用户名用逗号分隔,将User换成Group来匹配用户组,同样逗号分隔
ChrootDirectory
后面的路径,%u代表用户名,如果整个换成%h就代表用户的home路径
ForceCommand
据说一定要加,我没试不加会怎么样
AllowTcpForwarding no
如果不希望该用户能使用端口转发的话就加上,否则删掉
X11Forwarding no
同上
4.设定Chroot目录权限
chown root:woodragon /home/woodragon
chown 755 /home/woodragon
这一步非常非常重要,我就是因为权限没设对卡了一下午= =
需要被限制的目录所属者必须是root,所属组必须是希望被限制的用户所在的组
如果所属者没有设成root,那么你会发现压根不让你登录,查看secure日志会有权限错误的记录,比如 fatal: bad ownership or modes for chroot directory XXXXXX
如果所属组设成了root,那么你会发现虽然能登录,但是任何文件夹都无法被列出来,不过我没试设成除了root以外非目标用户组会有什么事情
最后还有一点非常关键的是,如果你的目录在比较深的地方,那么从目标文件夹到根目录中间所有路过的文件夹所属组都必须是root,否则会发生和上面一样的事情
5.重启sshd
service sshd restart
完成……
WooDragon's Blog内容均为原创,转载请注明出处
(责任编辑:IT)
一般托管在我服务器上的网站我都不提供任何管理方式,因为这样比较安全,同时也一直懒得去研究怎么把sftp限制在家目录里,而且不想搭ftp…… 所以说该来的总是要来的,因为各种各样的原因,今天就设法来搞定这个问题。 事实再一次证明,网上的教程一般都是坑爹的,可能不久以后有别人按我这篇东西操作以后也会这么想…… 言归正传,我首先尝试了rssh,叉这东西各种不靠谱,反正我配置完了能连却不给看目录 接下来在各种Google时发现CentOS6以后自带的OpenSSH版本就已经支持Chroot了(版本4.8以上),然后开始研究自带的。 我所使用的系统为CentOS 6.2 下面开始配置Chroot1.检查OpenSSH版本
高于4.8就行了,老版本系统OpenSSH版本过低的话就先升级下,升级方法自己Google 2.创建用户
3.配置sshd_config
找到下面这行在前面加个#将其注释掉
在最后添加如下内容
注: Match User woodragon
最后面的就是希望匹配的用户名,多个用户名用逗号分隔,将User换成Group来匹配用户组,同样逗号分隔 ChrootDirectory 后面的路径,%u代表用户名,如果整个换成%h就代表用户的home路径 ForceCommand 据说一定要加,我没试不加会怎么样 AllowTcpForwarding no 如果不希望该用户能使用端口转发的话就加上,否则删掉 X11Forwarding no 同上
4.设定Chroot目录权限
这一步非常非常重要,我就是因为权限没设对卡了一下午= =
需要被限制的目录所属者必须是root,所属组必须是希望被限制的用户所在的组 如果所属者没有设成root,那么你会发现压根不让你登录,查看secure日志会有权限错误的记录,比如 fatal: bad ownership or modes for chroot directory XXXXXX 如果所属组设成了root,那么你会发现虽然能登录,但是任何文件夹都无法被列出来,不过我没试设成除了root以外非目标用户组会有什么事情 最后还有一点非常关键的是,如果你的目录在比较深的地方,那么从目标文件夹到根目录中间所有路过的文件夹所属组都必须是root,否则会发生和上面一样的事情 5.重启sshd
完成……WooDragon's Blog内容均为原创,转载请注明出处 |