vsftp配置大全---超完整版

人来疯技术文档之vsftp配置大全
人来疯 adminxu
人来疯论坛 http://www.d-1701.com/bbs
MSN:xu1701@hotmail.com
                                                                 
版权信息:未经许可不得转载,转载本文章请与人来疯论坛坛主adminxu联系!
联系方法:使用msn
环境
RedHat  AS4
说明:
若是不作说明,通常安装命令均使用ROOT权限,用 # 表示

特别说明:无

如下文章介绍Liunx 环境下vsftpd的三种实现方法

1、前言
Vsftp(Very Secure FTP)是一种在Unix/Linux中很是安全且快速稳定的FTP服务器,目前已经被许多大型站点所采用,如ftp.redhat.com,ftp.kde.org,ftp.gnome.org.等。Vsftpd的实现有三种方式
一、匿名用户形式:在默认安装的状况下,系统只提供匿名用户访问
二、本地用户形式:以/etc/passwd中的用户名为认证方式
三、虚拟用户形式:支持将用户名和口令保存在数据文件数据库服务器中。相对于FTP的本地用户形式来讲,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大加强系统自己的安全性。相对于匿名用户而言,虚拟用户须要用户名和密码才能获取FTP服务器中的文件,增长了对用户和下载的可管理性。对于须要提供下载服务,但又不但愿全部人均可以匿名下载;既须要对下载用户进行管理,又考虑到主机安全和管理方便的FTP站点来讲,虚拟用户是一种极好的解决方案
   
2、获取最新版的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
 
 
 

vsftp配置大全---超完整版,首发CU之FTP区

3、三种方式的实现                                       
一、匿名用户形式实现
# 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  //直接在vsftpd-2.0.3里用make编译
# ls -l vsftpd
-rwxr-xr-x  1 root root 86088 Jun  6 12:29 vsftpd  //可执行程序已被编译成功

建立必要的账号,目录:
# useradd nobody  //可能你的系统已经存在此账号,那就不用创建
# mkdir /usr/share/empty  //可能你的系统已经存在此目录,那就不用创建
# mkdir /var/ftp  //可能你的系统已经存在此目录,那就不用创建
# useradd -d /var/ftp ftp  //可能你的系统已经存在此账号,那就不用创建
# chown root:root /var/ftp
# chmod og-w /var/ftp
请记住,若是你不想让用户在本地登录,那么你须要把他的登录SHELL设置成/sbin/nologin,好比以上的nobody和ftp我就设置成/sbin/nologin

安装vsftp配置文件,可执行程序,man等:
# install -m 755 vsftpd /usr/local/sbin/vsftpd-ano
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd-ano.conf
这样就安装完成了,那么咱们开始进行简单的配置

# vi /etc/vsftpd-ano.conf ,将以下三行加入文件
listen=YES
listen_port=21
tcp_wrappers=YES
anon_root=/var/ftp //设置匿名用户本地目录,和ftp用户目录必须相同
listen=YES的意思是使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)
# /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf &  //之后台方式启动vsftpd
注意:每行的值都不要有空格,不然启动时会出现错误,举个例子,假如我在listen=YES后多了个空格,那我启动时就出现以下错误:
500 OOPS: bad bool value in config file for: listen

测试搭建好的匿名用户方式
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>; pwd
257 "/"
ftp>; quit
221 Goodbye.
#
OK,已经完成了,very nice.

高级配置
细心的朋友可能已经看出来咱们只在默认配置文件增长了四行,就实现了FTP链接(也证实了vsftpd的易用性),那么让咱们传个文件吧,呀!!传输失败了(见图1)
为何呢?由于 vsftpd 是为了安全须要,/var/ftp目录不能把全部的权限打开,因此咱们这时要建一个目录pub,固然也仍是须要继续修改配置文件的。
# mkdir /var/ftp/pub
# chmod -R 777 /var/ftp/pub

为了测试方便,咱们先创建一个名为kill-ano的脚本,是为了杀掉FTP程序的
#!/bin/bash
a=`/bin/ps -A | grep vsftpd-ano | awk '{print $1}'`
kill -9 $a

那么如今你们看看个人匿名服务器配置文件吧
anonymous_enable=YES  //容许匿名访问,这是匿名服务器必须的
write_enable=YES  //全局配置可写
no_anon_password=YES //匿名用户login时不询问口令
anon_umask=077  //匿名用户上传的文件权限是-rw----
anon_upload_enable=YES  //容许匿名用户上传文件
anon_mkdir_write_enable=YES  //容许匿名用户创建目录
anon_other_write_enable=YES  //容许匿名用户具备创建目录,上传以外的权限,如重命名,删除
dirmessage_enable=YES  //当使用者转换目录,则会显示该目录下的.message信息
xferlog_enable=YES   //记录使用者全部上传下载信息
xferlog_file=/var/log/vsftpd.log  //将上传下载信息记录到/var/log/vsftpd.log中
xferlog_std_format=YES   //日志使用标准xferlog格式
idle_session_timeout=600  //客户端超过600S没有动做就自动被服务器踢出
data_connection_timeout=120  //数据传输时超过120S没有动做被服务器踢出
chown_uploads=YES
chown_username=daemon  //上传文件的属主
ftpd_banner=Welcome to d-1701.com FTP service.  //FTP欢迎信息
anon_max_rate=80000  //这是匿名用户的下载速度为80KBytes/s
check_shell=NO  //不检测SHELL

如今再测试,先kill掉再启动FTP程序
# ./kill-ano
# /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf &
上传一个文件测试一下,怎么样?OK了吧,下载刚上传的那个文件,恩?不行,提示
550 Failed to open file.
传输已失败!
传输队列已完成
1 个文件传输失败

没有关系,你记得我们设置了anon_umask=077了吗?因此你下载不了,若是你到服务器上touch 一个文件(644),测试一下,是能够被下载下来的,好了,匿名服务器就说到这里了。


二、本地用户形式实现
# cd /home/xuchen/vsftpd-2.0.3  //进入vsftpd-2.0.3的源代码目录
# make clean  //清除编译环境
# vi builddefs.h  \\继续编辑builddefs.h 文件,文件内容以下:
#ifndef VSF_BUILDDEFS_H

#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL

#endif /* VSF_BUILDDEFS_H */
将以上define VSF_BUILD_PAM行的define改成undef,支持tcp_wrappers,不支持PAM认证方式,支持SSL,记住啊,若是支持了PAM认证方式,你本地用户是不能登录的。

# make  //直接在vsftpd-2.0.3里用make编译
# ls -l vsftpd
-rwxr-xr-x  1 root root 84712 Jun  6 18:56 vsftpd  //可执行程序已被编译成功

建立必要的账号,目录:
# useradd nobody  //可能你的系统已经存在此账号,那就不用创建
# mkdir /usr/share/empty  //可能你的系统已经存在此目录,那就不用创建
# mkdir /var/ftp  //可能你的系统已经存在此目录,那就不用创建
# useradd -d /var/ftp ftp  //可能你的系统已经存在此账号,那就不用创建
# chown root:root /var/ftp
# chmod og-w /var/ftp
请记住,若是你不想让用户在本地登录,那么你须要把他的登录SHELL设置成/sbin/nologin,好比以上的nobody和ftp我就设置成/sbin/nologin

安装vsftp配置文件,可执行程序,man等:
# install -m 755 vsftpd /usr/local/sbin/vsftpd-loc
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd-loc.conf
这样就安装完成了,那么咱们开始进行简单的配置

# vi /etc/vsftpd-loc.conf ,将以下三行加入文件
listen=YES
listen_port=21
tcp_wrappers=YES //支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)
listen=YES的意思是使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式),注意事项请参看匿名用户的配置。
anonymous_enable=NO
local_enable=YES  //这两项配置说不容许匿名用户登录,容许本地用户登录
# /usr/local/sbin/vsftpd-loc /etc/vsftpd-loc.conf &   //之后台方式启动vsftpd

测试搭建好的匿名用户方式,先测试root用户吧 :)
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>; pwd
257 "/root"
ftp>; quit
221 Goodbye.
咱们看到root用户能够登录到ftp,他的登录目录就是本身的主目录。
再测试一个系统用户,那咱们先创建一个用户名叫xuchen的
# useradd xuchen
# passwd xuchen
Changing password for user xuchen.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
创建好了,让咱们开始测试吧!!
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): xuchen
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>; pwd
257 "/home/xuchen"
ftp>; quit
221 Goodbye.
咱们看到xuchen用户能够登录到ftp,他的登录目录也是本身的主目录。哈哈,又完成了!
高级配置
细心的朋友可能已经看出来若是咱们不支持PAM认证方式,那么本地用户就能够登录,而默认编译的vsftpd支持PAM认证方式,因此是不支持本地用户登录的。恩,从这点说,这也是vsftp安全的一个表现----禁止本地用户登录。
咱们登录后进行测试,传一个文件上去,得,失败了,那下载个文件下来吧,恩,这是成功的(见图2),并且咱们发现咱们能够进入到系统根目录(见图3),这样很危险。



