【linux】使用 sftp 替换 vsftpd

news2024/11/24 7:16:17

为什么使用 sftp?

1. 基于 ssh 协议,保证数据安全性

2. 大多数防火墙不会阻止 ssh 协议

3. 完全基于文件系统权限对用户进行管理

4. 配置比 vsftpd 简单

另外,我在集成商工作服务于各大甲方,在厦门的一些企业,如:金融财务公司、银行等等绝大多数已经不再使用 ftp 协议来传输文件,转而采用 sftp 进行多个单位之间的文件传输。

需求如下

1. ftp 工作目录设置为 /sftp 并且所有用户被锁定在该目录下无法切换出去

2. 所有 sftp 用户登录后会默认位于为 /sftp/<username>/home 目录下,并且用户没有权限进入其他用户的目录

3. 设置共享目录为 /sftp/public 允许所有 ftp 用户上传文件,但不能删除其他人的文件

4. 设置团队协作目录为 /sftp/teamwork 允许所有 ftp 用户在里面上传、修改、删除文件

5. 限制所有使用 sftp 登录的用户无法登录到 bash 

配置步骤

▶ 1. 创建用户组:sftpusers 并创建2个用户:ftpuser01 和 ftpuser02 加入到该用户组

*注意:所有要使用 sftp 登录的用户都要加入到该组,才能实现 "锁定目录" 功能。

 

# groupadd sftpusers
# adduser ftpuser01 -G sftpusers
# adduser ftpuser02 -G sftpusers

▶ 2. 为这两个用户配置密码,该密码用于 sftp 登录

 

# echo "123456" | passwd --stdin ftpuser01
Changing password for user ftpuser01.
passwd: all authentication tokens updated successfully.
# echo "123456" | passwd --stdin ftpuser02
Changing password for user ftpuser02.
passwd: all authentication tokens updated successfully

▶ 3. 为这两个用户创建 sftp 目录

 

# mkdir -p /sftp/ftpuser01/home
# mkdir -p /sftp/ftpuser02/home

▶ 4. 为这两个用户的 sftp 目录配置对应的权限,将所属用户和组改为对应用户名,然后修改权限为:770,这样其他用户就没有权限访问自己的目录

 

# chown -R ftpuser01:ftpuser01 /sftp/ftpuser01
# chown -R ftpuser02:ftpuser02 /sftp/ftpuser02
# chmod -R 770 /sftp/ftpuser01
# chmod -R 770 /sftp/ftpuser02

▶ 5. 修改 sshd 配置文件 /etc/ssh/sshd_config 在该文件的最后几行,修改并添加以下内容

 

#Subsystem sftp /usr/libexec/openssh/sftp-server <-- 注释掉原本这一行
Subsystem sftp internal-sftp -d %u/home          <-- 新增这一行,用于指定用户登录后位于的目录
Match Group sftpusers                            <-- 新增这一行,用于匹配 sftpusers 组的用户
ChrootDirectory /sftp                            <-- 新增这一行,用于限制用户不能离开 /sftp 目录

▶ 6. 重启 sshd 服务以生效配置

 

# systemctl restart sshd

▶ 7. 使用 WinSCP 进行连接并测试。在界面中,文件协议选择【SFTP】,主机名填写服务器的IP地址,然后填写用户名 ftpuser01 以及密码

测试上传文件是否正常

尝试切换到最外层目录,只能看到2个ftp用户的目录,无法再切换出去了

使用 ftpuser01 用户,尝试进入 ftpuser02 的目录,会提示权限被拒绝,因为没有进入该目录的权限,这符合我们最初的设计

▶ 8. 创建团队协作目录和共享目录

 

# mkdir -p /sftp/teamwork # mkdir -p /sftp/public

▶ 9. 为团队协作目录配置权限,所属用户为 root,组用户为 sftpusers,设置 sgid 特殊权限使得该目录下创建的文件自动继承父目录的所属组用户

 

# chown root:sftpusers /sftp/teamwork # chmod 2770 /sftp/teamwork

▶ 10. 为共享目录配置相关权限,由于是共享目录,所以任何人都有最高的权限,但需要设置 stick bit 特殊权限位使用户只能删除自己的文件而不能删除不属于自己的文件

 

# chmod 1777 /sftp/public

▶ 11. 继续使用 WinSCP 连接到服务器上,以 ftpuser01 身份进行连接。进入 teamwork 目录,创建一个文件并写入内容

进入 public 目录,也创建一个文件

以 ftpuser02 身份登录到 sftp 服务器,并切换到最外层目录

