550报错;用户权限控制:只上传不删除;匿名用户,本地用户,虚拟用户;vsftpd_on_centos

如果遇到550错误,首先关闭SELINUX后,再排查其他错误可能;
###############################################

关闭SELinux的方法

http://hi.baidu.com/gtfcugb/item/1b55bcd53b480448fa57687d

关闭SELinux的方法:
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
如果不想重启系统,使用命令setenforce 0
注:
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式 
在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux 

#---------------------------------------------------------------
查看selinux状态:
/usr/bin/setstatus -v 
如下:
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   permissive
Mode from config file:          enforcing
Policy version:                 21
Policy from config file:        targeted 

getenforce/setenforce查看和设置SELinux的当前工作模式

 

http://zhangyongbluesky.blog.163.com/blog/static/183194162011215105249796/

 

vsftpd匿名用户新建目录提示:550 Create directory operation failed.  

2011-03-15 22:53:15|  分类: linux积累 |  标签:vsftpd  selinux  failed  operation  create  |字号 订阅

 
 

 

可能性一:

在 CentOS 上配置完vsFTPD,很认真的检查过配置文件,连接服务器后,在创建文件、上传文件的时候始终显示错误信息 “550 create directory operation failed”,配置vsFTPD怎么说也不少于5次了,之前都没有出现过这样的问题, 开始以为是用户权限问题,干脆来了个给目录配置 chmod -R 777,在 vsftpd.conf 中配置 local_umask=000(其实肯定不关这个配置的事,心理作用就改了),结果问题依旧。

vsftpd官方网站上寻找答案,原来问题出在SELinux上,说起这个selinux,本人对他痛恨入骨,正常情况下都是在安装完系统后,直接 yum remove selinux* -y 删除掉。今天快下班的时候在虚拟机 Virtualbox上安装了CentOS,就急着下班了,所以忘记做这一个动作了。

解决办法:

1、如何禁止SELinux。

# vi /etc/selinux/config
修改为:SELINUX=disabled

如果不想重启系统的话,在终端中输入:setenforce 0。

重新启动vsftpd进程,问题解决。

不如直接删除这个恼人的SELinux

yum remove selinux* -y

这个世界终于清净了…

 

可能性二:

匿名用户的目录(/var/ftp/pub)没有写权限,需要将其设置为具有写权限。

首先转到/var/ftp

然后在终端中输入:chmod 777 pub。

也许就是这个问题绊倒了你,:-)

 

vsftpd 本地用户登陆问题

1人收藏此文章, 我要收藏发表于1年前(2010-11-28 08:28) , 已有158次阅读 共0个评论

因为要调试ftp编程,装了个vsftpd,结果搞了半天本地用户怎么也登不进去.

/etc/vsftpd.conf配置如下

anonymous_enable=NO

local_enable=YES

write_enable=YES

background=YES

secure_chroot_dir=/var/ftp/empty

userlist_deny=NO //说明userlist_file指定的是能访问的用户

userlist_file=/etc/vsftpd/vsftpd.user_list//用户list

 

就这样怎么也访问不进去,只有开启了anonymous的情况下,能访问.在网上google了半天不得解.最后在vsftpd的官网上看了它的FAQ才解决.

解决方法:在vsftpd.conf中加上

check_shell=NO

还有注意本地用户~目录的权根设置成自己

 

######################################################

http://www.itokit.com/2012/0415/73599.html

 

CENTOS5下VSFTPD的设置(虚拟用户分下载用户/下载、上传但不能删除用户/管理用户)
一、安装
yum -y install vsftpd*
yum -y install pam*
yum -y install db4*

二、系统帐户
1、vsftpd服务的宿主用户
useradd vsftpd -s /sbin/nologin
2、vsftpd虚拟宿主用户
useradd ftpuser -s /sbin/nologin
*不允许相关用户登录。
三、vsftpd.conf设置
1、备份
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.ysbk
2、设置
----
anonymous_enable=NO
设定不允许匿名访问
local_enable=YES
设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
write_enable=YES
设定可以进行写操作。
local_umask=022
设定上传后文件的权限掩码。
anon_upload_enable=NO
禁止匿名用户上传。
anon_mkdir_write_enable=NO
禁止匿名用户建立目录。
dirmessage_enable=YES
设定开启目录标语功能。
xferlog_enable=YES
设定开启日志记录功能。
connect_from_port_20=YES
设定端口20进行数据连接。
chown_uploads=NO
设定禁止上传文件更改宿主。
xferlog_file=/var/log/vsftpd.log
设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。
xferlog_std_format=YES
设定日志使用标准的记录格式。
nopriv_user=vsftpd
设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。
async_abor_enable=YES
设定支持异步传输功能。
ascii_upload_enable=YES
ascii_download_enable=YES
设定支持ASCII模式的上传和下载功能。
ftpd_banner=Welcome to Awei FTP servers
设定Vsftpd的登陆标语。
chroot_local_user=YES
禁止本地用户登出自己的FTP主目录。
pam_service_name=vsftpd
设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
以下这些是关于Vsftpd虚拟用户支持的重要配置项目。默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置。
guest_enable=YES
设定启用虚拟用户功能。
guest_username=ftpuser
指定虚拟用户的宿主用户。
virtual_use_local_privs=YES
设定虚拟用户的权限符合他们的宿主用户。
user_config_dir=/etc/vsftpd/vconf
设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的
地方就是这些配置文件名必须和虚拟用户名相同。
----
3.建立Vsftpd的日志文件,并更该属主为Vsftpd的服务宿主用户:
[root@KcentOS5 ~]# touch /var/log/vsftpd.log
[root@KcentOS5 ~]# chown vsftpd.vsftpd /var/log/vsftpd.log
4.建立虚拟用户配置文件存放路径:
[root@KcentOS5 ~]# mkdir /etc/vsftpd/vconf/
四、制作虚拟用户数据库文件
1.先建立虚拟用户名单文件:
[root@KcentOS5 ~]# touch /etc/vsftpd/virtusers
建立了一个虚拟用户名单文件,这个文件就是来记录vsftpd虚拟用户的用户名和口令的数据文件,我这里给它命名为virtusers。为了避免文件的混乱,我把这个名单文件就放置在/etc/vsftpd/下。
2.编辑虚拟用户名单文件:
[root@KcentOS5 ~]# vi /etc/vsftpd/virtusers
----------------------------
download
1234
upload
5678
admin
9012
----------------------------
编辑这个虚拟用户名单文件,在其中加入用户的用户名和口令信息。格式很简单:“一行用户名,一行口令”。
3.生成虚拟用户数据文件:
[root@KcentOS5 ~]# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
五、设定PAM验证文件,并指定虚拟用户数据库文件进行读取
在/etc/pamd.vsftpd的文件头部加入以下信息(在后面加入无效)
----
auth    sufficient      /lib/security/pam_userdb.so     db=/etc/vsftpd/virtusers
account sufficient      /lib/security/pam_userdb.so     db=/etc/vsftpd/virtusers

----
六、虚拟用户的配置
1、download用户,只能下载不能上传和删除
--
write_enable=NO
--
2、upload能下载、上传但不能删除
--
write_enable=YES
cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RNFR,RNTO,SIZE,STOR,TYPE,USER,REST,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,FEAT
file_open_mode=0444

--
3、admin对ftp进行管理
--
默认的vsftpd.conf文件就可以了,不要做任何修改。
--
4、补充:
如果对上传用户要限制其上传目录(主目录),需要加入
--
local_root=/home/ftp/upload
--
前将/home/ftp/upload给予相应的权限。

最后就是调试了,如果不出错,一个vsftpd服务器就能很好地工作了!

 

http://hi.baidu.com/hpercy/item/45d7be0b1d0dd1086c9048f6

 

让vsftpd 只能上传,不能删除 vsftpd cmds_allowed 权限控制

vsftpd cmds_allowed 权限控制

需求:

用户super有全部权限

用户read只能上传,下载,读取,但不能删除文件,还有对super根目录下的两个文件夹dir1 dir2无权限!

创建ftp用户

#/usr/sbin/adduser -d /opt/test_ftp -g ftp -s /sbin/nologin super

#/usr/sbin/adduser -d /opt/test_ftp -g ftp -s /sbin/nologin read

将两个用户的根目录设置在同一个

配置vsftpd.conf

chown_uploads=YES
cown_username=super

 

创建文件夹dir1 dir2

#mkdir dir1

#mkdir dir2

修改权限

#chown super:ftp dir1

#chown super:ftp dir2

#chmod 777 test_ftp

配置支持单个用户配置文件,编辑vsftpd.conf

添加:user_config_dir=/etc/vsftpd/vsftpd_user

新建文件夹:

#mkdir /etc/vsftpd/vsftpd_user

创建文件:注意文件名与需要单个配置的用户名一致

建立vsftpd单个用户配置文件:

#vi read

写入

cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,RETR

 

重启vsftpd

#service vsftpd restart!

完成

 

vsftpd cmds_allowed
cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,
PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR,
RNTO,SITE,SIZE,STOR,TYPE,USER,ACCT,
APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST

注意:一定不能使用换行和空格,不然就没效果..

# ABOR - abort a file transfer
# CWD - change working directory
# DELE - delete a remote file
# LIST - list remote files
# MDTM - return the modification time of a file
# MKD - make a remote directory
# NLST - name list of remote directory
# PASS - send password
# PASV - enter passive mode
# PORT - open a data port
# PWD - print working directory
# QUIT - terminate the connection
# RETR - retrieve a remote file
# RMD - remove a remote directory
# RNFR - rename from
# RNTO - rename to
# SITE - site-specific commands
# SIZE - return the size of a file
# STOR - store a file on the remote host
# TYPE - set transfer type
# USER - send username
#


# less common commands:
# ACCT* - send account information
# APPE - append to a remote file
# CDUP - CWD to the parent of the current directory
# HELP - return help on using the server
# MODE - set transfer mode
# NOOP - do nothing
# REIN* - reinitialize the connection
# STAT - return server status
# STOU - store a file uniquely
# STRU - set file transfer structure
# SYST - return system type

VSFTPD的非常有用的权限控制语句
也许在使用FTP的过程中,可能是有一些权限控制的不如意,那下面我给大家提供的希望能对大家有

用!
我们首先来看看下面的几个例子:
1、只能上传。不能下载、删除、重命名。
cmds_allowed=

FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,AP

PE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST

方法2:
chown_uploads=YES
chown_username=root

2、只能下载。不能上传、删除、重命名。write_enable=NO
3、只能上传、删除、重命名。不能下载。download_enable=NO
4、只能下载、删除、重命名。不能上传。
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,RNFR,RNTO,RETR

,DELE,SIZE,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST
以上的2、3两点好控制,可是1和4就不是那么好控制了!


我给出了1和4的方法,当然,大家也可以说说自己是如何实现1和4的控制的,我们相互交流!
下面我就把具体的一些参数来和大家说说!

CWD - change working directory 更改目录
LIST - list remote files 列目录
MKD - make a remote directory 新建文件夹
NLST - name list of remote directory
PWD - print working directory 显示当前工作目录
RETR - retrieve a remote file 下载文件
STOR - store a file on the remote host 上传文件

 

DELE - delete a remote file 删除文件
RMD - remove a remote directory 删除目录
RNFR - rename from 重命名
RNTO - rename to 重命名


以上是常用的一些参数,大家对照学习一下!下面是列也的全部参数,供大家参考!

