操作系统:CentOS4.4(最小化安装,安装过程中软件包的安装,将默认选项全部去掉,只选择开发工具以项)
安装VSFTPD:使用在线安装命令yum在线安装VSFTPD软件包,命令如下:
yum -install vsftpd(注:删除命令:yum -remove vsftpd)
输入命令后会自动进行安装,我使用的是CentOS4.4默认的yum资源包,下载安装VSFTPD的版本为:
VSFTPD-2.0.1-5.EL4.5
配置文件:/etc/ftpusers
该文件中指定了那些用户不能访问FTP服务器
/etc/vsftpd.user_list
该文件中指定的用户默认情况下也不能访问FTP服务器,当在/etc/vsftpd/vsftpd.conf中设置了userlist_deny=NO时仅仅允许该文件中指定的用户访问FTP服务器。
/etc/vsftpd/vsftpd.conf
该文件为vsftpd的主配置文件。
VSFTPD-2.0.1-5.EL4.5的默认配置:
anonymous_enable=YES 允许匿名登录
local_enable=YES 允许本地用户登录
write_enable=YES 开放本地用户写权限
local_umask=022 设置本地用户生成文件的掩码为022
#anon_upload_enable=YES 此项设置允许匿名用户上传文件
#anon_mkdir_write_enable=YES 开启匿名用户的写和创建目录的权限
dirmessage_enable=YES 当切换到目录时,显示该目录下的.message隐藏文件的内容
xferlog_enable=YES 激活上传和下载日志
connect_from_port_20=YES 启用FTP数据端口的连接请求
#chown_uploads=YES 是否修改匿名用户所上传文件的所有权。YES,匿名用户所上传的文件的所有权将改为另外一个不同的用户所有,用户由chown_username参数指定。
#chown_username=whoever 指定拥有匿名用户上传文件所有权的用户。此参数与chown_uploads联用。
#xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES 使用标准的ftpd xferlog日志格式
#idle_session_timeout=600 此设置将在用户会话空闲10分钟后被中断
#data_connection_timeout=120 将在数据连接空闲2分钟后被中断
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES 启用上传的ASCII传输方式
#ascii_download_enable=YES 启用下载的ASCII传输方式
#ftpd_banner=Welcome to blah FTP service 设置用户连接服务器后显示消息
#deny_email_enable=YES 此参数默认值为NO。当值为YES时,拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户。
#banned_email_file=/etc/vsftpd.banned_emails 指定包含被拒绝的e-mail地址的文件,默认文件为/etc/vsftpd.banned_emails。
#chroot_list_enable=YES (用来设置本地用户登录后不能切换到自家目录以外的别的目录)设置所有的本地用户执行chroot,此项若设置为NO,则配合chroot_list_enable=YES,及下以项用于指定只有vsftpd.chroot_list中指定的用户才执行chroot.
#chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES
pam_service_name=vsftpd 设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/
userlist_enable=YES 此项配置/etc/vsftpd.user_list中指定的用户也不能访问服务器,若添加userlist_deny=No,userlist_file=/etc/vsftpd.user_list则限制仅仅/etc/vsftpd.user_list文件中指定的用户可以访问,其他用户都不可以访问服务器。如过userlist_enable=NO,userlist_deny=YES,则指定使文件/etc/vsftpd.user_list中指定的用户不可以访问服务器,其他本地用户可以访问服务器。
listen=YES 指明VSFTPD以独立运行方式启动
tcp_wrappers=YES 在VSFTPD中使用TCP_Wrappers远程访问控制机制,默认值为YES
可以看出以上默认配置文件中去掉注释行,余下的就是VSFTPD的默认配置,根据默认配置得到如下结论:
1.允许匿名用户和本地用户登录。
2.匿名用户不能离开匿名服务器目录/var/ftp,且只能下载不能上传文件。
3.本地用户的登录名为本地用户名,密码为本地用户密码,可以离开自家目录切换到有权限访问的目录,并在目录权限允许的情况下上传和下载文件。
4.写在文件/etc/vsftpd.ftpusers中的本地用户禁止登录。
其他的一些配置选项:
anon_world_readable_only=NO 放开匿名用户对整个服务器的浏览权限
banner_file=/var/vsftpd_banner_file 用户配置连接服务器后显示文件中的信息。此项优先于ftpd_banner.
accept_timeout=60
connect_timeout=60 此两项设置客户端空闲1分钟后自动中断连接1分钟后再自动连接。
local_max_rate=5000 设置本地用户的最大传输速率
anon_max_rate=3000 设置匿名用户的最大传输速率
pasv_min_port=5000
pasv_max_port=6000 此两项设置客户端连接时的端口范围
Anon_other_write_enable=yes 匿名账号可以有删除的权限
max_clients=200 此项指明服务器总的并发连接
max_per_ip=4 指明每个客户机的最大连接数
listen_port=2001 配置FTP端口
listen_address=192.168.1.1 配置虚拟服务器时配置虚拟服务器的IP
local_root= 定义所有本地用户的根目录。当本地用户登入时,将被更换到此目录下。
配置基于IP的虚拟FTP服务器,也就是给VSFTPD基于每个IP写一个主配置文件。
no_anon_password=YES|NO 控制匿名用户登入时是否需要密码,YES不需要,NO需要。默认值为NO
anon_root= 设定匿名用户的根目录,即匿名用户登入后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/。
ftp_username= 匿名用户所使用的系统用户名。默认下,此参数在配置文件中不出现,值为ftp。
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。默认值为无。
配置虚拟用户的FTP服务器:虚拟用户只能访问为其提供的FTP服务,虚拟用户不能像本地的实用那样登录系统而访问系统的其他资源。
传统的FTP服务器采用如下方法实现虚拟用户:
1.在本地建立普通用户账号并设置密码
2.将其SHELL设置为不可登录
3.由PASSWD/SHADOW口令系统进行认证
VSFTPD的虚拟用户采用了不与系统账户口令文件合二为一的方法,也就是为了认证这些虚拟用户VSFTPD使用单独的口令库文件(pam_userdb),由可插拔认证模块(PAM)进行认证。
VSFTPD中配置虚拟用户的FTP服务器方法如下:
1.生成虚拟用户口令库文件
2.配置生成VSFTPD的认证文件
3.建立虚拟用户所要访问的目录并设置相应权限
4.建立配置文件
例如:
1.创建一个文本文件login.txt,格式为单数行为用户名,偶数行为口令
2.生成口令库文件:db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
3.修改口令库文件权限:chmod 600 /etc/vsftpd_login.db
4.编辑生成虚拟用户所需的PAM配置文件:
vi /etc/pam.d/ftp.vu
插入如下两行:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
5.建立虚拟用户所要访问的目录并设置仅仅虚拟用户访问的权限
%3