一. 软件介绍

vsftp,全称:Very security ftp。是Linux系统下最常见,常用的 FTP 服务器架设软件。除此之外,还有一个proftp(Profession ftp)。这几天我专门学习了下vsftpd的配置,因为网上的教程多如牛毛,因此就算是写出来,给自己作个总结。

二. 功能及配置文件说明

1. 访问方式

vsftp架设的FTP文件服务器,提供3种远程的登录方式:

(1) 匿名登录方式

不用解释了,就是不需要用户名,密码。就能登录到服务器电脑里面

(2)本地用户方式

意思是,需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户。

(3) 虚拟用户方式

同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,在你linux系统中是没有的(没有该用户帐号)

2. 配置文件

(1)在linux系统下,Vsftp 这个软件的配置,都是通过修改它的配置文件,来完成的。配置文件位于: /etc/vsftpd 文件夹下,叫: vsftpd.conf。它是一个普通的文本文件,用任何文本编辑器都能直接打开编辑。

(2) 除了上面的“vsftpd.conf“,这个主配置文件,对于不同的登录方式,还有其他的配置文件会需要用到,如:

/etc/vsftpd.ftpusers 
   被禁止登录FTP的用户文件

/etc/vsftpd.user_list    允许登录FTP的用户文件

对于需要“用户名和密码登录“的2种方式,除了必须的配置文件,还会涉及到其他一些知识,我在文章后面会单独说到,比如db数据库。

三. Vsftpd 的安装和启用操作

1. 对于Debian和Ubuntu系统,可以直接通过: sudo apt-get install vsftpd 来安装

启用,停用和重新启动是: /etc/init.d/vsftpd start(stop 和 restart)

2. 对于Redhat, Fedoar和Centos

一般这3类系统,都自带vsftpd,可以通过: rpm -qa|grep vsftp,来查询下是否已经安装了。如果没装,可以从光盘里面找到安装包双击安装,或者也可以: yum install vsftpd 来安装

启用,停用和重新启动是: service vsftpd start(stop 和 restart)

四. 配置文件详解

其实算不上详解了,vsftp.conf这个主配置文件,网上教程多的数不清。我在这里给菜鸟作个指引,也算是把一些常见的配置项目,进行说明下。

vsftp.conf 里面内容,格式都是有一定“共性“的。举例说明下

anonymous_enable=YES 

这样算是一行,分三部分来说

(1)anonymous_enable,这是一部分,这部分是该项目具体的说明,这个例子,说 是:是否允许匿名方式登录。

PS:在inux许多软件的配置文件里面,都有 enable这个英文单词,意思是:启用(相反 disable是禁用),这个一定要记牢。

(2)

这个不解释了就是等于。。。。。。

(3) YES

这里的YES(不分大小写的),是前面项目的具体的“值”。不止是yes(或者相反的no),根据前面项目的具体含义不同,这个值还有可能会是其他东西,比如下面的例子:

chroot_list_file=/etc/vsftpd.chroot_list    
这个项目前面有个file,就是要后面给出具体的“文件”的路径和名字。

五. 常见配置文件项目(第一行是下面第二行配置选项的说明)

下面先列出一些最常见,常用的配置项目,这些项目在三种登录方式下都可能会用到:

#切换目录时,显示目录下.message的内容
dirmessage_enable=yes

#FTP上本地的文件权限,默认是077
local_umask=022

#激活上传和下传的日志
xferlog_enable=yes

#使用标准的日志格式
xferlog_std_format=yes

#验证方式
pam_service_name=vsftpd

#独立的VSFTPD服务器
listen=yes

#禁止用户使用 ls 命令
ls_recurse_enable=no

这几个是在3种模式下,都会出现的选项。大家一定要熟悉的

六. VSFTPD 3种登录模式解释

下文提到的3种登录模式的配置文件,除了贴在这里,还提供直接下载,里面包括了3种模式的vsftpd.conf配置文件,用之前别忘了改名(改成vsftpd.conf)还有这篇文章(教程),下载地址:
http://www.brsbox.com/filebox/uploadcomplete/randstr/i643JWPTl811M23553D88y224/fgid/6fc5615b535af149074144ad764ef94a/dirids/3568783

1. 匿名登录方式

