一、默认配置
1. 允许匿名用户和本地用户登录
anonymous_enable=YES
local_enable=YES
2. 匿名用户使用的登录名为ftp或anonymous,密码为空;匿名用户不能离开匿名用户家目录/var/ftp,而且只能下载不能上传。
3. 本地用户的登录名为本地用户名,密码为该本地用户的密码;本地用户可以在自己家目录中进行读写操作;本地用户可以离开自己家目录切换至有权限访问的其他目录,并在权限允许的情况下进行上传/下载。
write_enable=YES
4. 写在文件/etc/vsftpd/ftpusers 中的本地用户禁止登陆
二、配置文件格式
vsftpd.conf 的内容非常单纯,每一行就是一项设定。若是空白行或是开头为# (注释)的一行,会被忽略。
内容的格式只有一种,
option=value
等号两边不能加空格
三、匿名用户(anonymous)设置:
anonymous_enable=YES/NO(YES)
控制是否允许匿名用户登录,YES允许,NO不允许,默认为YES
write_enable=YES/NO(YES)
是否允许登陆用户有写权限。属于全局设置,默认YES
no_anon_password=YES/NO(NO)
若是启动这项功能,则使用匿名登录时,不会询问密码。默认为NO。
ftp_username=ftp
定义匿名登录的使用者名称。默认是ftp。
anon_root=/var/ftp
使用匿名登录时,所登入的目录。默认是/var/ftp。注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限。
anon_upload_enable=YES/NO(NO)
如果设为YES,则允许匿名用户有上传文件(非目录)的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权限。默认值NO。
anon_world_readable_only=YES/NO(YES)
如果设为YES,则允许匿名登陆者下载可阅读的文档(可以下载到本机阅读,不能直接在FTP服务器中打开阅读)。默认为YES。
anon_mkdir_write_enable=YES/NO(NO)
如果设为YES,则允许匿名登陆者有新增目录的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权限。默认为NO。
anon_other_write_enable=YES/NO(NO)
如果设为YES,则允许匿名登陆者有上传或建立目录之外的权限,如删除或重命名。(如果anon_upload_enable=NO,则匿名用户不能上传文件,但可以删除或重命名已经存在的文件;如果anon_mkdir_write_enable=NO,则匿名用户不能上传或新建文件夹,但是可以删除或重命名已存在的文件夹。)默认为NO。
chown_uploads=YES/NO(NO)
设置是否改变匿名用户上传文件(非目录)的属主。默认为NO。
chown_username=username
设置匿名用户上传文件(非目录)的属主名。建议不要设置为root。
anon_umask=077
设置匿名用户登录后新增或上传文件的umask值。默认为077,则新建文件的对应权限为700。
deny_email_enable=YES/NO(NO)
若是启动这项功能,则必须提供一个文件/etc/vsftpd/banner_emails,内容为 email address。若是使用匿名登录,则会要求输入 email address,如果输入的地址在此文件内,则不允许进入。默认值为NO。
banned_email_file=/etc/vsftpd/banner_emails
此文件用来输入邮箱地址,只有在deny_email_enable=YES时,才会用到此文件。若是使用匿名登入,则会要求输入email address,若输入的email address 在此文件内,则不允许进入。
四、本地用户设置
local_enable=YES/NO(YES)
控制本地用户登录,YES允许本地用户登录,NO不允许。默认为YES。
local_root=/home/username
本地用户登录时,将被更换到定义的目录下。默认为各用户的家目录。
write_enable=YES/NO(YES)
是否允许登录用户有写权限。属于全局设置,默认为YES。
local_umask=022
本地用户新增文件时的umask值。
file_open_mode=0755
本地用户上传文件后的文件权限,与chmod所使用的数值相同。默认为0666。
五、欢迎语设置
dirmessage_enable=YES/NO(YES)
如果启动这个选项,那么使用者第一次进入一个目录时,会检查该目录下是否有.message这个档案,如果有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。默认值为开启。
message_file=.message
设置目录消息文件,可将要显示的信息写入该文件。默认值为.message。
banner_file=/etc/vsftpd/banner
当使用者登入时,会显示此设定所在的档案内容,通常为欢迎话语或是说明。默认值为无。如果欢迎信息较多,则使用该配置项。
ftpd_banner=welcome
这里用来定义欢迎话语的字符串,banner_file是档案的形式,而ftpd_banner 则是字符串的形式。预设为无。
六、控制用户是否允许切换到上级目录
在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置文件来控制用户切换目录。
chroot_list_enable=YES/NO(NO)
设置是否启用chroot_list_file配置项指定的用户列表文件。默认为NO。
chroot_list_file=/etc/vsftpd/chroot_list
用于指定用户列表文件,该文件控制哪些用户可以切换到家目录的上级目录。
chroot_local_user=YES/NO(NO)
用于指定用户列表文件中的用户是否允许切换到上级目录,默认为NO。
通过搭配可得到以下几种效果:
1. chroot_list_enable=YES,chroot_local_user=YES。在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到其他目录;没有出现的用户,不能切换到其他目录。
2. chroot_list_enable=YES,chroot_local_user=NO。在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到其他目录;未列出的用户,能切换到其他目录。
3. chroot_list_enable=NO,chroot_local_user=YES。所有用户都不能切换到其他目录。
4. chroot_list_enable=NO,chroot_local_user=NO。所有的用户都可以切换到其他目录。
七、数据传输模式设置
ftp在传输数据时,可以使用二进制方式,也可以使用ASCII模式来上传或下载数据。
ascii_upload_enable=YES/NO(NO)
设置是否启用 ASCII 模式上传数据。默认为NO。
ascii_download_enable=YES/NO(NO)
设置是否启用 ASCII 模式下载数据。默认为NO。
八、访问控制设置
两种控制方式:一种控制主机访问,一种控制用户访问。
1. 控制主机访问
tcp_wrappers=YES/NO(YES)
设置vsftpd是否与 tcp wrappers 相结合进行主机的访问控制。默认为YES。如果启用,则vsftpd服务器会检查 /etc/hosts.allow 和 /etc/hosts.deny 中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。
例:若要允许192.168.0.1-192.168.0.254的用户可以连接FTP服务器,则在 /etc/hosts.allow文件添加以下内容
vsftpd:192.168.0. :allow all:all :deny
2. 控制用户访问
对于用户的访问控制可以通过 /etc/vsftpd 目录下的user_list 和 ftpusers 文件实现。
userlist_file=/etc/vsftpd/user_list
控制用户访问FTP的文件,里面写用户名。一个用户名占一行。
userlist_enable=YES/NO(NO)
是否启用user_list 文件。
userlist_deny=YES/NO(YES)
决定 user_list 文件中的用户是否能够访问FTP服务器。设置为YES,则 user_list 文件内的用户不允许访问FTP。若设置为NO,则只有user_list 文件内的用户才能访问FTP。
/etc/vsftpd/ftpusers 文件专门用来定义不允许访问FTP服务器的用户列表(注:如果userlist_enable=YES,userlist_deny=NO,此时如果在user_list 和 ftpusers 中都有某个用户时,那么这个用户不允许访问FTP,因为ftpusers文件的优先级更高)。默认情况下user_list和ftpusers,这两个文件已经预设置了一些不允许访问FTP服务器的系统内部账户。如果系统没有这两个文件,那么新建这两个文件,将用户添加进去即可。
九、访问速率设置
anon_max_rate=0
设置匿名用户登录使用的最大传输速度,单位为B/s,0表示不限速。默认为0。
local_max_rate=0
设置本地用户登录使用的最大传输速度,单位为B/s,0表示不限速。默认为0。
十、超时时间设置
accept_timeout=60
设置建立FTP连接的超时时间,单位秒。默认为60。
connect_timeout=60
PORT方式下建立数据连接的超时时间,单位为秒。默认为60。
data_connection_timeout=120
设置建立FTP数据连接的超时时间,单位为秒。默认为120。
idle_session_timeout=300
设置多长时间不对FTP服务器进行任何操作,则断开该FTP连接,单位为秒。默认为300。
十一、日志文件设置
xferlog_enable=YES/NO(YES)
是否启用上传/下载日志记录。如果启用,则上传与下载的信息将被完整记录在xferlog_file 所定义的文件中。默认开启。
xferlog_file=/var/log/vsftpd.log
设置日志文件名和路径,默认为/var/log/vsftpd.log
xferlog_std_format=YES/NO(YES)
如果启用,则日志文件的格式将会写成 xferlog 的标准格式,如同 wu-ftpd 一样。默认开启。
log_ftp_protocol=YES/NO(NO)
如果启用此项,所有的FTP请求和响应都会被记录到日志中,默认日志文件在/var/log/vsftpd.log。启用此项时,xferlog_std_format不能被激活。这个选项有利于调试。默认为NO。
十二、定义用户配置文件
在vsftpd中,可以通过定义用户配置文件来实现不同的用户使用不同的配置。
user_config_dir=/etc/vsftpd/userconf
设置用户配置文件所在的目录。当设置了该配置项后,用户登录服务器后,系统就会到 /etc/vsftpd/userconf 目录下,读取与当前用户名相同的文件,并根据文件中的配置命令,对当前用户进行更进一步的配置。
例:定义user_config_dir=/etc/vsftpd/conf,且主机上有使用者test1和test2,那么就在user_config_dir 的目录新增文件名为 test1 和 test2 两个文件。test1登录时,就会读取 user_config_dir 定义目录下的test1 这个文件内的设置。默认没有。利用用户配置文件,可以实现对不同的用户进行访问速度的控制,在个用户配置文件内定义 local_max_rate=XX,即可。
十三、FTP的工作方式与端口设置
FTP的两种工作方式: PORT FTP (主动模式)和 PASV FTP (被动模式)
listen_port=21
设置FTP服务器建立连接所监听的端口,默认为21。
connect_from_port_20=YES/NO
指定FTP使用20端口进行数据传输,默认YES。
ftp_data_port=20
设置在主动模式下,FTP数据连接使用的端口,默认20。
pasv_enable=YES/NO(YES)
若设置为YES,则使用被动模式;设置为NO,使用主动模式。默认为YES,即使用被动工作模式。
pasv_max_port=0
在被动模式下,数据连接可以使用的端口范围的最大端口,0表示任意端口,默认为0。
pasv_min_port=0
在被动模式下,数据连接可以使用的端口范围的最小端口,0表示任意端口,默认为0。
十四、与连接相关的设置
listen=YES/NO(YES)
设置vsftpd服务是否以 standalone 模式运行。以 standalone 模式运行是一种较好的方式,此时listen必须设置为YES,默认就为YES。建议不要更改,很多与服务器运行相关的配置命令,需要在此模式下才有效。若设置为NO,则vsftpd不是以独立的服务运行,要受到xinetd服务的管控,功能上会受到限制。
max_clients=0
设置vsftpd 允许的最大连接数,默认为0,表示不受限制。若设置为100时,则允许同时有100个连接,超出的将被拒绝。只有在 standalone 模式运行才有效。
max_per_ip=0
设置每个ip 允许与FTP 服务器同时建立连接的数目。默认为0,表示不受限制。只有在 standalone 模式运行才有效。
listen_address=IP地址
设置FTP 服务器在指定的IP地址上监听用户的FTP请求。若不设置,则对服务器绑定的所有IP地址进行监听。只有在 standalone 模式运行才有效。
setproctitle_enable=YES/NO(NO)
设置每个与FTP 服务器的连接,是否以不同的进程表现出来。默认为NO,此时使用 ps aux |grep ftp 只会出现一个vsftpd 进程。若设置为YES,则每个连接都会有一个vsftpd的进程。
十五、虚拟用户设置
虚拟用户使用PAM认证方式
pam_service_name=vsftpd
设置PAM使用的名称,默认为 /etc/pam.d/vsftpd。
guest_enable=YES/NO(NO)
启用虚拟用户。默认为NO。
guest_username=ftp
用来映射虚拟用户,默认为ftp
virtual_use_local_privs=YES/NO(NO)
当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。默认情况下此参数是关闭的(NO)。
十六、其他设置
text_userdb_names=YES/NO(NO)
设置在执行ls –la之类的命令时,是显示UID、GID还是显示出具体的用户名和组名。默认值为NO,即以UID和GID方式显示。若希望显示用户名和组名,则设置为YES。
ls_recurse_enable=YES/NO(NO)
若是启用此功能,则允许登入者使用ls –R(可以查看当前目录下子目录中的文件)这个指令。默认值为NO
hide_ids=YES/NO(NO)
如果启用此功能,所有档案的拥有者与群组都为ftp,也就是使用者登入使用ls -al之类的指令,所看到的档案拥有者跟群组均为ftp。默认值为关闭。
download_enable=YES/NO(YES)
如果设置为NO,所有的文件都不能下载到本地,文件夹不受影响。默认值为YES。
十七、响应代码解释说明
110 新文件指示器上的重启标记 120 服务器准备就绪的时间(分钟数) 125 打开数据连接,开始传输 150 打开连接 200 成功 202 命令没有执行 211 系统状态回复 212 目录状态回复 213 文件状态回复 214 帮助信息回复 215 系统类型回复 220 服务就绪 221 退出网络 225 打开数据连接 226 结束数据连接 227 进入被动模式(IP 地址、ID 端口) 230 登录因特网 250 文件行为完成 257 路径名建立 331 要求密码 332 要求账号 350 文件行为暂停 421 服务关闭 425 无法打开数据连接 426 结束连接 450 文件不可用 451 遇到本地错误 452 磁盘空间不足 500 无效命令 501 错误参数 502 命令没有执行 503 错误指令序列 504 无效命令参数 530 未登录网络 532 存储文件需要账号 550 文件不可用 551 不知道的页类型 552 超过存储分配 553 文件名不允许