那么改配置文件吧,为了测试方便,咱们先创建一个名为kill-loc的脚本,也是为了杀掉FTP程序的
#!/bin/bash
a=`/bin/ps -A | grep vsftpd-loc | awk '{print $1}'`
kill -9 $a

如今提供个人本地用户验证服务器配置文件吧(在匿名里写过的注释我就不在这里写了)
listen=YES
listen_port=21
tcp_wrappers=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022  //本地用户文件上传后的权限是-rw-r-r
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
connect_from_port_20=YES
chroot_local_user=YES //限制用户在本身的主目录
#local_root=/ftp  //你能够指定全部本地用户登录后的目录,若是不设置此项,用户都会登录于本身的主目录,就跟我们前面测试的结果是同样的
local_max_rate=500000  //本地用户的下载速度为500KBytes/s
idle_session_timeout=600
data_connection_timeout=120
nopriv_user= nobody   //设定服务执行者为nobody,vsftpd推荐使用一个权限很低的用户,最好是没有家目录(/dev/null),没有登录shell(/sbin/nologin),系统会更安全
ftpd_banner=Welcome to d-1701.com FTP service.
check_shell=NO

userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.denyuser
以上三条设定不容许登录的用户,用户列表存放在/etc/vsftpd.denyuser中,一行一个账号若是我把xuchen这个用户加到vsftpd.denyuser里,那么登录时会出现以下错误:
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 Welcome to d-1701.com FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): xuchen
530 Permission denied.
Login failed.
呵呵,有意思吧,本身测试吧,本地用户登录方式就介绍到这里吧!

三、虚拟用户形式实现(db及mysql形式)
# cd /home/xuchen/vsftpd-2.0.3  //进入vsftpd-2.0.3的源代码目录
# make clean  //清除编译环境
# vi builddefs.h  \\继续编辑builddefs.h 文件,文件内容以下:
#ifndef VSF_BUILDDEFS_H

#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#undef VSF_BUILD_PAM
#define VSF_BUILD_SSL

#endif /* VSF_BUILDDEFS_H */
将以上define VSF_BUILD_PAM行的undef改成define,支持tcp_wrappers,支持PAM认证方式,支持SSL,和匿名用户形式是同样的。

# make  //直接在vsftpd-2.0.3里用make编译
# ls -l vsftpd
-rwxr-xr-x  1 root root 86088 Jun  6 22:26 vsftpd  //可执行程序已被编译成功

建立必要的账号,目录:
# useradd nobody  //可能你的系统已经存在此账号,那就不用创建
# mkdir /usr/share/empty  //可能你的系统已经存在此目录,那就不用创建
# mkdir /var/ftp  //可能你的系统已经存在此目录,那就不用创建
# useradd -d /var/ftp ftp  //可能你的系统已经存在此账号,那就不用创建
# chown root:root /var/ftp
# chmod og-w /var/ftp
请记住,若是你不想让用户在本地登录,那么你须要把他的登录SHELL设置成/sbin/nologin,好比以上的nobody和ftp我就设置成/sbin/nologin

安装vsftp配置文件,可执行程序,man等:
# install -m 755 vsftpd /usr/local/sbin/vsftpd-pam
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd-pam.conf
这样就安装完成了,那么咱们开始进行简单的配置

对于用DB库存储用户名及密码的方式来讲:
(1)查看系统是否有相应软件包

# rpm –qa | grep db4
db4-devel-4.2.52-7.1
db4-4.2.52-7.1
db4-utils-4.2.52-7.1
(2)创建一个logins.txt的文件,单行为用户名,双行为密码,例如
# vi /home/logins.txt

xuchen
12345

(3)创建数据库文件并设置文件属性
# db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db
# chmod 600 /etc/vsftpd_login.db
(4)创建认证文件
# vi /etc/pam.d/ftp 插入以下两行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
(5)创建一个虚拟用户
useradd -d /home/vsftpd -s /sbin/nologin vsftpd
ls -ld /home/vsftpd
drwx------  3 vsftpd vsftpd 1024 Jun  6 22:55 /home/vsftpd/
(6)编写配置文件(注意事项请参看匿名用户的配置,这里再也不赘述)
# vi /etc/vsftpd-pam.conf
listen=YES
listen_port=21
tcp_wrappers=YES //支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)
listen=YES的意思是使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)
anonymous_enable=NO
local_enable=YES  //PAM方式此处必须为YES,若是不是将出现以下错误:
500 OOPS: vsftpd: both local and anonymous access disabled!
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=vsftpd //这两行的意思是采用虚拟用户形式
virtual_use_local_privs=YES //虚拟用户和本地用户权限相同

pasv_enable=YES //创建资料联机采用被动方式
pasv_min_port=30000 //创建资料联机所可使用port 范围的上界,0表示任意。默认值为0。
pasv_max_port=30999 //创建资料联机所可使用port 范围的下界,0表示任意。默认值为0。
(7)启动程序
# /usr/local/sbin/vsftpd-pam /etc/vsftpd-pam.conf &
(8)测试连通及功能
# vi /home/vsftpd/test //创建一个文件,内容以下
1234567890
# chown vsftpd.vsftpd /home/vsftpd/test

# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): xuchen
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>; pwd
257 "/"
ftp>; size test
213 11
ftp>; quit
221 Goodbye.
OK,用户名为xuchen,密码为12345能够链接到FTP服务器,看不到文件列表,但能够下载已知文件名的文件,不能上传文件,很是安全吧!!

若是咱们须要用户看到文件,怎么办?也好办,在配置文件中加入以下语句:
anon_world_readable_only=NO  //匿名登入者不能下载可阅读的档案,默认值为YES

若是须要让用户上传文件和下载文件分开,建议以下这么作
# vi /home/logins.txt
xuchen
12345
upload
45678
//首先创建虚拟用户upload,密码为45678
# db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db //更新数据文件

# mkdir /home/vsftpd/upload
# vi /etc/vsftpd-pam.conf 加入以下语句
user_config_dir=/etc/vsftpd_user_conf
# mkdir /etc/vsftpd_user_conf
# vi /etc/vsftpd_user_conf/upload 文件内容以下
local_root=/home/vsftpd/upload
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

# chmod 700 /home/vsftpd/upload
# chown vsftpd.vsftpd /home/vsftpd/upload/

这样,xuchen用户能够下载/home/vsftpd里的文件及upload里的文件,而upload用户能够上传和下载/home/vsftpd/upload文件夹的东西,但不能到/home/vsftpd里下载文件,很简单得实现了分用户上传和下载

对于用Mysql库存储用户名及密码的方式来讲:
就是把用户名和密码放在mysql库里,实现起来也至关简单
(1)创建一个库并设置相应权限
# mysql –p
mysql>;create database ftpd;
mysql>;use ftpd;
mysql>;create table user(name char(20) binary,passwd char(20) binary);
mysql>;insert into user (name,passwd) values ('test1','12345');
mysql>;insert into user (name,passwd) values ('test2','54321');
mysql>;grant select on ftpd.user to ftpd@localhost identified by '123456';
mysql>;flush privileges; 刷新权限设置
mysql>;quit
(2)下载libpam-mysql进行安装编译
下载地址以下:
http://nchc.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz
假设咱们把它放在了/home/xuchen目录下
# cd /home/xuchen
# tar xzvf pam_mysql-0.5.tar.gz
# cd pam_mysql
# make
# cp pam_mysql.so /lib/security
(3)创建PAM认证信息
# vi /etc/pam.d/ftp ,内容以下
auth required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0

account required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0

注意:
crypt= n
crypt=0: 明文密码
crypt=1: 使用crpyt()函数(对应SQL数据里的encrypt(),encrypt()随机产生salt)
crypt=2: 使用MYSQL中的password()函数加密
crypt=3:表示使用md5的散列方式
(4)创建本地虚拟用户
# useradd -d /home/ftpd -s /sbin/nologin ftpd

(5)下面就差修改vsftpd.conf文件了,我把个人提供给你们参考吧:)
# vi /etc/vsftpd-pam1.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=ftpd
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
anon_world_readable_only=NO
virtual_use_local_privs=YES

#user_config_dir=/etc/vsftpd_user_conf
能够看出,和前面的用db库来验证没有多大区别,其实就是一个东西,一个用mysql来验证,一个用db库,我我的比较倾向于用db库来验证,在这个环境下,相对于Mysql来讲,安全系数更高一点。