这个方式最简单的,在配置文件中,一般以:anon开头的项目,一般都是设置“匿名用户登录”相关的选项的。比如:

#允许匿名用户访问
anonymous_enable=YES

#开放匿名用户的上传权限
anon_upload_enable=yes

#可创建目录的同时可以在此目录中上传文件
anon_mkdir_write_enable=yes

#开放本地用户写的权限
anon_other_write_enable=yes

#开启匿名服务器下载的权限
anon_world_readable_only=no

其 实,总体来说,对每个具体的登录方式进行配置,说白了,就是对vsftpd.conf文件里面的具体的相关项目进行设置,归结。比如我要设置匿名登录,那 我就需要把涉及到的有关匿名登录的项目,都写出来设置好就行了。下面我是实验好的,用于vsftpd匿名登录模式的:vsftpd.conf 文件,大家可以下载参考,或者直接使用(不算上下两条#号横线)

##################################配置文件开始############################################
#文件说明:此文件是Vsftpd的配置文件,即:/etc/vsftpd下的 vsftpd.conf 文件;
#此文件为最基础的,允许匿名用户登录,上传,下载,修改文件的配置文件
#linux下默认的FTP匿名共享目录为: /var/ftp,提供匿名用户使用的文件夹是: /var/ftp/pub
#文件创建于:CentOS 5.3下,软件版本:vsftpd-2.0.5-12.el5_3.1

#允许匿名用户访问
anonymous_enable=YES

#切换目录时,显示目录下.message的内容
dirmessage_enable=yes

#FTP上本地的文件权限,默认是077
local_umask=022

#激活上传和下传的日志
xferlog_enable=yes

#使用标准的日志格式
xferlog_std_format=yes

#欢迎信息
ftpd_banner=Welcom to My FTP File Server

#验证方式
pam_service_name=vsftpd

#独立的VSFTPD服务器
listen=yes

#允许匿名用户访问
anonymous_enable=YES

#开放匿名用户的上传权限
anon_upload_enable=yes

#可创建目录的同时可以在此目录中上传文件
anon_mkdir_write_enable=yes

#开放本地用户写的权限
write_enable=yes

#开放本地用户写的权限
anon_other_write_enable=yes

#开启匿名服务器下传的权限
anon_world_readable_only=no

#设定匿名用户的目录
anon_root=/var/ftp/pub
##################################配置文件结束############################################

2. Linux本地用户,远程登录FTP(简称:本地用户模式)

主配置文件里面必须存在的项目: 

#允许本地用户登录FTP
local_enable=YES

(1)先在你linux系统中,添加好所需用户,并设置好密码,命令:

useradd 用户名
passwd 用户名 (设置2次密码)

(2)把该用户,加入到FTP,这个组里面。(这个组是默认就有的,不需要额外创建),命令:

user -G 用户名 ftp

(3)创建该用户的(FTP访问)文件夹,并修改所有者权限(如果所有者不是该用户)

创建文件夹命令: mkdir 具体文件夹路径和名称
修改所有者: chown -R 用户 文件夹

注释:这个步骤可以不做,因为linux下创建了用户,系统会自动在 /home下,创建个文件夹,名字就是这个用户的,vsftpd会默认的认为,该用户的路径就是这个文件夹。其实为了方便,我倒是建议大家直接用默认的。这样可以省去很多因为权限导致的怪问题

(4) 修改配置文件

同上,不算上下2条#号横线

##################################配置文件开始############################################
#本文件为 Vsftpd 的配置文件,即:etc/vsftpd/vsftpd.conf;
#本文件用于本地用户登录,仅允许linux系统下的本地用户来访问FTP(具有完全权限);
#本文件创建于:CentOS 5.3下,软件版本:vsftpd-2.0.5-12.el5_3.1

#设置为独立服务器
listen=yes

#允许本地用户登录FTP
local_enable=YES

#启用本地用户(登录后)的读写权限
write_enable=yes

#FTP上本地的文件权限,默认是077
local_umask=022

#切换目录时,显示目录下.message的内容
dirmessage_enable=yes

#启用FTP数据端口的数据连接
connect_from_port_20=yes

#本地所有帐户都只能在自家目录
chroot_local_user=NO

#文件中的名单可以调用
chroot_list_enable=yes

#上述文件所在的位置(绝对路径)
chroot_list_file=/etc/vsftpd.chroot_list

#禁止用户使用 ls 命令
ls_recurse_enable=no

#启用 用户列表文件
userlist_enable=yes

#用户列表文件的绝对路径
userlist_file=/etc/vsftpd.user_list

#用户列表名单中的人不允许访问
userlist_deny=no

#验证方式
pam_service_name=vsftpd

#个人配置文件的路径(文件所在目录)
user_config_dir=/etc/vsftpd/vsftpd_user_conf
##################################配置文件结束############################################

(5) 在/etc/vsftpd 下面建立 vsftpd_user_conf 文件夹,下面再新建个文件,名字是你本地用户的名字,里面内容是:

write_enable=yes #给予该本地用户读写权限

(6) 在/etc 文件夹下,新建: vsftpd.chroot_list 文件,内容为允许访问FTP的本地用户的名字

(7)  在 /etc 文件夹下,新建:vsftpd.user_list 文件,内容同上

3. 虚拟用户模式

意思就是,访问FTP的用户,不是你linux系统里面本身就有的用户。这么说能明白吧?

主配置文件里面必须存在的项目: 

guest_enable=yes
guest_username=virtual

我这里,以实例来说明如何配置虚拟用户模式。在Ubuntu的WIKI里面,有篇非常简单实用的教程,我就是按照这个教程学的,我这里再把它细化来说,以便更多新人能够理解

原例出处: http://wiki.ubuntu.org.cn/index.php?title=Vsftpd虚拟用户设置&variant=zh-cn

(1) 先准备好你要用于访问FTP的虚拟用户名字和密码,比如: 用户名solar,密码 12345

(2) 在/etc/vsftpd 文件夹下,创建: loguser.txt 文件。内容就是你准备好的用户名和密码,一行用户名,下行密码。然后再重复,这样:

用户名1
密码1
用户名2
密码2
用户名3
密码3
…………

(3)生成数据库。虚拟用户模式,是需要linux系统采用“数据库”的方式,来保存帐号信息的。我们这里用的是“db“这个数据库软件包,或许你的系统没有这个包,先安装上就是了

debian或Ubuntu: sudo apt-get install db-util
Redat,Fedoar或Centos: yum install db*

安装完成后,在/etc/vsftpd 文件夹下,输入: db_load -T -t hash -f loguser.txt /etc/vsftpd_login.db

(4)设置下创建出来的数据库文件的权限

chmod 600 /etc/vsftpd_login.db

(5)配置pam(用于FTP对用户的验证)

新建: /etc/pam.d/vsftpd.vu 文件,内容是2行:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

(6)为虚拟用户创建一个本地用户

新建一个系统用户virtual,不用设置用户的密码。用户家目录为/home/ftp, 用户登录终端设为/bin/false(即使之不能登录系统) ,命令2条:

useradd virtual -d /home/ftp -s /bin/false
chown virtual:virtual /home/ftp

(如果第2条命令,说没有找到 virtual 组,就自己新建这个组)

(7) 设置vsftpd.conf 文件,内容如下:

##################################配置文件开始############################################
#本文件为 Vsftpd 的配置文件,即:etc/vsftpd/vsftpd.conf;
#本文件用于虚拟用户登录,允许linux系统下没有的用户,来访问FTP(默认具有只读权限);
#本文件创建于:CentOS 5.3下,软件版本:vsftpd-2.0.5-12.el5_3.1

listen=yes
anonymous_enable=no
dirmessage_enable=yes
xferlog_enable=yes
xferlog_file=/var/log/vsftpd.log
chroot_local_user=yes
guest_enable=yes
guest_username=virtual
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=yes
##################################配置文件结束############################################

(8) 设置虚拟用户权限

和本地用户模式的方法一样,在 /etc/vsftpd/vsftpd_user_conf 文件夹下(没有文件夹就自己建立),创建文本文件,名字就是你虚拟用户的名字。每个用户都要单独创建。然后在里面写上具体的,单独的,只针对这个用户,他所拥有的权限,比如:

write_enable=YES
local_root=/home/ftp/solar

到此为止就OK了,启动vsftpd服务吧,自己拿客户端软件实验下。

七. 其他问题

1. 在Redhat 或者 Centos下配置FTP,别忘了关闭selinux,安全级别也设置成“禁用“,否则会出现莫名其妙的问题。如果你不能,或者不想关闭,就输入: setsebool ftpd_disable_trans 1 && service vsftpd restart就能解决

2.  在selinux开启的情况下,如果遇到: Could not change active booleans: Invalid boolean,则输入: setsebool -P ftp_home_dir=1,即可。

3.  尽量把FTP文件夹设置在/home下面,这样能免去很多权限的问题

4.  不要直接从网页上面复制配置文件项目,有时候这样做,写好的配置文件不能用~(搞不懂为什么。。。)还是自己老老实实的照着打字吧~

八. vsftpd 主配置文件项目说明

给出大部分项目的具体说明,其实也是网上搜刮的,呵呵,因为没必要再自己单独写一次了。下面内容出自:http://bbs.dlmu.net/learn/html/waiyuxuexi/jisuanjixitong/2009/0527/17531.html

1. 连接选项

本部分主要是一些与建立FTP链接相关的选项。

(1) 监听地址与控制端口

listen_address=ip address
此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了在主机的哪个IP地址上监听FTP请求,即在哪个IP地址上提供FTP 服务。对于只有一个IP地址的主机,不需要使用此参数。对于多址主机,不设置此参数,则监听所有IP地址。默认值为无。

listen_port=port_value
指定FTP服务器监听的端口号(控制端口),默认值为21。此选项在standalone模式下生效。

(2)FTP模式与数据端口

FTP 分为两类,PORT FTP和PASV FTP,PORT FTP是一般形式的FTP。这两种FTP在建立控制连接时操作是一样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)建立控制链接,并通过此链接进行传输操作指令。它们的区别在于使用数据传输端口(ftp- data)的方式。PORT FTP由FTP服务器指定数据传输所使用的端口,默认值为20。PASV FTP由FTP客户端决定数据传输的端口。 PASV FTP这种做法,主要是考虑到存在防火墙的环境下,由客户端与服务器进行沟通(客户端向服务器发出数据传输请求中包含了数据传输端口),决定两者之间的数据传输端口更为方便一些。