# ABOR - abort a file transfer 取消文件传输
# CWD - change working directory 更改目录
# DELE - delete a remote file 删除文件
# LIST - list remote files 列目录
# MDTM - return the modification time of a file 返回文件的更新时间
# MKD - make a remote directory 新建文件夹
# NLST - name list of remote directory
# PASS - send password
# PASV - enter passive mode
# PORT - open a data port 打开一个传输端口
# PWD - print working directory 显示当前工作目录
# QUIT - terminate the connection 退出
# RETR - retrieve a remote file 下载文件
# RMD - remove a remote directory
# RNFR - rename from
# RNTO - rename to
# SITE - site-specific commands
# SIZE - return the size of a file 返回文件大小
# STOR - store a file on the remote host 上传文件
# TYPE - set transfer type
# USER - send username

# less common commands:

# ACCT* - send account information
# APPE - append to a remote file
# CDUP - CWD to the parent of the current directory
# HELP - return help on using the server
# MODE - set transfer mode
# NOOP - do nothing
# REIN* - reinitialize the connection
# STAT - return server status
# STOU - store a file uniquely
# STRU - set file transfer structure
# SYST - return system type

 

 

 

http://xiaoshi1991.blog.51cto.com/1066870/386879

 

vsftpd+mysql  实现本地用户,匿名用户,虚拟用户同时工作

 

 

大纲

1.安装vsftpd  mysql  pam-mysql

2.添加虚拟用户(使用本地数据库和数据库服务器)

3.实现本地用户,匿名用户,虚拟用户同时工作

4.说下vsftpd.conf文件的内容 

    

 一、安装

先说下环境我是在centos 5.6下做的  安装vsftpd mysql

vsftpdmysql是使用yum源安装的,pam_mysql使用编译安装的是因为我没找到rpm软件包!!!

首先安装vsftpd+mysql  以及必要软件(pam_mysql db4*

yum install vsftpd  mysql  db4* -y

编译安装需要用以下软件:

yum install gcc gcc-c++ pam-devel mysql-devel    也还需要更多的开发工具,到时只需使用

 

使用下面的命令与地址下载pam_mysql

wget http://downloads.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz?use_mirror=nchc

 

解压和安装

tar zxf pam_mysql-0.7RC1.tar.gz -C /tmp/

cd /tmp/pam_mysql-0.7RC1/

./configure --with-openssl

make

make install

当使用find / -name pam_mysql.so命令找到pam_mysql.so时就是代表安装成功了。

ls /usr/lib/security/pam_mysql.so  #查看下是否有这个文件存在

 

pam_mysql的安装可以参考下面的内容:

http://bbs.51cto.com/thread-825165-1.html

 

二、添加虚拟用户

虚拟用户可以使用两种方式添加 mysql数据和db4工具生成的数据文件。

 

建立虚拟用户使用的系统帐户virtual

这个帐户不需要登录所以将他的home设为/var/ftp/   或者不指定

useradd -d /var/ftp/ -s /sbn/nologin virtual

chown virtual.virtual /var/ftp   #ftp目录的属主和属组改为virtual

 

1.使用mysql添加虚拟用户
建立vsftpd使用的mysql数据库和表,并插入用户名和密码到表中:

mysqladmin -u root password 'your_Passw0rd'

mysql –u root –p

mysql>create database vsftpd

mysql>use vsftpd

mysql>create table users(name char(20),password char(20))

mysql> insert into users(name,password) values ('pei','pei')

mysql> insert into ftpusers(name,password) values ('admin','12345')

mysql>grant allon vsftpd.users to virtual@localhost identified by 'passwd'

mysql>quit

 

编辑pam文件加入以下内容:

vim /etc/pam.d/vsftpd

auth        sufficient   /usr/lib/security/pam_mysql.so user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0

account     sufficient  /usr/lib/security/pam_mysql.so  user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0

 

除以上内容外的其他内容全部使用#号注释掉

注意:

crypt= n

crypt=0:明文密码

crypt=1:使用crpyt()函数(对应SQL数据里的encrypt()encrypt()随机产生salt)

crypt=2:使用MYSQL中的password()函数加密

crypt=3:表示使用md5的散列方式

 

虚拟用户的vsftpd.conf配置文件内容

#virtual users

guest_enable=YES         启用虚拟用户

guest_username=virtual        虚拟用户使用的系统账户

virtual_use_local_privs=NO    虚拟用户和本地用户是否有相同的权限

user_config_dir=/etc/etc/vsftpd_user_config  单独的用户配置文件位置

 

2.使用本地数据添加虚拟用户

添加虚拟用户口令文件格式如下:

user

passwd

例如:

vi user.txt

admin

12345

 

生虚拟用户口令认证数据库文件,需要使用db4-utils软件

db_load -T -t hash -f 口令文件的路径 生成后的数据认证文件

db_load -T -t hash -f user.txt /etc/vsftpd/vuser.db

 

编辑pam文件  加入下面两行:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser.

其他的内容全部使用#号注释掉

 

虚拟用户的vsftpd.conf配置文件内容

#virtual users 

guest_enable=YES               启用虚拟用户

guest_username=virtual            虚拟用户使用的系统账户

virtual_use_local_privs=NO          虚拟用户和本地用户是否有相同的权限

user_config_dir=/etc/etc/vsftpd_user_config   //单独的用户配置文件位置

 

注意:从头到尾pam_service_name=vsftpd这个选项都没有动过,因为我们一直在修改/etc/pam.d/vsftpd这个文件,没有建立新的pam文件所以不需要改变这一项。

 

至此虚拟用户的内容就完了下面可以使用虚拟用户测试下

 

 

三、实现本地用户,匿名用户,虚拟用户同时工作

实现本地用户,匿名用户,虚拟用户同时工作的方法有两种:

一个是添加多个vsftpd.conf配置文件,修改监听端口使其工作在21端口以外的端口上

一个是修改pam文件使vsftpd直接支持本地,匿名和虚拟用户同时登录

 

上面第一种方法不是很难,网上有许多教程,我使用的是第二种方法下面就说下怎么实现的:

 

修改后完整的pam文件/etc/pam.d/vsftpd的内容如下:
auth        sufficient   /usr/lib/security/pam_mysql.so user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
account     sufficient  /usr/lib/security/pam_mysql.so  user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
#auth       required    pam_listfiles.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed不允许ftpusers文件中的用户登录
#auth       required    pam_shell.so这个还不太清楚
auth        include     system-auth认证本地用户的默认选项
account     include     system-auth认证本地用户的默认选项
session     include     system-auth认证本地用户的默认选项
session     required    pam_loginuid.so认证系统用户的默认选项
#session            optional    pam_keyinit.so force revoke可有可无
如果想弄清楚上面的内容具体是什么意思建议参考下‘pam百度百科’

 

大家可以参考下
http://spazzzz.blog.51cto.com/2707720/677799

 

一般第一列指定的内容是:module-type,一共就只有4种,分别是:

auth:对用户身份进行识别,如提示输入密码,判断是root否;

account:对账号各项属性进行检查,如是否允许登录,是否达到最大用户数;

session:定义登录前,及退出后所要进行的操作,如登录连接信息,用户数据的打开和关闭,挂载fs

password:使用用户信息来更新数据,如修改用户密码。

第二列内容是:control-flag,有很多,不过一般常用的是4种,分别是:

optional:不进行成功与否的返回,一般返回一个pam_ignore

required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败;

requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败;

sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。

第三列内容是PAM模块的存放路径,默认是在/lib/security/目录下,如果在此默认路径下,要填写绝对路径。

第四列内容是PAM模块参数,这个需要根据所使用的模块来添加。

 

四、详解vsftpd.conf文件的内容

1. 匿名及本地用户共同参数

listen=yes  //vsftpd工作在standalone 模式下

write_enable=yes/no //是否允许全局可写

download_enable=yes/no //是否允许所有用户可以下载

dirlist_enable=yes/no //是否允许所有用户可以浏览(列出文件列表)

pam_service_name=vsftpd  

 

ftpd_banner=欢迎语字符串

banner_file=文件

dirmessage_enable=yes/no

message_file=文件

 

参数ftpd_banner设置的欢迎语字符串将在登录时看到,如果想做出多行欢迎语,就要把内容单独存为banner_file参数指定的文件,应用中 这两个参数二选一即可。dirmessage_enablemessage_file参数是进入某个目录后显示的欢迎信息,用法与前两个参数一样。

 

2.本地用户

local_root=/path //本地用户登陆服务器后直接进入的目录  

local_umask=八进制数 //本地用户上传档案权限的 umask值  

local_max_rate=数字 //本地用户传输速率单位为 bps  

chmod_enable=yes/no // 是否允许本地用户改变ftp 服务器上档案的权限  

user_config_dir=/path //用户单独配置文件所在目录

userlist_enable=yes/no //是否启用 userlist 功能模块  

userlist_deny=yes/no //是否拒绝 userlist 文件中用户登陆 ftp 服务  

userlist_file=/path/to/file //指定的 userlist 文件名  

chroot_list_enable=yes/no //是否启用 chroot_list 文件  

chroot_local_user=yes/no //是否限制本地用户的根目录为自己的主目录  

chroot_list_file=/path/to/file //设置 chrootlist 文件名

 

3.匿名用户

anonymous_enable=YES /NO    //是否允许匿名访问

no_anon_password=YES  //匿名用户不需要输入密码

anon_root=/var/ftp    //设置匿名用户的FTP根目录(缺省为/var/ftp)

anon_upload_enable=YES/NO    //匿名用户是否可以上传

anon_umask=022     //设置匿名用户所上传文件的默认权限掩码值

anon_other_write_enable=YES/NO //是否允许匿名用户可以使用除了建立文件夹和上传文件以外其他的ftp写操作命令。例如:deleterename 等等  

anon_world_readable_only=YES/NO      //匿名用户是否可以浏览

anon_mkdir_write_enbale=YES/NO    //是否允许匿名用户有创建目录的写入权限

anon_max_rate=0    //限制匿名用户最的最大传输速率(0为无限制,单位为字节)

 

 

 

 

 

4.虚拟用户

guest_enable=YES  //启用虚拟用户

guest_username=virtual   //虚拟用户使用的系统账户

user_config_dir=/etc/etc/vsftpd_user_config    //单独的用户配置文件位置

virtual_use_local_privs=NO   

virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;

virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO

 

用户单独的配置文件可以使用匿名用户配置文件的全部内容,

local_root=/var/ftp/123    //用户的主目录

#anon_world_readable_only=NO   //匿名用户是否可以浏览

anon_upload_enable=YES   //匿名用户是否可以上传

anon_mkdir_write_enable=YES   //是否允许匿名用户有创建目录的写入权限

anon_other_write_enable=YES   //是否允许匿名用户可以使用除了建立文件夹和上传文件以外其他的ftp写操作命令。例如:deleterename 等等 

anon_max_rate=512000    //限制匿名用户最的最大传输速率(0为无限制,单位为字节)

 

 

 

 

5.其他设置

日志文件

xferlog_enable=yes/no            //是否启用 xferlog 日志格式
xferlog_std_format=yes/no     //是否采用标准格式记录日

xferlog_file=/path/to/logfile            //xferlog 日志文件所在位置,默认为/var/log/xferlog

dual_log_enable=yes/no         //是否采用Vsftpd自己的日志记录方式
log_ftp_protocol=yes/no          //是否记录所有的ftp命令日志
vsftpd_log_file=/path/to/logfile     //指定vsftpd 日志文件位置,默认为/var/log/vsftpd.log

 

主动模式
port_enable=YES               //开启主动模式
connect_from_port_20=YES      //当主动模式开启的时候 是否启用默认的20端口监听
ftp_date_port=%portnumber%    //上一选项使用NO参数是 指定数据传输端口

 

被动模式
pasv_enable=YES   //开启被动模式
pasv_min_port=%number%  //被动模式最低端口
pasv_max_port=%number%  //被动模式最高端口

 

连接限制
max_client=%number%   //最大连接数
max_per_ip=%number%   //ip最大连接数
anon_max_rate=%number%    //匿名用户最大速率 单位kbps
local_max_rate=%number%   //本地用户最大速率 单位kbps 

 

超时限制

idle_session_timeout=600  //空闲连接超时 
data_connection_timeout=120  //数据传输超时 
accept_timeout=60  //PAVS请求超时 
connect_timeout=60  //PROT模式连接超时 

 

 

更多vsftpd.conf详细配置:

http://tzsky.blog.51cto.com/1062094/237322

http://www.linux.gov.cn/  linux学园

http://redking.blog.51cto.com/27212/136218

 

 

 

http://g.51cto.com/linux/1015

VSFTPD的设置选项 

  VSFTPD的配置文件/etc/vsftpd/vsftpd.conf是个文本文件。以“#”字符开始的行是注释行。每个选项设置为一行,格式为“option=value”,注意“=”号两边不能留空白符。除了这个主配置文件外,还可以给特定用户设定个人配置文件,具体介绍见后。 
  VSFTPD包中所带的vsftpd.conf文件配置比较简单,而且非常偏执狂的(文档自称)。我们可以根据实际情况对其进行一些设置,以使得VSFTPD更加可用。 



1、连接选项 

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

1.1、监听地址与控制端口 

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

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

1.2、FTP模式与数据端口 

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

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

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

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

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

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

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

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

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

1.3 ASCII模式 

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

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

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



2、性能与负载控制 

2.1、超时选项 

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

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

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

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

2.2 负载控制 

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

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

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

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




3 用户选项 

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

3.1、匿名用户 

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

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

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

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

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

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

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

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

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

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

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



3.2、本地用户 

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

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

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

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

3.3、虚拟用户 

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

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




4、安全措施 

4.1、用户登录控制 

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

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

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

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

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

4.2、目录访问控制 

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

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

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

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

4.3、文件操作控制 

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

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

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

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

4.4、新增文件权限设定 

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

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

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




5、提示信息 

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

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

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

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




6、日志设置 

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

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

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

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




7、其他设置 

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

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

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

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

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

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

 

 

http://www.chinaunix.net/old_jh/4/484844.html

本文参考了vsftpd安装文档,vsftpd的EXAMPLE及网上众多网友的文章。 
环境: 
匿名及本地用户:REDhat9+vsftpd1.1.3(或vftpd2.0.1)。 
虚拟用户:vsftpd1.1.3+mysql3.23.54+pam_mysql0.5 
不适用于vsftpd2.0.1+mysql4+pam0.5。 

请注意:不要直接copy我这里的配置文件,可以造成ftp启动不正常,所以还是多费点事,自己输入吧 

本文对本地用户、虚拟用户目录进行了限制,每个用户拥有自己独立的目录。 
本文中所使用的参数具体意义请参数回贴。 
配置不外就是修改vsftpc.conf,并指定用户目录,权限等。 
对虚拟用户则用pam验证方式。 

另:mkdir建立目录,chown更改权限。vi编辑文件。这些命令请参考man文档 

[color=red][size=18]vsftpd类别:[/size][/color] 

1、PORT FTP 
首先会建立控制频道,默认值是port 21,也就是跟port 21 建立联机,并透过此联机下达指令。 
第二,由FTP server 端会建立数据传输频道,默认值为20,也就是跟port 20 建立联机,并透过port 20 作数

据的传输。  

2、PASVFTP 
首先会建立控制频道,默认值是port 21,也就是跟port 21 联机,并透过此联机下达指令。 
第二,会由client 端做出数据传输的请求,包括数据传输port 的数字。 

3、差别: 
PORT FTP 当中的数据传输port 是由FTP server 指定, 
而PASV FTP 的数据传输port 是由FTP client 决定。 
通常我们使用PASV FTP,是在有防火墙的环境之下,透过client 与server 的沟通,决定数据传输的port。 



[color=red][size=18]vsftpd安装篇:[/size][/color] 


1、rpm安装: 

[root@Linux_win vsftpd]#rpm -ivh vsftpd-1.1.3-8.i386.rpm

  

2、tar.gz的安装  
解压后查看README和INSTALL文档 

安装前的条件: 

进入vsftpd目录 
编辑 "builddefs.h"文件,里面定义了pam功能,tcp_wrappers功能,ssl功能,根据需要定义pam或tcpwrapper功能,以消ssl功能  

然后键入 "make" .将编译出相应的二进制文件,你可以用以下命令查看 
[chris@localhost vsftpd]$ ls -l vsftpd 
-rwxrwxr-x    1 root    root       61748 Sep 27 00:26 vsftpd 

a、增加“nobody”用户。在系统中添加此用户,如果用户已经存在,useradd命令有相应提示。  

[root@Linux_win vsftpd]# useradd nobody 


useradd: user nobody exists  

b、建立“/usr/share/empty”目录。在系统中此目录,如果目录已经存在,mkdir命令有相应提示。  

[root@hpe45 root]# mkdir /usr/share/empty/ 


mkdir: cannot create directory '/usr/share/empty': File exists  

c、匿名服务帐号:“ftp”用户和一个有效的匿名目录(默认为/var/ftp)。  

[root@Linux_win vsftpd]# mkdir /var/ftp/ 

[root@Linux_win vsftpd]# useradd -d /var/ftp ftp 



d、更改目录的所有者为root,并让ftp用户对自己的主目录不可写 

[root@Linux_win vsftpd]# chown root.root /var/ftp 

[root@Linux_win vsftpd]# chmod og-w /var/ftp 



编译VSFTPD  

[root@Linux_win vsftpd]# tar zxvf vsftpd-1.2.0.tar.gz 

[root@Linux_win vsftpd]# cd vsftpd-1.2.0 
[root@Linux_win vsftpd]# make 



安装编译好的VSFTPD  

执行“make,make install”将编译好的二进制文件、手册等复制到相应目录。可能需要手动执行以下复制:  

[root@Linux_win vsftpd]# cp vsftpd /usr/local/sbin/vsftpd 

[root@Linux_win vsftpd]# cp vsftpd.conf.5 /usr/local/share/man/man5 
[root@Linux_win vsftpd]# cp vsftpd.8 /usr/local/share/man/man8 


如果不存在man5和man8目录,要先建立这两个目录 

[root@Linux_win vsftpd]#mkdir /usr/local/share/man/man5

[root@Linux_win vsftpd]#mkdir /usr/local/share/man/man8


make不会自己copy配置文件,如果make install有错,则必须手工更改 
[root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf /etc  

为本地用户设置PAM  
如果允许本地用户登录VSFTPD,执行以下操作:  

[root@Linux_win vsftpd]# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd 



3、pam_mysql安装 
如果使用mysql的二进制包,那么必须加个开始包,且要修改Makefile文件,指定mysql的lib位置。 

[root@Linux_win vsftpd]# tar xvzf pam_mysql-0.5.tar.gz 

[root@Linux_win vsftpd]# cd pam_mysql 
[root@Linux_win vsftpd]# make 
[root@Linux_win vsftpd]# cp pam_mysql.so /lib/security


  
4、mysql安装。请查看其它文档 



[color=red][size=18]vsftpd启动篇[/size][/color] 

vsftpd 有两种运行方式,一种是standalone 一种是 via an inetd (或者 inetd or xinetd). 
1、如何启动 
1)系统自带的 

[root@Linux_win software]# service vsftpd restart


2)源包安装: 
[root@Linux_win software]# /安装路径/vsftpd & 