(6)# /usr/local/sbin/vsftpd-pam /etc/vsftpd-pam1.conf &   //之后台方式启动

(7)测试连通
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): test1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>; pwd
257 "/"
ftp>; quit
221 Goodbye.
看,成功了!!这样就实现了mysql的认证方式,很简单吧??

四、为FTP增长磁盘配额,从而避免恶意用户用垃圾数据塞满你的硬盘
我首先要说的是这个功能是系统自带的,而不是vsftp 的功能之一,千万别搞混了。好了,咱们先假设咱们的系统用户ftpd的主目录是/home/ftpd,它是创建在/home分区中,那么若是咱们要对ftpd用户进行磁盘限额,那咱们须要修改/etc/fstab中根分区的记录,将/home分区的第4个字段改为defaults,usrquota,以下:
LABEL=/home   /home   ext3    defaults,usrquota     1 2
# reboot  //从新启动系统使设置生效
也能够用
# mount -o remount /dev/sda6  ///dev/sda6的挂接点就是/home,这样能够不用启动系统。
这里我还要说明一下,若是咱们对一个组进行磁配额,那咱们须要增长参数grpquota,例如
LABEL=/home   /home   ext3    defaults,grpquota     1 2
也能够
LABEL=/home   /home   ext3    defaults,usrquota,grpquota     1 2
你想怎么限制均可以,本身组合参数吧。
# quotacheck -avu
说明:a-自动开启挂载文件系统的配额,v-显示信息,u-启用用户配额or g-启用组配额
# edquota ftpd //为用户ftpd设置磁盘配额
OR
# edquota -g grp  //为组grp设置磁盘配额
系统会自动打开配额文件,以下:
Disk quotas for user ftpd (uid 502):
  Filesystem         blocks       soft       hard     inodes     soft     hard
  /dev/sda6           424          0          0         13        0        0
第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数,单位为KB。随后的两列用来设置用户在该文件系统上的软硬块限度。inodes 列显示了用户当前使用的i节点数量。最后两列用来设置用户在该文件系统上的软硬i节点限度.硬限是用户或组群可使用的磁盘空间的绝对最大值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。软限定义可被使用的最大磁盘空间量。和硬限不一样的是,软限能够在一段时期内被超过。这段时期被称为过渡期(grace period),默认七天的超越。过渡期能够用秒钟、分钟、小时、天数、周数、或月数表示。若是以上值中的任何一个被设置为 0,那个限度就不会被设置。我设置了硬块限度为1KB,是为了测试方便。
# quotaon  -avu  //打开磁盘配额监控进程,u是用户g是组,这里我没设置g参数
要校验用户的配额是否被设置,咱们可使用如下命令:
# quota ftpd
Disk quotas for user ftpd (uid 502):
  Filesystem  blocks   quota   limit    grace   files   quota   limit   grace
/dev/sda6     424*    0      1            13      0      0        
# edquota –t(-g)来设置过渡期(grace period) //固然只针对软限制而言
和另外一个 edquota 命令类似,这个命令也会在文本编辑器中打开当前的文件系统配额:
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
/dev/sda6                     7days                  7days
按你的须要修改后存盘退出
用如下命令显示磁盘配额使用状态
# repquota  -a  或 repquota  /dev/sda6(用户配额)
# repquota -g -a 或 repquota -a /dev/sda6 (组的配额)
若是一切按照你的意思实施了,那么咱们就进行测试了!以下图4

咱们传了一个>;1k的文件,没有成功,这样咱们就成功的为用户ftpd增添了磁盘配额,要是哪一天你不想加磁盘配额了,怎么办?参看以下命令:
取消某个文件系统的配额限制
#quotaoff  -vug /dev/sda6  //删除home分区的磁盘限额
#删除/etc/fstab中设置配额的部分
修改软配额的最大超越时间
注意:
/,/boot/,/proc,/mnt/cdrom等不要使用配额,没用。并且磁盘配额不适合FAT和FAT32系统。
之后当新设置了某个用户的配额,可使用以下命令,立刻生效。
# quotacheck -auvgm       --是不尝试从新挂载文件系统

备注:
一、vsftpd配置参数详细整理
#接受匿名用户
anonymous_enable=YES
#匿名用户login时不询问口令
no_anon_password=YES
#匿名用户主目录
anon_root=(none)
#接受本地用户
local_enable=YES
#本地用户主目录
local_root=(none)
#若是匿名用户须要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登陆
deny_email_enable=YES
#仅在没有pam验证版本时有用,是否检查用户有一个有效的shell来登陆
check_shell=YES
#若启用此选项,userlist_deny选项才被启动
userlist_enable=YES
#若为YES,则userlist_file中的用户将不能登陆,为NO则只有userlist_file的用户能够登陆
userlist_deny=NO
#若是和chroot_local_user一块儿开启,那么用户锁定的目录来自/etc/passwd每一个用户指定的目录(这个不是很清楚,很哪位熟悉的指点一下)
passwd_chroot_enable=NO
#定义匿名登入的使用者名称。默认值为ftp。
ftp_username=FTP

#################用户权限控制###############
#能够上传(全局控制).
write_enable=YES
#本地用户上传文件的umask
local_umask=022
#上传文件的权限配合umask使用
#file_open_mode=0666
#匿名用户能够上传
anon_upload_enable=NO
#匿名用户能够建目录
anon_mkdir_write_enable=NO
匿名用户其它的写权利(更改权限?)
anon_other_write_enable=NO
若是设为YES,匿名登入者会被容许下载可阅读的档案。默认值为YES。
anon_world_readable_only=YES
#若是开启,那么全部非匿名登录的用户名都会被切换成guest_username指定的用户名
#guest_enable=NO
全部匿名上传的文件的所属用户将会被更改为chown_username
chown_uploads=YES
匿名上传文件所属用户名
chown_username=lightwiter
#若是启动这项功能,则全部列在chroot_list_file之中的使用者不能更改根目录
chroot_list_enable=YES
#容许使用"async ABOR"命令,通常不用,容易出问题
async_abor_enable=YES
管控是否可用ASCII 模式上传。默认值为NO。
ascii_upload_enable=YES
#管控是否可用ASCII 模式下载。默认值为NO。
ascii_download_enable=YES
#这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd 不须要file system 的权限时,就会将使用者限制在此数据夹中。默认值为/usr/share/empty
secure_chroot_dir=/usr/share/empty

###################超时设置##################
#空闲链接超时
idle_session_timeout=600
#数据传输超时
data_connection_timeout=120
#PAVS请求超时
ACCEPT_TIMEOUT=60
#PROT模式链接超时
connect_timeout=60

################服务器功能选项###############
#开启日记功能
xferlog_enable=YES
#使用标准格式
xferlog_std_format=YES
#当xferlog_std_format关闭且本选项开启时,记录全部ftp请求和回复,当调试比较有用.
#log_ftp_protocol=NO
#容许使用pasv模式
pasv_enable=YES
#关闭安全检查,当心呀.
#pasv_promiscuous+NO
#容许使用port模式
#port_enable=YES
#关闭安全检查
#prot_promiscuous
#开启tcp_wrappers支持
tcp_wrappers=YES
#定义PAM 所使用的名称,预设为vsftpd。
pam_service_name=vsftpd
#当服务器运行于最底层时使用的用户名
nopriv_user=nobody
#使vsftpd在pasv命令回复时跳转到指定的IP地址.(服务器联接跳转?)
pasv_address=(none)

#################服务器性能选项##############
#是否能使用ls -R命令以防止浪费大量的服务器资源
#ls_recurse_enable=YES
#是否使用单进程模式
#one_process_model
#绑定到listen_port指定的端口,既然都绑定了也就是每时都开着的,就是那个什么standalone模式
listen=YES
#当使用者登入后使用ls -al 之类的指令查询该档案的管理权时,预设会出现拥有者的UID,而不是该档案拥有者的名称。如果但愿出现拥有者的名称,则将此功能开启。
text_userdb_names=NO
#显示目录清单时是用本地时间仍是GMT时间,能够经过mdtm命令来达到同样的效果
use_localtime=NO
#测试平台优化
#use_sendfile=YES

################信息类设置################
#login时显示欢迎信息.若是设置了banner_file则此设置无效
ftpd_banner=欢迎来到湖南三辰Fake-Ta FTP 网站.
#容许为目录配置显示信息,显示每一个目录下面的message_file文件的内容
dirmessage_enable=YES
#显示会话状态信息,关!
#setproctitle_enable=YES

############## 文件定义 ##################
#定义不能更改用户主目录的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
#定义限制/容许用户登陆的文件
userlist_file=/etc/vsftpd/vsftpd.user_list
#定义登陆信息文件的位置
banner_file=/etc/vsftpd/banner
#禁止使用的匿名用户登录时做为密码的电子邮件地址
banned_email_file=/etc/vsftpd.banned_emails
#日志文件位置
xferlog_file=/var/log/vsftpd.log
#目录信息文件
message_file=.message