port_enable=YES|NO
如果你要在数据连接时取消PORT模式时,设此选项为NO。默认值为YES。

connetc_from_port_20=YES|NO
控制以PORT模式进行数据传输时是否使用20端口(ftp-data)。YES使用,NO不使用。默认值为NO,但RHL自带的vsftpd.conf文件中此参数设为YES。

ftp_data_port=port number
设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORT FTP模式。

port_promiscuous=YES|NO
默认值为NO。为YES时,取消PORT安全检查。该检查确保外出的数据只能连接到客户端上。小心打开此选项。

pasv_enable=YES|NO
YES,允许数据传输时使用PASV模式。NO,不允许使用PASV模式。默认值为YES。

pasv_min_port=port number
pasv_max_port=port number
设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意。默认值为0。把端口范围设在比较高的一段范围内,比如50000-60000,将有助于安全性的提高。

pasv_promiscuous=YES|NO
此选项激活时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO。

pasv_address=
此选项为一个数字IP地址,作为PASV命令的响应。默认值为none,即地址是从呼入的连接套接字(incoming connectd socket)中获取。 

2. ASCII模式

默认情况下,VSFTPD是禁止使用ASCII传输模式。即使FTP客户端使用asc命令,指明要使用ASCII模式,但是,VSFTPD表面上接受了asc命令,而在实际传输文件时,还是使用二进制方式。下面选项控制VSFTPD是否使用ASCII传输模式。

