vsftp简单学习思考
FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP这样FTP客户端和服务器建立连接前就要经过一个"三次握手"的过程.FTP服务还有一个非常重要的特点是它可以独立于平台.
环境:centos6.5/redhat6.5 192.168.0.111
01、下载
http://vsftpd.beasts.org ###官网,国内可能被墙了
https://security.appspot.com/vsftpd.html ###官方的配置文件,大陆部分打不开
pkgs:点击下载
通天大道:http://pan.baidu.com/s/1hs6xE0s
02、安装
yum localinstall -y vsftpd-2.2.2-21.el6.x86_64.rpm
rpm -ivh vsftpd-2.2.2-21.el6.x86_64.rpm
rpm -ql vsftp
- /etc/logrotate.d/vsftpd
- /etc/pam.d/vsftpd
- /etc/rc.d/init.d/vsftpd
- /etc/vsftpd/
- /etc/vsftpd/ftpusers ###不允许以ftp登录
- /etc/vsftpd/user_list ###默认不允许登录
- /etc/vsftpd/vsftpd.conf ###vsftpd主配置文件
- /etc/vsftpd/vsftpd_conf_migrate.sh
- /usr/sbin/vsftpd
- /var/ftp/pub ###默认的ftp家目录
03、测试
service vsftpd start ###默认可以匿名用户登录下载
/var/ftp/pub ###默认ftp根目录
ftp 192.168.0.111 ###匿名登录用户名:anonymous,无需密码,默认只可以读,不可以写
vsftpd提供3种登录方式
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
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# Standalone mode
listen=YES
max_clients=240
max_per_ip=6
# Access rights
anonymous_enable=YES
local_enable=NO
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# Security
anon_world_readable_only=YES
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
# Features
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES
# Performance
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000 #listen ip
listen_address=192.168.0.101
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
idle_session_timeout=300
data_connection_timeout=120
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
chroot_list_enable=NO ###锁定家目录
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
exp:
01、创建虚拟用户数据库
vim user.txt
mvp ###user
123123 ###password
bang ###user
123123 ###password
###转换为数据db格式
db_load -T -t hash -f user.txt /etc/vsftpd/login.db
chmod 600 login.db
note:
Many systems have multiple versions of "db" installed, so you may
need to use e.g. db3_load for correct operation. This is known to affect
some Debian systems. The core issue is that pam_userdb expects its login
database to be a specific db version (often db3, whereas db4 may be installed
on your system). redhat6.5,默认安装了db4。
02、创建数据库认证PAM
vim ftp
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login ###lib64 对Linux_64,lib 对32位,login为数据库文件
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
cp ftp /etc/pam.d/ftp
03、创建虚拟用户
useradd -d /ftp_www -s /sbin/nogin virtual
touch /ftp_www/hello ;echo "Welcome to mvpbang" >/ftp_www/hello
chown virtual.virtual /ftp_www/hello
04、创建vsftpd配置文件
vim vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=virtual ###系统的真实用户,作为虚拟的依附体
listen=YES
listen_port=10021 ###ftp端口定义
pasv_min_port=30000
pasv_max_port=30999
pam_service_name =ftp.virtual ###pam认证文件名 /etc/pam.d/ftp ,一般不设置默认认证配置文件ftp
###更详细的说明请参考:vsftpd-2.2.2-man-EXAMPLE
总结文件汇总:http://pan.baidu.com/s/1pKADncR
04、总结
再次之中,学习到要多看开源软件的帮助文档(man),其中EXAMPLE,对常用的给出过程! ###rpm -ql vsftp | less
学习就是在摸索中前进,继往开来的17年!
###附上,FTP的原理图
01、主动连接

02、被动连接

借鉴:http://linux.vbird.org/linux_server/0410vsftpd.php
vsftp简单学习思考的更多相关文章
- Log4j简单学习笔记
log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...
- shiro简单学习的简单总结
权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...
- CentOS 简单学习 firewalld的使用
1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...
- Windows 下 Docker 的简单学习使用过程之一 dockertoolbox
1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...
- 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习
嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- mongodb,redis简单学习
2.mongodb安装配置简单学习 配置好数据库路径就可以mongo命令执行交互操作了:先将服务器开起来:在开个cmd执行交互操作 ...
- html css的简单学习(三)
html css的简单学习(三) 前端开发工具:Dreamweaver.Hbuilder.WebStorm.Sublime.PhpStorm...=========================== ...
随机推荐
- linux sudo 命令
简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码.严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色 ...
- .Net语言 APP开发平台——Smobiler学习日志:如何快速实现地图定位时的地点微调功能
Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.目标样式 我们要实现上图中的效果,需要如下的操作: 二.地点微调代码 VB: Dim ...
- openresty 前端开发序
还记得第一次尝试前后端分离的时候,是使用nginx + react 构建的spa应用,后端是java,主要处理业务逻辑逻辑部分,返回json数据,在nginx里面配置好html + js纯静态文件,再 ...
- C++_系列自学课程_第_12_课_结构体
#include <iostream> #include <string> using namespace std; struct CDAccount { double bal ...
- CodeSmith7 系列 破解教程
CodeSmith[点此下载] 学过三层的人应该认识CodeSmith Generator吧,今天我就跟大家一起探讨下CodeSmith Generator 7.0.2的激活,这最新版本破解的难度也是 ...
- C#中日期和时间相加的方法
可能对于初入此行业人来说有些困惑,实现起来有一丝复杂. 比如说时间是:2016-08-05 14:46:30,中间过了56秒钟.要求得出56秒之后的时间格式是:年月日时分秒 下面介绍最简单的办法, m ...
- 微信小程序之基础简介
创建小程序项目后进入编辑环境中会有以下的初始配置文件: 文件夹: 1.pages(存放小程序的页面) 1.index 2.logs (页面里的js文件 以Page()方法开头 所有参数对象都存放在其里 ...
- arcgis 按面积分割, 按比例分割面积,按等份批量面积分割工具
arcgis 按面积分割, 按比例分割面积,按等份批量面积分割工具 视频下载:https://yunpan.cn/cvujkpKIqwccn 访问密码 e9f4
- Atittit.研发公司的组织架构与部门架构总结
Atittit.研发公司的组织架构与部门架构总结 1. archi组织架构与 部门规划2 1.1. 最高五大组织机构2 1.2. 宗教事务部2 1.3. 制度与重大会议委员会2 1.4. 纠纷处理部: ...
- Xcode8+和iOS10+使用Masonry自动计算行高
说起tableView的自动计算行高,真的是不想再提了,写了不知道几百遍了.可就是这麽一个小玩意儿,把我给难的不行不行的,眼看都要没头发了. 1.设置tableView的预估行高和行高为自动计算 // ...