linux下vsftpd相关知识

news2024/11/5 16:28:30

在linux系统中,安装ftp通常用的是vsftp,下面讲解vsftp的相关知识。

1、两种模式

vsftp服务端有两种模式,分别是主动模式和被动模式:(默认情况下是被动模式)

  • 主动模式:

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了X端口,你过来连接我”。于是服务器从20端口向客户端的X端口发送连接请求,建立 一条数据链路来传送数据。

即 :
命令连接:客户端 >1024 端口 → 服务器 21 端口
数据连接:客户端 >1024 端口 ← 服务器 20 端口

  • 被动模式

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时, 服务器在命令链路上用PASV命令告诉客户端:“我打开了X端口,你过来连接我”。于是客户端向服务器的X端口发送连接请求,建立一条数据链路来传送数据。

即:
命令连接:客户端 >1024 端口 → 服务器 21 端口
数据连接:客户端 >1024 端口 ← 服务器 >1024 端口

2、连接模式选择

被动模式下如果服务器存在防火墙,需要开的端口除了命令连接端口21之外,还要开客户端连接服务器的端口,这个端口可以人为指定一个区间。
被动模式如果存在NAT,客户端连接服务器的端口也需要做端口映射。

所以ftp需要通过NAT的情况下访问,一般采取被动模式。

如果是主动模式,传输数据是服务器通过20端口发起的数据传输,所以服务器只需要开21端口,但是客户端此时就是一个随机端口来连接,
客户端需要关闭防火墙或者放开端口,此时客户端的连接端口一般不能人为指定。

3、修改被动模式下服务器连接端口

修改vsftpd.conf文件,添加如下配置:

pasv_min_port=2000
pasv_max_port=2021

然后重启vsftp,命令如下:

systemctl restart vsftpd

以上配置表示客户端发起的数据传输,连接到服务器的端口为2000到2021之间的随机一个端口。

4、使用ftp命令连接

在linux系统中,使用ftp命令连接ftp服务器(该命令需要单独安装),客户端也要分主动模式和被动模式。如果不加-p参数,默认就是以主动模式连接。

#客户端以被动模式连接ftp
ftp -p [ftp_server]

5、用户锁定家目录

当匿名用户登录到ftp服务器,本身是不能切换根目录的,所以这里主要是对系统用户做限制。

不加限制以前:

lckd@lckd:~$ ftp 192.168.210.29
Connected to 192.168.210.29.
220 (vsFTPd 3.0.5)
Name (192.168.210.29:lckd): vftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
Remote directory: /home/vftp
ftp> cd /
250 Directory successfully changed.
ftp> ls
229 Entering Extended Passive Mode (|||2000|)
150 Here comes the directory listing.
dr-xr-xr-x    2 0        0               6 May 16  2022 afs
lrwxrwxrwx    1 0        0               7 May 16  2022 bin -> usr/bin
dr-xr-xr-x    5 0        0            4096 Oct 31 01:28 boot
drwxr-xr-x   20 0        0            3480 Oct 31 01:28 dev
drwxr-xr-x  142 0        0            8192 Oct 31  2024 etc
drwxr-xr-x    7 0        0              70 Oct 30 11:41 home
lrwxrwxrwx    1 0        0               7 May 16  2022 lib -> usr/lib
lrwxrwxrwx    1 0        0               9 May 16  2022 lib64 -> usr/lib64
drwxr-xr-x    2 0        0               6 May 16  2022 media
drwxr-xr-x    2 0        0               6 May 16  2022 mnt
drwxr-xr-x    3 0        0              22 Sep 04 09:51 opt
dr-xr-xr-x  521 0        0               0 Oct 31 01:28 proc
dr-xr-x---   15 0        0            4096 Oct 31 07:12 root
drwxr-xr-x   50 0        0            1320 Oct 31 06:55 run
lrwxrwxrwx    1 0        0               8 May 16  2022 sbin -> usr/sbin
drwxr-xr-x    2 0        0               6 May 16  2022 srv
dr-xr-xr-x   13 0        0               0 Oct 31 01:28 sys
drwxrwxrwt   29 0        0            4096 Oct 31 07:13 tmp
drwxr-xr-x   12 0        0             144 Aug 05 06:04 usr
drwxr-xr-x   20 0        0            4096 Aug 05 06:17 var
226 Directory send OK.

修改配置文件,添加以下参数:

vim /etc/vsftpd/vsftpd.conf

chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES

对以上三个参数做个解释:

chroot_local_user=YES: 
将所有用户限制在主目录(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户都可以逃出主目录,切换到根目录。)

chroot_list_enable=NO:
不启动限制用户的名单。YES为启用,NO禁用