############## 目录定义 #################
#定义用户配置文件的目录
user_config_dir=/etc/vsftpd/userconf
#定义本地用户登录的根目录,注意定义根目录能够是相对路径也能够是绝对路径.相对路径是针对用户家目录来讲的.
local_root=webdisk #此项设置每一个用户登录后其根目录为/home/username/webdisk
#匿名用户登录后的根目录
anon_root=/var/ftp

#############用户链接选项#################
#可接受的最大client数目
max_clients=100
#每一个ip的最大client数目
max_per_ip=5
#使用标准的20端口来链接ftp
connect_from_port_20=YES
#绑定到某个IP,其它IP不能访问
listen_address=192.168.0.2
#绑定到某个端口
#listen_port=2121
#数据传输端口
#ftp_data_port=2020
#pasv链接模式时可使用port 范围的上界,0 表示任意。默认值为0。
pasv_max_port=0
#pasv链接模式时可使用port 范围的下界,0 表示任意。默认值为0。
pasv_min_port=0

##############数据传输选项#################
#匿名用户的传输比率(b/s)
anon_max_rate=51200
#本地用户的传输比率(b/s)
local_max_rate=5120000

########################################
别外,若是要对每一个用户进行单独的控制,只须要在user_config_dir中创建username文件,内容为数据传输和用户权利里面设置我的的合适的选项,用户自定义文件一样适合用pam支持的虚拟用户
附: 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 未执行请求的的命令,名称不正确。

二、VSFTPD官方资料翻译版(不完整版)---摘自中国Linux公社
翻译了部分VSFTPD的官方资料。
有些知道是什么意思,但难于翻译。有些涉及专业的知识,我本身也不懂,只好按字面翻译。有些我本身看不懂,只好尽可能翻译。
若是看了其中一部分以为糊涂,请参阅官方文挡。

安装篇
===============
这个文件详细介绍了如何从VSFTPD的.tar.gz分发包开始,创建和安装并运行VSFTPD。

1)创建VSFTPD
先进入解压.tar.gz文件后产生的目录内。以下:
cd vsftpd-2.0.1

编辑"builddefs.h"以操做compile-time设定。(tcp_wrappers build,等)

输入make,回车(若是它不工做请发邮件通知我  .
这将产生一个二进制文件,你能够验证一下。以下:
[chris@localhost vsftpd]$ ls -l vsftpd
-rwxrwxr-x 1 chris chris 61748 Sep 27 00:26 vsftpd

2)知足VSFTPD安装所需的一些条件
VSFTPD默认设置须要一个"nobody"用户,若是这个用户不存在,那么添加它。以下:
[root@localhost root]# useradd nobody
useradd: user nobody exists

