vsftpd基本使用

article/2025/8/25 16:08:52

ftp: 文件传输协议
两类连接:
命令连接:传输命令
数据连接:传输数据

两种模式:
主动模式:PORT 20/tcp连接客户端的命令连接使用的端口向后的第一个可用端口
被动模式:PASV 打开一个随机端口,并等待客户端连接

PAM: 插入式认证模块
认证框架:库,高度模块化

协议:C/S
        Server: Filezilla proftpd pureftpd vsftpd
        Client: ftp Filezilla CuteFTP FlashFXP lftp ftp gftp

vsftpd:
        URL:SCHEME://HOST:PORT/PATH/TO/FILE
                  SCHEME://username:password@HOST:PORT/PATH/FILE
        路径映射:用户家目录:每个用户的URL的映射到当前用户的家目录

安装vsftpd:yum install vsftpd

程序环境:
1、主程序:/usr/sbin/vsftpd
2、配置文件:/etc/vsftpd/vsftpd.conf
3、数据跟目录:/var/ftp
4、Systemd Unit File: /usr/lib/systemd/system/vsftpd.service

查看vsftpd的配置文件:

[root@server01 ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf


vsftpd以ftp用户的身份运行进程,默认用户即为ftp用户,匿名用户的默认路径即ftp用户的家目录/var/ftp
查看ftp主机上用户的信息:

[root@server01 ~]# cat /etc/passwd | grep ^ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

启动vsftpd:

 向/var/ftp/pub下写一个测试文件: echo "this is a hello world" > /var/ftp/pub/ftp.txt

在同一网络内的另一台主机安装ftp客户端:

[root@proxy ~]# yum install lftp ftp

用户类别:

A) 匿名用户

匿名用户登录:
用lftp客户端测试:

匿名用户的三种登录方式:

1、使用ftp作为用户名

2、使用anonymous作为用户名

 3、缺省用户名

匿名用户配置:
1、anonymous_enable:控制是否允许匿名登录。如果启用,用户名ftp和anonymous都被识别为匿名登录。默认:Yes
2、anon_world_readable_only:当启用时,用户将只被允许下载为全局可读的文件。这识别为ftp用户可以拥有文件,尤其在出现上传时。默认:yes
3、anon_mkdir_write_enable:如果设置成yes,匿名用户将被允许在某些情况下创建新目录。为了使这个起作用,必须激活write_enbable选项,默认:No
4、anon_other_write_enable:如果设置成yes,匿名用户将被允许执行除了上传和创建目录外还允许执行写操作,诸如删除和重命名。通常不推荐这个,但为了完整性而包括。默认:No。
5、anon_upload_enable:如果设置成Yes,匿名用户将在特定条件下被允许上传文件。为了使这个起作用,必须激活选项write_enable,并且匿名ftp用户必须对所要上传位置有写权限。对于虚拟用户要上传文件,也需要此设置;默认,用匿名权限对待虚拟用户。默认:No
6、anon_umask:匿名长传的掩码
7、anon_max_rate=0 匿名用户的最大上传下载速率。

在开启anon_upload_enable=YES前,不允许匿名用户上传文件:

上传一个本地路径下文件:

 修改/var/ftp/pub的目录所有者和所属组并且修改vsftpd.conf中anon_upload_enable=YES,并且重启vsftpd:

 在客户端测试上传当前路径中一个文件到ftp服务器:

 在开启anon_mkdir_write_enable=YES前,不允许匿名用户在服务器上创建新目录:

 设置anon_mkdir_write_enable=YES并且重启服务器,创建一个fold目录,显示创建成功:

 

 注意:一个用户通过文件共享服务访问文件系统上的文件的实际权限是文件系统本身权限和共享权限的交集。
 

 在设置anon_other_write_enable=YES前,服务器不允许客户端删除服务器上的文件:

设置anon_other_write_enable=YES,并且重启服务器,删除服务器上的一个文件和目录:

 

 

B) 系统用户:至少禁止系统用户访问ftp服务,/etc/vsftpd/ftpusers PAM(/etc/pam.d/vsftpd)

在ftp服务器端创建一个登录用户并且设置其密码,在其家目录中创建一个文件:

用创建的用户名和密码登录ftp服务器,直接进入了这个用户的家目录,此用户可以切换到这个用户拥有访问权限的任何目录中:

用户通过vsftpd服务访问到的默认路径,是用户自己家目录;默认可以自己有权限访问的所有路径间切换。
1、local_enable=YES 是否启用本地用户
2、write_enable=YES 本地用户是否可写
3、local_umask=022  本地用户长传文件的掩码
辅助配置文件/etc/vsftpd/ftpusers: 列在此文件中的用户,均禁止使用ftp服务
4、local_max_rate=0 本地用户的上传下载速率
5、chroot_local_user=YES 禁锢所有本地用户于家目录,需要事先去除用户对家目录的写权限
6、chroot_list_enable=YES
7、chroot_list_file=/etc/vsftpd/chroot_list 禁锢列表中文件存在的用户于其家目录中,需要事先去除用户对家目录的写权限

并发连接数限制:
max_clients=2000
max_per_ip=50

把登录用户名添加到文件/etc/vsftpd/ftpusers后,这个用户就不能连接ftp服务器了。

把ftpuser添加到/etc/vsftpd/ftpusers末尾后,ftpuser这个用户就不能正常登录ftp服务器了:

 

设置vsftpd.conf参数为如下:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

在ftp服务器端,添加两个新用户并且设置密码,把ftpuser1添加到/etc/vsftpd/chroot_list文件末尾并且除去ftpuser1用户对家目录的写权限,重启vsftpd:

 在客户端进行连接测试,用户ftpuser1被限制在自己的家目录中,而ftpuser2未被限制在家目录中:

 

控制可登录vsftpd服务的用户列表:
userlist_enable=YES
启用/etc/vsftpd/user_list文件类控制可登录用户
userlist_deny=
                        YES:黑名单
                        NO:白名单

启用白名单控制,设置userlist_enable=YES和userlist_deny=NO,并且删除/etc/vsftpd/user_list中原先内容,添加一个用户ftpuser1,重启vsftpd后,只有ftpuser1这个用户能够正常登录,其余用户都不能登录:

 

 

C) 虚拟用户:非系统用户,用户账号非为可登录操作系统的用户账号(非/etc/passwd)

总结中...


http://chatgpt.dhexx.cn/article/nmGlsbuU.shtml

相关文章

vsftpd部署流程和常见问题详解

vsftpd部署流程和常见问题详解 ⭐️ 网上关于在云服务器里配置vsftpd的文章鱼龙混杂,没有一篇是可以彻底解决问题的,有些问题虽简单,但也让初学者感到困惑。本文详细说明vsftpd的部署流程和一些常见问题的解决方法,详述用户创建过…

Linux vsFTPd服务详解——vsFTPd基础知识

今天继续给大家介绍Linux运维相关内容,本文主要内容是Linux的vsFTPd服务。 一、vsFTPd服务简介与安装 FTP服务,即File Transfer Protocol、文件传输服务,用于在互联网上提供文件存储和访问服务。有关FTP的原理请参见以下文章:FT…

vsftpd的安装和使用

目录 1、vsftpd的简介... 2 2、特点... 2 3、安装... 2 4、创建虚拟用户... 2 5、vsftpd服务器的配置... 4 6、vsftpd配置文件说明... 7 7、防火墙的配置... 8 8、vsftpd的验证... 9 9、vsftpd的常用命令... 10 10、反复需要验证ftp身份问题解决... 10 1、vsftpd的简…

Number、parseInt和parseFloat的区别

1、Number() 可以把任何类型的数据转换为数值或NaN(not a number),parseInt()和parseFloat()只能把字符串或数值转换为数值; 2、Number()和parseFloat()会有效解析浮点数(如"324.11abc"转为324.11),而parse…

parseFloat()函数的使用

定义: parseFloat() 函数可解析一个字符串,并返回一个浮点数。该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。 语…

Float.parseFloat()的作用

parseFloat()方法用于返回与给定String表示形式相对应的float值 类型转换: string转float

java float.parsefloat_java.lang.Float.parseFloat()方法实例

全屏 java.lang.Float.parseFloat()方法返回一个为指定String表示新的浮点初始化值,由Float类的valueOf方法执行的值。 声明 以下是java.lang.Float.parseFloat()方法的声明public static float parseFloat(String s) throws NumberFormatException 参数s -- 这是要…