[root@Linux_win vsftpd]# /sbin/service xinetd restart  

或 
[root@Linux_win vsftpd]# /usr/local/sbin/vsftpd & 



2、standlone启动 
具体的运行方式由参数listen决定。当listen参数值为YES时,VSFTPD单独运行,我们可以使用脚本/etc/rc.d/init.d/vsftpd来启动、关闭以及重启VSFTPD。命令如下:  
  

/etc/rc.d/init.d/vsftpd start|stop|restart 



3、xinetd启动,首先要将vsftpd.conf配置文件中的listen参数值改为NO。 
其次,生成一个/etc/xinetd.d/vsftpd文件 

[root@Linux_win vsftpd]#vi /etc/vsftpd/vsftpd.conf或vi /etc/vsftp.conf

listen=NO 



[root@Linux_win vsftpd]vi /etc/xinetd.d/vsftpd 

内容如下: 
service vsftpd 

disable = no 
socket_type = stream 
wait = no 
user = root 
server = /usr/sbin/vsftpd 
port = 21 
log_on_success += PID HOST DURATION 
log_on_failure += HOST 



通过修改disable值为no或yes,并重新启动xinetd,从而启动或停止VSFTPD。  



[color=red][size=18]配置安全匿名服务器[/size][/color] 

所要做的就是用vi修改vsftpd.conf文件 

[root@Linux_win vsftpd]#vi /etc/vsftpd.conf或/etc/vsftpd/vsftpd.conf


修改后的vsftpd.conf文件看附件: 

引用:#使用单独模式,并指定监听的IP地址  
listen_address=ip address  

#只允许匿名访问,不允许本地用户访问  
anonymous_enable=YES  
local_enable=NO  

#取消写权限  
write_enable=NO  
anon_upload_enable=NO  
anon_mkdir_write_enable=NO  
anon_other_write_enable=NO  

#启用详细的日志记录格式,设定记录传输日志的文件名。默认值为/var/log/vsftpd.log。  
xferlog_enable=YES  
xferlog_file=/var/log/vsftp.log 

#对连接进行控制,还有超时时间,那就根据具体情况再说了。  
connect_from_port_20=YES  
pasv_min_port=50000  
pasv_max_port=60000  

#控制FTP最大并发数,限定每个IP地址的并发数。  
max_clients=numerical value  
max_per_ip=numerical value  

#限定下载速度  
anon_max_rate=80000  


#使用ftpd_banner取代VSFTPD默认的欢迎词,免得泄漏相关信息  
ftpd_banner=Welcome to this FTP Server  

#只让匿名用户浏览可阅读的文件,不可以浏览整个系统  
anon_world_readable_only=YES  

#隐藏文件的所有者和组信息,匿名用户看到的文件的所有者和组全变为ftp  
hide_ids=YES 



附:vsftpd.conf

[root@Linux_win vsftpd]# cat vsftpd.conf
listen=YES
listen_address=192.168.1.2

anonymous_enable=YES
local_enable=NO

write_enable=NO
anon_root=/home
anon_upload_enable=NO
anon_other_write_enable=NO
anon_mkdir_write_enable=NO
anon_world_readable_only=YES

#dirmessage_enable=YES
ftpd_banner=welcome to this FTP server

xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log 

connect_from_port_20=YES
#pasv_mix_port=50000
#pasv_max_port=60000
#xferlog_std_format=YES

max_clients=10
max_per_ip=10

hide_ids=YES

#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#chroot_local_user=NO
#pam_service_name=/etc/pam.d/vsftpd

#guest_enable=YES
#guest_username=vsftpdvirtual
#virtual_use_local_privs=NO
#user_config_dir=/etc/vsftpd/vsftpd_user_conf