chroot_list_file=/etc/vsftpd/chroot_list:
当chroot_list_enable为YES才需要配置此文件,表示例外的用户。至于是限制名单还是排除名单,
需要参考chroot_local_user的值。

allow_writeable_chroot=YES:表示让家目录可写,具体的解释在下面。

结合起来使用:

当chroot_local_user=YES时,
chroot_list_enable
=YES时,表示当全部用户被锁定主目录时,而list表中的用户不受限制。
=NO时,表示不启动list表功能,也就是全部限制。

当chroot_local_user=NO时,
chroot_list_enable
=YES时,表示当全部用户不被锁定主目录时,而list表中的用户受限制。
=NO时,表示不启动list表功能,也就是全部不限制。

参见如下表格:

chroot_local_user=YESchroot_local_user=NO
chroot_list_enable=YES所有用户都要限制在它自己家目录。一旦存在于list表中用户,可以切换家目录,不受限制。所有用户都可以自由切换家目录。一旦存在于list表中用户,不可以切换家目录,受限制。
chroot_list_enable=NO所有用户都要限制在它自己家目录。直接不考虑list表。所有用户都可以自由切换家目录。直接不考虑list表。

锁定到家目录后,可能出现如下故障:

通过系统用户登录到ftp服务器,执行ls,报错如下:

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

报错原因:

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,
则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报以上错误了。

解决办法有两种:

一:去掉用户家目录的写权限:chmod a-w /home/lutixia
这种方法不建议,如果这样操作,那么用户家目录就没法创建,上传文件了。
二:就是添加上面的参数:allow_writeable_chroot=YES

6、三种用户

VSFTP提供了系统用户、匿名用户、和虚拟用户三种不同的登陆方式。所有的虚拟用户会映射成一个系统用户,访问时的文件目录是为此系统用户的家目录,匿名用户也是虚拟用户,映射的系统用户为ftp详细信息可以通过man vsftpd.conf(手册)查看。

最常用的是系统用户,新建的用户可以设置为可登录和不可登录,不可登录的用户就是专门用于ftp登录的。

#可以登录系统
useradd -d /data/lckd -s /bin/bash
#不可以登录系统
useradd -d /data/lckd -s /bin/nologin

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

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

相关文章

关于爬虫需要了解的基础知识 (一、 http协议)

声明 文章仅供学习与交流!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关! 一、何为爬虫 爬虫(Crawler)是一种按照既定规则,在网络上自动爬取信息的程序或脚本,也称为网际网…

VidPanos:从随手拍摄的平移视频生成全景视频

在当今数字化时代,视频拍摄已经成为人们记录生活和分享经历的重要方式。然而,普通手机拍摄的视频往往受到视角的限制,无法完整地展现一个广阔的场景。今天,我们要介绍的 VidPanos 技术,为解决这个问题提供了一种创新的方法。 VidPanos 是由来自华盛顿大学、谷歌 DeepMind…

【05】如何解决tomcat命令提示符控制台乱码问题

Web项目开发过程中,直接在命令提示符窗口中通过输入startup.bat命令运行tomcat,在新弹出的tomcat命令提示符窗口中输出的中文是乱码问题的处理。 如何解决tomcat命令提示符控制台乱码问题 文章目录 如何解决tomcat命令提示符控制台乱码问题1.解决问题思路…

02- 模块化编程-003 LCD1602液晶显示时间与日期

1、液晶显示电路 2、电路原理简介 1. 电路组件与功能 PIC单片机(PIC16F887): 主控制器,负责处理输入输出。 LCD显示屏(LM061): 驱动数码管显示器,以显示时间和日期信息。 支持多个段…

conda下jupyterlab安装问题以及交互绘图问题记录

安装 1. 直接conda install jupyterlab就好,只要在base环境下安装就行,可以在任意环境下执行jupyter lab启动。 2. 打开jupyter lab后显示Could not determine jupyterlab build status without nodejs,可以执行conda install nodejs安装no…