ascii_upload_enable=YES|NO
控制是否允许使用ascii模式上传文件,YES允许,NO不允许,默认为NO。

ascii_download_enable=YES|NO
控制是否允许使用ascii模式下载文件,YES允许,NO不允许,默认为NO。


3. 超时选项

idle_session_timeout=
空闲(发呆)用户会话的超时时间,若是超出这时间没有数据的传送或是指令的输入,则会强迫断线。单位为秒,默认值为300。

data_connection_timeout=
空闲的数据连接的超时时间。默认值为300 秒。

accept_timeout=numerical value
接受建立联机的超时设定,单位为秒。默认值为60。

connect_timeout=numerical value
响应PORT方式的数据联机的超时设定,单位为秒。默认值为60。以上两个选项针对客户端的,将使客户端空闲1分钟后自动中断连接,并在中断1分钟后自动激活连接。

4. 负载控制

max_clients=numerical value
此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了FTP服务器最大的并发连接数,当超过此连接数时,服务器拒绝客户端连接。默认值为0,表示不限最大连接数。

max_per_ip=numerical value
此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义每个IP地址最大的并发连接数目。超过这个数目将会拒绝连接。此选项的设置将影响到象网际快车这类的多进程下载软件。默认值为0,表示不限制。

anon_max_rate=value
设定匿名用户的最大数据传输速度value,以Bytes/s为单位。默认无。