[color=red][size=18]配置可上传匿名服务器[/size][/color] 
[root@Linux_win vsftpd]#vi /etc/vsftpd/vsftpd.conf 
修改文件,改后如下 

[root@Linux_win ftp]# cat /etc/vsftpd/vsftpd.conf

listen=YES
listen_address=192.168.1.2

anonymous_enable=YES
local_enable=NO

write_enable=YES
#anon_root=
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
#anon_world_readable_only=YES


#dirmessage_enable=YES
ftpd_banner=welcome to this FTP server

xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log 

connect_from_port_20=YES
#pasv_mix_port=50000
#pasv_max_port=60000
#xferlog_std_format=YES

max_clients=10
max_per_ip=10

hide_ids=YES

#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#chroot_local_user=NO
#pam_service_name=/etc/pam.d/vsftpd

#guest_enable=YES
#guest_username=vsftpdvirtual
#virtual_use_local_privs=NO
#user_config_dir=/etc/vsftpd/vsftpd_user_conf



[root@Linux_win ftp]# mkidr /var/ftp/upload

[root@Linux_win ftp]# chmod o+w /var/ftp/upload



anon_root参数指定的目录或默认的/var/ftp主目录,ftp匿名用户不可有写权限,否则会出错。 
办法是在/var/ftp下建立一个新目录,使得该目录对ftp匿名用户可写。才能上传。 
或不用匿名上传,而使用本地用户或虚拟用户 。 




[color=red][size=18]配置本地用户[/size][/color] 
修改vsftpd.conf 


[root@Linux_win vsftpd]# cat /etc/vsftpd/vsftpd.conf
listen=YES
listen_address=192.168.1.2

anonymous_enable=NO
local_enable=YES
#local_root=

write_enable=YES
#anon_root=
#anon_upload_enable=YES
#anon_other_write_enable=YES
#anon_mkdir_write_enable=YES
#anon_world_readable_only=YES
#anon_umask=777

#dirmessage_enable=YES
ftpd_banner=welcome to this FTP server

xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log 

connect_from_port_20=YES
#pasv_mix_port=50000
#pasv_max_port=60000
#xferlog_std_format=YES

max_clients=10
max_per_ip=10

hide_ids=YES

#limit all users in it's owner dir
#chroot_local_user=YES

#or limit some
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

#use ownwer conf file
user_config_dir=/etc/vsftpd/vsftpd_user_conf

pam_service_name=/etc/pam.d/vsftpd

#guest_enable=YES
#guest_username=vsftpdvirtual
#virtual_use_local_privs=NO



由于上面了用户列表,因此须建立chroot_list文件, 

[root@Linux_win vsftpd]# touch /etc/vsftpd/chroot_list


并加入以下内容,查看chroot_list文件内容,结果如下 

[root@Linux_win vsftpd]# cat /etc/vsftpd/chroot_list

sam
gem


配置文件中指定了用户配置文件,因此建立此文件 

[root@Linux_win vsftpd]# mkdir /etc/vsftpd/vsftpd_user_conf


并根据用户名建立文件 

[root@Linux_win vsftpd]# touch sam

[root@Linux_win vsftpd]# touch gem
[root@Linux_win vsftpd]# ls -l /etc/vsftpd/vsftpd_user_conf
总用量 8
-rw-r--r--    1 root     root           21  1月  8 00:25 sam
-rw-r--r--    1 root     root           25  1月  8 00:17 gem



并在sam,gem文件加加入以下内容,可用vi编辑并保存,下面的虚拟用户也一样,不过只须更改文件内容就可以了 

[root@Linux_win vsftpd]# cat /etc/vsftpd/vsftpd_user_conf/sam

local_root=/home/sam

 

[root@Linux_win vsftpd]# cat /etc/vsftpd/vsftpd_user_conf/gem

local_root=/home/gem




本地用户验证要用pam文件,内容是默认的。 

[root@Linux_win vsftpd]# cat /etc/pam.d/vsftpd

#%PAM-1.0
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers 

onerr=succeed
auth       required     pam_stack.so service=system-auth
auth       required     pam_shells.so
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth






[size=12][color=red]配置虚拟用户(mysql)[/color][/size] 

  VSFTPD的本地用户本身是系统的用户,除了可以登录FTP服务器外,还可以登录系统使用其他系统资源,而

VSFTPD的虚拟用户则是FTP服务的专用用户,虚拟用户只能访问FTP服务器资源。对于只需要通过FTP对系统有读

写权限,而不需要其他系统资源的用户或情况来说,采用虚拟用户方式是很适合的。  

  VSFTPD的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增强了 

系统的安全性。VSFTPD可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器

中,如MySQL等。VSFTPD验证虚拟用户,则采用PAM方式。由于虚拟用户的用户名/口令被单独保存,因此在验证

时,VSFTPD需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正

如同匿名用户也需要有一个系统用户ftp一样。当然,guest用户也可以被认为是用于映射虚拟用户。  

  配置虚拟用户分为几部分:guest用户的创建、用户/口令的保存、PAM认证配置、vsftpd.conf文件设置等 

。在后面的例子中,假定存在虚拟用户win和wingger. 



1、在系统中添加vsftpdvirtual用户,作为虚拟用户在系统中的代表。 

[root@Linux_win vsftpd]# useradd vsftpdvirtual 


  当虚拟用户登录后,所在的位置为vsftpdvirtual的自家目录/home/vsftpdvirtual。 

2、配置文件vsftpd.conf: 加入以下内容 
guest_enable=YES  
guest_username=vsftpdvirtual  
virtual_use_local_privs=YES|NO 

3、虚拟用户的权限配置。  
virtual_use_local_privs参数, 
当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。所有虚拟用户的权限使用local参数。 
当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限,所有虚拟用户的权限使用anon参数。 
这两者种做法相比,后者更加严格一些,特别是在有写访问的情形下。默认情况下此参数是关闭的(NO)。 
  
由于本人的vsftpd为1.1.3,只好用virtual_use_local_privs=NO了:  
因此匿名用户的设置即是虚拟用户的设置,在改参数权限时,同时也要修改目录权限 
如:让用户不能浏览目录,但仍可以对文件操作且虚拟用户目录的权限改为只能由vsftpdvirtual操作: 
  

[root@Linux_win vsftpd]# chown vsftpdvirtual.vsftpdvirtual /home/vsftpdvirtual

[root@Linux_win vsftpd]# chmod 700 /home/vsftpdvirtual 


由于这些设置对匿名用户生效。最好是禁止匿名用户登录。  


在VSFTPD-1.2.0以上版本,当virtual_use_local_privs=YES时,只需write_enable=YES,虚拟用户就可以就拥

有写权限。应该与本地用户使用相同,有兴趣的可以去验证。  

如果不同用户使用不同的目录,须加入权限 

chown vsftpdvirtual.vsftpdvirtual /home/win

chown vsftpdvirtual.vsftpdvirtual /home/wingger



4、用MySQL保存虚拟用户  

  1、虚拟用户的用户名/口令的保存。这部分在MySQL数据库中完成。 
首先,创建数据库vsftpdvirtual以及表users,并插入虚拟用户win、wingger。执行以下命令:  

[root@Linux_win vsftpd]# #mysql -uroot -p 

mysql>;create database vsftpdvirtual; 
mysql>;use vsftpdvirtual; 
mysql>;create table users(name char(16) binary,passwd char(16) binary); 
mysql>;insert into users (name,passwd) values ('win',password('123456')); 
mysql>;insert into users (name,passwd) values ('wingger',password('123456')); 
mysql>;quit 



然后,授权vsftpdvirtual只能读vsftpdvirtual数据库的users表。执行以下命令:  

[root@Linux_win vsftpd]# mysql -u root mysql -p 

mysql>;grant select on vsftpdvirtual.users to vsftpdvirtual@localhost identified by '123456'; 
mysql>;quit 



验证刚才的操作是否成功可以执行下面命令:  

[root@Linux_win vsftpd]# mysql -u vsftpdvirtual -p123456 ftpdvirtual 

mysql>;select * from users; 


如果成功,将会列出wing、wingger和加密后的密码。  
如下所示: 
引用:mysql>; select * from users; 
+---------+------------------+ 
| name    | passwd           | 
+---------+------------------+ 
| win     | 23932fe477657768 | 
| wingger | 23932fe477657768 | 
+---------+------------------+ 
2 rows in set (0.00 sec)




  2、设置PAM认证。这里我们要用到一个利用mysql进行pam验证的开源项目(http://sourceforge.net/proj

ects/pam-mysql/)。首先从网站下载它的程序包pam_myql-0.5.tar.gz。在编译安装之前,要确保mysql-devel

的RPM包已经安装在你的机器上,如果没有请从RHL安装光盘中安装该包。然后,执行以下命令:  

[root@Linux_win vsftpd]# tar xvzf pam_mysql-0.5.tar.gz 

[root@Linux_win vsftpd]# cd pam_mysql 
[root@Linux_win vsftpd]# make 
[root@Linux_win vsftpd]# cp pam_mysql.so /bli/security
 



接下来,我们要设置vsftpd的PAM验证文件。打开/etc/pam.d/vsftpd文件,加入以下内容:  
引用:  auth required pam_mysql.so user=vsftpdvirtual passwd=123456 host=localhost db=vsftpdvirtual   

table=users usercolumn=name passwdcolumn=passwd crypt=2  
  account required pam_mysql.so user=vsftpdvirtual passwd=123456 host=localhost  

db=vsftpdvirtual  table=users usercolumn=name passwdcolumn=passwd crypt=2 



具体可查看vsftpd源包里的EXAMPLE中的例子。 



附:虚拟用户文档 
1、vsftpd.conf配置文件 


[root@Linux_win vsftpd]# cat vsftpd.conf
listen=YES
listen_address=192.168.1.2

anonymous_enable=NO
local_enable=YES

write_enable=YES
#anon_root=
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
#anon_world_readable_only=YES
#anon_umask=777

#dirmessage_enable=YES
ftpd_banner=welcome to this FTP server

xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log 

connect_from_port_20=YES
#pasv_mix_port=50000
#pasv_max_port=60000
#xferlog_std_format=YES

max_clients=10
max_per_ip=10

hide_ids=YES

#limit all users in it's owner dir
#chroot_local_user=YES

#or limit some
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

#use ownwer conf file
user_config_dir=/etc/vsftpd/vsftpd_user_conf

pam_service_name=/etc/pam.d/vsftpd

guest_enable=YES
guest_username=vsftpdvirtual
#virtual_use_local_privs=NO




2、[root@Linux_win vsftpd]# cat /etc/pam.d/vsftpd

#%PAM-1.0
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers 

onerr=succeed
#auth       required    pam_stack.so service=system-auth
#auth       required    pam_shells.so
#account    required    pam_stack.so service=system-auth
#session    required    pam_stack.so service=system-auth
auth       required     /lib/security/pam_mysql.so user=vsftpdvirtual    passwd=123456  

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

host=localhost   db=vsftpdvirtual table=users  usercolumn=name  passwdcolumn=passwd  crypt=2



3、[root@Linux_win vsftpd]# cat /etc/vsftpd/chroot_list

win
wingger



4、[root@Linux_win vsftpd]# ls -l /etc/vsftpd/vsftpd_user_conf

总用量 8
-rw-r--r--    1 root     root           21  1月  8 00:25 win
-rw-r--r--    1 root     root           25  1月  8 00:17 wingger



5、[root@Linux_win vsftpd]# cat /etc/vsftpd/vsftpd_user_conf/win

