记录在Linux系统使用vsftpd服务
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。
一.FTP工作模式
1)主动模式
主动模式,也称PORT模式(服务器端开启的端口是tcp 20和21;21端口传输命令,20端口传输数据)
主动模式首先客户端请求服务器端的21端口,建立命令连接;当客户端想要传输数据时,发送PORT命令,告诉服务器“我打开了xxx端口,来连接我吧”
服务器使用20端口主动与客户端建立数据连接,传输数据。
2)被动模式
被动模式,又称PASV模式(服务器端开启的端口是tcp 21和一个大于1024的随机端口;21端口传输命令,另外一个端口传输数据)
被动模式首先客户端请求服务器端的21端口,建立命令连接;当客户端想要传输数据时,与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。发送PASV命令,表示使用被动模式传输数据,服务器端会告诉客户端“我开启了xxx端口,来发送数据吧”,然后客户端就会连接服务器通知它的那个端口,进行数据传输。此模式不需要开启20端口。
--------------------------------------
二.FTP用户
1)匿名用户
不需要用户名密码,直接使用匿名用户Anonymous 或直接登录, 默认只能下载,不能上传
2)本地用户
使用VSFTPD服务端的本地用户及密码登录
3)虚拟用户
模拟的是匿名用户,默认只能下载不能上传,登录方式模拟的是本地用户
-------------------------------------
三.配置文件
/etc/vsftpd/vsftpd.conf为配置文件
配置选项解释(不全)
vsftpd]# cat vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_root=/var/ftp/ftp
#anon_upload_enable=YES
#anon_other_write_enable=YES
#anon_mkdir_write_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
ftpd_banner=Welcome to ftp!!!
pasv_max_port=10010
pasv_min_port=10000
allow_writeable_chroot=YES
#pasv_promiscuous=YES
其中
vsftpd 配置:chroot_local_user与chroot_list_enable
-----------------------------
客户端推荐
Filezilla,有客户端和服务端,支持Linux,Windows,Mac,中文网址,官网
界面
-------------------
报错
500 OOPS: vsftpd: refusing to run with writable root inside chroot() 解决:添加配置文件 allow_writeable_chroot=YES,,,可解决
原文地址:https://www.cnblogs.com/5444de/p/12857612.html
- HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦
- 看看你是哪种级别的Python程序员(已跪)
- SignalR 在IE中无法工作 - Internet Explorer
- SQL Server 2012 中的 Service Broker功能的一些改进或增强
- 通用日志
- 数据包络分析教程
- 用JAVA的DEA算法衡量社交媒体页面的流行度
- 如何构建智能反垃圾邮件的WordPress插件
- 【深入研究】使用RNN预测股票价格系列一
- 【深入研究】使用RNN预测股票价格系列二
- 教你用一行Python代码实现并行(附代码)
- 在美国国会图书馆标题表的SKOS上运行Apache Spark GraphX算法
- 【精选】破解波动性突破实盘系统
- 从程序员的角度看神经网络的激活功能
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法