原文发表于cu:2016-03-11
参考文档:
- FTP原理:http://vbird.dic.ksu.edu.tw/linux_server/0410vsftpd_1.php
- FTP配置:http://vbird.dic.ksu.edu.tw/linux_server/0410vsftpd_2.php
- 虚拟用户配置:http://yuanbin.blog.51cto.com/363003/129071
一.环境
OS
CentOS6.7 x86_64
网络
Sever:192.168.1.254
Client:192.168.1.100
二.安装与配置
1. 安装
使用yum安装即可:yum install vsftpd -y
2. 软件模块
/etc/vsftpd/vsftpd.conf
vsftpd的配置文件,相关参数设定主要在这个文件进行。
/etc/pam.d/vsftpd
vsftpd使用 PAM 模块时的相关配置文件,主要用来作为身份认证之用,还有一些用户身份的抵挡功能, 也是透过这个档案来达成的。
/etc/vsftpd/ftpusers
与/etc/pam.d/vsftpd文件有关,也就是 PAM 模块中所指定的那个无法登入的用户配置文件。这个档案的设定简单,只要将“不想让他登入 FTP 的账号”写入这个文件即可。
/etc/vsftpd/user_list
这个文件是否生效与vsftpd.conf内的两个参数有关,分别是“userlist_enable”与“userlist_deny”,会根据vsftpd.conf配置文件内的userlist_deny={YES/NO}不同而不同(设置为YES时,是阻止user_list中的账号登入;设置为NO时,是允许user_list中的账号登入)。
/etc/vsftpd/ftpusers是PAM模块的安全设定文件,而/etc/vsftpd/user_list是vsftpd自定义的安全设定文件。
这个文件与/etc/vsftpd/ftpusers几乎一样,在默认情况下,可以将不希望可登入vsftpd账号写入这里。
/etc/vsftpd/chroot_list
此文件默认是没有的,需要手工建立,主要作用是将某些账号chroot在其家目录。
文件是否生效与vsftpd.conf的“chroot_list_enable”与“chroot_list_file”两个参数有关。
/usr/sbin/vsftpd
vsftpd的执行文件。
/var/ftp/
vsftpd默认匿名账户登入根目录,与ftp账号的家目录有关。
3. 配置文件简介
以下列出主要的一些配置项供参考。
服务器环境较相关的设置
connect_from_port_20=YES (NO)
主动式FTP服务器port,ftp-data的端口。
#主动式ftp指server接到client的ftp请求后,由server的20端口主动连接client告知的数据接收port,建立数据传输通道;
#被动式ftp指server接到client的ftp请求后,随机选取大于1024的port告知client,由client主动发起ftp数据通道连接;
#在有ftp的server与client之间有防火墙或nat时,基本只能使用被动式ftp。
listen_port=21
vsftpd的命令通道port,如果要使用非正规的端口,在此修改;修改端口号指适合以stand alone方式来启动的vsftpd(对于super daemon 无效)。
dirmessage_enable=YES (NO)
当ftp用户进入某个目录时,会显示该目录需要注意的内容,显示的档案默认是 .message ,可以使用下面的设定项目来修改显示内容。
message_file=.message
当dirmessage_enable=YES时,可以设定这个项目来让vsftpd 寻找该文件来显示信息。
listen=YES (NO)
如果设置为YES,表示vsftpd是以stand alone的方式来启动;设置为NO时,vsftpd以super daemon方式启动。
pasv_enable=YES (NO)
支持数据流的被动式联机模式(passive mode),请设定为YES。
use_localtime=YES (NO)
是否使用本地时间?vsftpd默认使用GMT时间(格林威治),建议设置YES。
write_enable=YES (NO)
是否允许用户上传数据。
connect_timeout=60
单位是秒,在数据连接的主动式联机模式下,发出的连接信号在 60 秒内得不到client响应,则不等待并强制断线。
accept_timeout=60
当client以被动式PASV进行数据传输时,如果server端启用passive port并等待client超过60秒而无响应,那么就强制断线。这个设置与connect_timeout类似,不过一个是管理主动联机,一个管理被动联机。
data_connection_timeout=300
如果server与client的数据联机已经成功建立(不论主动还是被动联机),但是可能由于线路问题导致300秒内没有顺利的完成数据传送,那client的联机就会被vsftpd 强制断线。
idle_session_timeout=300
如果client在300 秒内都无命令动作,强制断线。
max_clients=0
如果vsftpd 以stand alone方式启动,那么这个设定值可以设置在同一时间,最多有多少 client可以同时连上vsftpd。
max_per_ip=0
与max_clients类似,同一个IP同一时间可允许多少联机。
pasv_min_port=0, pasv_max_port=0
与 passive mode 使用的port有关,如果你想要使用65400到65410这11个port来进行被动式联机模式的连接,可以这样设定pasv_max_port=65410以及 pasv_min_port=65400。 如果是 0 的话,表示随机取用而不限制。
ftpd_banner=一些文字说明
当ftp用户登入时,在 ftp client软件上会显示的说明文字。建议使用下面的banner_file设定值取代这个项目。
banner_file=/path/file
指定某个纯文本文件作为用户登入vsftpd服务器时所显示的欢迎字眼。同时,也可以放置一些让用户知道本服务器的目录结构。
与实体用户相关的设置
guest_enable=YES(NO)
设为YES时,任何实体账户,都会被假设成为guest (所以默认是NO)。guest在vsftpd 当中,默认取得ftp账户的相关权限,但可以通过 guest_username来修改。
#使用虚拟账户登录FTP时需要设置为YES。
guest_username=ftp
在 guest_enable=YES 时生效,指定guest的身份(虚拟账户统一获得此设置账号的权限)。
local_enable=YES(NO)
此设置值必须要为YES时,在/etc/passw