local_root=/home/win
[root@Linux_win vsftpd]# cat /etc/vsftpd/vsftpd_user_conf/wingger
local_root=/home/wingger



6、drwx------    6 vsftpdvirtual vsftpdvirtual    4096  1月  8 00:16 vsftpdvirtual

drwxrwxrwx    5 vsftpdvirtual vsftpdvirtual     4096  1月  8 01:47 win
drwxrwxrwx    3 vsftpdvirtual vsftpdvirtual     4096  1月  8 20:19 wingger



7、版本:(vsFTPd 1.1.3)、pam_mysql-0.5.tar.gz、mysql3.23.54 

8、[root@Linux_win vsftpd]# mysql -u vsftpdvirtual -pchenwy vsftpdvirtual 

mysql>; select * from users; 
+---------+------------------+ 
| name    | passwd           | 
+---------+------------------+ 
| win     | 23932fe477657768 | 
| wingger | 23932fe477657768 | 
+---------+------------------+ 
2 rows in set (0.00 sec)



 好好先生 回复于:2005-01-18 17:49:27

先保留,抽个时间做一下……,谢谢wingger MM带来的好贴子


 wingger 回复于:2005-01-18 19:11:36

转: 
VSFTPD的设置选项  

  VSFTPD的配置文件/etc/vsftpd/vsftpd.conf是个文本文件。以“#”字符开始的行是注释行。每个选项设置为一行,格式为“option=value”,注意“=”号两边不能留空白符。除了这个主配置文件外,还可以给特定用户设定个人配置文件,具体介绍见后。  
  VSFTPD包中所带的vsftpd.conf文件配置比较简单,而且非常偏执狂的(文档自称:-))。我们可以根据实际情况对其进行一些设置,以使得VSFTPD更加可用。  



1、连接选项  

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

1.1、监听地址与控制端口  

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

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

1.2、FTP模式与数据端口  

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

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

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

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

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

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

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

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

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

1.3 ASCII模式  

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

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

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



2、性能与负载控制  

2.1、超时选项  

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

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

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

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

2.2 负载控制  

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

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

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

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


  

3 用户选项  

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

3.1、匿名用户  

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

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

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

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

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

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

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

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

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

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

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



3.2、本地用户  

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

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

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

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

3.3、虚拟用户  

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

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




4、安全措施  

4.1、用户登录控制  

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

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

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

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

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

4.2、目录访问控制  

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

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

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

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

4.3、文件操作控制  

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

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

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

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

4.4、新增文件权限设定  

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

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

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




5、提示信息  

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

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

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

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




6、日志设置  

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

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

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

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




7、其他设置  

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

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

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

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

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

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

 

 

####################################################

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

http://hi.baidu.com/afantihome/blog/item/1440cc317a52b6ab5edf0eff.html

vsftp同时支持本地用户,虚拟用户和匿名用户
2007-10-29 17:39

 

虽然可以支持虚拟用户,可是由于PAM验证模块的冲突,造成本地用户无法登录。
     我参考了几篇网上文献。大概有两种方法可以解决这个问题。


     方法1:使用多配置文件。
     方法2:使用层叠pam配置文件。
     方法1在本文中讲解。
  
     所谓多配置文件就是定义两个或多个vsftp的配置文件,使用不同端口来启动。
 
   
      a。按照上文虚拟用户的配置文件如下:/etc/vsftpd.conf
  

#匿名用户
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

#############
#本地用户
#允许本地用户登录
local_enable=YES
#开放本地用户写的权限
write_enable=YES
#本地用户上传文件的umask
local_umask=022
anon_umask=022
#使用上传/下载日志,日志文件默认为/var/log/vsftpd.log,可以通过xferlog_file选项修改
xferlog_enable=YES
#日志使用标准xferlog格式
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd.log
#login时的欢迎信息
ftpd_banner=Welcome to yonghuiWu's FTP!!!Harbin Institute of Technology!!!!---contact me yonghui.wu@gmail.com
#设置的话将覆盖上面的ftpd_banner设置,用户login时将显示/etc/vsftpd/banner中的内容
banner_file=/etc/vsftpd/banner
#本地用户login后所在目录,若没有设置此项,则本地用户login后将在他的home目录(/etc/passwd的第六个字段)中.匿名用户的对
local_root=/home/ftp
#启用单独用户配置选项
user_config_dir=/etc/vsftpd_user_conf

#yes则下面的控制有效
chroot_list_enable=YES
chroot_local_user=YES
#若设置为YES则记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户将无法login,并且将检察下面的userlist_deny选项
#userlist_enable=YES
#若为NO,则仅接受记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户的login请求.若为YES则不接受这
userlist_deny=NO
guest_enable=YES
guest_username=virtual
virtual_use_local_privs=NO
#chown_uploads=YES
#chown_username=wuyou
pam_service_name=ftp
#服务器以standalong模式运行,这样可以进行下面的控制
listen=YES
#匿名用户的传输比率(b/s)
#anon_max_rate=51200
#本地用户的传输比率(b/s)
#local_max_rate=512000
#可接受的最大client数目
max_clients=100
#每个ip的最大client数目
max_per_ip=5
connect_from_port_20=YES
tcp_wrappers=YES
 
      b。    本地用户和匿名用户的配置文件如下: /etc/vsftpdlocal.conf
 
            
  
###################################
#接受匿名用户
listen_port=2121#!!!注意,修改了端口。
anonymous_enable=NO #此处不允许匿名。如为YES,则允许。
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_umask=000
#匿名用户login时不询问口令
no_anon_password=NO
#接受本地用户
local_enable=YES

#可以上传(全局控制).若想要匿名用户也可上传则需要设置anon_upload_enable=YES,若想要匿名用户可以建立目录则需要设置anon_mkdir_write_enable=YES.
#这里禁止匿名用户上传,所以不设置这两项.
write_enable=YES
#本地用户上传文件的umask
local_umask=022

#使用上传/下载日志,日志文件默认为/var/log/vsftpd.log,可以通过xferlog_file选项修改
xferlog_enable=YES
#日志使用标准xferlog格式
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd.log

#设置的话将覆盖上面的ftpd_banner设置,用户login时将显示/etc/vsftpd/banner中的内容
banner_file=/etc/vsftpd/banner

#设置的话将覆盖上面的ftpd_banner设置,用户login时将显示/etc/vsftpd/banner中的内容
#banner_file=/etc/vsftpd/banner
#为YES则进入目录时显示此目录下由message_file选项指定的文本文件(,默认为.message)的内容
dirmessage_enable=YES
#本地用户login后所在目录,若没有设置此项,则本地用户login后将在他的home目录(/etc/passwd的第六个字段)中.匿名用户的对应选项是anon_root
local_root=/home/ftp

#设置为YES则下面的控制有效
chroot_list_enable=YES
#若为NO,则记录在chroot_list_file选项所指定的文件(默认是/etc/vsftpd.chroot_list)中的用户将被chroot在登录后所在目录中,无法离开.如果为YES,
#则所记录的用户将不被chroot.这里选择YES.
chroot_local_user=YES

#若设置为YES则记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户将无法login,并且将检察下面的userlist_deny选项
userlist_enable=YES
#若为NO,则仅接受记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户的login请求.若为YES则不接受这些用户的请求.
userlist_deny=NO
#注意!!!vsftpd还要检察/etc/vsftpd.ftpusers文件,记录在这个文件中的用户将无法login!!

#服务器以standalong模式运行,这样可以进行下面的控制
listen=YES
#匿名用户的传输比率(b/s)
#anon_max_rate=51200
#本地用户的传输比率(b/s)
#local_max_rate=512000
#可接受的最大client数目
max_clients=100
#每个ip的最大client数目
max_per_ip=5

connect_from_port_20=YES
tcp_wrappers=YES

 
     系统自动会启动的服务是vsftpd.conf的配置文件的进程。所以要自己写一个脚本来在2121端口启动另外一个进程,使用本地用户和匿名用户的配置文件。
         
     #!/bin/bash
      #
      vsftpd /etc/vsftpdlocal.conf
 
 
   把这个启动脚本增加为系统服务,就可以了。这样,系统同时在端口21运行 了虚拟用户访问的进程,在2121端口运行了本地用户和匿名用户的进程。

 

 

http://hi.baidu.com/afantihome/blog/item/296a3bfb85df2967034f56ff.html

 

 
在vsftp中同时使用虚拟用户和本地用户
2007-10-29 17:40

 

系统为debian testing,vsftpd为2.0.1


(我的系统为debian testing)
一、以前由于我的ftp只是打算作为局域网内的一个个人资源站,除了对于同一个下载目录进行不同用户权限的配置以外,不需要考虑特殊的用户问题,所以我采用了 vsftpd的PAM认证的虚拟用户完成任务,也就是很常见的vsftpd虚拟用户配置,我设置的是对同一个目录对不痛虚拟用户设定不同的权限:

1 先编辑vsftpd.conf文件,设定允许虚拟用户访问的基本设置
    确定文件中存在或者加入以下几项
guest_enable=YES       //允许虚拟用户访问
guest_username=virtually      //虚拟用户映射为本地的用户名,随便名称
pam_service_name=vsfvtpdpam     //pam文件的名称,我胡乱copy的名称,只要跟在/etc/pam.d下面的文件名称一致就可以,这个文件一会儿再提
user_config_dir=/etc/vsftpd_user      //设定不同虚拟用户权限的目录,名字也都是可以随便的
以上就在原来配置的基础上打开了虚拟用户访问。


2 设置PAM文件
将/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/下的vsftpd.pam文件copy到/etc/pam.d下,注意拷贝过来的名称要跟 1 中设置的pam_service_name的名字一致。
要是喜欢,也可以编辑拷贝过来的pam文件,修改其中的存放db口令库文件的位置。

3 编辑虚拟用户口令文件,可以随便写一个文件,比如yourname.txt,每一行一个字符串,其中单行为用户名,其下的双行为相应用户名的口令,比如
cat         //用户名
yudiantou      //cat虚拟用户的口令
rain         //其他想加入的虚拟用户名
wahtisit        //rain的口令
shot            //同上,虚拟用户名
youdoing      //shot口令

4 使用上面的文件利用db3_load 命令生成PAM的口令库文件

db3_load -T -t hash -f /path/to/yourname.txt /etc/vsftpd_login.db    //这个是与vsftp.pam中指定的位置相一致的
修改权限为600,
chmod 600/etc/vsftpd_login.db

5    由于前面在.conf文件中指定了虚拟用户对应于本地用户,所以要建立或确定指定的本地用户已经存在,而且它的家目录是你所要开放的ftp目录。
比如用户不存在,则建立新用户
useradd -d /yourftphome    -s    /sbin/nologin virtually       (virtually为前面所指定的本地用户名)
passwd

所用的目录,可以根据要设置的ftp的权限,给予virtually其中最高的权限,但不能少于。

6 我打算利用前面的三个用户设定对于同一个ftp目录的不同访问权限
cat 只允许下载,rain具有上传和下载,shot允许上传下载和删除
建立user_config_dir所指定的目录,我的是/etc/vsftpd_user,然后进入目录,分别建立对应于虚拟用户名的文件,其内容指定其访问权限
我的文件内容分别为:
::::::::::::::
cat 文件     
::::::::::::::
anon_world_readable_only=NO      //允许用户浏览列表,如果设为YES,则用户只能下载,不能浏览目录列表,如果允许所有的用户具有这个
::::::::::::::                                          //权限,可以写在.conf文件中
rain文件
:::::::::::::: 
anon_world_readable_only=NO  
write_enable=YES
anon_upload_enable=YES       //允许上传
anon_mkdir_write_enable=YES    //允许建立目录
xferlog_enable=YES     //打开日记
xferlog_file=/var/log/vsftpdfeng.log    //日记位置
::::::::::::::
shot文件
::::::::::::::
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES  
anon_mkdir_write_enable=YES
anon_other_write_enable=YES      //允许删除
xferlog_enable=YES
xferlog_file=/var/log/vsftpdrain.log
::::::::::::::

