sftp配置大全---超完整版
环境:RedHat AS4说明:如果不做说明,一般安装命令均使用ROOT权限,用 # 表示
特别说明:无
以下文章介绍Liunx 环境下vsftpd的三种实现方法
,目前已经到2.0.3版本。假设我们已经将vsftpd-2.0.3.tar.gz文件下载到服务器的/home/xuchen目录
代码:# cd /home/xuchen# tar xzvf vsftpd-2.0.3.tar.gz //解压缩程序# cd vsftpd-2.0.3
三、三种方式的实现 1、匿名用户形式实现# vi builddefs.h \\ 编辑builddefs.h 文件,文件内容如下:
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H#undef VSF_BUILD_TCPWRAPPERS#define VSF_BUILD_PAM#undef VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */将以上undef的都改为define,支持tcp_wrappers,支持PAM认证方式,支持SSL
# make //直接在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=YESlisten_port=21tcp_wrappers=YESanon_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.1Connected 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 typeName (127.0.0.1:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 \"/\"ftp> quit221 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/basha=`/bin/ps -A | grep vsftpd-ano | awk \'{print }\'`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=YESchown_username=daemon //上传文件的属主ftpd_banner=Welcome to d-1701.com FTP service. //FTP欢迎信息anon_max_rate=80000 //这是匿名用户的下载速度为80KBytes/scheck_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),测试一下,是可以被下载下来的,好了,匿名服务器就说到这里了。
2、本地用户形式实现# 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=YESlisten_port=21tcp_wrappers=YES //支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)listen=YES的意思是使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式),注意事项请参看匿名用户的配置。anonymous_enable=NOlocal_enable=YES //这两项配置说不允许匿名用户登陆,允许本地用户登陆# /usr/local/sbin/vsftpd-loc /etc/vsftpd-loc.conf & //以后台方式启动vsftpd
测试搭建好的匿名用户方式,先测试root用户吧 :)# ftp 127.0.0.1Connected 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 typeName (127.0.0.1:root): root331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 \"/root\"ftp> quit221 Goodbye.我们看到root用户可以登陆到ftp,他的登陆目录就是自己的主目录。再测试一个系统用户,那我们先建立一个用户名叫xuchen的# useradd xuchen# passwd xuchenChanging password for user xuchen.New UNIX password:Retype new UNIX password:passwd: all authentication tokens updated successfully.建立好了,让我们开始测试吧!!# ftp 127.0.0.1Connected 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 typeName (127.0.0.1:root): xuchen331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 \"/home/xuchen\"ftp> quit221 Goodbye.我们看到xuchen用户可以登陆到ftp,他的登陆目录也是自己的主目录。哈哈,又完成了!高级配置细心的朋友可能已经看出来如果我们不支持PAM认证方式,那么本地用户就可以登陆,而默认编译的vsftpd支持PAM认证方式,所以是不支持本地用户登陆的。恩,从这点说,这也是vsftp安全的一个表现----禁止本地用户登陆。我们登陆后进行测试,传一个文件上去,得,失败了,那下载个文件下来吧,恩,这是成功的(见图2),而且我们发现我们可以进入到系统根目录(见图3),这样很危险。
那么改配置文件吧,为了测试方便,我们先建立一个名为kill-loc的脚本,也是为了杀掉FTP程序的#!/bin/basha=`/bin/ps -A | grep vsftpd-loc | awk \'{print }\'`kill -9 $a
现在提供我的本地用户验证服务器配置文件吧(在匿名里写过的注释我就不在这里写了)listen=YESlisten_port=21tcp_wrappers=YESanonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022 //本地用户文件上传后的权限是-rw-r-ranon_upload_enable=NOanon_mkdir_write_enable=NOdirmessage_enable=YESxferlog_enable=YESxferlog_file=/var/log/vsftpd.logxferlog_std_format=YESconnect_from_port_20=YESchroot_local_user=YES //限制用户在自己的主目录#local_root=/ftp //你可以指定所有本地用户登陆后的目录,如果不设置此项,用户都会登陆于自己的主目录,就跟咱们前面测试的结果是一样的local_max_rate=500000 //本地用户的下载速度为500KBytes/sidle_session_timeout=600data_connection_timeout=120nopriv_user= nobody //设定服务执行者为nobody,vsftpd推荐使用一个权限很低的用户,最好是没有家目录(/dev/null),没有登陆shell(/sbin/nologin),系统会更安全ftpd_banner=Welcome to d-1701.com FTP service.check_shell=NO
userlist_enable=YESuserlist_deny=YESuserlist_file=/etc/vsftpd.denyuser以上三条设定不允许登陆的用户,用户列表存放在/etc/vsftpd.denyuser中,一行一个帐号如果我把xuchen这个用户加到vsftpd.denyuser里,那么登陆时会出现如下错误:# ftp 127.0.0.1Connected 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 typeName (127.0.0.1:root): xuchen530 Permission denied.Login failed.呵呵,有意思吧,自己测试吧,本地用户登陆方式就介绍到这里吧!
3、虚拟用户形式实现(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 db4db4-devel-4.2.52-7.1db4-4.2.52-7.1db4-utils-4.2.52-7.1(2)建立一个logins.txt的文件,单行为用户名,双行为密码,例如# vi /home/logins.txt
xuchen12345
(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_loginaccount required /lib/security/pam_userdb.so db=/etc/vsftpd_login(5)建立一个虚拟用户useradd -d /home/vsftpd -s /sbin/nologin vsftpdls -ld /home/vsftpddrwx------ 3 vsftpd vsftpd 1024 Jun 6 22:55 /home/vsftpd/(6)编写配置文件(注意事项请参看匿名用户的配置,这里不再赘述)# vi /etc/vsftpd-pam.conflisten=YESlisten_port=21tcp_wrappers=YES //支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)listen=YES的意思是使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)anonymous_enable=NOlocal_enable=YES //PAM方式此处必须为YES,如果不是将出现如下错误:500 OOPS: vsftpd: both local and anonymous access disabled!write_enable=NOanon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NOchroot_local_user=YESguest_enable=YESguest_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.1Connected 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 typeName (127.0.0.1:root): xuchen331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 \"/\"ftp> size test213 11ftp> quit221 Goodbye.OK,用户名为xuchen,密码为12345可以连接到FTP服务器,看不到文件列表,但可以下载已知文件名的文件,不能上传文件,非常安全吧!!
如果我们需要用户看到文件,怎么办?也好办,在配置文件中加入如下语句:anon_world_readable_only=NO //匿名登入者不能下载可阅读的档案,默认值为YES
如果需要让用户上传文件和下载文件分开,建议如下这么做# vi /home/logins.txtxuchen12345upload45678//首先建立虚拟用户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/uploadwrite_enable=YESanon_world_readable_only=NOanon_upload_enable=YESanon_mkdir_write_enable=YESanon_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 –pmysql>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 identified by \'123456\';mysql>flush privileges; 刷新权限设置mysql>quit(2)下载libpam-mysql进行安装编译下载地址如下: ... am_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= ncrypt=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.confanonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESchroot_local_user=YESguest_enable=YESguest_username=ftpdlisten=YESlisten_port=21pasv_enable=YESpasv_min_port=30000pasv_max_port=30999anon_world_readable_only=NOvirtual_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.1Connected 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 typeName (127.0.0.1:root): test1331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 \"/\"ftp> quit221 Goodbye.看,成功了!!这样就实现了mysql的认证方式,很简单吧??
4、为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 ftpdDisk 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 --是不尝试重新挂载文件系统
备注:1、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#本地用户上传文件的umasklocal_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_usernamechown_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/emptysecure_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端口来连接ftpconnect_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 未执行请求的的命令,名称不正确。
2、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 nobodyuseradd: 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/vsftpdcp vsftpd.conf.5 /usr/local/man/man5cp vsftpd.8 /usr/local/man/man8
\"make install\"不会拷贝默认的配置文件,所以建议你手工拷贝:cp vsftpd.conf /etcdaidong注:根据你系统版本的不同,也可能是 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 localhostConnected to localhost (127.0.0.1).220 (vsFTPd 1.1.1)Name (localhost:chris): ftp331 Please specify the password.Password:230 Login successful. Have fun.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls227 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 bind--x--x--x 2 0 0 4096 Apr 21 20:52 etcdrwxr-xr-x 2 0 0 4096 Apr 21 20:52 libdrwxr-sr-x 2 0 50 4096 Jul 26 22:58 pub226 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:tomfoofiredbar这个例子中,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\"察看相关文档:
2)用你的新数据库创建一个PAM文件请参考范例vsftpd.pam,它包含2行:auth required /lib/security/pam_userdb.so db=/etc/vsftpd_loginaccount required /lib/security/pam_userdb.so db=/etc/vsftpd_login
这是告诉PAM用新的数据库去验证用户。把这个PAM文件拷贝到PAM目录,一般是/etc/pam.dcp vsftpd.pam /etc/pam.d/ftp
3)为虚拟用户设置home目录useradd -d /home/ftpsite virtualls -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/ftpsitechown virtual.virtual /home/ftpsite/hosts
4)创建你的vsftpd.conf配置文件请参考这个目录下的例子。让我们一行行地看一看这些配置:anonymous_enable=NOlocal_enable=YES
安全起见,屏蔽了匿名用户,只启用了非匿名用户(即虚拟用户使用的账号)
write_enable=NOanon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NO
为了安全请确认这几个配置,这将关闭写的权限。
chroot_local_user=YES
这将把虚拟用户锁定在我们在以上设置的/home/ftpsite目录内。
guest_enable=YESguest_username=virtual
guest_enable非常重要-它激活了虚拟用户!而guest_username说明所有的虚拟用户都对应我们在上面设置的真实用户:“virtual\".这同时确定了虚拟用户在文件系统中的位置,也就是说,虚拟用户的home目录即\"virtual\"用户的home目录:/home/ftpsite。
listen=YESlisten_port=10021
这让VSFTPD以独立模式(standalone)运行,而不是从inetd方式启动。也就是说,你运行VSFTPD可执行文件就启动了FTP服务。同时也让VSFTPD启用非标准端口10021来监听FTP请求(FTP一般使用21端口)。
pasv_min_port=30000pasv_max_port=30999
这设定了被动模式的FTP请求端口。当你配置了一个防火墙的时候,这个配置就很好用。
拷贝范例配置文件到/etccp vsftpd.conf /etc/(daidong注:也可能是/etc/vsftpd)
5)启动VSFTPD到VSFTPD二进制文件所在的目录,输入:./vsftpd
如果一切正常,这个命令将生效。否则,你将会看到一些错误信息的反馈。
6)测试启动另一个会话。(或者ctrl-z,再输入\"bg\",让VSFTPD在后台运行)。这是一个FTP会话的例子:
ftp localhost 10021Connected to localhost (127.0.0.1).220 ready, dude (vsFTPd 1.1.0: beat me, break me)Name (localhost:chris): tom331 Please specify the password.Password:230 Login successful. Have fun.Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 \"/\"ftp> ls227 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 hosts213 147ftp>
注释:密码是\"foo\"出现”failed to open directory“的话,别担心。这是因为/home/ftpsite目录不容许被任意浏览。(我们可以更改anon_world_readable_only=NO以消除告警,但为了安全,还是保留这个配置)。我们能通过size命令看到我们已经访问了被我们拷贝到这里的\"hosts\"文件。
vsftpd.confanonymous_enable=NOlocal_enable=YESwrite_enable=NOanon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NOchroot_local_user=YESguest_enable=YESguest_username=virtuallisten=YESlisten_port=10021pasv_min_port=30000pasv_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/fredecho \"write_enable=YES\" >> /etc/vsftpd_user_conf/fredecho \"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 workaroundoperating system bugs such as the Solaris / Veritas filesystem combinationwhich 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. Eachuser\'s jail is derived from their home directory string in /etc/passwd. Theoccurrence of /./ in the home directory string denotes that the jail is at thatparticular 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输出