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种登录方式

(1)anonymous(匿名帐号)
使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以anonymous为用户名,以自己 的电子邮件地址为密码进行登录.当匿名用户登录FTP服务器后,其登录目录为匿名FTP服务器的根目录/var/ftp.为了减轻FTP服务器的负载,一 般情况下,应关闭匿名帐号的上传功能.
 
vsftpd.conf  ###简易版
anonymous_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
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
 
###特色,默认不设置,ftp家目录/var/ftp/pub
anon_root=/home/ftp   #设置匿名账户的主目录

vsftpd.conf  ###控制版,适合开放互联网
# 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
(2)user(系统帐号)
user也称为本地帐号,就是以真实的用户名和密码进行登录,但前提条件是用户在FTP服务器上拥有自己的帐号.用真实帐号登录后,其登录的目录为用户自己的目录,该目录在系统建立帐号时系统就自动创建.
 
useradd -d /ftp_www  -s /sbin/nologin  ftp_rw  ###-d 定义家目录 -s 定义shell
echo "123123"  | passwd ftp_rw  --stdin
 
chmod  -R    a+w /ftp_www        ###赋写权限,其实不用,哈哈多此一举
chown  -R    ftp_rw.ftp_rw  /ftp_www
 
vim  /etc/vsftpd/chroot_list         ###定义访问ftp的用户    
ftp_rw
 
/etc/vsftpd/vsftpd.conf        ###配置文件

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
#设置普通用户主目录,chroot_list用户家目录,下列参数可以自定义ftp用户家目录
local_root=/data/ftp

exp:

 
(3)guest(虚拟帐号)
如果用户在FTP服务器上拥有帐号,但此帐号只能用于文件传输服务,那么该帐号就是guest,guest是真实帐号的一种形式,它们的不同之处在于,geust登录FTP服务器后,不能访问除宿主目录以外的内容.

  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

User_config_dir=/etc/vsftpd/vsftpd_vuser_conf             ###vsftpd.conf配置文件路径,用于多用户权限划分            
anon_world_readable_only=NO                                    ###开启列表,如果是YES,默认不显示文件列表
local_root=/usr/local/amp/apache/htdocs/test1             ###定义虚拟用户的家目录(权限输入虚拟真实用户)

###更详细的说明请参考: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简单学习思考的更多相关文章

  1. Log4j简单学习笔记

    log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...

  2. shiro简单学习的简单总结

    权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...

  3. CentOS 简单学习 firewalld的使用

    1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...

  4. Windows 下 Docker 的简单学习使用过程之一 dockertoolbox

    1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...

  5. 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习

    嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...

  6. Linux——帮助命令简单学习笔记

    Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...

  7. OI数学 简单学习笔记

    基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...

  8. mongodb,redis简单学习

     2.mongodb安装配置简单学习                   配置好数据库路径就可以mongo命令执行交互操作了:先将服务器开起来:在开个cmd执行交互操作                 ...

  9. html css的简单学习(三)

    html css的简单学习(三) 前端开发工具:Dreamweaver.Hbuilder.WebStorm.Sublime.PhpStorm...=========================== ...

随机推荐

  1. 打造高效前端工作环境-tmuxinator

    前言  虽然tmux能让我们方便组织工作环境,但每次重新打开会话时都需要手动重新创建窗口.窗格和执行各种程序,能不能像VS那样以工程为单位保存窗口.窗格和各种所需执行的程序的信息呢?tmuxinato ...

  2. 使用PowerShell 监控运行时间和连接情况

    概念 Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境.你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆. powershell需要.N ...

  3. JS瀑布流布局

    好久没有更新博客喽,今天来说一个瀑布流布局. 瀑布流在很多网站已有很多,现在只说一下简单的实现原理吧, 1.计算一行可以排放几个元素 2.建立一个数组用于存放第一行的每个元素的高度. 3.得到数组中的 ...

  4. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

  5. 节省Json流量

    今天在实验当中发现了很不错的节省json流量方式,来做个笔记给大家分享一下. 如果跟服务器传递键值对的数组,我们一般会采用下面方式 创建一个字段 public class kv { public st ...

  6. angularjs学习使用分享

    angularjs是一个为动态web应用设计的结构框架,它是为了克服html在构建应用上的不足而设计的. 工作原理: 1 加载html,然后解析成DOM: 2 加载angular.js脚本: 3 An ...

  7. ArcGIS Engine开发之地图基本操作(3)

    地图数据的加载 一.加载Shapefile数据 Shapefile文件是目前主流的一种空间数据的文件存储方式,也是不同GIS软件进行数据格式转换常用的中间格式.加载Shapefile数据的方式有两种: ...

  8. MySQL 一致性读 深入研究

    一致性读,又称为快照读.使用的是MVCC机制读取undo中的已经提交的数据.所以它的读取是非阻塞的. 相关文档:http://dev.mysql.com/doc/refman/5.6/en/innod ...

  9. kmeans算法并行化的mpi程序

    用c语言写了kmeans算法的串行程序,再用mpi来写并行版的,貌似参照着串行版来写并行版,效果不是很赏心悦目~ 并行化思路: 使用主从模式.由一个节点充当主节点负责数据的划分与分配,其他节点完成本地 ...

  10. 【Linux】重定向与管道

    重定向 redirection 每个命令有输入源和输出目的地,默认行为,是标准输入和标准输出.大多数情况,标准输入是键盘,标准输出是屏幕.可以为单独的操作修改输入和输出,这就是重定向.重定向可以使某个 ...