从ES规范和引擎细谈 js 中 parseInt 和 parseFloat 的执行机制

从ES规范和引擎细谈 js 中 parseInt 和 parseFloat 的执行机制 parseInt()和parseFloat()这两个常用 API 其实还是有很多“坑”的,以此文统一梳理一下。(本文比较适合常与数字打交道的 jser 或对这两 API 运作感兴趣的同学) (git…

python实现简单的聊天小程序

概要 这是一个使用python实现一个简单的聊天室的功能,里面包含群聊,私聊两种聊天方式.实现的方式是使用套接字编程的一个使用TCP协议 c/s结构的聊天室 实现思路 x01 服务端的建立 首先,在服务端,使用socket进行消息的接受,每接受一个socket的请求,就开启一个新的线程来管理…

微信小程序调出选择好友聊天窗口

微信小程序分享好友 点击分享,弹出层选择“分享给微信好友”,点击‘“分享给微信好友”,直接调出选择好友聊天窗口。 如图: 微信小程序API:onShareAppMessage 定义 onShareAppMessage 函数,设置该页面的…

小程序mqtt实现聊天功能

mqtt是什么? MQTT是一个轻量级传输协议,它被设计用于轻量级的发布/订阅式消息传输,MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化。是一种简单、稳定、开放、轻量级易于实现的消息协议,在物联网…

微信小程序接入腾讯IM即时通讯,实现在线聊天

最近在帮朋友写一个二手交易平台,买卖双方在线沟通的功能(类似于某鱼) 先上传做完的效果图,后续再更新源码,目前实现了消息列表显示未读数量,显示最后一条信息内容,收到信息后刷新列表。聊天页面 不要吐槽…

应用实战|微信小程序开发示例--多人聊天互动空间

“超能力”数据库~拿来即用,应用开发人员再也不用为撰写API而发愁。MemFire Cloud 为开发者提供了简单易用的云数据库(表编辑器、自动生成API、SQL编辑器、备份恢复、托管运维),很大地降低开发者的使用门槛。 本示例是…

微信小程序实现websocket及单人聊天功能

一、什么是websocket: WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocket是一个持久化的协议 二、websoc…

uni-app+websocket实现语音聊天小程序

uni-appwebsocket 开发语音聊天咨询小程序

微信小程序中百分百实现聊天界面

众所周知,全网来看,微信的聊天界面看着就是舒服,那能否在微信小程序中实现该功能,同时可以实现输入文本和语音功能,而且在输入文本时,键盘可以弹起。话不多说,上界面看看。 wxml实现如下: <view> <scroll-view scroll-y scroll-into-view={{toView}} style=h…

图灵聊天机器人小程序

历时半年整理出了十多万字的学习笔记&#xff0c;目前依旧在更新 欢迎点赞和支持&#xff5e;&#x1f973;&#x1f973;&#x1f973; 博客 项目描述&#xff1a; 根据图灵API向聊天机器人发送聊天信息&#xff0c;并渲染返回的数据。具有清空聊天记录的按钮。本来是想上线…

微信小程序-模仿绘制聊天界面

参考文章 1、小程序模仿微信聊天界面 2、微信小程序实现仿微信聊天界面(各种细节处理) 3、微信小程序之页面中关于聊天框三角形的制作和使用 4、仿微信聊天记录时间显示 5、微信小程序-同时获取麦克风、相机权限、获取多个权限 6、【uni-app】模仿微信实现简易发送/取发语音功…

微信聊天小程序——(二、账号的注册与登录)

具体效果&#xff1a; 目录 二、账号的注册与登录 步骤一、获取用户信息 步骤二、用户输入账号密码&#xff08;在注册页面中&#xff09; 步骤三、将获取到的值放到我们的数据库中&#xff08;在注册页面中&#xff09; 步骤四、登录的页面逻辑 步骤五、登录页面的实现 …

微信聊天小程序——(三、获取好友列表)

三、获取好友列表 步骤一、展示所有好友的推荐列表&#xff08;friends页面&#xff09; 具体效果&#xff1a; 实现思路&#xff1a; 我们有我们的用户数据库表即&#xff1a;uers循环我们的数据库用户表&#xff0c;达到所有的用户信息&#xff0c;即&#xff1a;userLi…