#SFTP和FTP不一样,使用的端口为22端口,配置了FTP隔离 ,大概率不会对SFTP生效。此博客配置之后,用该账号登录SFTP 上传下载只会限制在配置文件夹内,并且禁止使用PuTTY SSH Shell功能,账号只作为文件传输账号,不作为管理账号。
1、新建账号MIN 密码MIN
adduser MIN
按照提示设置密码为:MIN,密码需要输入两次。ubuntu系统如果禁止大写的用户名,可以强制新增:
adduser --force-badname MIN
这里输入密码两次后,会让输入其他信息,点击Enter跳过就行,最后让选择[Y/n]的时候输入Y。

2、创建MIN账号专用的SFTP的“用户独立配置”
目标:只对MIN用户开放/home/forlinx/Desktop/MAX和/home/forlinx/Documents 两个文件夹的权限。
这里使用文件夹映射的方法实现,因为隔离目录需要满足OpenSSH要求,需要在root组内,但是/home/forlinx/的文件基本在forlinx组内。
新建对应的文件夹:
sudo mkdir -p /srv/sftp/MIN
sudo mkdir -p /srv/sftp/MIN/MAX
sudo mkdir -p /srv/sftp/MIN/Documents
设置最外层root组管理:
sudo chown root:root /srv/sftp/MIN
sudo chmod 755 /srv/sftp/MIN
然后映射对应的文件夹:
sudo mount --bind /home/forlinx/Desktop/MAX /srv/sftp/MIN/MAX
sudo mount --bind /home/forlinx/Documents /srv/sftp/MIN/Documents
设置成功后检查:
mount | grep /srv/sftp/MIN
会出现两条信息:
/dev/mmcblk0p8 on /srv/sftp/MIN/MAX type ext4 (rw,relatime)
/dev/mmcblk0p8 on /srv/sftp/MIN/Documents type ext4 (rw,relatime)

如果文件夹里面有内容,可以查看内容是否能看见:
ls /srv/sftp/MIN/MAX
3、修改SSH的配置文件
修改之前先备份一份:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
打开修改:
sudo vim /etc/ssh/sshd_config
在文件的末尾添加MIN用户的专用配置,不需要修改前面的全局配置。
追加:
Match User MIN
ChrootDirectory /srv/sftp/MIN
ForceCommand internal-sftp
PasswordAuthentication yes
AllowTcpForwarding no
X11Forwarding no
PermitTTY no
:wq 保存后,先检查语法,如果没有任何输出说明配置没有问题:
sudo sshd -t
再确认隔离目录满足OpenSSH要求,必须在root组内:
ls -ld /srv /srv/sftp /srv/sftp/MIN
看见类似的输出就没有问题:drwxr-xr-x root root ... /srv/sftp/MIN。
最后,重启SSH服务:
sudo systemctl restart ssh
然后使用WinSCP等软件的SFTP连接功能,输入对应的账号密码测试是否成功隔离文件。
但此时因为挂载改变的是当前正在运行的linux内核里的“挂载表”,并没有永久写入磁盘配置,重启开发板后,挂载的映射关系会消失。需要将两条挂载指令写入到/etc/fstab (开机自动挂载配置表)文件中。
先备份一份:
sudo cp /etc/fstab /etc/fstab.bak
然后编辑:
sudo vim /etc/fstab
在文件最下面添加这两行(注意,如果/home/forlinx/Desktop/MAX和/home/forlinx/Documents 是软链接,要填写真实地址,不然会挂载失败,防止崩系统,加上nofail,即使挂载失败,也不会影响系统正常启动):
/home/forlinx/Desktop/MAX /srv/sftp/MIN/MAX none bind,nofail 0 0
/home/forlinx/Documents /srv/sftp/MIN/Documents none bind,nofail 0 0
然后测试fstab:
mount -a
如果没有报错,继续查看:
findmnt /srv/sftp/MIN/MAX
findmnt /srv/sftp/MIN/Documents
最后没有问题就reboot重启,查看挂载是否还在。
以上亲测核心板重启后隔离也依然生效(putty SSH 登录也成功屏蔽)。
5185

被折叠的 条评论
为什么被折叠?