local_max_rate=value
设定用户的最大数据传输速度value,以Bytes/s为单位。默认无。此选项对所有的用户都生效。此外,也可以在用户个人配置文件中使用此选项,以指定特定用户可获得的最大数据传输速率。
步骤如下:
①在vsftpd.conf中指定用户个人配置文件所在的目录,如:
user_config_dir=/etc/vsftpd/userconf
②生成/etc/vsftpd/userconf目录。
③用户个人配置文件是在该目录下,与特定用户同名的文件,如:
/etc/vsftpd/userconf/xiaowang
④在用户的个人配置文件中设置local_max_rate参数,如:
local_max_rate=80000
以上步骤设定FTP用户xiaowang的最大数据传输速度为80KBytes/s。

VSFTPD 对于速度控制的变化范围大概在80%到120%之间。比如我们限制最高速度为100KBytes/s, 但实际的速度可能在80KBytes/s 到120KBytes/s 之间。当然,若是线路带宽不足时,速率自然会低于此限制。

5. 用户选项

VSFTPD的用户分为三类:匿名用户(anonymous)、本地用户(local user)以及虚拟用户(guest)

6. 匿名用户

anonymous_enable=YES|NO
控制是否允许匿名用户登录,YES允许,NO不允许,默认值为YES。

ftp_username=
匿名用户所使用的系统用户名。默认下,此参数在配置文件中不出现,值为ftp。

no_anon_password=YES|NO
控制匿名用户登入时是否需要密码,YES不需要,NO需要。默认值为NO。

deny_email_enable=YES|NO
此参数默认值为NO。当值为YES时,拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户。即, 当匿名用户使用banned_email_file文件中所列出的e-mail进行登录时,被拒绝。显然,这对于阻击某些Dos***有效。当此参数生效 时,需追加banned_email_file参数

banned_email_file=/etc/vsftpd.banned_emails
指定包含被拒绝的e-mail地址的文件,默认文件为/etc/vsftpd.banned_emails。

anon_root=
设定匿名用户的根目录,即匿名用户登入后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/。

anon_world_readable_only=YES|NO
控制是否只允许匿名用户下载可阅读文档。YES,只允许匿名用户下载可阅读的文件。NO,允许匿名用户浏览整个服务器的文件系统。默认值为YES。

anon_upload_enable=YES|NO
控制是否允许匿名用户上传文件,YES允许,NO不允许,默认是不设值,即为NO。除了这个参数外,匿名用户要能上传文件,还需要两个条件:    write_enable参数为YES;二,在文件系统上,FTP匿名用户对某个目录有写权限。

anon_mkdir_write_enable=YES|NO
控制是否允许匿名用户创建新目录,YES允许,NO不允许,默认是不设值,即为NO。当然在文件系统上,FTP匿名用户必需对新目录的上层目录拥有写权限。

anon_other_write_enable=YES|NO
控制匿名用户是否拥有除了上传和新建目录之外的其他权限,如删除、更名等。YES拥有,NO不拥有,默认值为NO。

chown_uploads=YES|NO
是否修改匿名用户所上传文件的所有权。YES,匿名用户所上传的文件的所有权将改为另外一个不同的用户所有,用户由chown_username参数指定。此选项默认值为NO。

chown_username=whoever
指定拥有匿名用户上传文件所有权的用户。此参数与chown_uploads联用。不推荐使用root用户。

7. 本地用户

在使用FTP服务的用户中,除了匿名用户外,还有一类在FTP服务器所属主机上拥有账号的用户。VSFTPD中称此类用户为本地用户(local users),等同于其他FTP服务器中的real用户。

local_enable=YES|NO
控制vsftpd所在的系统的用户是否可以登录vsftpd。默认值为YES。