进入到 teamwork 目录下,可以看到【user01文件】,尝试打开并追加一些内容,保存的时候提示 "无法覆盖文件,但可以删除后创建新文件替代",但这样做文件就属于 ftpuser02 了,这里我们不这么做,点击【跳过】

这是因为默认情况下,ftpuser01 用户创建出来的文件,组权限只有 r (只读)的权限

ftpuser01 可以自行修改该文件的组权限,增加 w(写)权限即可

现在再次使用 ftpuser02 用户,再次尝试追加内容到该文件

虽然提示报错,但是显示上传成功,可以在 WinSCP 设置中忽略该错误即可,按照下图进行配置即可

再次使用 ftpuser02 用户追加内容到 teamwork 目录下的【user01文件】,这次可以直接保存并且不会报错

使用 ftpuser02 用户删除 teamwork 目录下【user01文件】,文件可以直接被删除,这符合团队协作目录的功能

使用 ftpuser02 用户进入 public 目录,尝试删除 ftpuser01 创建的【user01文件】,会提示禁止删除,因为该目录被配置了粘滞位

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/725399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一步一步指导如何使用 FastSAM进行图像分割

它以50倍的速度实现了与SAM方法相当的性能。 (SAM) 是一个强大的视觉基础模型,可以根据用户交互提示分割图像中的任何对象。SAM 一经发布就因其准确性而在计算机视觉社区中获得了巨大的关注。然而,SAM 广泛使用计算量大的Transformer (ViT) 架构限制了其实际应用,特别是在…

C# NPOI操作Excel汇总

C#操作Excel有多种方法&#xff0c;如通过数据库的方式来读写Excel的OleDb方式&#xff0c;但是OleDb方式需要安装微软office&#xff0c;还可以通过COM组件方式操作Excel&#xff0c;也需要安装微软Excel。如果不想安装微软办公套餐可以使用ClosedXML、EPPlus、NPOI。本文主要…

【网络系统集成】VLAN实验

1.实验名称:VLAN实验 2.实验目的 在PacketTracer中进行模拟VLAN实验,完成“不同交换机相同VLAN间通讯”实验、“单臂路由”实验与“三层交换实现VLAN间通讯”实验,加深对VLAN间通讯相关知识的理解与掌握。 3.实验内容 3.1不同交换机相同VLAN间通讯 (1)拓扑结构图

STM32——关于时钟源的实际使用及解释

1、STM32内部有5个时钟源&#xff0c;分别为HSI、HSE、LSE、LSI、PLL。 HSE&#xff1a;高速外部时钟&#xff0c;可接石英谐振器、陶瓷谐振器&#xff0c;或者接外部时钟源&#xff0c;其频率范围为4MHZ~16MHZ。 LSE&#xff1a; 低速外部时钟&#xff0c;接频率为32.768KHZ…

ATFX国际:小非农ADP数据来袭,加息预期或再度升温

ATFX国际&#xff1a;每月发布一次的ADP数据是国际金融市场的大事件&#xff0c;它能够对周五发布的非农就业报告起到相对准确的前瞻作用。今日晚间20:15&#xff0c;美国6月ADP就业人数将发布&#xff0c;前值为增加27.8万人&#xff0c;预期值增加22.8万人&#xff0c;市场预…

【Quartus FPGA】EMIF DDR3 IP 仿真记录

EMIF (External Memory Interface) 是 Quartus 平台提供的 IP&#xff0c;用于实现高速存储器件接口与控制器。通过 Intel Quartus Prime 软件&#xff0c;可以很方便地实现 EMIF IP 电路。本文记录了使用 EMIF 实现 DDR3 控制器的仿真过程&#xff0c;软件平台为 Quartus Prim…

软件测试体系方案

目录 前言&#xff1a; 1. 引言 1.1 目标 1.2 背景 1.3 术语和定义 2. 测试体系完善 2.1 项目启动 2.2 测试计划 2.3 需求分析 2.4 测试设计 2.5 测试执行 2.6 测试记录 2.7 缺陷跟踪 2.8 测试结束 2.9 测试总结 3. 测试管理规划 3.1 测试人员 3.2 测试环境 …

骑行,怎么样高效而省力的摇车?

大家好&#xff0c;今天我们来聊一聊自行车运动中的摇车技巧。我们知道&#xff0c;摇车是自行车运动中一种非常高效的发力方式&#xff0c;那么如何做到高效而省力的摇车呢&#xff1f; 首先&#xff0c;我们要了解摇车的原理。摇车&#xff0c;其实就是通过腿部蹬踏的方式&am…