VSFTPD默认设置须要一个空目录:/usr/share/empty.增长这个目录,若是它还不存在的话。以下:
[root@localhost root]# mkdir /usr/share/empty/
mkdir: cannot create directory `/usr/share/empty': File exists

若是允许匿名用户(anonymous),那么你将须要一个"ftp"用户和其home目录(这个home目录不属于“ftp”用户,并且“ftp"用户也对其没有写权限)在你的系统中存在。
如下命令用来建立一个"ftp"用户,若是它还不存在的话。
[root@localhost root]# mkdir /var/ftp/
[root@localhost root]# useradd -d /var/ftp ftp

(即便你的"ftp"用户已经存在,完成如下这两步也是颇有好处的:)
[root@localhost root]# chown root.root /var/ftp
[root@localhost root]# chmod og-w /var/ftp

3)安装VSFTPD的配置、执行和帮助文件。
输入"make install"后会将二进制文件和帮助文件拷贝到适当的目录。
你也能够手工拷贝这些文件:
cp vsftpd /usr/local/sbin/vsftpd
cp vsftpd.conf.5 /usr/local/man/man5
cp vsftpd.8 /usr/local/man/man8

"make install"不会拷贝默认的配置文件,因此建议你手工拷贝:
cp vsftpd.conf /etc
daidong注:根据你系统版本的不一样,也多是 cp vsftpd.conf /etc/vsftpd

4)测试 (无inetd影响)
VSFTPD能运行在独立模式(standalone)或者经过inetd(xinetd)来启动。
你能经过inetd来运行vsftpd以更好地控制它。但咱们在首次运行时不这么作,以便检查系统是否如今配置正常。
编辑/etc/vsftpd.conf(daidong注:也多是/etc/vsftpd/vsftpd.conf),并在最下面加入如下这一行:
listen=YES

这将告诉VSFTPD不要从inetd启动。
OK,如今试着启动FTP。
以ROOT登陆。
肯定你没有运行其余FTP服务(不然VSFTPD不能占用FTP所需的21端口)。
运行那个二进制文件,以下:
[root@localhost root]# /usr/local/sbin/vsftpd &
[1] 2104

若是一切正常,那么你将连上FTP服务器,以下:
[chris@localhost chris]$ ftp localhost
Connected to localhost (127.0.0.1).
220 (vsFTPd 1.1.1)
Name (localhost:chris): ftp
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>; ls
227 Entering Passive Mode (127,0,0,1,229,133)
150 Here comes the directory listing.
d--x--x--x 2 0 0 4096 Jan 14 2002 bin
d--x--x--x 2 0 0 4096 Apr 21 20:52 etc
drwxr-xr-x 2 0 0 4096 Apr 21 20:52 lib
drwxr-sr-x 2 0 50 4096 Jul 26 22:58 pub
226 Directory send OK.
ftp>;

5)从inetd或者相似方式启动(官方推荐使用standalone方式)
你也许想经过inetd或者相似方式启动VSFTPD,由于这能给你更多的感觉。例如xinetd就有不少的设置。
(注意:VSFTPD的内在机制屏蔽了xinetd的大多数的有用的设置)。

若是使用标准的"inetd",你须要编辑/etc/inetd.conf,在其中加入如下一行:
ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd

(肯定你删除或者注释掉一些已存在的FTP服务配置行。若是你没有安装tcp_wrappers,或者不想使用它们,那么请去掉/usr/sbin/tcpd part).

inetd须要指定并从新载入它的配置文件:
kill -SIGHUP `pidof inetd`

若是你想使用"xinetd",请参阅咱们提供的范例 /EXAMPLE/INTERNET_SITE/README. 而其余范例文件将告诉你如何调配出更强大的xinetd功能。

6)为本地登陆配置PAM文件(可选)
若是你在一台激活了PAM的设备上运行VSFTPD,你须要提供一个 /etc/pam.d/ftp 文件。不然非匿名用户将没法登陆服务器。
(注:若是你的PAM版本比较老,那么这个文件也许是 /etc/pam.conf).

作为一个标准设置,你能够拷贝一个已提供的范例文件,以下:
cp RedHat/vsftpd.pam /etc/pam.d/ftp

7)自定义你的配置文件
完成以上的配置后,建议你安装一个配置文件。默认的配置文件位置是/etc/vsftpd.conf. 在VSFTPD软件分发包内有一个范例配置文件。
你能够拷贝其为/etc/vsftpd.conf以作进一步修改。
cp vsftpd.conf /etc
(daidong注:也多是 cp vsftpd.conf /etc/vsftpd ).

这个默认配置即不允许本地登陆也不允许匿名用户上传,也许你但愿更改这个配置。


其它
===================
测试平台 (已经过)
-流行的,功能完善的平台都能测试经过。在如下平台的较新版本,VSFTPD工做得很好。在其大部分较早的版本下,也运行正常。
- RedHat Linux
- RedHat Enterprise Linux
- Solaris / GNU tools (Solaris 8 or newer)
- SuSE Linux
- Debian Linux
- OpenBSD
- FreeBSD
- NetBSD
- HP-UX / GNU tools
- IRIX / GNU tools
- Mac OS X (note; older versions have setgroups() problem. 10.3.4 reported OK)
虚拟用户1
=============
这个例子示范了如何为虚拟用户设置VSFTPD/PAM。
虚拟用户是一个在系统中并不做为一个登陆实体而存在的用户。使用虚拟用户比使用真实的用户更安全,由于这个帐号只能用于FTP服务器。

虚拟用户常常用来提供给不大可信任的用户访问某些资源,而这些资源一般是其余普通用户不能访问的。

1)建立虚拟用户数据库
咱们将使用pam_userdb来认证虚拟用户。这须要提供一个“db"格式(一种通用数据库格式)的用户名/密码文件。
建立一个"db"格式的文件,首先要建立一个标准文本文件,并把用户名,密码以竖直排列方式输入。如logins.txt:
tom
foo
fired
bar
这个例子中,tom用户的密码是foo.fired用户的密码是bar.
以ROOT登陆,建立一个数据库文件,以下:
db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
(这要求berkeley db程序已经安装)
(注:一些系统也许安装了多个版本的"db",因此某些状况下你可能使用"db3_load"才是正确的。对于一些 Debian系统就是这样。
关键在于要让pam_userdb相信它的登陆数据库是哪个db版本所产生(通常都是db3,尽管你的系统里可能安装的是db4).)

这将建立/etc/vsftpd_login.db文件。显然,你但愿设定这个文件的权限:
chmod 600 /etc/vsftpd_login.db

要了解更多关于维护你的登陆数据库的信息,请在"berkeley DB"察看相关文档:
http://www.sleepycat.com/docs/utility/index.html

2)用你的新数据库建立一个PAM文件
请参考范例vsftpd.pam,它包含2行:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

这是告诉PAM用新的数据库去验证用户。把这个PAM文件拷贝到PAM目录,通常是/etc/pam.d
cp vsftpd.pam /etc/pam.d/ftp

3)为虚拟用户设置home目录
useradd -d /home/ftpsite virtual
ls -ld /home/ftpsite
(which should give):
drwx------ 3 virtual virtual 4096 Jul 30 00:39 /home/ftpsite

咱们已经建立了一个名叫"virtual"的用户,home目录是"/home/ftpsite".
咱们拷贝一些东西到这个下载目录:
cp /etc/hosts /home/ftpsite
chown virtual.virtual /home/ftpsite/hosts

4)建立你的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

这将把虚拟用户锁定在咱们在以上设置的/home/ftpsite目录内。

guest_enable=YES
guest_username=virtual

guest_enable很是重要-它激活了虚拟用户!而guest_username说明全部的虚拟用户都对应咱们在上面设置的真实用户:“virtual".
这同时肯定了虚拟用户在文件系统中的位置,也就是说,虚拟用户的home目录即"virtual"用户的home目录:/home/ftpsite。

listen=YES
listen_port=10021

这让VSFTPD以独立模式(standalone)运行,而不是从inetd方式启动。也就是说,你运行VSFTPD可执行文件就启动了FTP服务。
同时也让VSFTPD启用非标准端口10021来监听FTP请求(FTP通常使用21端口)。

pasv_min_port=30000
pasv_max_port=30999

这设定了被动模式的FTP请求端口。当你配置了一个防火墙的时候,这个配置就很好用。

拷贝范例配置文件到/etc
cp vsftpd.conf /etc/
(daidong注:也多是/etc/vsftpd)

5)启动VSFTPD
到VSFTPD二进制文件所在的目录,输入:
./vsftpd

若是一切正常,这个命令将生效。不然,你将会看到一些错误信息的反馈。

6)测试
启动另外一个会话。(或者ctrl-z,再输入"bg",让VSFTPD在后台运行)。
这是一个FTP会话的例子:

ftp localhost 10021
Connected to localhost (127.0.0.1).
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
Name (localhost:chris): tom
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>; pwd
257 "/"
ftp>; ls
227 Entering Passive Mode (127,0,0,1,117,135)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp>; size hosts
213 147
ftp>;

注释:
密码是"foo"
出现”failed to open directory“的话,别担忧。这是由于/home/ftpsite目录不允许被任意浏览。
(咱们能够更改anon_world_readable_only=NO以消除告警,但为了安全,仍是保留这个配置)。
咱们能经过size命令看到咱们已经访问了被咱们拷贝到这里的"hosts"文件。

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
pasv_min_port=30000
pasv_max_port=30999
虚拟用户2
===============
这个例子将演示如何扩展“VIRTUAL_USERS”那个范例,从而实现更复杂一点的配置。

让咱们假定咱们须要2种不一样的虚拟用户:一种只能浏览并下载资源,另外一种能上传文件并浏览站内资源。

要激活这个设置,咱们将使用VSFTPD的强大的“单个用户配置”功能(是V1.1.0后出现的新功能)。

在前一个虚拟用户范例中,咱们建立了2个用户-tom和fred.
咱们将实现fred有写权限以上传新文件,同时tom只能下载文件。

1)激活单个用户配置功能。
要激活这个功能,须要增长如下配置行到配置文件:

user_config_dir=/etc/vsftpd_user_conf

而且建立目录:

mkdir /etc/vsftpd_user_conf

2)授予tom读取全部文件和目录的权限
在上一个例子的最后,咱们注意到虚拟用户只能浏览全部的彻底可读属性的目录和文件。咱们使/home/ftpsite彻底可读,并且被上传的文件也
赋予了彻底可读的权限(daidong注:意思是说这样虚拟用户就能读取全部的文件了)。但实现这个目的的另外一个方法是受权tom能下载那些非彻底可读的文件。

对于tom,他的配置文件中须要修改一个设置:
anon_world_readable_only:

设为"anon_world_readable_only=NO" >; /etc/vsftpd_user_conf/tom
(daidong注:既把默认配置修改了anon_world_readable_only后,复制到/etc/vsftpd_user_conf下,名字为tom)

验证一下结果-以tom登陆,“ls”将返回一个目录列表。若是以fred登陆将不会如此。

注意:重启VSFTPD以启用配置文件/etc/vsftpd.conf(高级用户也能够发送SIGHUP给VSFTPD的监听进程).

3)授予freg读取全部文件/目录并建立新文件/目录的权限,但让他不能对已存在的文件/目录进行操做.

echo "anon_world_readable_only=NO" >; /etc/vsftpd_user_conf/fred
echo "write_enable=YES" >;>; /etc/vsftpd_user_conf/fred
echo "anon_upload_enable=YES" >;>; /etc/vsftpd_user_conf/fred

验证一下-以tom登陆,将不能上传,而fred就能够.
试图删除一个文件--噢,大家俩都不行!
配置详解
=============
VSFTPD.CONF.5
================
名字
vsftpd.conf :VSFTPD的配置文件

描述:
vsftpd.conf 用来控制VSFTPD的各项功能。默认状态下,它的位置是/etc/vsftpd.conf。
(译者注:也许老的LINUX版本下,配置文件是这个位置,但新的LINUX版本,例如FC2,配置文件是在/etc/vsftpd目录下。
可是也极可能和安装方式有关,RPM包安装,配置文件是/etc/vsftpd.conf. 源码包安装:/etc/vsftpd/vsftpd.conf.我不肯定。
但之后我再也不特别指出了,真累!!)
然而,你也能够经过修改配置行来指定到其它目录。这一点颇有用,由于也许你想使用一些高级inetd功能,例如xinetd,在一个多虚拟主机的机器上调用不一样的配置文件。

格式
VSFTPD.conf 的格式很是简单,每行要么是一个注释,要么是一个指令。注释行以#开始并被忽略掉。指令行格式以下:
配置项=参数值
很重要的一点是,这个格式里不存在任何空格。
默认的,每个配置项在配置文件里都占一编辑行,能够被修改。

布尔选项
参数值的布尔选项能够是:
YES或者NO

allow_anon_ssl
只有ss1_enable激活了才能够启用此项。若是设置为YES,匿名用户将允许使用安全的SSL链接服务器。
默认值:NO

anon_mkdir_write_enable
若是设为YES,匿名用户将允许在指定的环境下建立新目录。若是此项要生效,那么配置write_enable必须被激活,而且匿名用户必须在其父目录有写权限。
默认值:NO

anon_other_write_enable
若是设置为YES,匿名用户将被授予较大的写权限,例如删除和更名。通常不建议这么作,除非想彻底受权。
默认值:NO

anon_upload_enable
若是设为YES,匿名用户就允许在指定的环境下上传文件。若是此项要生效,那么配置write_enable必须激活。而且匿名用户必须在相关目录有写权限。
默认值:NO

anon_world_readable_only
启用的时候,匿名用户只允许下载彻底可读的文件,这也就允许了ftp用户拥有对文件的全部权,尤为是在上传的状况下。
默认值:YES

anonymous_enable
控制是否允许匿名用户登陆。若是允许,那么“ftp”和“anonymous”都将被视为“anonymous"而允许登陆。
默认值:YES

ascii_download_enable
启用时,用户下载时将以ASCII模式传送文件。
默认值:NO

ascii_upload_enable
启用时,用户上传时将以ASCII模式传送文件。
默认值:NO

async_abor_enable
启用时,一个特殊的FTP命令"async ABOR”将允许使用。只有不正常的FTP客户端要使用这一点。并且,这个功能又难于操做,因此,
默认是把它关闭了。可是,有些客户端在取消一个传送的时候会被挂死(daidong注:估计是客户端无响应了),那你只有启用这个功能才能避免这种状况。
默认值:NO

background
启用时,而且VSFTPD是“listen”模式启动的(daidong注:就是standalone模式),VSFTPD将把监听进程置于后台。但访问VSFTPD时,控制台将当即被返回到SHELL。
默认值:NO

check_shell
注意:这个选项只对非PAM结构的VSFTPD才有效。若是关闭,VSFTPD将不检查/etc/shells以断定本地登陆的用户是否有一个可用的SHELL。
默认值:YES

chmod_enable
启用时,将允许使用SITE CHMOD命令。注意,这只能用于本地用户。匿名用户毫不能使用SITE CHMOD。
默认值:YES

chown_uploads
若是启用,因此匿名用户上传的文件的全部者将变成在chown_username里指定的用户。这对管理FTP颇有用,也许也对安全有益。
默认值:NO

chroot_list_enable
若是激活,你要提供一个用户列表,表内的用户将在登陆后被放在其home目录,锁定在虚根下(daidong注:进入FTP后,PWD一下,能够看到当前目录是"/",这就是虚根。是FTP的根目录,并不是FTP服务器系统的根目录)。若是chroot_local_user设为YES后,其含义会发生一点变化。
在这种状况下,这个列表内的用户将不被锁定在虚根下。
默认状况下,这个列表文件是/etc/vsftpd.chroot_list, 但你也能够经过修改chroot_list_file来改变默认值。
默认值:NO

chroot_local_user
若是设为YES,本地用户登陆后将被(默认地)锁定在虚根下,并被放在他的home目录下。
警告:
这个配置项有安全的意味,特别是若是用户有上传权限或者可以使用SHELL的话。在你肯定的前提下,再启用它。
注意,这种安全暗示并不是只存在于VSFTPD,实际上是普遍用于全部的但愿把用户锁定在虚根下的FTP软件。
默认值:NO

connect_from_port_20
这用来控制服务器是否使用20端口号来作数据传输。为安全起见,有些客户坚持启用。相反,关闭这一项可让VSFTPD更加大众化。
默认值:NO (但在范例配置文件中,启用了,即YES)

deny_email_enable
若是激活,你要提供一个关于匿名用户的密码E-MAIL表(daidong注:咱们都知道,匿名用户是用邮件地址作密码的)以阻止以这些密码登陆的匿名用户。
默认状况下,这个列表文件是/etc/vsftpd.banner_emails,但你也能够经过设置banned_email_file来改变默认值。
默认值:NO

dirlist_enable
若是设置为NO,全部的列表命令(daidong注:如ls)都将被返回“permission denied”提示。
默认值:YES

dirmessage_enable
若是启用,FTP服务器的用户在首次进入一个新目录的时候将显示一段信息。默认状况下,会在这个目录中查找.message文件,但你也能够
经过更改message_file来改变默认值。
默认值:NO (但在配置范例文件中启用了它)

download_enable
若是设为NO,下载请求将返回“permission denied”。
默认值:YES

dual_log_enable
若是启用,两个LOG文件会各自产生,默认的是/var/log/xferlog和/var/log/vsftpd.log。前一个是wu-ftpd格式的LOG,能被通用工具分析。
后一个是VSFTPD的专用LOG格式。
默认值: NO

force_dot_files
若是激活,即便客户端没有使用“a”标记,(FTP里)以.开始的文件和目录都会显示在目录资源列表里。可是把"."和".."不会显示。(daidong注:即LINUX下
的当前目录和上级目录不会以‘.’或‘..’方式显示)。
默认值:NO

force_local_data_ssl
只有在ssl_enable激活后才能启用。若是启用,全部的非匿名用户将被强迫使用安全的SSL登陆以在数据线路上收发数据。
默认值:YES

force_local_logins_ssl
只有在ssl_enable激活后才能启用。若是启用,全部的非匿名用户将被强迫使用安全的SSL登陆以发送密码。
默认值:YES

guest_enable
若是启用,全部的非匿名用户登陆时将被视为”游客“,其名字将被映射为guest_username里所指定的名字。
默认值:NO

hide_ids
若是启用,目录资源列表里全部用户和组的信息将显示为"ftp".
默认值:NO

listen
若是启用,VSFTPD将以独立模式(standalone)运行,也就是说能够不依赖于inetd或者相似的东东启动。直接运行VSFTPD
的可执行文件一次,而后VSFTPD就本身去监听和处理链接请求了。
默认值:NO

listen_ipv6
相似于listen参数的功能,但有一点不一样,启用后VSFTPD会去监听IPV6套接字而不是IPV4的。这个设置和listen的设置互相排斥。
默认值:NO

local_enable
用来控制是否允许本地用户登陆。若是启用,/etc/passwd里面的正经常使用户的帐号将被用来登陆。
默认值:NO

log_ftp_protocol
启用后,若是xferlog_std_format没有被激活,全部的FTP请求和反馈信息将被纪录。这经常使用于调试(debugging)。
默认值:NO

ls_recurse_enable
若是启用,"ls -R"将被允许使用。这是为了不一点点安全风险。由于在一个大的站点内,在目录顶层使用这个命令将消耗大量资源。
默认值:NO

no_anon_password
若是启用,VSFTPD将不会向匿名用户询问密码。匿名用户将直接登陆。
默认值:NO

no_log_lock
启用时,VSFTPD在写入LOG文件时将不会把文件锁住。这一项通常不启用。它对一些工做区操做系统问题,如Solaris / Veritas文件系统共存时有用。
由于那在试图锁定LOG文件时,有时候看上去象被挂死(无响应)了。(daidong注:这我也不是很理解。因此翻译未必近乎原意。原文以下:It exists to workaround
operating system bugs such as the Solaris / Veritas filesystem combination
which has been observed to sometimes exhibit hangs trying to lock log files.)
默认值:NO

one_process_model
若是你的LINUX核心是2.4的,那么也许能使用一种不一样的安全模式,即一个链接只用一个进程。只是一个小花招,但能提升FTP的性能。请肯定须要后再启用它,并且也请肯定你的
站点是否会有大量的人同时访问。
默认值:NO

passwd_chroot_enable (daidong注:这段本身看,无语...)
if enabled, along with
.BR chroot_local_user
, then a chroot() jail location may be specified on a per-user basis. Each
user's jail is derived from their home directory string in /etc/passwd. The
occurrence of /./ in the home directory string denotes that the jail is at that
particular location in the path.
默认值:NO

pasv_enable
若是你不想使用被动方式得到数据链接,请设为NO。
默认值:YES

pasv_promiscuous
若是你想关闭被动模式安全检查(这个安全检查能确保数据链接源于同一个IP地址)的话,设为YES。肯定后再启用它(daidong注:原话是:只有你清楚你在作什么时才启用它!)
合理的用法是:在一些安全隧道配置环境下,或者更好地支持FXP时(才启用它)。
默认值:NO

port_enable
若是你想关闭以端口方式得到数据链接时,请关闭它。
默认值:YES

port_promiscuous
若是你想关闭端口安全检查(这个检查能够确保对外的(outgoing)数据线路只通向客户端)时,请关闭它。确认后再作!
默认值:NO

run_as_launching_user
若是你想让一个用户能启动VSFTPD的时候,能够设为YES。当ROOT用户不能去启动VSFTPD的时候会颇有用(daidong注:应该不是说ROOT用户没有权限启动VSFTPD,
而是由于别的,例如安全限制,而不能以ROOT身份直接启动VSFTPD)。强烈警告!!别启用这一项,除非你彻底清楚你在作什么(daidong:无语....)!!!随意地启动这一项会致使
很是严重的安全问题,特别是VSFTPD没有或者不能使用虚根技术来限制文件访问的时候(甚至VSFTPD是被ROOT启动的)。有一个愚蠢的替代方案是启用deny_file,将其设置为{/*,*..*}等,
但其可靠性却不能和虚根相比,也靠不住。
若是启用这一项,其余配置项的限制也会生效。例如,非匿名登陆请求,上传文件的全部权的转换,用于链接的20端口和低于1024的监听端口将不会工做。其余一些配置项也可能被影响。
默认值:NO

secure_email_list_enable
若是你想只接受以指定E-MAIL地址登陆的匿名用户的话,启用它。这通常用来在没必要要用虚拟用户的状况下,以较低的安全限制去访问较低安全级别的资源。若是启用它,匿名用户除非
用在email_password_file里指定的E-MAIL作为密码,不然不能登陆。这个文件的格式是一个密码一行,并且没有额外的空格(daidong注:whitespace,译为空格,不知道是否正确)。
默认的文件名是:/etc/vsftpd.email_passwords.
默认值:NO

session_support
这将配置是否让VSFTPD去尝试管理登陆会话。若是VSFTPD管理会话,它会尝试并更新utmp和wtmp。它也会打开一个pam会话(pam_session),直到LOGOUT才会关闭它,若是使用PAM进行认证的话。
若是你不须要会话纪录,或者想VSFTPD运行更少的进程,或者让它更大众化,你能够关闭它。
注:utmp和wtmp只在有PAM的环境下才支持。
默认值:NO

setproctitle_enable
若是启用,VSFTPD将在系统进程列表中显示会话状态信息。换句话说,进程名字将变成VSFTPD会话当前正在执行的动做(等待,下载等等)。为了安全目的,你能够关闭这一项。
默认值:NO

ssl_enable
若是启用,vsftpd将启用openSSL,经过SSL支持安全链接。这个设置用来控制链接(包括登陆)和数据线路。同时,你的客户端也要支持SSL才行。
注意:当心启用此项.VSFTPD不保证OpenSSL库的安全性。启用此项,你必须确信你安装的OpenSSL库是安全的。
默认值:NO

ssl_sslv2
要激活ssl_enable才能启用它。若是启用,将允许SSL V2协议的链接。TLS V1链接将是首选。
默认值:NO

ssl_sslv3
要激活ssl_enable才能启用它。若是启用,将允许SSL V3协议的链接。TLS V1链接将是首选。
默认值:NO

ssl_tlsv1
要激活ssl_enable才能启用它。若是启用,将允许TLS V1协议的链接。TLS V1链接将是首选。
默认值:YES

syslog_enable
若是启用,系统log将取代vsftpd的log输出到/var/log/vsftpd.log.FTPD的了log工具将不工做。
默认值:NO

tcp_wrappers
若是启用,vsftpd将被tcp_wrappers所支持。进入的(incoming)链接将被tcp_wrappers访问控制所反馈。若是tcp_wrappers设置了
VSFTPD_LOAD_CONF环境变量,那么vsftpd将尝试调用这个变量所指定的配置。
默认值:NO

text_userdb_names
默认状况下,在文件列表中,数字ID将被显示在用户和组的区域。你能够编辑这个参数以使其使用数字ID变成文字。为了保证FTP性能,默认
状况下,此项被关闭。
默认值:NO

tilde_user_enable
若是启用,vsftpd将试图解析相似于~chris/pics的路径名(一个"~"(tilde)后面跟着个用户名)。注意,vsftpd有时会一直解析路径名"~"和"~/"(在这里,~被解析成内部登陆目录)。
~用户路径(~user paths)只有在当前虚根下找到/etc/passwd文件时才被解析。
默认值:NO

use_localtime
若是启用,vsftpd在显示目录资源列表的时候,在显示你的本地时间。而默认的是显示GMT(格林尼治时间)。经过MDTM FTP命令来显示时间的话也会被这个设置所影响。
默认值:NO

use_sendfile
一个内部设定,用来测试在你的平台上使用sendfile()系统呼叫的相关好处(benefit).
默认:YES

userlist_deny
这个设置在userlist_enable被激活后能被验证。若是你设置为NO,那么只有在userlist_file里明确列出的用户才能登陆。
若是是被拒绝登陆,那么在被询问密码前,用户就将被系统拒绝。
默认值:YES

userlist_enable
若是启用,vsftpd将在userlist_file里读取用户列表。若是用户试图以文件里的用户名登陆,那么在被询问用户密码前,他们就将被系统拒绝。
这将防止明文密码被传送。参见userlist_deny。
默认值:NO

virtual_use_local_privs
若是启用,虚拟用户将拥有和本地用户同样的权限。默认状况下,虚拟用户就拥有和匿名用户同样的权限,然后者每每有更多的限制(特别是写权限)。
默认值:NO

write_enable
这决定是否允许一些FTP命令去更改文件系统。这些命令是STOR, DELE, RNFR, RNTO, MKD, RMD, APPE 和 SITE。
默认值:NO

xferlog_enable
若是启用,一个log文件将详细纪录上传和下载的信息。默认状况下,这个文件是/var/log/vsftpd.log,但你也能够经过更改vsftpd_log_file来指定其默认位置。
默认值:NO (但在范例配置文件中,启用了这一项)

xferlog_std_format
若是启用,log文件将以标准的xferlog格式写入(wu-ftpd使用的格式),以便于你用现有的统计分析工具进行分析。但默认的格式具备更好的可读性。默认状况下,log文件是在/var/log/xferlog。
可是,你能够经过修改xferlog_file来指定新路径。
默认值:NO

======
数字选项
如下是数字配置项。这些项必须设置为非负的整数。为了方便umask设置,允许输入八进制数,那样的话,数字必须以0开始。

accept_timeout
超时,以秒为单位,设定远程用户以被动方式创建链接时最大尝试创建链接的时间。
默认值:60

anon_max_rate
对于匿名用户,设定允许的最大传送速率,单位:字节/秒。
默认值:0 (无限制)

anon_umask
为匿名用户建立的文件设定权限。注意:若是你想输入8进制的值,那么其中的0不一样于10进制的0。
默认值:077

connect_timeout
超时。单位:秒。是设定远程用户必须回应PORT类型数据链接的最大时间。
默认值:60

data_connection_timeout
超时,单位:秒。设定数据传输延迟的最大时间。时间一到,远程用户将被断开链接。
默认值:300

file_open_mode
对于上传的文件设定权限。若是你想被上传的文件可被执行,umask要改为0777。
默认值:0666

ftp_data_port
设定PORT模式下的链接端口(只要connect_from_port_20被激活)。
默认值:20

idle_session_timeout
超时。单位:秒。设置远程客户端在两次输入FTP命令间的最大时间。时间一到,远程客户将被断开链接。
默认值:300

listen_port
若是vsftpd处于独立运行模式,这个端口设置将监听的FTP链接请求。
默认值:21

local_max_rate
为本地认证用户设定最大传输速度,单位:字节/秒。
默认值:0(无限制)

local_umask
设置本地用户建立的文件的权限。注意:若是你想输入8进制的值,那么其中的0不一样于10进制的0。
默认值:077

max_clients
若是vsftpd运行在独立运行模式,这里设置了允许链接的最大客户端数。再后来的用户端将获得一个错误信息。
默认值:0(无限制)

max_per_ip
若是vsftpd运行在独立运行模式,这里设置了允许一个IP地址的最大接入客户端。若是超过了最大限制,将获得一个错误信息。
默认值:0(无限制)

pasv_max_port
指定为被动模式数据链接分配的最大端口。可用来指定一个较小的范围以配合防火墙。
默认值:0(使用任何端口)

pasv_min_port
指定为被动模式数据链接分配的最小端口。可用来指定一个较小的范围以配合防火墙。
默认值:0(使用任何端口)

trans_chunk_size
你通常不须要改这个设置。但也能够尝试改成如8192去减少带宽限制的影响。
默认值:0(让vsftpd自行选择)

===========
STRING 配置项
如下是STRING 配置项

anon_root
设置一个目录,在匿名用户登陆后,vsftpd会尝试进到这个目录下。若是失败则略过。
默认值:无

banned_email_file
deny_email_enable启动后,匿名用户若是使用这个文件里指定的E-MAIL密码登陆将被拒绝。
默认值:/etc/vsftpd.banned_emails

banner_file
设置一个文本,在用户登陆后显示文本内容。若是你设置了ftpd_banner,ftpd_banner将无效。
默认值:无

chown_username
改变匿名用户上传的文件的全部者。需设定chown_uploads。
默认值:ROOT

chroot_list_file
这个项提供了一个本地用户列表,表内的用户登陆后将被放在虚根下,并锁定在home目录。这须要chroot_list_enable项被启用。
若是chroot_local_user项被启用,这个列表就变成一个不将列表里的用户锁定在虚根下的用户列表了。
默认值:/etc/vsftpd.chroot_list

cmds_allowed
以逗号分隔的方式指定可用的FTP命令(post login. USER, PASS and QUIT 是始终可用的命令)。
其余命令将被屏蔽。这是一个强有力的locking down一个FTP服务器的手段。例如:cmds_allowed=PASV,RETR,QUIT
默认值:无

deny_file
这能够设置一个文件名或者目录名式样以阻止在任何状况下访问它们。并非隐藏它们,而是拒绝任何试图对它们进行的操做(下载,改变目录层,
和其余有影响的操做)。这个设置很简单,并且不会用于严格的访问控制-文件系统权限将优先生效。然而,这个设置对肯定的虚拟用户设置颇有用。
特别是若是一个文件能多个用户名访问的话(多是经过软链接或者硬链接),那就要拒绝全部的访问名。
建议你为使用文件系统权限设置一些重要的安全策略以获取更高的安全性。如deny_file={*.mp3,*.mov,.private}
默认值:无

dsa_cert_file
这个设置为SSL加密链接指定了DSA证书的位置。
默认值:无(有一个RSA证书就够了)

email_password_file
在设置了secure_email_list_enable后,这个设置能够用来提供一个备用文件。
默认值:/etc/vsftpd.email_passwords

ftp_username
这是用来控制匿名FTP的用户名。这个用户的home目录是匿名FTP区域的根。
默认值:ftp

ftpd_banner
当一个链接首次接入时将现实一个欢迎界面。
默认值:无(默认的界面会被显示)

guest_username
参见相关设置guest_enable。这个设置设定了游客进入后,其将会被映射的名字。
默认:ftp

hide_file
设置了一个文件名或者目录名列表,这个列表内的资源会被隐藏,无论是否有隐藏属性。但若是用户知道了它的存在,
将可以对它进行彻底的访问。hide_file里的资源和符合hide_file指定的规则表达式的资源将被隐藏。vsftpd的
规则表达式很简单,例如hide_file={*.mp3,.hidden,hide*,h?}
默认值:无

listen_address
若是vsftpd运行在独立模式下,本地接口的默认监听地址将被这个设置代替。
须要提供一个数字化的地址。
默认值:无

listen_address6
若是vsftpd运行在独立模式下,要为IPV6指定一个监听地址(若是listen_ipv6被启用的话)。
须要提供一个IPV6格式的地址。
默认值:无

local_root
设置一个本地(非匿名)用户登陆后,vsftpd试图让他进入到的一个目录。若是失败,则略过。
默认值:无

message_file
当进入一个新目录的时候,会查找这个文件并显示文件里的内容给远程用户。dirmessage_enable需启用。
默认值:.message

nopriv_user
这是vsftpd作为彻底无特权的用户的名字。这是一个专门的用户,比nobody更甚。用户nobody每每用来在一些机器上作一些重要的事情。
默认值:nobody

pam_service_name
设定vsftpd将要用到的PAM服务的名字。
默认值:ftp

pasv_address
当使用PASV命令时,vsftpd会用这个地址进行反馈。须要提供一个数字化的IP地址。
默认值:无(地址将取自进来(incoming)的链接的套接字)

rsa_cert_file
这个设置指定了SSL加密链接须要的RSA证书的位置。
默认值:/usr/share/ssl/certs/vsftpd.pem

secure_chroot_dir
这个设置指定了一个空目录,这个目录不允许ftp user写入。在vsftpd不但愿文件系统被访问时,目录为安全的虚根所使用。
默认值: /usr/share/empty

ssl_ciphers
这个设置将选择vsftpd为加密的SSL链接所用的SSL密码。详细信息参见ciphers。
默认值:DES-CBC3-SHA

user_config_dir
这个强大的设置允许覆盖一些在手册页中指定的配置项(基于单个用户的)。用法很简单,最好结合范例。若是你把user_config_dir
改成/etc/vsftpd_user_conf,那么以chris登陆,vsftpd将调用配置文件/etc/vsftpd_user_conf/chris。
默认值:无

user_sub_token
这个设置将依据一个模板为每一个虚拟用户建立home目录。例如,若是真实用户的home目录经过guest_username为/home/virtual/$USER 指定,
而且user_sub_token设置为 $USER ,那么虚拟用户fred登陆后将锁定在/home/virtual/fred下。
默认值:无

userlist_file
当userlist_enable被激活,系统将去这里调用文件。
默认值:/etc/vsftpd.user_list

vsftpd_log_file
只有xferlog_enable被设置,而xferlog_std_format没有被设置时,此项才生效。这是被生成的vsftpd格式的log文件的名字。
dual_log_enable和这个设置不能同时启用。若是你启用了syslog_enable,那么这个文件不会生成,而只产生一个系统log.
默认值:/var/log/vsftpd.log

xferlog_file
这个设置是设定生成wu-ftpd格式的log的文件名。只有启用了xferlog_enable和xferlog_std_format后才能生效。
但不能和dual_log_enable同时启用。
默认值:/var/log/xferlog

三、未完成的实验
his example should quickly show you the possibilites of per-IP configuration
with vsftpd's tcp_wrappers integration. This is new with v1.1.3.

To use this, you need vsftpd built with tcp_wrappers! This is accomplished
by editing "builddefs.h" and changing

#undef VSF_BUILD_TCPWRAPPERS
to
#define VSF_BUILD_TCPWRAPPERS

And then rebuild. If you are lucky your vendor will have shipped the vsftpd
binary with this already done for you.

Next, to enable tcp_wrappers integration, you need this in your vsftpd.conf:

tcp_wrappers=YES

And you'll need a tcp_wrappers config file. An example one is supplied in this
directory: hosts.allow. It lives at /etc/hosts.allow.

Let's have a look at the example:

vsftpd: 192.168.1.3: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap.conf
vsftpd: 192.168.1.4: DENY

The first line:
If a client connects from 192.168.1.3, then vsftpd will apply the vsftpd
config file /etc/vsftpd_tcp_wrap.conf to the session! These settings are
applied ON TOP of the default vsftpd.conf.
This is obviously very powerful. You might use this to apply different
access restrictions for some IPs (e.g. the ability to upload).
Or you could give certain classes of IPs the ability to skip connection
limits (max_clients=0).
Or you could increase / decrease the bandwidth limiter for certain classes
of IPs.
You get the point The second line:Denies the ability of 192.168.1.4 to connect. Very useful to take care oftroublemakers. And now you don't need xinetd to do it - hurrah.This example shows how you might set up virtual hosts. Virtual hosting iswhere different clients access your machine on different IP addresses (virtualIPs) and get redirected to different ftp sites.For example, if your machine responds to two IPs - 127.0.0.1 and 127.0.0.2,you could have the two different IPs represent two totally different FTP sites.For this example, we are going to build on the "INTERNET_SITE" example.Step 1) Set up a virtual IP address.ifconfig eth0:1 192.168.1.10 up(the standard IP address is 192.168.1.2)(note - this isn't quite complete, the route for local connects hasn't beenadded, but it will do for now)Step 2) Create a user / location for the new virtual site.useradd -d /var/ftp_site2 ftp_site2chown root.root /var/ftp_site2chmod a+rx /var/ftp_site2umask 022mkdir /var/ftp_site2/pubecho "test" >; /var/ftp_site2/pub/contentStep 3) Modify the existing site to respond to the primary IP.Edit /etc/xinetd.d/vsftpd, and add the config line:This example shows how you might set up virtual hosts. Virtual hosting iswhere different clients access your machine on different IP addresses (virtualIPs) and get redirected to different ftp sites.For example, if your machine responds to two IPs - 127.0.0.1 and 127.0.0.2,you could have the two different IPs represent two totally different FTP sites.For this example, we are going to build on the "INTERNET_SITE" example.Step 1) Set up a virtual IP address.ifconfig eth0:1 192.168.1.10 up(the standard IP address is 192.168.1.2)(note - this isn't quite complete, the route for local connects hasn't beenadded, but it will do for now)Step 2) Create a user / location for the new virtual site.useradd -d /var/ftp_site2 ftp_site2chown root.root /var/ftp_site2chmod a+rx /var/ftp_site2umask 022mkdir /var/ftp_site2/pubecho "test" >; /var/ftp_site2/pub/contentStep 3) Modify the existing site to respond to the primary IP.Edit /etc/xinetd.d/vsftpd, and add the config line:bind = 192.168.1.2Step 4) Create the new site, responding on the virtual IP.cp /etc/xinetd.d/vsftpd /etc/xinetd.d/vsftpd2Edit vsftpd2, and change- The bind line to refer to the IP address 192.168.1.10- Add the lineserver_args = /etc/vsftpd_site2.confThis launches this FTP site with a different vsftpd configuration file.cp /etc/vsftpd.conf /etc/vsftpd_site2.confAdd two lines:ftp_username=ftp_site2ftpd_banner=This is the alternative FTP site.Step 5) Restart xinetd and test!/etc/rc.d/init.d/xinetd restart[chris@localhost vsftpd]$ ftp 192.168.1.2Connected to 192.168.1.2 (192.168.1.2).220 ready, dude (vsFTPd 1.1.0: beat me, break me)Name (192.168.1.2:chris): [chris@localhost vsftpd]$[chris@localhost vsftpd]$ ftp 192.168.1.2Connected to 192.168.1.2 (192.168.1.2).220 ready, dude (vsFTPd 1.1.0: beat me, break me)Name (192.168.1.2:chris):530 This FTP server is anonymous only.Login failed.ftp>; quit221 Goodbye.[chris@localhost vsftpd]$ ftp 192.168.1.10Connected to 192.168.1.10 (192.168.1.10).220 This is the alternative FTP site.Name (192.168.1.10:chris):530 This FTP server is anonymous only.Login failed.ftp>;
相关文章
相关标签/搜索