分别保存。

7 重新启动ftp
/etc/init.d/vsftpd restart

配置完成。

二 最近由于需要对个别几个人分配其他特定的目录,考虑一下,决定使用本地用户作为ftp用户。
1 先建立相应的用户名,我只是打算给他们开放ftp,所以建立用户:
useradd -d /path1 -s /sbin/nologin-g ftp userone
passwd

2 由于我使用了PAM认证,所以这里同样需要更新口令库文件
先更新yourname.txt文件,加入所增加的本地用户名和口令,格式如同前面的文件一样编辑
然后同样的
db3_load -T -t hash -f /path/to/yourname.txt /etc/vsftpd_login.db
更新db库文件。
删除.txt文件就可以了。

3 编辑vsftpd.conf文件,加入打开本地用户访问的选项
local_enable=YES     //打开本地用户访问
userlist_enable=YES    //打开使用允许或拒绝用户列表
#userlist_deny=YES      //用户列表文件的类型,YES表示文件内容是拒绝访问用户列表,NO则是允许访问用户列表文件
userlist_file=/etc/vsftp.userlist       //指定的用户列表文件

4 建立userlist_file指定的用户列表文件
里面设定允许或拒绝访问的列表,一行一个字符串,即本地用户名即可。

5 同样可以在user_config_dir指定目录下建立相应本地用户名同名的文件,内容包含对权限的限定
看说明,似乎是如果不在文件中指定本地用户的访问目录,则会默认访问本地用户的家目录,但是我的似乎不是如此,如果不指定,访问的是前面虚拟目录所指定的 ftp根目录,所以我在这里的文件中必须指定了他们的家目录,但是虚拟用户则不必指定,指定时访问无法进行(大概是我限制了他们只在家目录访问的缘故?没试验)。
文件的内容可以为:
local_root=/mnt/i/data        //指定本地用户的家目录
anon_world_readable_only=NO      //同前
write_enable=YES                          //这些选项都可以根据自己需要选择
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES   
xferlog_enable=YES
xferlog_file=/var/log/vsftpdrain_hot.log

配置完毕。

 

 

http://www.opsers.org/base/vsftpd-local-users-and-the-realization-of-the-virtual-user-login.html

 

这也是我最近学习的时候用到的,把相关的步骤简单的记录下来,以备查询!

1、本地用户的实现 
useradd -d /homedir -s /sbin/nologin user
#增加新用户,并指定用户的家目录,不能用户SHELL权限 
vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO 
local_enable=YES 
write_enable=YES 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list 
user_config_dir=/etc/vsftpd/user_conf


vim /etc/vsftpd/chroot_list
#写入chroot的用户名

vim /etc/vsftpd/user_conf/username 
local_root=/data/www

#用户登陆时候的目录

2、虚拟用户 
vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO 
local_enable=YES 
write_enable=NO guest_enable=YES 
guest_username=www 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list 
user_config_dir=/etc/vsftpd/user_conf

虚拟帐户的配置文件(增加用户和密码) 
vim /etc/vsftpd/vuserlogin.txt

生成数据库文件 
db_load -T -t hash -f /etc/vsftpd/vuserlogin.txt /etc/vsftpd/vuserlogin.db 
chmod 600 /etc/vsftpd/vuserlogin.db

配置认证方式,只用下面的两行 
vim /etc/pam.d/vsftpd 
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuserlogin 
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuserlogin

增加虚拟帐户名 
useradd -s /sbin/nologin www

增加单独的用户文件配置文件,内容如下 
vim /etc/vsftpd/user_conf/user 
write_enable=YES 
virtual_use_local_privs=YES 
local_root=/data/www

增加相应的目录,并给相应的WWW权限

在chroot_list中增加用户名

以上和本地用户的配置基本差不多,所以我减写了!!

 

http://www.9170.org/post-322.html

 

史上最详细的vsftpd配置文件讲解

作者:王健宇 发布于:2011-1-22 3:13 Saturday 分类:Linux

vsftpd作为一个主打安全的FTP服务器,有很多的选项设置。下面介绍了vsftpd的配置文件列表,而所有的配置都是基于vsftpd.conf这个配置文件的。本文将提供完整的vsftpd.conf的中文说明。学习本文的内容将有助于你初步了解vsftpd的配置文件,但针对具体情况还需要制定具体的配置方法。

Vsftpd的配置文件: 

/etc/vsftpd/vsftpd.conf

主配置文件

/usr/sbin/vsftpd

Vsftpd 的主程序

/etc/rc.d/init.d/vsftpd

启动脚本

/etc/pam.d/vsftpd

PAM 认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)

/etc/vsftpd/ftpusers

禁止使用vsftpd 的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4 中此文件在 /etc/ 目录下)

/etc/vsftpd/user_list

禁止或允许使用vsftpd 的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf 中设置userlist_deny=YES )下也不能访问FTP服务器,在设置了userlist_deny=NO 时,仅允许user_list 中指定的用户访问FTP 服务器。(注意: linux-4 中此文件在 /etc/ 目录下)

/var/ftp

匿名用户主目录;本地用户主目录为:/home/ 用户主目录 ,即登录后进入自己家目录

/var/ftp/pub

匿名用户的下载目录,此目录需赋权根chmod 1777 pub (1 为特殊权限,使上载后无法删除)

/etc/logrotate.d/vsftpd.log

Vsftpd 的日志文件

