设置SFTP的目标如下:
1. 用户只能通过sftp访问,不能登录SSH
2. 用户要被锁定在特定的目录下,没有读写其它目录的权限
下面开始:
1、首先修改sshd的配置文件:
$ sudo nano /etc/ssh/sshd_config
2、将该文件的末尾修改如下:
#Subsystem sftp /usr/lib/openssh/sftp-server #该行注释掉
Subsystem sftp internal-sftp
#UsePAM yes #该行同样注释掉,或者移到Subsystem sftp internal-sftp的上面
Match Groupsftp-users #匹配sftp组,如为单个用户可用:Match User test;
ChrootDirectory /sftphome/
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
#ChrootDirectory:指定用户被锁定到的目录,为了能够chroot成功,该目录必须属主是root,并且其他用户或组不能写
3、下面建立sftp-users组和一个测试用户test,并把该用户加到sftp-users组:
$ sudo groupadd sftp-users
$ sudo gpasswd -a testsftp-users
$ sudo passwd test
4、更改文件夹属性:
sudo chown root /sftphome/
sudo chmod 755 /sftphome/
sudo mkdir /sftphome/writeable
sudo chown -R test:sftp-users /home/bob/writeable #更改文件夹及其子文件夹的属主
sudo chmod 755 /home/bob/writeable
5、重启SSH服务 sshd:
$ sudo /etc/init.d/ssh reload
参考:http://yhf8377.blog.163.com/blog/static/176860177201210217219800/
http://askubuntu.com/questions/134425/how-can-i-chroot-sftp-only-ssh-users-into-their-homes
linux权限
Linux权限分为 r=4,w=2,x=1,即读,写,执行,权限一共有7(4+2+1),每个文件都有权限,比如:
以share文件夹为例说明, 每个文件夹前面有对应的权限列表( ls -all ),
三个一组: rwx rwx r-x
拥有者 拥有者所在用户组 其他人
拥有者是test,所在的组是sftp-users ,test的权限是可读可写可执行,他所在用户组的所有成员也拥有这些权限,需要如下设置:
1. 更改文件拥有者
sudo chown test:sftp-users -R share # -R 代表递归整个目录
2.提升用户及其用户组的权限
sudo chmod 775 share
第一个7 代表zq的权限,第二个7代表test所在用户组的权限,第三个5代表其他人的权限(5=4+1,即可读可执行,不可写)