<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>风叶 &#187; vsftpd.conf详解</title>
	<atom:link href="http://blog.myhnet.cn/tag/vsftpdconf%e8%af%a6%e8%a7%a3/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.myhnet.cn</link>
	<description>秋湍泻石髓 风叶聚云根</description>
	<lastBuildDate>Fri, 20 Aug 2010 15:05:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>vsftpd配置大全</title>
		<link>http://blog.myhnet.cn/2009/01/19/a-complete-guide-on-how-to-configure-vsftpd/</link>
		<comments>http://blog.myhnet.cn/2009/01/19/a-complete-guide-on-how-to-configure-vsftpd/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 06:02:25 +0000</pubDate>
		<dc:creator>myhnet</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[libpam-mysql]]></category>
		<category><![CDATA[vsftpd]]></category>
		<category><![CDATA[vsftpd.conf]]></category>
		<category><![CDATA[vsftpd.conf详解]]></category>
		<category><![CDATA[vsftpd配置大全]]></category>

		<guid isPermaLink="false">http://blog.myhnet.cn/?p=39</guid>
		<description><![CDATA[人来疯技术文档之vsftp配置大全 人来疯 adminxu 人来疯论坛 http://www.d-1701.com/bbs MSN：xu1701@hotmail.com 版权信息：未经许可不得转载，转载本文章请与人来疯论坛坛主adminxu联系！ 联系方法：使用msn 环境： RedHat AS4 说明： 如果不做说明，一般安装命令均使用ROOT权限，用 # 表示 特别说明：无 以下文章介绍Liunx 环境下vsftpd的三种实现方法 一、前言 Vsftp(Very Secure FTP)是一种在Unix/Linux中非常安全且快速稳定的FTP服务器，目前已经被许多大型站点所采用，如ftp.redhat.com,ftp.kde.org,ftp.gnome.org.等。Vsftpd的实现有三种方式 匿名用户形式：在默认安装的情况下，系统只提供匿名用户访问 本地用户形式：以/etc/passwd中的用户名为认证方式 虚拟用户形式：支持将用户名和口令保存在数据库文件或数据库服务器中。相对于FTP的本地用户形式来说，虚拟用户只是FTP服务器的专有用户，虚拟用户只能访问FTP服务器所提供的资源，这大大增强系统本身的安全性。相对于匿名用户而言，虚拟用户需要用户名和密码才能获取FTP服务器中的文件，增加了对用户和下载的可管理性。对于需要提供下载服务，但又不希望所有人都可以匿名下载；既需要对下载用户进行管理，又考虑到主机安全和管理方便的FTP站点来说，虚拟用户是一种极好的解决方案。 二、获取最新版的Vsftp程序 Vsftp官方下载：ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz，目前已经到2.0.3版本。假设我们已经将vsftpd-2.0.3.tar.gz文件下载到服务器的/home/xuchen目录 # cd /home/xuchen# tar xzvf vsftpd-2.0.3.tar.gz //解压缩程序# cd vsftpd-2.0.3 三、三种方式的实现 1、匿名用户形式实现 # vi builddefs.h \\编辑builddefs.h 文件，文件内容如下： #ifndef VSF_BUILDDEFS_H#define VSF_BUILDDEFS_H#undef VSF_BUILD_TCPWRAPPERS#define VSF_BUILD_PAM#undef VSF_BUILD_SSL#endif /* VSF_BUILDDEFS_H */ 将以上undef的都改为define，支持tcp_wrappers，支持PAM认证方式，支持SSL # make&#160; [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>人来疯技术文档之vsftp配置大全<br />
人来疯 adminxu<br />
人来疯论坛 http://www.d-1701.com/bbs<br />
MSN：xu1701@hotmail.com</p></blockquote>
<p><font color=red>版权信息：未经许可不得转载，转载本文章请与人来疯论坛坛主adminxu联系！</font><br />
联系方法：使用msn<br />
环境：<br />
RedHat  AS4<br />
说明：<br />
如果不做说明，一般安装命令均使用ROOT权限，用 # 表示</p>
<p>特别说明：无</p>
<p>以下文章介绍Liunx 环境下vsftpd的三种实现方法</p>
<h4>一、前言</h4>
<p>Vsftp(Very Secure FTP)是一种在Unix/Linux中非常安全且快速稳定的FTP服务器，目前已经被许多大型站点所采用，如ftp.redhat.com,ftp.kde.org,ftp.gnome.org.等。Vsftpd的实现有三种方式</p>
<ol>
<li>匿名用户形式：在默认安装的情况下，系统只提供匿名用户访问</li>
<li>本地用户形式：以/etc/passwd中的用户名为认证方式</li>
<li>虚拟用户形式：支持将用户名和口令保存在数据库文件或数据库服务器中。相对于FTP的本地用户形式来说，虚拟用户只是FTP服务器的专有用户，虚拟用户只能访问FTP服务器所提供的资源，这大大增强系统本身的安全性。相对于匿名用户而言，虚拟用户需要用户名和密码才能获取FTP服务器中的文件，增加了对用户和下载的可管理性。对于需要提供下载服务，但又不希望所有人都可以匿名下载；既需要对下载用户进行管理，又考虑到主机安全和管理方便的FTP站点来说，虚拟用户是一种极好的解决方案。</li>
<ol>
<h4>二、获取最新版的Vsftp程序</h4>
<p>Vsftp官方下载：ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz，目前已经到2.0.3版本。假设我们已经将vsftpd-2.0.3.tar.gz文件下载到服务器的/home/xuchen目录</p>
<div class="hl-surround"><div class="hl-main"># cd /home/xuchen<br /># tar xzvf vsftpd-2.0.3.tar.gz //解压缩程序<br /># cd vsftpd-2.0.3</div></div>
<p><span id="more-39"></span></p>
<h4>三、三种方式的实现</h4>
<h5>1、匿名用户形式实现</h5>
<p># vi builddefs.h  \\编辑builddefs.h 文件，文件内容如下：</p>
<div class="hl-surround"><div class="hl-main">#ifndef VSF_BUILDDEFS_H<br /><br />#define VSF_BUILDDEFS_H<br />#undef VSF_BUILD_TCPWRAPPERS<br />#define VSF_BUILD_PAM<br />#undef VSF_BUILD_SSL<br /><br />#endif /* VSF_BUILDDEFS_H */</div></div>
<p>将以上undef的都改为define，支持tcp_wrappers，支持PAM认证方式，支持SSL</p>
<div class="hl-surround"><div class="hl-main"># make&nbsp; //直接在vsftpd-2.0.3里用make编译<br /># ls -l vsftpd<br />-rwxr-xr-x&nbsp; 1 root root 86088 Jun&nbsp; 6 12:29 vsftpd&nbsp; //可执行程序已被编译成功</div></div>
<p>创建必要的帐号，目录：</p>
<div class="hl-surround"><div class="hl-main"># useradd nobody&nbsp; //可能你的系统已经存在此帐号，那就不用建立<br /># mkdir /usr/share/empty&nbsp; //可能你的系统已经存在此目录，那就不用建立<br /># mkdir /var/ftp&nbsp; //可能你的系统已经存在此目录，那就不用建立<br /># useradd -d /var/ftp ftp&nbsp; //可能你的系统已经存在此帐号，那就不用建立<br /># chown root:root /var/ftp<br /># chmod og-w /var/ftp</div></div>
<p>请记住，如果你不想让用户在本地登陆，那么你需要把他的登陆SHELL设置成/sbin/nologin，比如以上的nobody和ftp我就设置成/sbin/nologin</p>
<p>安装vsftp配置文件，可执行程序，man等:</p>
<div class="hl-surround"><div class="hl-main"># install -m 755 vsftpd /usr/local/sbin/vsftpd-ano<br /># install -m 644 vsftpd.8 /usr/share/man/man8<br /># install -m 644 vsftpd.conf.5 /usr/share/man/man5<br /># install -m 644 vsftpd.conf /etc/vsftpd-ano.conf</div></div>
<p>这样就安装完成了，那么我们开始进行简单的配置</p>
<p># vi /etc/vsftpd-ano.conf ,将如下三行加入文件</p>
<div class="hl-surround"><div class="hl-main">listen=YES<br />listen_port=21<br />tcp_wrappers=YES<br />anon_root=/var/ftp //设置匿名用户本地目录，和ftp用户目录必须相同</div></div>
<p>listen=YES的意思是使用standalone启动vsftpd，而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)</p>
<p>以后台方式启动vsftpd</p>
<div class="hl-surround"><div class="hl-main"># /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf &amp;</div></div>
<p>注意：每行的值都不要有空格，否则启动时会出现错误，举个例子，假如我在listen=YES后多了个空格，那我启动时就出现如下错误：</p>
<div class="hl-surround"><div class="hl-main">500 OOPS: bad bool value in config file for: listen</div></div>
<p>测试搭建好的匿名用户方式</p>
<div class="hl-surround"><div class="hl-main"># ftp 127.0.0.1<br />Connected to 127.0.0.1.<br />220 (vsFTPd 2.0.3)<br />530 Please login with USER and PASS.<br />530 Please login with USER and PASS.<br />KERBEROS_V4 rejected as an authentication type<br />Name (127.0.0.1:root): ftp<br />331 Please specify the password.<br />Password:<br />230 Login successful.<br />Remote system type is UNIX.<br />Using binary mode to transfer files.<br />ftp&gt;; pwd<br />257 &quot;/&quot;<br />ftp&gt;; quit<br />221 Goodbye.<br />#</div></div>
<p>OK，已经完成了，very nice.</p>
<p><b>高级配置</b><br />
细心的朋友可能已经看出来我们只在默认配置文件增加了四行，就实现了FTP连接（也证明了vsftpd的易用性），那么让我们传个文件吧，呀！！传输失败了（见图1）<br />
为什么呢？因为 vsftpd 是为了安全需要，/var/ftp目录不能把所有的权限打开，所以我们这时要建一个目录pub，当然也还是需要继续修改配置文件的。</p>
<div class="hl-surround"><div class="hl-main"># mkdir /var/ftp/pub<br /># chmod -R 777 /var/ftp/pub</div></div>
<p>为了测试方便，我们先建立一个名为kill-ano的脚本，是为了杀掉FTP程序的</p>
<div class="hl-surround"><div class="hl-main">#!/bin/bash<br />a=`/bin/ps -A | grep vsftpd-ano | awk '{print $1}'`<br />kill -9 $a</div></div>
<p>那么现在大家看看我的匿名服务器配置文件吧</p>
<div class="hl-surround"><div class="hl-main">anonymous_enable=YES&nbsp; //允许匿名访问，这是匿名服务器必须的<br />write_enable=YES&nbsp; //全局配置可写<br />no_anon_password=YES //匿名用户login时不询问口令<br />anon_umask=077&nbsp; //匿名用户上传的文件权限是-rw----<br />anon_upload_enable=YES&nbsp; //允许匿名用户上传文件<br />anon_mkdir_write_enable=YES&nbsp; //允许匿名用户建立目录<br />anon_other_write_enable=YES&nbsp; //允许匿名用户具有建立目录，上传之外的权限，如重命名，删除<br />dirmessage_enable=YES&nbsp; //当使用者转换目录,则会显示该目录下的.message信息<br />xferlog_enable=YES&nbsp; &nbsp;//记录使用者所有上传下载信息<br />xferlog_file=/var/log/vsftpd.log&nbsp; //将上传下载信息记录到/var/log/vsftpd.log中<br />xferlog_std_format=YES&nbsp; &nbsp;//日志使用标准xferlog格式<br />idle_session_timeout=600&nbsp; //客户端超过600S没有动作就自动被服务器踢出<br />data_connection_timeout=120&nbsp; //数据传输时超过120S没有动作被服务器踢出<br />chown_uploads=YES<br />chown_username=daemon&nbsp; //上传文件的属主<br />ftpd_banner=Welcome to d-1701.com FTP service.&nbsp; //FTP欢迎信息<br />anon_max_rate=80000&nbsp; //这是匿名用户的下载速度为80KBytes/s<br />check_shell=NO&nbsp; //不检测SHELL</div></div>
<p>现在再测试，先kill掉再启动FTP程序</p>
<div class="hl-surround"><div class="hl-main"># ./kill-ano<br /># /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf &amp;</div></div>
<p>上传一个文件测试一下，怎么样？OK了吧，下载刚上传的那个文件，恩？不行，提示</p>
<div class="hl-surround"><div class="hl-main">550 Failed to open file.<br />传输已失败！<br />传输队列已完成<br />1 个文件传输失败</div></div>
<p>没有关系，你记得咱们设置了anon_umask=077了吗？所以你下载不了，如果你到服务器上touch 一个文件（644），测试一下，是可以被下载下来的，好了，匿名服务器就说到这里了。</p>
<h5>2、本地用户形式实现</h5>
<div class="hl-surround"><div class="hl-main"># cd /home/xuchen/vsftpd-2.0.3&nbsp; //进入vsftpd-2.0.3的源代码目录<br /># make clean&nbsp; //清除编译环境<br /># vi builddefs.h&nbsp; \\继续编辑builddefs.h 文件，文件内容如下：<br />#ifndef VSF_BUILDDEFS_H<br /><br />#define VSF_BUILDDEFS_H<br />#define VSF_BUILD_TCPWRAPPERS<br />#define VSF_BUILD_PAM<br />#define VSF_BUILD_SSL<br /><br />#endif /* VSF_BUILDDEFS_H */</div></div>
<p>将以上define VSF_BUILD_PAM行的define改为undef，支持tcp_wrappers，不支持PAM认证方式，支持SSL，记住啊，如果支持了PAM认证方式，你本地用户是不能登陆的。</p>
<div class="hl-surround"><div class="hl-main"># make&nbsp; //直接在vsftpd-2.0.3里用make编译<br /># ls -l vsftpd<br />-rwxr-xr-x&nbsp; 1 root root 84712 Jun&nbsp; 6 18:56 vsftpd&nbsp; //可执行程序已被编译成功</div></div>
<p>创建必要的帐号，目录：</p>
<div class="hl-surround"><div class="hl-main"># useradd nobody&nbsp; //可能你的系统已经存在此帐号，那就不用建立<br /># mkdir /usr/share/empty&nbsp; //可能你的系统已经存在此目录，那就不用建立<br /># mkdir /var/ftp&nbsp; //可能你的系统已经存在此目录，那就不用建立<br /># useradd -d /var/ftp ftp&nbsp; //可能你的系统已经存在此帐号，那就不用建立<br /># chown root:root /var/ftp<br /># chmod og-w /var/ftp</div></div>
<p>请记住，如果你不想让用户在本地登陆，那么你需要把他的登陆SHELL设置成/sbin/nologin，比如以上的nobody和ftp我就设置成/sbin/nologin</p>
<p>安装vsftp配置文件，可执行程序，man等:</p>
<div class="hl-surround"><div class="hl-main"># install -m 755 vsftpd /usr/local/sbin/vsftpd-loc<br /># install -m 644 vsftpd.8 /usr/share/man/man8<br /># install -m 644 vsftpd.conf.5 /usr/share/man/man5<br /># install -m 644 vsftpd.conf /etc/vsftpd-loc.conf</div></div>
<p>这样就安装完成了，那么我们开始进行简单的配置</p>
<p># vi /etc/vsftpd-loc.conf ,将如下三行加入文件</p>
<div class="hl-surround"><div class="hl-main">listen=YES<br />listen_port=21<br />tcp_wrappers=YES //支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)</div></div>
<p>listen=YES的意思是使用standalone启动vsftpd，而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)，注意事项请参看匿名用户的配置。</p>
<div class="hl-surround"><div class="hl-main">anonymous_enable=NO<br />local_enable=YES&nbsp; //这两项配置说不允许匿名用户登陆，允许本地用户登陆</div></div>
<p>以后台方式启动vsftpd</p>
<div class="hl-surround"><div class="hl-main"># /usr/local/sbin/vsftpd-loc /etc/vsftpd-loc.conf &amp;</div></div>
<p>测试搭建好的匿名用户方式，先测试root用户吧 ：）</p>
<div class="hl-surround"><div class="hl-main"># ftp 127.0.0.1<br />Connected to 127.0.0.1.<br />220 (vsFTPd 2.0.3)<br />530 Please login with USER and PASS.<br />530 Please login with USER and PASS.<br />KERBEROS_V4 rejected as an authentication type<br />Name (127.0.0.1:root): root<br />331 Please specify the password.<br />Password:<br />230 Login successful.<br />Remote system type is UNIX.<br />Using binary mode to transfer files.<br />ftp&gt;; pwd<br />257 &quot;/root&quot;<br />ftp&gt;; quit<br />221 Goodbye.</div></div>
<p>我们看到root用户可以登陆到ftp，他的登陆目录就是自己的主目录。<br />
再测试一个系统用户，那我们先建立一个用户名叫xuchen的</p>
<div class="hl-surround"><div class="hl-main"># useradd xuchen<br /># passwd xuchen<br />Changing password for user xuchen.<br />New UNIX password:<br />Retype new UNIX password:<br />passwd: all authentication tokens updated successfully.</div></div>
<p>建立好了，让我们开始测试吧！！</p>
<div class="hl-surround"><div class="hl-main"># ftp 127.0.0.1<br />Connected to 127.0.0.1.<br />220 (vsFTPd 2.0.3)<br />530 Please login with USER and PASS.<br />530 Please login with USER and PASS.<br />KERBEROS_V4 rejected as an authentication type<br />Name (127.0.0.1:root): xuchen<br />331 Please specify the password.<br />Password:<br />230 Login successful.<br />Remote system type is UNIX.<br />Using binary mode to transfer files.<br />ftp&gt;; pwd<br />257 &quot;/home/xuchen&quot;<br />ftp&gt;; quit<br />221 Goodbye.</div></div>
<p>我们看到xuchen用户可以登陆到ftp，他的登陆目录也是自己的主目录。哈哈，又完成了！</p>
<p><b>高级配置</b><br />
细心的朋友可能已经看出来如果我们不支持PAM认证方式，那么本地用户就可以登陆，而默认编译的vsftpd支持PAM认证方式，所以是不支持本地用户登陆的。恩，从这点说，这也是vsftp安全的一个表现&#8212;-禁止本地用户登陆。<br />
我们登陆后进行测试，传一个文件上去，得，失败了，那下载个文件下来吧，恩，这是成功的（见图2），而且我们发现我们可以进入到系统根目录（见图3），这样很危险。</p>
<p>那么改配置文件吧，为了测试方便，我们先建立一个名为kill-loc的脚本，也是为了杀掉FTP程序的</p>
<div class="hl-surround"><div class="hl-main">#!/bin/bash<br />a=`/bin/ps -A | grep vsftpd-loc | awk '{print $1}'`<br />kill -9 $a</div></div>
<p>现在提供我的本地用户验证服务器配置文件吧（在匿名里写过的注释我就不在这里写了）</p>
<div class="hl-surround"><div class="hl-main">listen=YES<br />listen_port=21<br />tcp_wrappers=YES<br />anonymous_enable=NO<br />local_enable=YES<br />write_enable=YES<br />local_umask=022&nbsp; //本地用户文件上传后的权限是-rw-r-r<br />anon_upload_enable=NO<br />anon_mkdir_write_enable=NO<br />dirmessage_enable=YES<br />xferlog_enable=YES<br />xferlog_file=/var/log/vsftpd.log<br />xferlog_std_format=YES<br />connect_from_port_20=YES<br />chroot_local_user=YES //限制用户在自己的主目录<br />#local_root=/ftp&nbsp; //你可以指定所有本地用户登陆后的目录,如果不设置此项，用户都会登陆于自己的主目录，就跟咱们前面测试的结果是一样的<br />local_max_rate=500000&nbsp; //本地用户的下载速度为500KBytes/s<br />idle_session_timeout=600<br />data_connection_timeout=120<br />nopriv_user= nobody&nbsp; &nbsp;//设定服务执行者为nobody,vsftpd推荐使用一个权限很低的用户，最好是没有家目录(/dev/null)，没有登陆shell（/sbin/nologin),系统会更安全<br />ftpd_banner=Welcome to d-1701.com FTP service.<br />check_shell=NO<br /><br />userlist_enable=YES<br />userlist_deny=YES<br />userlist_file=/etc/vsftpd.denyuser</div></div>
<p>以上三条设定不允许登陆的用户,用户列表存放在/etc/vsftpd.denyuser中,一行一个帐号如果我把xuchen这个用户加到vsftpd.denyuser里，那么登陆时会出现如下错误：</p>
<div class="hl-surround"><div class="hl-main"># ftp 127.0.0.1<br />Connected to 127.0.0.1.<br />220 Welcome to d-1701.com FTP service.<br />530 Please login with USER and PASS.<br />530 Please login with USER and PASS.<br />KERBEROS_V4 rejected as an authentication type<br />Name (127.0.0.1:root): xuchen<br />530 Permission denied.<br />Login failed.</div></div>
<p>呵呵，有意思吧，自己测试吧，本地用户登陆方式就介绍到这里吧！</p>
<h5>3、虚拟用户形式实现（db及mysql形式）</h5>
<div class="hl-surround"><div class="hl-main"># cd /home/xuchen/vsftpd-2.0.3&nbsp; //进入vsftpd-2.0.3的源代码目录<br /># make clean&nbsp; //清除编译环境<br /># vi builddefs.h&nbsp; \\继续编辑builddefs.h 文件，文件内容如下：<br />#ifndef VSF_BUILDDEFS_H<br /><br />#define VSF_BUILDDEFS_H<br />#define VSF_BUILD_TCPWRAPPERS<br />#undef VSF_BUILD_PAM<br />#define VSF_BUILD_SSL<br /><br />#endif /* VSF_BUILDDEFS_H */</div></div>
<p>将以上define VSF_BUILD_PAM行的undef改为define，支持tcp_wrappers，支持PAM认证方式，支持SSL，和匿名用户形式是一样的。</p>
<div class="hl-surround"><div class="hl-main"># make&nbsp; //直接在vsftpd-2.0.3里用make编译<br /># ls -l vsftpd<br />-rwxr-xr-x&nbsp; 1 root root 86088 Jun&nbsp; 6 22:26 vsftpd&nbsp; //可执行程序已被编译成功</div></div>
<p>创建必要的帐号，目录：</p>
<div class="hl-surround"><div class="hl-main"># useradd nobody&nbsp; //可能你的系统已经存在此帐号，那就不用建立<br /># mkdir /usr/share/empty&nbsp; //可能你的系统已经存在此目录，那就不用建立<br /># mkdir /var/ftp&nbsp; //可能你的系统已经存在此目录，那就不用建立<br /># useradd -d /var/ftp ftp&nbsp; //可能你的系统已经存在此帐号，那就不用建立<br /># chown root:root /var/ftp<br /># chmod og-w /var/ftp</div></div>
<p>请记住，如果你不想让用户在本地登陆，那么你需要把他的登陆SHELL设置成/sbin/nologin，比如以上的nobody和ftp我就设置成/sbin/nologin</p>
<p>安装vsftp配置文件，可执行程序，man等:</p>
<div class="hl-surround"><div class="hl-main"># install -m 755 vsftpd /usr/local/sbin/vsftpd-pam<br /># install -m 644 vsftpd.8 /usr/share/man/man8<br /># install -m 644 vsftpd.conf.5 /usr/share/man/man5<br /># install -m 644 vsftpd.conf /etc/vsftpd-pam.conf</div></div>
<p>这样就安装完成了，那么我们开始进行简单的配置</p>
<p>对于用DB库存储用户名及密码的方式来说：<br />
（1）查看系统是否有相应软件包</p>
<div class="hl-surround"><div class="hl-main"># rpm –qa | grep db4<br />db4-devel-4.2.52-7.1<br />db4-4.2.52-7.1<br />db4-utils-4.2.52-7.1</div></div>
<p>（2）建立一个logins.txt的文件，单行为用户名，双行为密码，例如</p>
<div class="hl-surround"><div class="hl-main"># vi /home/logins.txt</div></div>
<div class="hl-surround"><div class="hl-main">xuchen<br />12345</div></div>
<p>（3）建立数据库文件并设置文件属性</p>
<div class="hl-surround"><div class="hl-main"># db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db<br /># chmod 600 /etc/vsftpd_login.db</div></div>
<p>（4）建立认证文件<br />
# vi /etc/pam.d/ftp 插入如下两行</p>
<div class="hl-surround"><div class="hl-main">auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login<br />account required /lib/security/pam_userdb.so db=/etc/vsftpd_login</div></div>
<p>（5）建立一个虚拟用户</p>
<div class="hl-surround"><div class="hl-main">useradd -d /home/vsftpd -s /sbin/nologin vsftpd<br />ls -ld /home/vsftpd<br />drwx------&nbsp; 3 vsftpd vsftpd 1024 Jun&nbsp; 6 22:55 /home/vsftpd/</div></div>
<p>（6）编写配置文件(注意事项请参看匿名用户的配置，这里不再赘述)<br />
# vi /etc/vsftpd-pam.conf</p>
<div class="hl-surround"><div class="hl-main">listen=YES<br />listen_port=21<br />tcp_wrappers=YES //支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)<br />listen=YES的意思是使用standalone启动vsftpd，而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)<br />anonymous_enable=NO<br />local_enable=YES&nbsp; //PAM方式此处必须为YES，如果不是将出现如下错误：<br />500 OOPS: vsftpd: both local and anonymous access disabled!<br />write_enable=NO<br />anon_upload_enable=NO<br />anon_mkdir_write_enable=NO<br />anon_other_write_enable=NO<br />chroot_local_user=YES<br />guest_enable=YES<br />guest_username=vsftpd //这两行的意思是采用虚拟用户形式<br />virtual_use_local_privs=YES //虚拟用户和本地用户权限相同<br /><br />pasv_enable=YES //建立资料联机采用被动方式<br />pasv_min_port=30000 //建立资料联机所可以使用port 范围的上界，0表示任意。默认值为0。<br />pasv_max_port=30999 //建立资料联机所可以使用port 范围的下界，0表示任意。默认值为0。</div></div>
<p>（7）启动程序</p>
<div class="hl-surround"><div class="hl-main"># /usr/local/sbin/vsftpd-pam /etc/vsftpd-pam.conf &amp;</div></div>
<p>（8）测试连通及功能<br />
# vi /home/vsftpd/test //建立一个文件，内容如下</p>
<div class="hl-surround"><div class="hl-main">1234567890</div></div>
<div class="hl-surround"><div class="hl-main"># chown vsftpd.vsftpd /home/vsftpd/test</div></div>
<div class="hl-surround"><div class="hl-main"># ftp 127.0.0.1<br />Connected to 127.0.0.1.<br />220 (vsFTPd 2.0.3)<br />530 Please login with USER and PASS.<br />530 Please login with USER and PASS.<br />KERBEROS_V4 rejected as an authentication type<br />Name (127.0.0.1:root): xuchen<br />331 Please specify the password.<br />Password:<br />230 Login successful.<br />Remote system type is UNIX.<br />Using binary mode to transfer files.<br />ftp&gt;; pwd<br />257 &quot;/&quot;<br />ftp&gt;; size test<br />213 11<br />ftp&gt;; quit<br />221 Goodbye.</div></div>
<p>OK，用户名为xuchen,密码为12345可以连接到FTP服务器，看不到文件列表，但可以下载已知文件名的文件，不能上传文件，非常安全吧！！</p>
<p>如果我们需要用户看到文件，怎么办？也好办,在配置文件中加入如下语句：</p>
<div class="hl-surround"><div class="hl-main">anon_world_readable_only=NO&nbsp; //匿名登入者不能下载可阅读的档案，默认值为YES</div></div>
<p>如果需要让用户上传文件和下载文件分开，建议如下这么做<br />
# vi /home/logins.txt</p>
<div class="hl-surround"><div class="hl-main">xuchen<br />12345<br />upload<br />45678</div></div>
<p>首先建立虚拟用户upload，密码为45678</p>
<div class="hl-surround"><div class="hl-main"># db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db //更新数据文件</div></div>
<div class="hl-surround"><div class="hl-main"># mkdir /home/vsftpd/upload</div></div>
<p># vi /etc/vsftpd-pam.conf 加入如下语句</p>
<div class="hl-surround"><div class="hl-main">user_config_dir=/etc/vsftpd_user_conf</div></div>
<div class="hl-surround"><div class="hl-main"># mkdir /etc/vsftpd_user_conf</div></div>
<p># vi /etc/vsftpd_user_conf/upload 文件内容如下</p>
<div class="hl-surround"><div class="hl-main">local_root=/home/vsftpd/upload<br />write_enable=YES<br />anon_world_readable_only=NO<br />anon_upload_enable=YES<br />anon_mkdir_write_enable=YES<br />anon_other_write_enable=YES</div></div>
<div class="hl-surround"><div class="hl-main"># chmod 700 /home/vsftpd/upload<br /># chown vsftpd.vsftpd /home/vsftpd/upload/</div></div>
<p>这样，xuchen用户可以下载/home/vsftpd里的文件及upload里的文件，而upload用户可以上传和下载/home/vsftpd/upload文件夹的东西，但不能到/home/vsftpd里下载文件，很简单得实现了分用户上传和下载</p>
<p>对于用Mysql库存储用户名及密码的方式来说：<br />
就是把用户名和密码放在mysql库里，实现起来也相当简单<br />
（1）建立一个库并设置相应权限</p>
<div class="hl-surround"><div class="hl-main"># mysql –p<br />mysql&gt;;create database ftpd;<br />mysql&gt;;use ftpd;<br />mysql&gt;;create table user(name char(20) binary,passwd char(20) binary);<br />mysql&gt;;insert into user (name,passwd) values ('test1','12345');<br />mysql&gt;;insert into user (name,passwd) values ('test2','54321');<br />mysql&gt;;grant select on ftpd.user to ftpd@localhost identified by '123456';<br />mysql&gt;;flush privileges; 刷新权限设置<br />mysql&gt;;quit</div></div>
<p>（2）下载libpam-mysql进行安装编译<br />
下载地址如下：<br />
<a href=http://nchc.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz>http://nchc.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz</a><br />
假设我们把它放在了/home/xuchen目录下</p>
<div class="hl-surround"><div class="hl-main"># cd /home/xuchen<br /># tar xzvf pam_mysql-0.5.tar.gz<br /># cd pam_mysql<br /># make<br /># cp pam_mysql.so /lib/security</div></div>
<p>（3）建立PAM认证信息<br />
# vi /etc/pam.d/ftp ,内容如下</p>
<div class="hl-surround"><div class="hl-main">auth required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0<br /><br />account required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0</div></div>
<p>注意：<br />
crypt= n<br />
crypt=0: 明文密码<br />
crypt=1: 使用crpyt()函数(对应SQL数据里的encrypt()，encrypt()随机产生salt)<br />
crypt=2: 使用MYSQL中的password()函数加密<br />
crypt=3：表示使用md5的散列方式<br />
（4）建立本地虚拟用户</p>
<div class="hl-surround"><div class="hl-main"># useradd -d /home/ftpd -s /sbin/nologin ftpd</div></div>
<p>（5）下面就差修改vsftpd.conf文件了，我把我的提供给大家参考吧：）<br />
# vi /etc/vsftpd-pam1.conf</p>
<div class="hl-surround"><div class="hl-main">anonymous_enable=NO<br />local_enable=YES<br />write_enable=YES<br />local_umask=022<br />anon_upload_enable=YES<br />anon_mkdir_write_enable=YES<br />anon_other_write_enable=YES<br />chroot_local_user=YES<br />guest_enable=YES<br />guest_username=ftpd<br />listen=YES<br />listen_port=21<br />pasv_enable=YES<br />pasv_min_port=30000<br />pasv_max_port=30999<br />anon_world_readable_only=NO<br />virtual_use_local_privs=YES<br /><br />#user_config_dir=/etc/vsftpd_user_conf</div></div>
<p>可以看出，和前面的用db库来验证没有多大区别，其实就是一个东西，一个用mysql来验证，一个用db库，我个人比较倾向于用db库来验证，在这个环境下，相对于Mysql来说，安全系数更高一点。</p>
<p>（6）以后台方式启动</p>
<div class="hl-surround"><div class="hl-main"># /usr/local/sbin/vsftpd-pam /etc/vsftpd-pam1.conf &amp;</div></div>
<p>（7）测试连通</p>
<div class="hl-surround"><div class="hl-main"># ftp 127.0.0.1<br />Connected to 127.0.0.1.<br />220 (vsFTPd 2.0.3)<br />530 Please login with USER and PASS.<br />530 Please login with USER and PASS.<br />KERBEROS_V4 rejected as an authentication type<br />Name (127.0.0.1:root): test1<br />331 Please specify the password.<br />Password:<br />230 Login successful.<br />Remote system type is UNIX.<br />Using binary mode to transfer files.<br />ftp&gt;; pwd<br />257 &quot;/&quot;<br />ftp&gt;; quit<br />221 Goodbye.</div></div>
<p>看，成功了！！这样就实现了mysql的认证方式，很简单吧？？</p>
<p>4、为FTP增加磁盘配额，从而避免恶意用户用垃圾数据塞满你的硬盘<br />
我首先要说的是这个功能是系统自带的，而不是vsftp 的功能之一，千万别搞混了。好了，我们先假设我们的系统用户ftpd的主目录是/home/ftpd，它是建立在/home分区中,那么如果我们要对 ftpd用户进行磁盘限额，那我们需要修改/etc/fstab中根分区的记录，将/home分区的第4个字段改成defaults,usrquota，如下:</p>
<div class="hl-surround"><div class="hl-main">LABEL=/home&nbsp; &nbsp;/home&nbsp; &nbsp;ext3&nbsp; &nbsp; defaults,usrquota&nbsp; &nbsp; &nbsp;1 2</div></div>
<p># reboot  //重新启动系统使设置生效<br />
也可以用</p>
<div class="hl-surround"><div class="hl-main"># mount -o remount /dev/sda6&nbsp; ///dev/sda6的挂接点就是/home,这样可以不用启动系统。</div></div>
<p>这里我还要说明一下，如果我们对一个组进行磁配额，那我们需要增加参数grpquota，例如</p>
<div class="hl-surround"><div class="hl-main">LABEL=/home&nbsp; &nbsp;/home&nbsp; &nbsp;ext3&nbsp; &nbsp; defaults,grpquota&nbsp; &nbsp; &nbsp;1 2</div></div>
<p>也可以</p>
<div class="hl-surround"><div class="hl-main">LABEL=/home&nbsp; &nbsp;/home&nbsp; &nbsp;ext3&nbsp; &nbsp; defaults,usrquota,grpquota&nbsp; &nbsp; &nbsp;1 2</div></div>
<p>你想怎么限制都可以，自己组合参数吧。</p>
<div class="hl-surround"><div class="hl-main"># quotacheck -avu</div></div>
<p>说明：a-自动开启挂载文件系统的配额，v-显示信息，u-启用用户配额or g-启用组配额</p>
<div class="hl-surround"><div class="hl-main"># edquota ftpd //为用户ftpd设置磁盘配额</div></div>
<p>OR</p>
<div class="hl-surround"><div class="hl-main"># edquota -g grp&nbsp; //为组grp设置磁盘配额</div></div>
<p>系统会自动打开配额文件,如下:</p>
<div class="hl-surround"><div class="hl-main">Disk quotas for user ftpd (uid 502):<br />&nbsp; Filesystem&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;blocks&nbsp; &nbsp; &nbsp; &nbsp;soft&nbsp; &nbsp; &nbsp; &nbsp;hard&nbsp; &nbsp; &nbsp;inodes&nbsp; &nbsp; &nbsp;soft&nbsp; &nbsp; &nbsp;hard<br />&nbsp; /dev/sda6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;424&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;13&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 0</div></div>
<p>第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数，单位为KB。随后的两列用来设置用户在该文件系统上的软硬块限度。inodes 列显示了用户当前使用的i节点数量。最后两列用来设置用户在该文件系统上的软硬i节点限度.硬限是用户或组群可以使用的磁盘空间的绝对最大值。达到了该限度后，磁盘空间就不能再被用户或组群使用了。软限定义可被使用的最大磁盘空间量。和硬限不同的是，软限可以在一段时期内被超过。这段时期被称为过渡期（grace period），默认七天的超越。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。如果以上值中的任何一个被设置为 0，那个限度就不会被设置。我设置了硬块限度为1KB，是为了测试方便。</p>
<div class="hl-surround"><div class="hl-main"># quotaon&nbsp; -avu&nbsp; //打开磁盘配额监控进程，u是用户g是组，这里我没设置g参数</div></div>
<p>要校验用户的配额是否被设置，我们可以使用以下命令：</p>
<div class="hl-surround"><div class="hl-main"># quota ftpd</div></div>
<div class="hl-surround"><div class="hl-main">Disk quotas for user ftpd (uid 502):<br />&nbsp; Filesystem&nbsp; blocks&nbsp; &nbsp;quota&nbsp; &nbsp;limit&nbsp; &nbsp; grace&nbsp; &nbsp;files&nbsp; &nbsp;quota&nbsp; &nbsp;limit&nbsp; &nbsp;grace<br />/dev/sda6&nbsp; &nbsp; &nbsp;424*&nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 13&nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; 0</div></div>
<p># edquota –t（-g）来设置过渡期（grace period） //当然只针对软限制而言<br />
和另一个 edquota 命令相似，这个命令也会在文本编辑器中打开当前的文件系统配额：</p>
<div class="hl-surround"><div class="hl-main">Grace period before enforcing soft limits for users:<br />Time units may be: days, hours, minutes, or seconds<br />&nbsp; Filesystem&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Block grace period&nbsp; &nbsp; &nbsp;Inode grace period<br />/dev/sda6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;7days&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 7days</div></div>
<p>按你的需要修改后存盘退出<br />
用以下命令显示磁盘配额使用状态</p>
<div class="hl-surround"><div class="hl-main"># repquota&nbsp; -a&nbsp; 或 repquota&nbsp; /dev/sda6（用户配额）<br /># repquota -g -a 或 repquota -a /dev/sda6 (组的配额)</div></div>
<p>如果一切按照你的意思实施了，那么我们就进行测试了！如下图4</p>
<p>我们传了一个>;1k的文件，没有成功，这样我们就成功的为用户ftpd增添了磁盘配额，要是哪一天你不想加磁盘配额了，怎么办？参看如下命令：<br />
取消某个文件系统的配额限制</p>
<div class="hl-surround"><div class="hl-main">#quotaoff&nbsp; -vug /dev/sda6&nbsp; //删除home分区的磁盘限额</div></div>
<p>#删除/etc/fstab中设置配额的部分<br />
修改软配额的最大超越时间<br />
注意：<br />
/，/boot/,/proc,/mnt/cdrom等不要使用配额，没用。而且磁盘配额不适合FAT和FAT32系统。<br />
以后当新设置了某个用户的配额，可以使用如下命令，马上生效。</p>
<div class="hl-surround"><div class="hl-main"># quotacheck -auvgm&nbsp; &nbsp; &nbsp; &nbsp;--是不尝试重新挂载文件系统</div></div>
<p><b>备注：</b><br />
1、vsftpd配置参数详细整理<br />
#接受匿名用户<br />
anonymous_enable=YES<br />
#匿名用户login时不询问口令<br />
no_anon_password=YES<br />
#匿名用户主目录<br />
anon_root=(none)<br />
#接受本地用户<br />
local_enable=YES<br />
#本地用户主目录<br />
local_root=(none)<br />
#如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登录<br />
deny_email_enable=YES<br />
#仅在没有pam验证版本时有用,是否检查用户有一个有效的shell来登录<br />
check_shell=YES<br />
#若启用此选项,userlist_deny选项才被启动<br />
userlist_enable=YES<br />
#若为YES,则userlist_file中的用户将不能登录,为NO则只有userlist_file的用户可以登录<br />
userlist_deny=NO<br />
#如果和chroot_local_user一起开启,那么用户锁定的目录来自/etc/passwd每个用户指定的目录(这个不是很清楚,很哪位熟悉的指点一下)<br />
passwd_chroot_enable=NO<br />
#定义匿名登入的使用者名称。默认值为ftp。<br />
ftp_username=FTP</p>
<p>#################用户权限控制###############<br />
#可以上传(全局控制).<br />
write_enable=YES<br />
#本地用户上传文件的umask<br />
local_umask=022<br />
#上传文件的权限配合umask使用<br />
#file_open_mode=0666<br />
#匿名用户可以上传<br />
anon_upload_enable=NO<br />
#匿名用户可以建目录<br />
anon_mkdir_write_enable=NO<br />
匿名用户其它的写权利(更改权限?)<br />
anon_other_write_enable=NO<br />
如果设为YES，匿名登入者会被允许下载可阅读的档案。默认值为YES。<br />
anon_world_readable_only=YES<br />
#如果开启,那么所有非匿名登陆的用户名都会被切换成guest_username指定的用户名<br />
#guest_enable=NO<br />
所有匿名上传的文件的所属用户将会被更改成chown_username<br />
chown_uploads=YES<br />
匿名上传文件所属用户名<br />
chown_username=lightwiter<br />
#如果启动这项功能，则所有列在chroot_list_file之中的使用者不能更改根目录<br />
chroot_list_enable=YES<br />
#允许使用&#8221;async ABOR&#8221;命令,一般不用,容易出问题<br />
async_abor_enable=YES<br />
管控是否可用ASCII 模式上传。默认值为NO。<br />
ascii_upload_enable=YES<br />
#管控是否可用ASCII 模式下载。默认值为NO。<br />
ascii_download_enable=YES<br />
#这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限，当vsftpd 不需要file system 的权限时，就会将使用者限制在此数据夹中。默认值为/usr/share/empty<br />
secure_chroot_dir=/usr/share/empty</p>
<p>###################超时设置##################<br />
#空闲连接超时<br />
idle_session_timeout=600<br />
#数据传输超时<br />
data_connection_timeout=120<br />
#PAVS请求超时<br />
ACCEPT_TIMEOUT=60<br />
#PROT模式连接超时<br />
connect_timeout=60</p>
<p>################服务器功能选项###############<br />
#开启日记功能<br />
xferlog_enable=YES<br />
#使用标准格式<br />
xferlog_std_format=YES<br />
#当xferlog_std_format关闭且本选项开启时,记录所有ftp请求和回复,当调试比较有用.<br />
#log_ftp_protocol=NO<br />
#允许使用pasv模式<br />
pasv_enable=YES<br />
#关闭安全检查,小心呀.<br />
#pasv_promiscuous+NO<br />
#允许使用port模式<br />
#port_enable=YES<br />
#关闭安全检查<br />
#prot_promiscuous<br />
#开启tcp_wrappers支持<br />
tcp_wrappers=YES<br />
#定义PAM 所使用的名称，预设为vsftpd。<br />
pam_service_name=vsftpd<br />
#当服务器运行于最底层时使用的用户名<br />
nopriv_user=nobody<br />
#使vsftpd在pasv命令回复时跳转到指定的IP地址.(服务器联接跳转?)<br />
pasv_address=(none)</p>
<p>#################服务器性能选项##############<br />
#是否能使用ls -R命令以防止浪费大量的服务器资源<br />
#ls_recurse_enable=YES<br />
#是否使用单进程模式<br />
#one_process_model<br />
#绑定到listen_port指定的端口,既然都绑定了也就是每时都开着的,就是那个什么standalone模式<br />
listen=YES<br />
#当使用者登入后使用ls -al 之类的指令查询该档案的管理权时，预设会出现拥有者的UID，而不是该档案拥有者的名称。若是希望出现拥有者的名称，则将此功能开启。<br />
text_userdb_names=NO<br />
#显示目录清单时是用本地时间还是GMT时间,可以通过mdtm命令来达到一样的效果<br />
use_localtime=NO<br />
#测试平台优化<br />
#use_sendfile=YES</p>
<p>################信息类设置################<br />
#login时显示欢迎信息.如果设置了banner_file则此设置无效<br />
ftpd_banner=欢迎来到湖南三辰Fake-Ta FTP 网站.<br />
#允许为目录配置显示信息,显示每个目录下面的message_file文件的内容<br />
dirmessage_enable=YES<br />
#显示会话状态信息,关!<br />
#setproctitle_enable=YES</p>
<p>############## 文件定义 ##################<br />
#定义不能更改用户主目录的文件<br />
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list<br />
#定义限制/允许用户登录的文件<br />
userlist_file=/etc/vsftpd/vsftpd.user_list<br />
#定义登录信息文件的位置<br />
banner_file=/etc/vsftpd/banner<br />
#禁止使用的匿名用户登陆时作为密码的电子邮件地址<br />
banned_email_file=/etc/vsftpd.banned_emails<br />
#日志文件位置<br />
xferlog_file=/var/log/vsftpd.log<br />
#目录信息文件<br />
message_file=.message</p>
<p>############## 目录定义 #################<br />
#定义用户配置文件的目录<br />
user_config_dir=/etc/vsftpd/userconf<br />
#定义本地用户登陆的根目录,注意定义根目录可以是相对路径也可以是绝对路径.相对路径是针对用户家目录来说的.<br />
local_root=webdisk #此项设置每个用户登陆后其根目录为/home/username/webdisk<br />
#匿名用户登陆后的根目录<br />
anon_root=/var/ftp</p>
<p>#############用户连接选项#################<br />
#可接受的最大client数目<br />
max_clients=100<br />
#每个ip的最大client数目<br />
max_per_ip=5<br />
#使用标准的20端口来连接ftp<br />
connect_from_port_20=YES<br />
#绑定到某个IP,其它IP不能访问<br />
listen_address=192.168.0.2<br />
#绑定到某个端口<br />
#listen_port=2121<br />
#数据传输端口<br />
#ftp_data_port=2020<br />
#pasv连接模式时可以使用port 范围的上界，0 表示任意。默认值为0。<br />
pasv_max_port=0<br />
#pasv连接模式时可以使用port 范围的下界，0 表示任意。默认值为0。<br />
pasv_min_port=0</p>
<p>##############数据传输选项#################<br />
#匿名用户的传输比率(b/s)<br />
anon_max_rate=51200<br />
#本地用户的传输比率(b/s)<br />
local_max_rate=5120000</p>
<p>########################################<br />
别外,如果要对每个用户进行单独的控制,只需要在user_config_dir中建立username文件,内容为数据传输和用户权利里面设置个人的合适的选项,用户自定义文件同样适合用pam支持的虚拟用户<br />
附: FTP 数字代码的意义<br />
110 重新启动标记应答。<br />
120 服务在多久时间内ready。<br />
125 数据链路埠开启，准备传送。<br />
150 文件状态正常，开启数据连接端口。<br />
200 命令执行成功。<br />
202 命令执行失败。<br />
211 系统状态或是系统求助响应。<br />
212 目录的状态。<br />
213 文件的状态。<br />
214 求助的讯息。<br />
215 名称系统类型。<br />
220 新的联机服务ready。<br />
221 服务的控制连接埠关闭，可以注销。<br />
225 数据连结开启，但无传输动作。<br />
226 关闭数据连接端口，请求的文件操作成功。<br />
227 进入passive mode。<br />
230 使用者登入。<br />
250 请求的文件操作完成。<br />
257 显示目前的路径名称。<br />
331 用户名称正确，需要密码。<br />
332 登入时需要账号信息。<br />
350 请求的操作需要进一部的命令。<br />
421 无法提供服务，关闭控制连结。<br />
425 无法开启数据链路。<br />
426 关闭联机，终止传输。<br />
450 请求的操作未执行。<br />
451 命令终止：有本地的错误。<br />
452 未执行命令：磁盘空间不足。<br />
500 格式错误，无法识别命令。<br />
501 参数语法错误。<br />
502 命令执行失败。<br />
503 命令顺序错误。<br />
504 命令所接的参数不正确。<br />
530 未登入。<br />
532 储存文件需要账户登入。<br />
550 未执行请求的操作。<br />
551 请求的命令终止，类型未知。<br />
552 请求的文件终止，储存位溢出。<br />
553 未执行请求的的命令，名称不正确。</p>
<p>配置详解<br />
=============<br />
VSFTPD.CONF.5<br />
================<br />
名字<br />
vsftpd.conf ：VSFTPD的配置文件</p>
<p>描述：<br />
vsftpd.conf 用来控制VSFTPD的各项功能。默认状态下，它的位置是/etc/vsftpd.conf。<br />
（译者注：也许老的LINUX版本下，配置文件是这个位置，但新的LINUX版本，例如FC2，配置文件是在/etc/vsftpd目录下。<br />
但是也很可能和安装方式有关，RPM包安装，配置文件是/etc/vsftpd.conf. 源码包安装：/etc/vsftpd/vsftpd.conf.我不确定。<br />
但以后我不再特别指出了，真累！！）<br />
然而，你也可以通过修改配置行来指定到其它目录。这一点很有用，因为也许你想使用一些高级inetd功能，例如xinetd，在一个多虚拟主机的机器上调用不同的配置文件。</p>
<p>格式<br />
VSFTPD.conf 的格式非常简单，每行要么是一个注释，要么是一个指令。注释行以#开始并被忽略掉。指令行格式如下：<br />
配置项=参数值<br />
很重要的一点是，这个格式里不存在任何空格。<br />
默认的，每一个配置项在配置文件里都占一编辑行，可以被修改。</p>
<p>布尔选项<br />
参数值的布尔选项可以是：<br />
YES或者NO</p>
<p>allow_anon_ssl<br />
只有ss1_enable激活了才可以启用此项。如果设置为YES，匿名用户将容许使用安全的SSL连接服务器。<br />
默认值：NO</p>
<p>anon_mkdir_write_enable<br />
如果设为YES，匿名用户将容许在指定的环境下创建新目录。如果此项要生效，那么配置write_enable必须被激活，并且匿名用户必须在其父目录有写权限。<br />
默认值：NO</p>
<p>anon_other_write_enable<br />
如果设置为YES，匿名用户将被授予较大的写权限，例如删除和改名。一般不建议这么做，除非想完全授权。<br />
默认值：NO</p>
<p>anon_upload_enable<br />
如果设为YES，匿名用户就容许在指定的环境下上传文件。如果此项要生效，那么配置write_enable必须激活。并且匿名用户必须在相关目录有写权限。<br />
默认值：NO</p>
<p>anon_world_readable_only<br />
启用的时候，匿名用户只容许下载完全可读的文件，这也就容许了ftp用户拥有对文件的所有权，尤其是在上传的情况下。<br />
默认值：YES</p>
<p>anonymous_enable<br />
控制是否容许匿名用户登录。如果容许，那么“ftp”和“anonymous”都将被视为“anonymous&#8221;而容许登录。<br />
默认值：YES</p>
<p>ascii_download_enable<br />
启用时，用户下载时将以ASCII模式传送文件。<br />
默认值：NO</p>
<p>ascii_upload_enable<br />
启用时，用户上传时将以ASCII模式传送文件。<br />
默认值：NO</p>
<p>async_abor_enable<br />
启用时，一个特殊的FTP命令&#8221;async ABOR”将容许使用。只有不正常的FTP客户端要使用这一点。而且，这个功能又难于操作，所以，<br />
默认是把它关闭了。但是，有些客户端在取消一个传送的时候会被挂死（daidong注：估计是客户端无响应了），那你只有启用这个功能才能避免这种情况。<br />
默认值：NO</p>
<p>background<br />
启用时，并且VSFTPD是“listen”模式启动的（daidong注：就是standalone模式），VSFTPD将把监听进程置于后台。但访问VSFTPD时，控制台将立即被返回到SHELL。<br />
默认值：NO</p>
<p>check_shell<br />
注意：这个选项只对非PAM结构的VSFTPD才有效。如果关闭，VSFTPD将不检查/etc/shells以判定本地登录的用户是否有一个可用的SHELL。<br />
默认值：YES</p>
<p>chmod_enable<br />
启用时，将容许使用SITE CHMOD命令。注意，这只能用于本地用户。匿名用户绝不能使用SITE CHMOD。<br />
默认值：YES</p>
<p>chown_uploads<br />
如果启用，所以匿名用户上传的文件的所有者将变成在chown_username里指定的用户。这对管理FTP很有用，也许也对安全有益。<br />
默认值：NO</p>
<p>chroot_list_enable<br />
如果激活，你要提供一个用户列表，表内的用户将在登录后被放在其home目录，锁定在虚根下（daidong注：进入FTP后，PWD一下，可以看到当前目录是&#8221;/&#8221;,这就是虚根。是FTP的根目录，并非FTP服务器系统的根目录）。如果chroot_local_user设为YES后，其含义会发生一点变化。<br />
在这种情况下，这个列表内的用户将不被锁定在虚根下。</p>
<p>默认情况下，这个列表文件是/etc/vsftpd.chroot_list, 但你也可以通过修改chroot_list_file来改变默认值。<br />
默认值：NO</p>
<p>chroot_local_user<br />
如果设为YES，本地用户登录后将被（默认地）锁定在虚根下，并被放在他的home目录下。<br />
警告：<br />
这个配置项有安全的意味，特别是如果用户有上传权限或者可使用SHELL的话。在你确定的前提下，再启用它。<br />
注意，这种安全暗示并非只存在于VSFTPD，其实是广泛用于所有的希望把用户锁定在虚根下的FTP软件。<br />
默认值：NO</p>
<p>connect_from_port_20<br />
这用来控制服务器是否使用20端口号来做数据传输。为安全起见，有些客户坚持启用。相反，关闭这一项可以让VSFTPD更加大众化。<br />
默认值：NO （但在范例配置文件中，启用了，即YES）</p>
<p>deny_email_enable<br />
如果激活，你要提供一个关于匿名用户的密码E-MAIL表（daidong注：我们都知道，匿名用户是用邮件地址做密码的）以阻止以这些密码登录的匿名用户。<br />
默认情况下，这个列表文件是/etc/vsftpd.banner_emails，但你也可以通过设置banned_email_file来改变默认值。<br />
默认值：NO</p>
<p>dirlist_enable<br />
如果设置为NO，所有的列表命令（daidong注：如ls）都将被返回“permission denied”提示。<br />
默认值：YES</p>
<p>dirmessage_enable<br />
如果启用，FTP服务器的用户在首次进入一个新目录的时候将显示一段信息。默认情况下，会在这个目录中查找.message文件，但你也可以<br />
通过更改message_file来改变默认值。<br />
默认值：NO （但在配置范例文件中启用了它）</p>
<p>download_enable<br />
如果设为NO，下载请求将返回“permission denied”。<br />
默认值：YES</p>
<p>dual_log_enable<br />
如果启用，两个LOG文件会各自产生，默认的是/var/log/xferlog和/var/log/vsftpd.log。前一个是wu-ftpd格式的LOG，能被通用工具分析。<br />
后一个是VSFTPD的专用LOG格式。<br />
默认值: NO</p>
<p>force_dot_files<br />
如果激活，即使客户端没有使用“a”标记，（FTP里）以.开始的文件和目录都会显示在目录资源列表里。但是把&#8221;.&#8221;和&#8221;..&#8221;不会显示。(daidong注：即LINUX下<br />
的当前目录和上级目录不会以‘.’或‘..’方式显示）。<br />
默认值：NO</p>
<p>force_local_data_ssl<br />
只有在ssl_enable激活后才能启用。如果启用，所有的非匿名用户将被强迫使用安全的SSL登录以在数据线路上收发数据。<br />
默认值：YES</p>
<p>force_local_logins_ssl<br />
只有在ssl_enable激活后才能启用。如果启用，所有的非匿名用户将被强迫使用安全的SSL登录以发送密码。<br />
默认值：YES</p>
<p>guest_enable<br />
如果启用，所有的非匿名用户登录时将被视为”游客“，其名字将被映射为guest_username里所指定的名字。<br />
默认值：NO</p>
<p>hide_ids<br />
如果启用，目录资源列表里所有用户和组的信息将显示为&#8221;ftp&#8221;.<br />
默认值：NO</p>
<p>listen<br />
如果启用，VSFTPD将以独立模式（standalone)运行，也就是说可以不依赖于inetd或者类似的东东启动。直接运行VSFTPD<br />
的可执行文件一次，然后VSFTPD就自己去监听和处理连接请求了。<br />
默认值：NO</p>
<p>listen_ipv6<br />
类似于listen参数的功能，但有一点不同，启用后VSFTPD会去监听IPV6套接字而不是IPV4的。这个设置和listen的设置互相排斥。<br />
默认值：NO</p>
<p>local_enable<br />
用来控制是否容许本地用户登录。如果启用，/etc/passwd里面的正常用户的账号将被用来登录。<br />
默认值：NO</p>
<p>log_ftp_protocol<br />
启用后，如果xferlog_std_format没有被激活，所有的FTP请求和反馈信息将被纪录。这常用于调试(debugging)。<br />
默认值：NO</p>
<p>ls_recurse_enable<br />
如果启用，&#8221;ls -R&#8221;将被容许使用。这是为了避免一点点安全风险。因为在一个大的站点内，在目录顶层使用这个命令将消耗大量资源。<br />
默认值：NO</p>
<p>no_anon_password<br />
如果启用，VSFTPD将不会向匿名用户询问密码。匿名用户将直接登录。<br />
默认值:NO</p>
<p>no_log_lock<br />
启用时，VSFTPD在写入LOG文件时将不会把文件锁住。这一项一般不启用。它对一些工作区操作系统问题，如Solaris / Veritas文件系统共存时有用。<br />
因为那在试图锁定LOG文件时，有时候看上去象被挂死（无响应）了。（daidong注：这我也不是很理解。所以翻译未必近乎原意。原文如下：It exists to workaround<br />
operating system bugs such as the Solaris / Veritas filesystem combination<br />
which has been observed to sometimes exhibit hangs trying to lock log files.）<br />
默认值：NO</p>
<p>one_process_model<br />
如果你的LINUX核心是2.4的，那么也许能使用一种不同的安全模式，即一个连接只用一个进程。只是一个小花招，但能提高FTP的性能。请确定需要后再启用它，而且也请确定你的<br />
站点是否会有大量的人同时访问。<br />
默认值：NO</p>
<p>passwd_chroot_enable (daidong注：这段自己看，无语&#8230;)<br />
if enabled, along with<br />
.BR chroot_local_user<br />
, then a chroot() jail location may be specified on a per-user basis. Each<br />
user&#8217;s jail is derived from their home directory string in /etc/passwd. The<br />
occurrence of /./ in the home directory string denotes that the jail is at that<br />
particular location in the path.<br />
默认值：NO</p>
<p>pasv_enable<br />
如果你不想使用被动方式获得数据连接，请设为NO。<br />
默认值：YES</p>
<p>pasv_promiscuous<br />
如果你想关闭被动模式安全检查（这个安全检查能确保数据连接源于同一个IP地址）的话，设为YES。确定后再启用它（daidong注：原话是：只有你清楚你在做什么时才启用它！）<br />
合理的用法是：在一些安全隧道配置环境下，或者更好地支持FXP时（才启用它）。<br />
默认值：NO</p>
<p>port_enable<br />
如果你想关闭以端口方式获得数据连接时，请关闭它。<br />
默认值：YES</p>
<p>port_promiscuous<br />
如果你想关闭端口安全检查（这个检查可以确保对外的(outgoing)数据线路只通向客户端）时，请关闭它。确认后再做！<br />
默认值：NO</p>
<p>run_as_launching_user<br />
如果你想让一个用户能启动VSFTPD的时候，可以设为YES。当ROOT用户不能去启动VSFTPD的时候会很有用（daidong注：应该不是说ROOT用户没有权限启动VSFTPD，<br />
而是因为别的，例如安全限制，而不能以ROOT身份直接启动VSFTPD）。强烈警告！！别启用这一项，除非你完全清楚你在做什么（daidong:无语&#8230;.)！！！随意地启动这一项会导致<br />
非常严重的安全问题，特别是VSFTPD没有或者不能使用虚根技术来限制文件访问的时候（甚至VSFTPD是被ROOT启动的）。有一个愚蠢的替代方案是启用deny_file，将其设置为{/*,*..*}等，<br />
但其可靠性却不能和虚根相比，也靠不住。<br />
如果启用这一项，其他配置项的限制也会生效。例如，非匿名登录请求，上传文件的所有权的转换，用于连接的20端口和低于1024的监听端口将不会工作。其他一些配置项也可能被影响。<br />
默认值:NO</p>
<p>secure_email_list_enable<br />
如果你想只接受以指定E-MAIL地址登录的匿名用户的话，启用它。这一般用来在不必要用虚拟用户的情况下，以较低的安全限制去访问较低安全级别的资源。如果启用它，匿名用户除非<br />
用在email_password_file里指定的E-MAIL做为密码，否则不能登录。这个文件的格式是一个密码一行，而且没有额外的空格（daidong注：whitespace,译为空格，不知道是否正确）。<br />
默认的文件名是：/etc/vsftpd.email_passwords.<br />
默认值:NO</p>
<p>session_support<br />
这将配置是否让VSFTPD去尝试管理登录会话。如果VSFTPD管理会话，它会尝试并更新utmp和wtmp。它也会打开一个pam会话（pam_session)，直到LOGOUT才会关闭它，如果使用PAM进行认证的话。<br />
如果你不需要会话纪录，或者想VSFTPD运行更少的进程，或者让它更大众化，你可以关闭它。<br />
注：utmp和wtmp只在有PAM的环境下才支持。<br />
默认值:NO</p>
<p>setproctitle_enable<br />
如果启用，VSFTPD将在系统进程列表中显示会话状态信息。换句话说，进程名字将变成VSFTPD会话当前正在执行的动作（等待，下载等等）。为了安全目的，你可以关闭这一项。<br />
默认值:NO</p>
<p>ssl_enable<br />
如果启用，vsftpd将启用openSSL，通过SSL支持安全连接。这个设置用来控制连接（包括登录）和数据线路。同时，你的客户端也要支持SSL才行。<br />
注意：小心启用此项.VSFTPD不保证OpenSSL库的安全性。启用此项，你必须确信你安装的OpenSSL库是安全的。<br />
默认值:NO</p>
<p>ssl_sslv2<br />
要激活ssl_enable才能启用它。如果启用，将容许SSL V2协议的连接。TLS V1连接将是首选。<br />
默认值:NO</p>
<p>ssl_sslv3<br />
要激活ssl_enable才能启用它。如果启用，将容许SSL V３协议的连接。TLS V1连接将是首选。<br />
默认值:NO</p>
<p>ssl_tlsv1<br />
要激活ssl_enable才能启用它。如果启用，将容许TLS V1协议的连接。TLS V1连接将是首选。<br />
默认值:YES</p>
<p>syslog_enable<br />
如果启用，系统log将取代vsftpd的log输出到/var/log/vsftpd.log.FTPD的了log工具将不工作。<br />
默认值:NO</p>
<p>tcp_wrappers<br />
如果启用，vsftpd将被tcp_wrappers所支持。进入的(incoming）连接将被tcp_wrappers访问控制所反馈。如果tcp_wrappers设置了<br />
VSFTPD_LOAD_CONF环境变量，那么vsftpd将尝试调用这个变量所指定的配置。<br />
默认值:NO</p>
<p>text_userdb_names<br />
默认情况下，在文件列表中，数字ID将被显示在用户和组的区域。你可以编辑这个参数以使其使用数字ID变成文字。为了保证FTP性能，默认<br />
情况下，此项被关闭。<br />
默认值:NO</p>
<p>tilde_user_enable<br />
如果启用，vsftpd将试图解析类似于~chris/pics的路径名（一个&#8221;~&#8221;(tilde)后面跟着个用户名）。注意，vsftpd有时会一直解析路径名&#8221;~&#8221;和&#8221;~/&#8221;（在这里，～被解析成内部登录目录）。<br />
～用户路径（～user paths)只有在当前虚根下找到/etc/passwd文件时才被解析。<br />
默认值:NO</p>
<p>use_localtime<br />
如果启用，vsftpd在显示目录资源列表的时候，在显示你的本地时间。而默认的是显示GMT（格林尼治时间）。通过MDTM FTP命令来显示时间的话也会被这个设置所影响。<br />
默认值:NO</p>
<p>use_sendfile<br />
一个内部设定，用来测试在你的平台上使用sendfile()系统呼叫的相关好处（benefit).<br />
默认:YES</p>
<p>userlist_deny<br />
这个设置在userlist_enable被激活后能被验证。如果你设置为NO，那么只有在userlist_file里明确列出的用户才能登录。<br />
如果是被拒绝登录，那么在被询问密码前，用户就将被系统拒绝。<br />
默认值:YES</p>
<p>userlist_enable<br />
如果启用，vsftpd将在userlist_file里读取用户列表。如果用户试图以文件里的用户名登录，那么在被询问用户密码前，他们就将被系统拒绝。<br />
这将防止明文密码被传送。参见userlist_deny。<br />
默认值:NO</p>
<p>virtual_use_local_privs<br />
如果启用，虚拟用户将拥有和本地用户一样的权限。默认情况下，虚拟用户就拥有和匿名用户一样的权限，而后者往往有更多的限制（特别是写权限）。<br />
默认值:NO</p>
<p>write_enable<br />
这决定是否容许一些FTP命令去更改文件系统。这些命令是STOR, DELE, RNFR, RNTO, MKD, RMD, APPE 和 SITE。<br />
默认值:NO</p>
<p>xferlog_enable<br />
如果启用，一个log文件将详细纪录上传和下载的信息。默认情况下，这个文件是/var/log/vsftpd.log，但你也可以通过更改vsftpd_log_file来指定其默认位置。<br />
默认值:NO (但在范例配置文件中，启用了这一项）</p>
<p>xferlog_std_format<br />
如果启用，log文件将以标准的xferlog格式写入（wu-ftpd使用的格式)，以便于你用现有的统计分析工具进行分析。但默认的格式具有更好的可读性。默认情况下，log文件是在/var/log/xferlog。<br />
但是，你可以通过修改xferlog_file来指定新路径。<br />
默认值:NO</p>
<p>＝＝＝＝＝＝<br />
数字选项<br />
以下是数字配置项。这些项必须设置为非负的整数。为了方便umask设置，容许输入八进制数，那样的话，数字必须以０开始。</p>
<p>accept_timeout<br />
超时，以秒为单位，设定远程用户以被动方式建立连接时最大尝试建立连接的时间。<br />
默认值:60</p>
<p>anon_max_rate<br />
对于匿名用户，设定容许的最大传送速率，单位：字节/秒。<br />
默认值:0　（无限制）</p>
<p>anon_umask<br />
为匿名用户创建的文件设定权限。注意：如果你想输入８进制的值，那么其中的０不同于１０进制的０。<br />
默认值：０７７</p>
<p>connect_timeout<br />
超时。单位：秒。是设定远程用户必须回应PORT类型数据连接的最大时间。<br />
默认值：６０</p>
<p>data_connection_timeout<br />
超时，单位：秒。设定数据传输延迟的最大时间。时间一到，远程用户将被断开连接。<br />
默认值：３００</p>
<p>file_open_mode<br />
对于上传的文件设定权限。如果你想被上传的文件可被执行，umask要改成０７７７。<br />
默认值：０６６６</p>
<p>ftp_data_port<br />
设定PORT模式下的连接端口（只要connect_from_port_20被激活）。<br />
默认值：２０</p>
<p>idle_session_timeout<br />
超时。单位：秒。设置远程客户端在两次输入FTP命令间的最大时间。时间一到，远程客户将被断开连接。<br />
默认值：３００</p>
<p>listen_port<br />
如果vsftpd处于独立运行模式，这个端口设置将监听的FTP连接请求。<br />
默认值：２１</p>
<p>local_max_rate<br />
为本地认证用户设定最大传输速度，单位：字节／秒。<br />
默认值：０（无限制）</p>
<p>local_umask<br />
设置本地用户创建的文件的权限。注意：如果你想输入８进制的值，那么其中的０不同于１０进制的０。<br />
默认值：０７７</p>
<p>max_clients<br />
如果vsftpd运行在独立运行模式，这里设置了容许连接的最大客户端数。再后来的用户端将得到一个错误信息。<br />
默认值：０（无限制）</p>
<p>max_per_ip<br />
如果vsftpd运行在独立运行模式，这里设置了容许一个ＩＰ地址的最大接入客户端。如果超过了最大限制，将得到一个错误信息。<br />
默认值：０（无限制）</p>
<p>pasv_max_port<br />
指定为被动模式数据连接分配的最大端口。可用来指定一个较小的范围以配合防火墙。<br />
默认值：０（使用任何端口）</p>
<p>pasv_min_port<br />
指定为被动模式数据连接分配的最小端口。可用来指定一个较小的范围以配合防火墙。<br />
默认值：０（使用任何端口）</p>
<p>trans_chunk_size<br />
你一般不需要改这个设置。但也可以尝试改为如８１９２去减小带宽限制的影响。<br />
默认值：０（让vsftpd自行选择）</p>
<p>＝＝＝＝＝＝＝＝＝＝＝<br />
STRING 配置项<br />
以下是STRING 配置项</p>
<p>anon_root<br />
设置一个目录，在匿名用户登录后，vsftpd会尝试进到这个目录下。如果失败则略过。<br />
默认值：无</p>
<p>banned_email_file<br />
deny_email_enable启动后，匿名用户如果使用这个文件里指定的E-MAIL密码登录将被拒绝。<br />
默认值：/etc/vsftpd.banned_emails</p>
<p>banner_file<br />
设置一个文本，在用户登录后显示文本内容。如果你设置了ftpd_banner，ftpd_banner将无效。<br />
默认值：无</p>
<p>chown_username<br />
改变匿名用户上传的文件的所有者。需设定chown_uploads。<br />
默认值：ＲＯＯＴ</p>
<p>chroot_list_file<br />
这个项提供了一个本地用户列表，表内的用户登录后将被放在虚根下，并锁定在home目录。这需要chroot_list_enable项被启用。<br />
如果chroot_local_user项被启用，这个列表就变成一个不将列表里的用户锁定在虚根下的用户列表了。<br />
默认值：/etc/vsftpd.chroot_list</p>
<p>cmds_allowed<br />
以逗号分隔的方式指定可用的FTP命令（post　login. USER, PASS and QUIT 是始终可用的命令）。<br />
其他命令将被屏蔽。这是一个强有力的locking down一个FTP服务器的手段。例如：cmds_allowed=PASV,RETR,QUIT<br />
默认值：无</p>
<p>deny_file<br />
这可以设置一个文件名或者目录名式样以阻止在任何情况下访问它们。并不是隐藏它们，而是拒绝任何试图对它们进行的操作（下载，改变目录层，<br />
和其他有影响的操作）。这个设置很简单，而且不会用于严格的访问控制－文件系统权限将优先生效。然而，这个设置对确定的虚拟用户设置很有用。<br />
特别是如果一个文件能多个用户名访问的话（可能是通过软连接或者硬连接），那就要拒绝所有的访问名。<br />
建议你为使用文件系统权限设置一些重要的安全策略以获取更高的安全性。如deny_file={*.mp3,*.mov,.private}<br />
默认值：无</p>
<p>dsa_cert_file<br />
这个设置为SSL加密连接指定了DSA证书的位置。<br />
默认值：无（有一个RSA证书就够了）</p>
<p>email_password_file<br />
在设置了secure_email_list_enable后，这个设置可以用来提供一个备用文件。<br />
默认值：/etc/vsftpd.email_passwords</p>
<p>ftp_username<br />
这是用来控制匿名FTP的用户名。这个用户的home目录是匿名FTP区域的根。<br />
默认值：ftp</p>
<p>ftpd_banner<br />
当一个连接首次接入时将现实一个欢迎界面。<br />
默认值：无（默认的界面会被显示）</p>
<p>guest_username<br />
参见相关设置guest_enable。这个设置设定了游客进入后，其将会被映射的名字。<br />
默认：ftp</p>
<p>hide_file<br />
设置了一个文件名或者目录名列表，这个列表内的资源会被隐藏，不管是否有隐藏属性。但如果用户知道了它的存在，<br />
将能够对它进行完全的访问。hide_file里的资源和符合hide_file指定的规则表达式的资源将被隐藏。vsftpd的<br />
规则表达式很简单，例如hide_file={*.mp3,.hidden,hide*,h?}<br />
默认值：无</p>
<p>listen_address<br />
如果vsftpd运行在独立模式下，本地接口的默认监听地址将被这个设置代替。<br />
需要提供一个数字化的地址。<br />
默认值：无</p>
<p>listen_address6<br />
如果vsftpd运行在独立模式下，要为IPV6指定一个监听地址（如果listen_ipv6被启用的话）。<br />
需要提供一个IPV6格式的地址。<br />
默认值：无</p>
<p>local_root<br />
设置一个本地（非匿名）用户登录后，vsftpd试图让他进入到的一个目录。如果失败，则略过。<br />
默认值：无</p>
<p>message_file<br />
当进入一个新目录的时候，会查找这个文件并显示文件里的内容给远程用户。dirmessage_enable需启用。<br />
默认值：.message</p>
<p>nopriv_user<br />
这是vsftpd做为完全无特权的用户的名字。这是一个专门的用户，比nobody更甚。用户nobody往往用来在一些机器上做一些重要的事情。<br />
默认值：nobody</p>
<p>pam_service_name<br />
设定vsftpd将要用到的PAM服务的名字。<br />
默认值:ftp</p>
<p>pasv_address<br />
当使用PASV命令时，vsftpd会用这个地址进行反馈。需要提供一个数字化的IP地址。<br />
默认值：无（地址将取自进来（incoming)的连接的套接字）</p>
<p>rsa_cert_file<br />
这个设置指定了SSL加密连接需要的RSA证书的位置。<br />
默认值：/usr/share/ssl/certs/vsftpd.pem</p>
<p>secure_chroot_dir<br />
这个设置指定了一个空目录，这个目录不容许ftp　user写入。在vsftpd不希望文件系统被访问时，目录为安全的虚根所使用。<br />
默认值： /usr/share/empty</p>
<p>ssl_ciphers<br />
这个设置将选择vsftpd为加密的SSL连接所用的SSL密码。详细信息参见ciphers。<br />
默认值：DES-CBC3-SHA</p>
<p>user_config_dir<br />
这个强大的设置容许覆盖一些在手册页中指定的配置项（基于单个用户的）。用法很简单，最好结合范例。如果你把user_config_dir<br />
改为/etc/vsftpd_user_conf，那么以chris登录，vsftpd将调用配置文件/etc/vsftpd_user_conf/chris。<br />
默认值：无</p>
<p>user_sub_token<br />
这个设置将依据一个模板为每个虚拟用户创建home目录。例如，如果真实用户的home目录通过guest_username为/home/virtual/$USER 指定，<br />
并且user_sub_token设置为 $USER ，那么虚拟用户fred登录后将锁定在/home/virtual/fred下。<br />
默认值：无</p>
<p>userlist_file<br />
当userlist_enable被激活，系统将去这里调用文件。<br />
默认值：/etc/vsftpd.user_list</p>
<p>vsftpd_log_file<br />
只有xferlog_enable被设置，而xferlog_std_format没有被设置时，此项才生效。这是被生成的vsftpd格式的log文件的名字。<br />
dual_log_enable和这个设置不能同时启用。如果你启用了syslog_enable，那么这个文件不会生成，而只产生一个系统log.<br />
默认值：/var/log/vsftpd.log</p>
<p>xferlog_file<br />
这个设置是设定生成wu-ftpd格式的log的文件名。只有启用了xferlog_enable和xferlog_std_format后才能生效。<br />
但不能和dual_log_enable同时启用。<br />
默认值：/var/log/xferlog</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.myhnet.cn/2009/01/19/a-complete-guide-on-how-to-configure-vsftpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