vsftpd 的主配置文件/etc/vsftpd/vsftpd.conf 说明( 修改前先备份)  
# Example config file /etc/vsftpd/vsftpd.conf 
# The default compiled in settings are fairly paranoid. This sample file 
# loosens things up a bit, to make the ftp daemon more usable. 
# Please see vsftpd.conf.5 for all compiled in defaults. 
# READ THIS: This example file is NOT an exhaustive list of vsftpd options. 
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's 
# capabilities. 
# Allow anonymous FTP? (Beware - allowed by default if you comment this out). 
anonymous_enable=YES  是否允许 匿名登录FTP服务器,默认设置为YES允许,即用户可使用用户名ftp或anonymous进行ftp登录,口令为用户的E-mail地址。如不允许匿名访问去掉前面#并设置为NO  
# Uncomment this to allow local users to log in. 
local_enable=YES (是否允许本地用户 (  linux 系统中的用户帐号) 登录FTP服务器,默认设置为YES允许,本地用户登录后会进入用户主目录,而匿名用户登录后进入匿名用户的下载目录/var/ftp/pub ;若只允许匿名用户访问,前面加上#,可 阻止本地用户访问FTP服务器。) 
# Uncomment this to enable any form of FTP write command. 
write_enable=YES    是否允许本地用户对 FTP 服务器文件具有写权限  默认设置为 YES 允许  
# Default umask for local users is 077. You may wish to change this to 022, 
# if your users expect that (022 is used by most other ftpd's) 
# local_umask=022 (或其它值,设置本地用户的文件掩码 为缺省022 ,也可根据个人喜好将其设置为其他值,默认值为077) 
# Uncomment this to allow the anonymous FTP user to upload files. This only 
# has an effect if the above global write enable is activated. Also, you will 
# obviously need to create a directory writable by the FTP user. 
#anon_upload_enable=YES  是否允许匿名用户上传文件  须将 write_enable=YES  默认设置为 YES允许  
# Uncomment this if you want the anonymous FTP user to be able to create 
# new directories. 
#anon_mkdir_write_enable=YES    是否允许匿名用户创建新文件夹  默认设置为 YES 允许  
# Activate directory messages - messages given to remote users when they 
# go into a certain directory. 
#dirmessage_enable=YES  是否激活目录欢迎信息功能  当用户用 CMD      模式首次访问服务器上某个目录时 ,FTP 服务器将显示欢迎信息  默认情况下  欢迎信息是通过  目录下的 .message 文件获得的,此文件保存自定义的欢迎信息,由用户自己建立) 
# Activate logging of uploads/downloads. 
xferlog_enable=YES  默认值为 NO 如果启用此选项,系统将会维护记录服务器上传和下载情况的日志文件,默认情况该日志文件为/var/log/vsftpd.log,也可以通过下面的 xferlog_file选项对其进行设定。) 
# Make sure PORT transfer connections originate from port 20 (ftp-data). 
connect_from_port_20=YES  设定 FTP 服务器将启用 FTP 数据端口的连接请求 ,ftp-data 数据传输 ,21为连接控制端口  
# If you want, you can arrange for uploaded anonymous files to be owned by 
# a different user. Note! Using "root" for uploaded files is not 
# recommended!-注意,不推荐使用root用户上传文件 
#chown_uploads=YES  设定是否允许 改变 上传文件的属主  与下面一个设定项配合使用  
#chown_username=whoeve r  设置想要改变的上传文件的属主  如果需要  则输入一个系统用户名  例如可以把上传的文件都改成 root 属主。whoever:任何人) 
# You may override where the log file goes if you like. The default is shown 
# below. 
#xferlog_file=/var/log/vsftpd.log ( 设定系统维护记录FTP服务器上传和下载情况的日志文件,/var/log/vsftpd.log是默认的,也可以另设其它) 
# If you want, you can have your log file in standard ftpd xferlog format 
#xferlog_std_format=YES  如果启用此选项  传输日志文件将以标准 xferlog 的格式书写,该格式的日志文件默认为/var/log/xferlog,也可以通过xferlog_file选项对其进行设定,默认值为NO) 
#dual_log_enable ( 如果添加并启用此选项,将生成两个相似的日志文件,默认在/var/log/xferlog和/var/log/vsftpd.log目录下。前者是wu_ftpd类型的传输日志,可以利用标准日志工具对其进行分析;后者是vsftpd类型的日志) 
#syslog_enable ( 如果添加并启用此选项,则原本应该输出到/var/log/vsftpd.log中的日志,将输出到系统日志中) 
# You may change the default value for timing out an idle session. 
#idle_session_timeout=600 (设置数据传输中断间隔时间,此语句表示空闲的用户会话中断时间为600秒,即当数据传输结束后,用户连接FTP服务器的时间不应超过600秒,可以根据实际情况对该值进行修改) 
# You may change the default value for timing out a data connection. 
#data_connection_timeout=120  设置数据连接超时时间  该语句表示数据连接超时时间为 120   可根据实际情况对其个修改  
# It is recommended that you define on your system a unique user which the 
# ftp server can use as a totally isolated and unprivileged user. 
#nopriv_user=ftpsecure  运行 vsftpd 需要的非特权系统用户,缺省是nobody) 
# Enable this and the server will recognise asynchronous ABOR requests. Not 
# recommended for security (the code is non-trivial). Not enabling it, 
# however, may confuse older FTP clients. 
#async_abor_enable=YES  如果 FTP client 会下达“async ABOR”这个指令时,这个设定才需要启用,而一般此设定并不安全,所以通常将其取消) 
# By default the server will pretend to allow ASCII mode but in fact ignore 
# the request. Turn on the below options to have the server actually do ASCII 
# mangling on files when in ASCII mode. 
# Beware that on some FTP servers, ASCII support allows a denial of service 
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd 
# predicted this attack and has always been safe, reporting the size of the 
# raw file. 
# ASCII mangling is a horrible feature of the protocol. 
#ascii_upload_enable=YES  大多数 FTP 服务器都选择用 ASCII 方式传输数据   # 去掉就能实现用ASCII 方式上传和下载文件  
#ascii_download_enable=YES   # 去掉就能实现用 ASCII 方式下载文件  
# You may fully customise the login banner string: 
#ftpd_banner=Welcome to blah FTP service. (将#去掉可设置登录FTP服务器时显示的欢迎信息,可以修改=后的欢迎信息内容。另外如在需要设置更改目录欢迎信息的目录下创建名为 .message 的文件,并写入欢迎信息保存后,在进入到此目录会显示自定义欢迎信息  
# You may specify a file of disallowed anonymous e-mail addresses. Apparently 
# useful for combatting certain DoS attacks. 
#deny_email_enable=YES  可将某些特殊的 email address 抵挡住。如果以anonymous登录服务器时,会要求输入密码,也就是您的email address,如果很讨厌某些email address,就可以使用此设定来取消他的登录权限,但必须与下面的设置项配合  
# (default follows) 
#banned_email_file=/etc/vsftpd/banned_emails (当上面的 deny_email_enable=YES 时,可以利用这个设定项来规定那个email address不可登录vsftpd服务器,此文件需用户自己创建,一行一个email address即可!  
# You may specify an explicit list of local users to chroot() to their home 
# directory. If chroot_local_user is YES, then this list becomes a list of 
# users to NOT chroot(). 
#chroot_list_enable=YES  设置为 NO 时,用户登录FTP服务器后具有访问自己目录以外的其他文件的权限,设置为 YES   用户被锁定在自己的 home 目录中,vsftpd将在下面 chroot_list_file选项值的位置寻找chroot_list文件,此文件需用户建立,再将需锁定在自己home目录的用户列入其中,每行一个用户) 
# (default follows) 
#chroot_list_file=/etc/vsftpd/chroot_list  此文件需自己建立  被列入此文件的用户  在登录后将不能切换到自己目录以外的其他目录   FTP 服务器自动地 chrooted 到用户自己的home目录下,使得chroot_list文件中的用户不能随意转到其他用户的FTP home目录下,从而有利于FTP服务器的安全管理和隐私保护)
# You may activate the "-R" option to the builtin ls. This is disabled by 
# default to avoid remote users being able to cause excessive I/O on large 
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume 
# the presence of the "-R" option, so there is a strong case for enabling it. 
#ls_recurse_enable=YES  是否允许递归查询  大型站点的 FTP 服务器启用此项可以方便远程用户查询 
# When "listen" directive is enabled, vsftpd runs in standalone mode and 
# listens on IPv4 sockets. This directive cannot be used in conjunction 
# with the listen_ipv6 directive. 
listen=YES  如果设置为 YES   vsftpd 将以独立模式运行,由vsftpd自己监听和处理连接请求) 
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6 
# sockets, you must run two copies of vsftpd whith two configuration files. 
# Make sure, that one of the listen options is commented !! 
#listen_ipv6=YES ( 设定是否支持IPV6) 
#pam_service_name=vsftpd  设置 PAM 外挂模块提供的认证服务所使用的配置文件名 ,即/etc/pam.d/vsftpd文件,此文件中file=/etc/vsftpd/ftpusers字段,说明了PAM模块能抵挡的帐号内容来自文件/etc/vsftpd/ftpusers中) 
#userlist_enable=YES/NO (此选项默认值为NO ,此时ftpusers文件中的用户禁止登录FTP服务器;若此项设为YES,则 user_list文件中的用户允许登录   FTP服务器,而如果同时设置了 userlist_deny=YES ,则user_list文件中的用户将不允许登录FTP服务器,甚至连输入密码提示信息都没有,直接被FTP服务器拒绝) 
#userlist_deny=YES/NO (此项默认为YES,设置是否阻扯user_list文件中的用户登录FTP服务器) 
tcp_wrappers=YES  表明服务器使用 tcp_wrappers 作为主机访问控制方式,tcp_wrappers可以实现linux系统中网络服务的基于主机地址的访问控制,在/etc目录中的hosts.allow和hosts.deny两个文件用于设置tcp_wrappers的访问控制,前者设置允许访问记录,后者设置拒绝访问记录。例如想限制某些主机对FTP服务器192.168.57.2的匿名访问,编缉/etc/hosts.allow 文件,如在下面增加两行命令:vsftpd:192.168.57.1ENY vsftpd:192.168.57.9ENY 表明限制IP为192.168.57.1/192.168.57.9主机访问IP为192.168.57.2的FTP服务器,此时FTP服务器虽可以PING通,但无法连接) 
在FTP服务器的管理中无论对本地用户还是匿名用户,对于FTP服务器资源的使用都需要进行控控制, 避免由于负担过大造成FTP服务器运行异常, 可以添加以下配置项对FTP客户机使用FTP服务器资源进行控制: 
max_client 设置项用于设置FTP服务器所允许的最大客户端连接数,值为0时表示不限制。例如max_client=100表示FTP服务器的所有客户端最大连接数不超过100个。 
max_per_ip 设置项用于设置对于同一IP地址允许的最大客户端连接数,值为0时表示不限制。例如max_per_ip=5表示同一IP地址的FTP客户机与FTP服务器建立的最大连接数不超过5个。 
local_max_rate 设置项用于设置本地用户的最大传输速率,单位为B/s,值为0时表示不限制。例如local_max_rate=500000表示FTP服务器的本地用户最大传输速率设置为500KB/s. 
ano n_max_rate 设置项用于设置匿名用户的最大传输速率,单位为B/s,值为0表示不限制。例如ano_max_rate=200000,表示FTP服务器的匿名用户最大传输速率设置为200KB/s. 
vsftpd.user_list 文件需要与vsftpd.conf文件中的配置项结合来实现对于vsftpd.user_list文件中指定用户账号的访问控制: 
(1) 设置禁止登录的用户账号 
当vsftpd.conf配置文件中包括以下设置时,vsftpd.user_list文件中的用户账号被禁止进行FTP登录: 
userlist_enable=YES 
userlist_deny=YES 
userlist_enable设置项设置使用vsftpd.user_list文件,userlist_deny设置为YES表示vsftpd.user_list文件用于设置禁止的用户账号。 
(2) 设置只允许登录的用户账号 
当vsftpd.conf配置文件中包括以下设置时,只有vsftpd.user_list文件中的用户账号能够进行FTP登录: 
userlist_enable=YES 
userlist_deny=NO 
userlist_enable设置项设置使用vsftpd.user_list文件,userlist _deny设置为NO表示vsftpd.usre_list文件用于设置只允许登录的用户账号,文件中未包括的用户账号被禁止FTP登录。 
userlist_deny  userlist_enable 选项限制用户登录FTP 服务器 (使用userlist_deny 选项和user_list 文件一起能有效阻止root,apache,www 等系统用户登录FTP 服务器,从而保证FTP 服务器的分级安全性) 
 

Userlist_enable=YES

Ftpusers 中用户允许访问

User_list 中用户允许访问

Userlist_enable=NO

Ftpusers 中用户禁止访问

User_list 中用户允许访问

Userlist_deny=YES

Ftpusers 中用户禁止访问(登录时可以看到密码输入提示,但仍无法访问)

user_list 中用户禁止访问

Userlist_deny=NO

ftpusers 中用户禁止访问

user_list 中用户允许访问

Userlist_enable=YES 并且

Userlist_deny=YES

Ftpusers 中用户禁止访问

User_list 中用户禁止访问(登录时不会出现密码提示,直接被服务器拒绝)

Userlist_enable=YES 并且

Userlist_deny=NO 
 

Ftpusers 中用户禁止访问

User_list 中用户允许访问 
 

配置FTP服务器的虚拟用户 
在vsftpd服务器中支持匿名用户,本地用户,和虚拟用户3类用户账号,用途及区别如下: 
匿名用户 是名为anonymous或ftp的FTP用户,匿名FTP用户登录后将FTP服务器中的/var/ftp作为FTP根目录。匿名用户通常用于提供公共文件的下载,如架设公共软件下载的FTP服务器,所有人都可以使用匿名用户进行软件下载。 
本地用户 账号是FTP服务器中的系统用户账号,使用FTP本地用户账号登录FTP服务器后,登录目录为本地用户的宿主目录。本地FTP用户账号通常和Web服务器一起提供虚拟主机服务,作为网页虚拟主机更新网页的途径。 
虚拟用户 账号是为了保证FTP服务器的安全性,由vsftpd服务器提供的非系统用户账号。虚拟用户FTP登录后将把指定的目录作为FTP根目录。虚拟用户与本地用户具有类似的功能,由于虚拟用户相对安全,因此正逐步替代本地用户账号。 
由于虚拟用户账号具有较高的安全性,可以替代本地用户账号使用,下面是vsftpd虚拟用户账号设置的几个步骤: 
以设置miket 和 john 两个虚拟用户帐号为例来配置vsftpd服务器 
(1) 建立虚拟用户口令库文件 
建立虚拟用户的口令文件,文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令。例如,使用vi编辑器建立名为logins.txt的用户口令库文件,在文件中设置用户mike的口令为pwabcd,用户john 的口令是pw1234: 
#vi logins.txt 
mike      ( 奇数行设置虚拟用户名) 
pwabcd   (偶数行设置用户口令) 
john 
pw1234 
:wq(保存退出) 
(2) 生成vsftpd 的认证文件 
使用db_load 命令生成认证文件。“-f”命令选项设置的值是虚拟用户的口令库文件,即上面创建的logins.txt。命令的参数设置为需要生成的认证文件名如 vsftpd_login.db,该文件放置在目录/etc/vsftpd/下: 
#db_load  -T  -t hash  –f  logins.txt  /etc/vsftpd_login.db   (生成认证文件) 
#file  /etc/vsftpd/vsftpd_login.db                            (查看文件类型) 
/etc/vsftpd/vsftpd_login.db:Berkeley DB (Hash,version  8 , native byte-order) 
生成的认证文件的权限应设置为只对root用户可读可写,即600: 
#chmod  600  /etc/vsftpd/vsftpd_login.db 
(3) 建立虚拟用户所需的PAM配置文件 
在/etc/pam.d目录下建立vsftpd虚拟用户身份认证所需的PAM配置文件,名称是vsftpd.vu,内容为: 
#cat /etc/pam.d/vsftpd.vu 
auth  required  /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login 
account  required  /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login 
(4) 建立虚拟用户及要访问的目录并设置相应的权限 
建立vsftpd虚拟用户所需的系统用户账号,账号名为virtual ,指定用户的宿主目录是/home/ftpsite, 设置宿主目录的权限为700: 
#useradd  -d  /home/ftpsite  virtual 
#chmod  700  /home/ftpsite/ 
这样vsftpd服务器中的所有虚拟用户账号登录后都将在/home/ftpsite目录中 
(5) 设置vsftpd.conf主配置文件 
在对vsftpd.conf配置文件进行修改之前,应先将原有的文件进行备份,以便出现配置错误时可进行恢复: 
#cd /etc/vsftpd 
#cp vsftpd.conf vsftpd.conf.bak 
在vsftpd.conf配置文件中添加虚拟用户的配置项,内容为: 
guest_enable=YES 
guest_username=virtual 
pam_service_name=vsftpd.vu 
(6) 重新启动vsftpd服务程序 
在对vsftpd.conf配置文件进行了任何修改后都需要重新启动vsftpd服务,以便配置生效: 
#service vsftpd restart 
(7) 测试vsftpd中的虚拟用户账号:mike 或 john 
在测试前可以先在/home/ftpsite目录中建立测试文件,用于测试时进行下载,并设置该文件的属主和属组为virtual 
#touch /home/ftpsite/afile 
#chown  virtual.virtual  /home/ftpsite/afile 
使用ftp命令登录vsftpd服务器,并使用已配置的虚拟用户帐号mike进行登录 
#ftp localhost 
name (localhost:root):mike 
password: 
ftp>get afile 
在完成虚拟用户的FTP登录后,可使用get命令下载测试文件,测试文件会保存到用户的当前目录中。 
(8) 对不同的虚拟用户设置不同的权限 
vsftpd服务器中的虚拟用户可以灵活的针对不同的用户账号设置不同的用户权限,配置的步骤如下: 
1.设置主配置文件 
在vsftpd.conf配置文件中添加user_config_dir配置项,并设置用户配置文件的保存目录 
user_config_dir=/etc/vsftpd_user_conf 
在上面的配置实例中,设置在/etc/vsftpd_user_conf目录中保存虚拟用户的配置文件 
2.建立用户配置文件目录 
使用mkdir命令建立虚拟用户配置文件的保存目录 
#mkdir  /etc/vsftpd_user_conf 
3.为虚拟用户建立单独的配置文件 
在/etc/vsftpd_user_conf/目录中可以为每个虚拟用户建立独立的配置文件,配置文件名称和用户名相同。例如,为用户mike建立配置文件mike ,并将anon_world_readable_only设置为NO,表示用户具有浏览和下载的权限 
#cat  /etc/vsftpd_user_conf/mike 
anon_world_readable_only=NO 
为用户john建立配置文件john,并设置该用户具有浏览,下载,上传,改名,删除文件,建立和删除的权限。 
#cat  john 
anon_world_readable_only=NO   --表示用户可以浏览FTP目录和下载文件 
anon_upload_enable=YES        --表示用户可以上传文件 
anon_mkdir_write_enable=YES   --表示用户具有建立和删除目录的权利 
anon_other_write_enable=YES   --表示用户具有文件改名和删除文件的权限 
通过对以上配置项的组合设置,vsftpd可以为每个虚拟用户配置不同的FTP权限,用户配置文件中没有的配置项将按照vsftpd.conf配置文件中的内容设置。 
vsftpd 服务器的其它主要设置  
1 .最大传输速率设置: 
设置匿名用户的最大传输率为20Kbps,修改/etc/vsftpd/vsftpd.conf 添加语句:anon_max_rate=20000 
设置本地帐号最大传输率为1Mbps,修改/etc/vsftpd/vsftpd.conf 添加语句:local_max_rate=1000000 
2 .服务器最大并发数和用户最大线程数设置: 
例如设置服务器允许的最大并发数为99,而每个用户同一时段的最大并发线程数为5,修改/etc/vsftpd/vsftpd.conf 添加两行语句:max_clients=99 和 max_per_ip=5 
3 .修改默认端口: 
默认FTP服务器端口号是21,出于安全目的,有时需修改默认端口号,修改/etc/vsftpd/vsftpd.conf 
添加语句(例):listen_port=4449 该语句指定了修改后FTP服务器的端口号,应尽量大于4000,修改后访问 
    #ftp 192.168.57.2 4449 (需加上正确的端口号了,否则不能正常连接) 
