在Ubuntu上架设SFTP服务器

公司各个部门不在同一个城市,经常需要互相传一些大文件,百度网盘太慢,于是就想到了建一个FTP服务器。普通FTP可能有安全性隐患,所以决定搭建一个SFTP。刚好Ubuntu的SSL服务自带了SFTP功能,我们要做的就是根据实际需求,进行配置。

  1. 如果还没有安装SSH,先安装
sudo apt install ssh
  1. 创建和管理可以访问SFTP的账号
    一般,我们会希望有两种账号:一种是可以读写整个SFTP目录的内部账号;另一种是外部账号, 外部账号可以对某些目录只读,对某些账号可读可写,并且不能使用SFTP之外的任何服务,比如shell登录。
    内部账号一般就是ubuntu的默认登录账号,假设叫做manager
    外部账号需要从头创建

  2. 首先创建一个用户组 sftp-users

sudo addgroup sftp-users
  1. 然后,创建新用户guest,将其添加到sftp-users用户组, 并且关闭其Shell访问。
sudo adduser guest
sudo usermod -G sftp-users -s /bin/false guest
  1. 创建SFTP的根目录及共享目录
    重点来了, SFTP的根目录必须满足以下要求:所有者为root,其他任何用户都不能拥有写入权限。
    首先,使用sudo创建根目录及需要的子目录
sudo mkdir /home/sftp_root
sudo mkdir /home/sftp_root/doc
sudo mkdir /home/sftp_root/media

然后,为了其他用户能访问及管理SFTP的目录和文件,修改目录权限

// 将子目录权限修改为manager所有, sft-users用户组可以访问
sudo chown manager:sftp-users /home/sftp_root/doc
sudo chown manager:sftp-users /home/sftp_root/media
// 将doc目录权限修改为sftp-users用户只读
sudo chmod 750 /home/sftp_root/doc
// 将media目录权限修改为sftp-users可读可写
sudo chmod 770 /home/sftp_root/media

如果还有更多子目录,可以如法炮制
以上,用户及目录添加就结束了。

  1. 修改SSH配置文件

sudo vim /etc/ssh/sshd_config
在sshd_config文件的最后,添加以下内容:

AllowGroups manager sftp-users
Match Group sftp-users
	ChrootDirectory /home/sftp_root
	AllowTcpForwarding no
	X11Forwarding no
	ForceCommand internal-sftp

然后重启ssh

sudo /etc/init.d/ssh restart

不出意外的话,大功就告成了,可以使用FileZilla等FTP客户端测试一下。

  1. 有些人可能还有个需求,比如,有很多想共享的文件在其它目录下,难道只能把他们一个个拷贝到SFTP目录下吗?首先我们想到了软链接,然后发现因为权限问题, 软链接过来的目录,无法被sftp-users用户访问。
    幸好,我们还有Bind mount:

Use bind mounts:
mount -o bind sourcefolder targetfolder
将sourcefolder映射到targetfolder
比如,/home/manager/media目录下已经有很多多媒体内容,想要直接在SFTP目录下共享:

mount -o bind /home/manager/media /home/sftp_root/media

就可以了
如果要取消的话:

umount /home/sftp_root/media

参考:https://my.oschina.net/BearCatYN/blog/496880
https://www.cnblogs.com/MrListening/p/5821296.html
https://askubuntu.com/questions/550813/how-to-create-link-that-can-be-followed-in-sftp
https://blog.csdn.net/humanking7/article/details/87898889
https://www.cnblogs.com/xkkj/p/7277405.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值