Ubuntu搭建SFtp

本文详细介绍了如何在Linux服务器上设置SFTP服务,以允许特定用户组仅通过SFTP上传和下载文件,同时阻止SSH终端访问。通过创建用户组、设置权限、创建“监狱”目录和修改SSH配置,实现了用户组的权限隔离,确保系统安全。
摘要由CSDN通过智能技术生成

需求:在服务器上开通SFTP文件服务,允许某些用户上传及下载文件。但是这些用户只能使用SFTP传输文件,不能使用SSH终端访问服务器,并且SFTP不能访问系统文件(即所谓的“Jail(监狱)”)。系统管理员则既能使用SFTP传输文件,也能使用SSH远程管理服务器。

为了便于讨论,我假设我将允许sftp用户组内的用户使用sftp,但不允许使用SSH Shell,且该组用户将被"监狱"(修改系统根目录)。我将在sftp组内创建一个用户“sftp”。而我将允许ssh-users使用SFTP以及SSH。系统管理员的账户名为ubuntu。
第01步,如果还没有安装OpenSSH服务器,先安装它。
sudo apt-get install openssh-server

第02步,为SFTP访问创建用户组,便于管理权限。
sudo addgroup sftp

第03步,创建SFTP用户,并配置相应权限。这里第二行的意思是将sftp从所有其他用户组中移除并加入到sftp组,并且关闭其Shell访问。如果想深入了解usermod命令,可以使用以下”man usermod”命令查看帮助文档。
sudo adduser sftp
sudo usermod -G sftp -s /bin/false sftp
第04步,创建SSH用户组,并把管理员加入到该组(注意usermod中的-a参数的意思是不从其他用户组用移除)。
sudo addgroup ssh-users
sudo usermod -a -G ssh-users ubuntu

第05步,准备“监狱”的根目录及共享目录。这里解释一下,“监狱”的根目录必须满足以下要求:所有者为root,其他任何用户都不能拥有写入权限。因此,为了让SFTP用户能够上传文件,还必须在“监狱”根目录下再创建一个普通用户能够写入的共享文件目录。为了便于管理员通过SFTP管理上传的文件,我把这个共享文件目录配置为:由admin所有,允许sftp-users读写。这样,管理员和SFTP用户组成员就都能读写这个目录了。
sudo mkdir /home/sftp
sudo mkdir /home/sftp/shared
sudo chown ubuntu:sftp /home/sftp/shared
sudo chmod 770 /home/sftp/shared
第06步,修改SSH配置文件。
sudo vi/etc/ssh/sshd_config
在sshd_config文件的最后,添加以下内容:

AllowGroups ssh-users sftp
Match Group sftp
ChrootDirectory /home/sftp
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp
这些内容的意思是:
只允许ssh-uers及sftp通过SSH访问系统;
针对sftp用户,额外增加一些设置:将“/home/sftp”设置为该组用户的系统根目录(因此它们将不能访问该目录之外的其他系统文件);禁止TCP Forwarding和X11 Forwarding;强制该组用户仅仅使用SFTP。

第07步,重启系统以便使新配置生效。
sudo reboot now

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值