4 .设置用户组,增强FTP服务器安全性: 
举例: 
#mkdir –p /home/try  递归创建新目录 
#groupadd try        新建组 
#useradd –g try –d /home/try try1 新建用户try1并指定家目录和属组 
#useradd –g try –d /home/try try2 新建用户try2并指定家目录和属组 
#useradd –g try –d /home/try try3 新建用户try3并指定家目录和属组 
#passwd try1  为新用户设密码 
#passwd try2  为新用户设密码 
#passwd try3  为新用户设密码 
#chown try1 /home/try 设置目录属主为用户try1 
#chown .try /home/try 设置目录属组为组try 
#chmod 750 /home/try  设置目录访问权限try1为读,写,执行;try2,try3为读,执行 
由于本地用户登录FTP服务器后进入自己主目录,而try1,try2 try3对主目录/home/try分配的权限不同,所以通过FTP访问的权限也不同,try1访问权限为:上传,下载,建目录 ;try2ty3访问权限为下载,浏览,不能建目录和上传。实现了群组中用户不同访问级别,加强了对FTP服务器的分级安全管理。 
5 .常见的vsftpd日志解决方案如下: 
xferlog_enable=YES ( 表明FTP服务器记录上传下载的情况) 
xferlog_std_format=YES (表明将记录的上传下载情况写在xferlog_file所指定的文件中,即xferlog_file选项指定的/var/log/xferlog文件中) 
xferlog_file=/var/log/xferlog 
dual_log_enable=YES (表明启用了双份日志,在用xferlog文件记录服务器上传下载情况的同时,vsftpd_log_file所指定的文件,即/var/log/vsftpd.log也将用来记录服务器的传输情况) 
vsftpd_log_file=/var/log/vsftpd.log 
vsftpdr 的两个日志文件分析如下: 
/var/log/xferlog 记录内容举例 
Thu Sep 6 09:07:48 2007 7 192.168.57.1 4323279 /home/student/phpMyadmin-2.11.0-all-languages.tar.gz b – i r student ftp 0 * c 
/var/log/vsftpd.log 记录内容举例 
Tue Sep 11 14:59:03 2007 [pid 3460]    CONNECT: Client “127.0.0.1” 
Tue Sep 11 14:59:24 2007 [pid 3459] [ftp] OK LOGIN;Client “127.0.0.1” ,anon password  ?  
                        /var/log/xferlog 日志文件中数据的分析和参数说明 
 

记录数据 
 
参数名称 
 
参数说明 
 
Thu Sep 6 09:07:48 2007 
 
当前时间 
 
当前服务器本地时间,格式为: 
DDD MMM dd hh:mm:ss YYY 
 
7 
 
传输时间 
 
传送文件所用时间,单位为秒 
 
192.168.57.1 
 
远程主机名称/IP 
 
远程主机名称/IP 
 
4323279 
 
文件大小 
 
传送文件的大小,单位为byte 
 
/home/student/phpMyadmin- 
2.11.0-all-languages.tar.gz 
 
文件名 
 
传输文件名,包括路径 
 
b 
 
传输类型 
 
传输方式的类型,包括两种: 
a以ASCII传输 b以二进制文件传输 
 
 
 
特殊处理标志 
 
特殊处理的标志位,可能的值包括: 
_ 不做任何特殊处理 
C 文件是压缩格式 
U 文件是非压缩格式 
T 文件是tar格式 
 
i 
 
传输方向 
 
文件传输方向,包括两种: 
o 从FTP服务器向客户端传输 
i 从客户端向FTP服务器传输 
 
r 
 
访问模式 
 
用户访问模式,包括: 
a 匿名用户 
g 来宾用户 
r 真实用户,即系统中的用户 
 
student 
 
用户名 
 
用户名称 
 
ftp 
 
服务名 
 
所使用的服务名称,一般为FTP 
 
0 
 
认证方式 
 
认证方式,包括: 
0 无 
1 RFC931认证 
 
* 
 
认证用户id 
 
认证用户的id,如果使用*,则表示无法获得该id 
 
c 
 
完成状态 
 
传输的状态: 
c 表示传输已完成 
i 表示传输示完成 
 

6 .匿名FTP设置方法: 
通常在登录FTP服务器的用户不确定的情况下,应将FTP服务器设置为允许匿名账号登录的FTP服务器 
1.启用匿名帐号 
  anonymous_enable=YES 
  local_enable=YES 
  write_enable=YES 
  listen=YES 
设置完成后,重启vsftd.将允许匿名账号和本地账号登录FTP服务器,同时允许匿名用户具有对FTP服务器文件的写权限,并且只能下载文件而不能上传,不允许匿名账号创建文件夹,匿名用户的口令为一个E-mail地址。 
2.允许匿名账号上传文件 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES 
将#去掉即可,重启vsftpd.将允许匿名账号上传文件,也就是具有在FTP服务器的本地目录中新建文件和文件夹的功能
3.仅允许匿名用户访问 
#local_enable=YES 
#write_enable=YES 
在前面加上#,即限制本地账号访问,仅允许匿名用户访问 
4.禁止匿名访问,允许本地账号访问 
anonymous_enable=NO 
  local_enable=YES 
  write_enable=YES 
常见FTP命令及其功能 
 

FTP 命令 
 
功能 
 
FTP 命令 
 
功能 
 

ls

显示服务器上的目录 
 
ls [remote-dir][local-file] 
 
显示远程目录remote-dir,并存入本地文件local-file
 

get remote-file [local-file]

从服务器下载指定文件到客户端 
 
mget remote-files 
 
下载多个远程文件(mget命令允许用通配符下载多个文件) 
 

put local-file [remote-file]

从客户端上传指定文件到服务器 
 
mput local-file 
 
将多个文件上传至远程主机(mput命令允许用通配符上传多个文件) 
 

open

连接FTP服务器 
 
mdelete [remote-file] 
 
删除远程主机文件 
 

close

中断与远程服务器的ftp会话(与open对应) 
 
mkdir dir-name 
 
在远程主机中创建目录 
 

open host[port]

建立指定的ftp服务器连接,可指定连接端口 
 
newer file-name 
 
如果远程主机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件 
 

cd directory

改变服务器的工作目录 
 
rename [from][to] 
 
更改远程主机的文件名 
 

lcd directory

在客户端上(本地)改变工作目录 
 
pwd 
 
显示远程主机的当前工作目录 
 

bye

退出FTP命令状态 
 
quit 
 
同bye,退出ftp会话 
 

ascii

设置文件传输方式为ASCII模式 
 
reget remote-file [local-file] 
 
类似于get,但若local-file存在,则从上次传输中断处续传 
 

binary

设置文件传输方式为二进制模式 
 
rhelp [cmd-name] 
 
请求获得远程主机的帮助 
 

![cmd [args]]

在本地主机中交互shell后退回到ftp环境,如:!ls *.zip 
 
rstatus [file-name] 
 
若未指定文件名,则显示远程主机的状态,否则显示文件状态 
 

accout [password]

提供登录远程系统成功后访问系统资源所需的密码
 
hash 
 
每传输1024字节,显示一个hash符号(#) 
 

append local-file [remote-file]

将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名 
 
restart marker 
 
从指定的标志marker处,重新开始get或put,如restart 130 
 

bye

退出ftp会话过程 
 
rmdir dir-name 
 
删除远程主机目录 
 

case

在使用mget命令时,将远程主机文件名中的大写转为小写字母 
 
size file-name 
 
显示远程主机文件大小,如: 
size idle 7200 
 

cd remote-dir

进入远程主机目录 
 
status 
 
显示当前ftp状态 
 

cdup

进入远程主机目录的父目录 
 
system 
 
显示远程主机的操作系统 
 

delete remote-file

删除远程主机文件 
 
user user-name [password][account] 
 
向远程主机表明自己的身份,需要密码时,必须输入密码,如:user anonymous my@email 
 

dir [remote-dir][local-file]

显示远程主机目录,并将结果存入本地文件 
 
help [cmd] 
 
显示ftp内部命令cmd的帮助信息,如help get 
 

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 未执行请求的的命令,名称不正确。

 

posted @ 2012-07-26 15:40  陳聽溪  阅读(2676)  评论(0)    收藏  举报