ubuntu22.04 设置SFTP文件隔离

#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 登录也成功屏蔽)。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值