local_root=
定义所有本地用户的根目录。当本地用户登入时,将被更换到此目录下。默认值为无。

user_config_dir=
定义用户个人配置文件所在的目录。用户的个人配置文件为该目录下的同名文件。个人配置文件的格式与vsftpd.conf格式相同。例如定义 user_config_dir=/etc/vsftpd/userconf,并且主机上有用户xiaowang,lisi,那我们可以在 user_config_dir的目录新增名为xiaowang、lisi的两个文件。当用户lisi 登入时,VSFTPD则会读取 user_config_dir下lisi这个文件中的设定值,应用于用户lisi。默认值为无。

8. 虚拟用户

guest_enable=YES|NO
若是启动这项功能,所有的非匿名登入者都视为guest。默认值为关闭。

guest_username=
定义VSFTPD的guest用户在系统中的用户名。默认值为ftp。

9. 用户登录控制

pam_service_name=vsftpd
指出VSFTPD进行PAM认证时所使用的PAM配置文件名,默认值是vsftpd,默认PAM配置文件是/etc/pam.d/vsftpd。

/etc/vsftpd.ftpusers
VSFTPD禁止列在此文件中的用户登录FTP服务器。这个机制是在/etc/pam.d/vsftpd中默认设置的。

userlist_enable=YES|NO
此选项被激活后,VSFTPD将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入 密码之前就被禁止了。即该用户名输入后,VSFTPD查到该用户名在列表,VSFTPD就直接禁止掉该用户,不会再进行询问密码等后续步聚。默认值为 NO。

userlist_file=/etc/vsftpd.user_list
指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpd.user_list。 

       userlist_deny=YES|NO
决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在 userlist_enable 选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示。NO,只允许在文件中的用户登录FTP服务器。

tcp_wrappers=YES|NO
在VSFTPD中使用TCP_Wrappers远程访问控制机制,默认值为YES。

10.目录访问控制

chroot_list_enable=YES|NO
锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。

chroot_list_file=/etc/vsftpd/chroot_list
指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。通常该文件是/etc/vsftpd/chroot_list。此选项默认不设置。

chroot_local_users=YES|NO
将本地用户锁定在自家目录中。当此项被激活时,chroot_list_enable和chroot_local_users参数的作用将发生变 化,chroot_list_file所指定文件中的用户将不被锁定在自家目录。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、 shell访问等权限时。因此,只有在确实了解的情况下,才可以打开此参数。默认值为NO。

passwd_chroot_enable
当此选项激活时,与chroot_local_user选项配合,chroot()容器的位置可以在每个用户的基础上指定。每个用户的容器来源于/etc/passwd中每个用户的自家目录字段。默认值为NO。
文件操作控制

hide_ids=YES|NO
是否隐藏文件的所有者和组信息。YES,当用户使用"ls -al"之类的指令时,在目录列表中所有文件的拥有者和组信息都显示为ftp。默认值为NO。

ls_recurse_enable=YES|NO
YES,允许使用"ls -R" 指令。这个选项有一个小的安全风险,因为在一个大型FTP站点的根目录下使用"ls -R"会消耗大量系统资源。默认值为NO。

write_enable=YES|NO
控制是否允许使用任何可以修改文件系统的FTP 的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。默认值为NO,不过自带的简单配置文件中打开了该选项。

secure_chroot_dir=
这选项指向一个空目录,并且ftp用户对此目录无写权限。当vsftpd不需要访问文件系统时,这个目录将被作为一个安全的容器,用户将被限制在此目录中。默认目录为/usr/share/empty。

11. 新增文件权限设定

anon_umask=
匿名用户新增文件的umask 数值。默认值为077。

file_open_mode=
上传档案的权限,与chmod 所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。默认值为0666。

local_umask=
本地用户新增档案时的umask 数值。默认值为077。不过,其他大多数的FTP服务器都是使用022。如果您的用户希望的话,可以修改为022。在自带的配置文件中此项就设为了022。

12. 提示信息

ftpd_banner=login banner string
此参数定义了login banner string(登录欢迎语字符串)。用户可以自行修改。预设值为无。当ftpd_banner设置后,将取代系统原来的欢迎词。

