1.背景,作用、
系统:centos
新建一个sftp账户,只允许访问和操作对应的目录文件。其他文件夹则不显示。
2.创建用户
adduser test
3.给新建的用户设置密码
passwd test
4.禁止该用户登录 SSH
usermod -s /bin/false test
5.设置该用户的主目录
usermod -d /www/wwwroot/test/ test
这样用户登入的时候就会直接跳到该目录,但是用户还是可以访问其他目录,需要做一下限制。(注意这里的目录根据自己的需求选择,但是目录所属必须是root,下面会讲到。)
6.修改sshd_config
vim /etc/ssh/sshd_config
找到 Subsystem sftp 这一行,修改成Subsystem sftp internal-sftp
Match User test
ForceCommand internal-sftp
X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
AllowTcpForwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
ChrootDirectory /www/wwwroot/test
如果有多个用户需要做此操作的话,重复复制这段,将用户名和目录换成对应的就行,例如:
Subsystem sftp internal-sftp
Match User test
X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
AllowTcpForwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
ChrootDirectory /www/wwwroot/test
Match User test1
X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
AllowTcpForwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
ChrootDirectory /www/wwwroot/test1
ForceCommand internal-sftp
7.最后保存退出,重启sshd服务
service sshd restart
好了,到此该用户登入后只会限制在自己的主目录下,也看不到别的目录。
注意:用户登录后可能会发现以下问题:
1.显示一片空白,可能登入不上去,或者登上去但是没有目录显示。
因为ChrootDirectory设置的目录开始往上到系统根目录只能属于root用户。
ChrootDirectory设置的目录开始往上到系统根目录为止都不可以具有群组写入权限(最大权限 755)
所以/www/wwwroot/test/该目录往上所属都只能是root用户,这点需要注意一下。
2.用户不能做编辑上传等操作
这是因为当前用户并没有权限操作。
所以只需要在www/wwwroot/test/下新建一个新的目录供这个用户进行操作。mkdir /www/wwwroot/test
chown -R test:root /www/wwwroot/test
这样用户就可以在upload目录下进行操作了。
若遇到“跳过开始消息时出错。你的Shell可能与本程序不兼容(推荐使用Bash)。”改用sftp模式