(02)Cartographer源码无死角解析-(78) ROS数据发布→2D点云数据、tf、机器人tracking frame轨迹发布

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 文…

【MTK】ES7210、ES7243E Driver调试

文章目录 1.概要2.整体架构流程3. ES7210、ES7243E Driver4. 调试过程中的问题点小结1.概要 由于项目需要实现 4 路MIC 以及 2 路Speaker回采输入android系统,硬件是一个ES7210用来采集4路MIC,一个ES7243E用来采集2路Speaker回采,组成类似6路麦克风输入系统。系统SoC无法支持…

“前端刘德华”Pink老师送签名图书啦

就算成功的概率为1%又如何呢&#xff0c;如太阳系般波澜壮阔&#xff0c;也只有0.14%产生了生命&#xff0c;平凡的我们绝大多数也终将如整个太阳系的99.86%一般化作死寂。 但这不重要朋友&#xff0c;今天是黑马疯狂星期四&#xff0c;Pink老师开讲了&#xff01;&#xff01…

跑马灯实验(stm32)

目录 LED的功能代码led.cled.h硬件相关说明 main.c代码的一些介绍BSRR和BRR 实验结果 说明&#xff1a;以下内容参考正点原子的相关资料 LED的功能代码 led.c void LED_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_A…

单月涨粉30w,小红书涨粉秘诀是什么?

6月&#xff0c;小红书平台又涌现出哪些优质博主&#xff1f;品牌在投放种草方面有何亮眼表现&#xff1f; 为洞察小红书平台的内容创作趋势及品牌营销策略&#xff0c;新红推出6月月度榜单&#xff0c;从创作者、品牌、品类多方面入手&#xff0c;解析月榜数据&#xff0c;为从…

耗时半月,终于把牛客网上的软件测试面试八股文整理成PDF合集!

大家好&#xff0c;最近收到不少小伙伴的留言&#xff0c;反映现在的面试难度越来越高&#xff0c;要背的八股文越来越多了&#xff0c;考察的知识点也越来越细致&#xff0c;明摆着就是想让我们“徒手造航母”嘛&#xff01;对程序员们来说确实是一大挑战。 因此&#xff0c;…

Win10快捷方式添加到开始菜单或磁贴

打开Windows文件夹&#xff0c;进入该目录(用户名替换为当前用户)&#xff1a;C:\Users\[你的用户名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs 将应用的快捷方式复制到此目录下&#xff0c;即可展示在开始菜单中可以右键在将快捷方式固定到磁贴

【UnityDOTS 小知识】在DOTS中实例化Prefab的方法

在DOTS中实例化Prefab的方法 前言 实例化Prefab的方法常规方法&#xff1a; 1.利用Baker的方式&#xff0c;以及getEntity方法&#xff0c;将prefab转化为一个对应的Entity原型&#xff0c;再利用EntityManager或ECB的Instantiate方法实例化这个Entity原型得到对应Prefab的实…

LSTD: A Low-Shot Transfer Detector for Object Detection论文阅读笔记

LSTD: A Low-Shot Transfer Detector for Object Detection论文阅读笔记 提出low-shot Transfer detector&#xff0c;来解决标注样本数据不足的情况。利用source domain知识&#xff0c;来构建高效的target-domain检测器&#xff0c;仅需要很少的训练样本。 提出了一个高效的…

第一课:Figma 软件安装与汉化

Figma软件基本介绍 Figma 是一款可在线协作的UI设计软件&#xff0c;最大的亮点在于它基于 WEB 平台研发&#xff0c;能支撑全平台操作系统的运行&#xff0c;适合各种场景下的使用。Figma软件特色功能&#xff1a; 在线编辑&#xff0c;适配全平台&#xff1a;使用软件 Figma…

Python 利用opencv实现识别最大面积验证码

此篇文章解决的是某象的最大验证码,这个最大面积验证码,就是识别图中划线区域中最大面积的验证码,我一开始打算用深度学习去做,但是结合了网上的资料以及自己的想法来看,还是用opencv处理又快又较为准确,而且还不用准备深度学习的一些环境 我准备了大概几十张验证码,经过…

Linux运维-修改密码报错提示:authentication token manipulation error

背景 今天在Linux Centos7环境的使用中,突然遇到了这个问题,为了以后再次遇到后可以快速的解决问题&#xff0c;特此记录。 首先是无法进入系统,然后通过单用户进入系统后修改密码,然后遇到该问题。 单用户进入系统 在如下位置添加init/bin/bash 后按Ctrl X 重启系统 进入b…