banner_file=/directory/vsftpd_banner_file
此项指定一个文本文件,当使用者登入时,会显示此该文件的内容,通常为欢迎话语或是说明。默认值为无。与ftpd_banner相比, banner_file是文本文件的形式,而ftpd_banner是字串格式。banner_file选项将取代ftpd_banner选项。

dirmessage_enable=YES|MO
控制是否启用目录提示信息功能。YES启用,NO不启用,默认值为YES。此功能启用后,当用户进入某一个目录时,会检查该目录下是否有message_file选项所指定的文档,若是有,则会出现此文档的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。 

       message_file=
此选项,仅在dirmessage_enable选项激活方生效。默认值为.message。

13. 日志设置

xferlog_enable=YES|NO
控制是否启用一个日志文件,用于详细记录上传和下载。该日志文件由xferlog_file选项指定。默认值为NO,但简单配置文件中激活此选项。

xferlog_file=
这个选项设定记录传输日志的文件名。默认值为/var/log/vsftpd.log。

xferlog_std_format=YES|NO
控制日志文件是否使用xferlog的标准格式,如同wu-ftpd一样。使用xferlog格式,可以重新使用已经存在的传输统计生成器。然而,默认的日志格式更为可读性。默认值为NO,但自带的配置文件中激活了此选项。

log_ftp_protocol=YES|NO
当此选项激活后,所有的FTP请求和响应都被记录到日志中。提供此选项时,xferlog_std_format不能被激活。这个选项有助于调试。默认值为NO。

14. 其他设置

setproctitle_enable=YES|NO
YES,VSFTPD将在系统进程列表中显示每个会话(session)的状态。也就是说,进程报告将显示每个vsftpd会话在做什么(挂起、下载等),如用ps -ef|grep ftp。出于安全的目的,可以考虑将此选项关闭。NO,进程报告只显示一个vsftpd进程在运行。默认值为 NO。

text_userdb_names=YES|No
当使用者登入后使用ls -al 之类指令时,目录列表的用户和组信息域,默认是出现拥有者的UID,而不是该档案拥有者的名称。若是希望出现拥有者的名称,则将此功能开启。默认值为NO。

user_localtime=YES|NO
默认为NO。YES,VSFTPD显示目录列表时使用你本地时区的时间。默认是显示GMT时间。同样,由ftp命令“MDTM”返回的时间值也受此选项影响。

check_shell=YES|NO
此选项仅对不使用PAM方式的VSFTPD生效。当此选项关闭后,当本地用户登录时,VSFTPD不会检查/etc/shells文件以寻找一个有效的用户shell。默认为YES。

nopriv_user=
指定一个用户,当VSFTPD不想要什么权限时,使用此用户身份。这用户最好是一个专用的用户,而不是用户nobody。在大多数的机器上,nobody用户被用于大量重要的事情。默认值为nobody。

pam_service_name=
指明VSFTPD使用用PAM验证服务时的PAM配置文件名。默认值为ftp。

九. FTP服务器常见“数字提示”信息

      
110 重新启动标记应答。

120 服务在多久时间内ready。

125 数据链路埠开启,准备传送。

150 文件状态正常,开启数据连接端口。

200 命令执行成功。

202 命令执行失败。

211 系统状态或是系统求助响应。

212 目录的状态。

213 文件的状态。

214 求助的讯息。

215 名称系统类型。

220 新的联机服务ready。

221 服务的控制连接埠关闭,可以注销。

225 数据连结开启,但无传输动作。

226 关闭数据连接端口,请求的文件操作成功。

227 进入passive mode。

230 使用者登入。

250 请求的文件操作完成。

257 显示目前的路径名称。

331 用户名称正确,需要密码。

332 登入时需要账号信息。

350 请求的操作需要进一部的命令。

421 无法提供服务,关闭控制连结。

425 无法开启数据链路。

426 关闭联机,终止传输。

450 请求的操作未执行。

451 命令终止:有本地的错误。

452 未执行命令:磁盘空间不足。

500 格式错误,无法识别命令。

501 参数语法错误。

502 命令执行失败。

503 命令顺序错误。

504 命令所接的参数不正确。

530 未登入。

532 储存文件需要账户登入。

550 未执行请求的操作。

551 请求的命令终止,类型未知。

552 请求的文件终止,储存位溢出。

553 未执行请求的的命令,名称不正确