华为OD机试 - 预订酒店(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷D卷A卷B卷C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加…

LM Head weights;ChatGPT-3词汇量:175,000;llama7b 词汇量,词嵌入维度:4096

目录 LM Head weights ChatGPT-3词汇量:175,000 llama7b 词汇量 词汇量:32000 max_position_embeddings: 4096 LM Head weights ChatGPT-3词汇量:175,000 ChatGPT-4 确切的词向量种类数量公开信息。但可以根据一些语言模型的相关知识进行推测分析。 一般来说,语言模…

极简实现酷炫动效:Flutter隐式动画指南第二篇之一些酷炫的隐式动画效果

目录 前言 1.弹性放大按钮效果 2.旋转和缩放组合动画 3.颜色渐变背景动画 4.缩放进出效果 前言 在上一篇文章中,我们介绍了Flutter中的隐式动画的一些相关知识,在这篇文章中,我们可以结合多个隐式动画 Widget 在 Flutter 中创建一些酷炫的视觉效果&…

【ONLYOFFICE 文档 8.2 版本深度测评】功能革新与用户体验的双重飞跃

引言 在数字化办公的浪潮中,ONLYOFFICE 文档以其强大的在线协作功能和全面的办公套件解决方案,赢得了全球用户的青睐。随着 8.2 版本的发布,ONLYOFFICE 再次证明了其在办公软件领域的创新能力和技术实力。 一.协作编辑 PDF:团队合…

高频电子线路---倍频器与振荡器

目录 倍频电路原理 丙类倍频器原理电路 问题: 提升滤波方法: 导通角 振荡器 振荡器基本工作原理 首先是怎么维持 那么如何振荡呢? 思考题: 组成要素 振荡器的起振条件 平衡条件 要点提示 稳定条件 振幅平衡 硬激励起振时: 稳定条件 相位平衡 倍频电路原理 简单原理 : …

自杀一句话木马(访问后自动删除)

在做安全测试时&#xff0c;例如文件上传时就要上传可以解析的脚本文件解析证明存在漏洞&#xff0c;这个时候就需要(访问后自动删除文件的一句话木马) PHP <?php echo md5(1);unlink(__FILE__); ?> 访问后自动删除

Windows配置Nodejs及nmp简明教程(2024可用)

一、下载及安装Nodejs 下载 Node.js 中文网 (nodejs.com.cn)在此下载windows长期维护版本的.msi安装包&#xff0c;64位 安装&#xff1a; 双节安装包一直点击Next下一步&#xff0c;注意安装路径选择C盘默认路径&#xff08;C:\Program Files\nodejs\&#xff09;即可&#x…

使用ffmpeg和mediamtx模拟多通道rtsp相机

首先下载ffmpeg&#xff0c;在windows系统上直接下载可执行文件&#xff0c;并配置环境变量即可在命令行当中调用执行。 下载地址&#xff1a; https://ffmpeg.org/再在github上下载mediamtx搭建rtsp服务器&#xff0c;使用ffmpeg将码流推流到rtsp服务器。 下载地址&#xff1…

Unreal5从入门到精通之如何在VR中使用3DUI

文章目录 前言创建3DUI1.新建控件蓝图2.添加控件到画布上3.新建Actor蓝图MyUIActor4.添加控件组件Widget5.设置控件类和画布大小6.创建MyUIActor实例到场景中3DUI和VR射线交互1.添加按钮的点击事件2.设置MyUIActor碰撞响应3.VRPawn添加控件交互组件4.添加手柄Trigger点击事件绑…

ai数字人分身123口播克隆数字人小程序源码_博纳软云

功能配置 一、用户 用户管理小黑屋用户反馈登录设置短信参数 二、作品 视频作品背景音乐库背景音乐分类 三、形象分身 上传记录视频要求参数配置 四、声音克隆 克隆记录参数配置声音要求文案示例 五、AI文案 生成记录创作模型模型分类Al配置 六、充值 充值订单积分套…

活动回顾丨艾体宝《开源软件供应链安全的最佳实践》线下研讨会圆满落幕!

10月&#xff0c;艾体宝联合Mend成功举办了一场主题为“开源软件供应链安全最佳实践”的研讨会。此次活动吸引了众多业内专家、技术领袖和企业代表参与&#xff0c;共同探讨在当今数字化转型浪潮中&#xff0c;企业如何应对开源软件供应链安全的挑战。会议围绕三大核心议题展开…

java项目之校园周边美食探索及分享平台(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园周边美食探索及分享平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 校园周边美食…

esp32cam+Arduino IDE在编译时提示找不到 esp_camera.h 的解决办法

多半是因为你的ESP32库升级了&#xff0c;不再是 1.02版本&#xff0c;或者根本就没有 ESp32 库。如果被升级了&#xff0c;还原为1.02版本就可以了。如果没有&#xff0c;按照下述方法添加&#xff1a; 首先&#xff0c;在"文件"->"首选项"->"…

Rust 力扣 - 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 长度为k的二进制子串所有取值的集合为[0, sum(k)]&#xff0c;其中sum(k)为1 2 4 … 1 << (k - 1) 我们只需要创建一个长度为sum(k) 1的数组 f &#xff0c;其中下标为 i 的元素用来标记字符串中子串…

Edit Data. Create Cell Editors. Validate User Input 编辑数据。创建 Cell Editors。验证用户输入

Goto Data Grid 数据网格 Edit Data. Create Cell Editors. Validate User Input 编辑数据。创建 Cell Editors。验证用户输入 Get and Modify Cell Values in Code 在代码中获取和修改单元格值 仅当 Grid 及其列已完全初始化时&#xff0c;才使用以下方法。如果需要在表单仍…