一、实验环境: Red Hat Enterprise Linux Server 5.4

         Samba 文件共享服务器IP 192.168.0.1
客户端IP 192.168.0.2

构建vsftpd文件共享服务器_第1张图片

实验目标:(1)实现匿名访问FTP

(2)使用本地用户登入FTP

(3)建立虚拟用户的vsftpd服务器

二、安装vsftpd软件包

#rpm –ivh vsftpd-2.0.5-16.el5.i386.rpm

三、vsftpd.conf 常见配置及含义说明

作用范围
配置项及示例
说明
匿名
anonymous_enable=YES
启用匿名访问
anon_umask=022
匿名用户所上传文件的权限掩码
anon_root=/var/ftp
匿名用户的FTP根目录
anon_upload_enable=YES
允许上传文件
anon_mkdir_write_enable=YES
允许创建目录
anon_other_write_enable=YES
开放其他写入权
anon_max_rate=0
限制最大传输速率,单位为字节
本地用户
local_enable=YES
是否启用本地系统用户
local_umask=022
本地用户所上传文件的权限掩码
local_root=/var/ftp
设置本地用户的FTP根目录
chroot_local_user=YES
是否将用户禁锢在主目录
local_max_rate=0
限制最大传输速率(字节/秒)
全局配置
listen=YES
是否以独立运行的方式监听服务
listen_address=192.168.4.1
设置监听的IP地址
listen_port=21
设置监听FTP服务的端口号
write_enable=YES
是否启用写入权限
download_enable =YES
是否允许下载文件
dirmessage_enable=YES
用户切换进入目录时示.message文件(如果存在)的内容
xferlog_enable=YES
启用xferlog日志,默认记录到/var/log/xferlog文件
xferlog_std_format=YES
启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式
connect_from_port_20=YES
允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES
允许被动模式连接
pasv_max_port=24600

设置用于被动模式的服务器最大端口号

pasv_min_port=24500
设置用于被动模式的服务器最小端口号
pam_service_name=vsftpd
设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名)

userlist_enable=YES

是否启用user_list用户列表文件

userlist_deny=YES

是否禁止user_list列表文件中的用户帐号

max_clients=0

最多允许多少个客户端同时连接(0为无限制)

max_per_ip=0

对来自相同IP地址的客户端,最多允许多少个并发连接(0为无限制)。

tcp_wrappers=YES

是否启用TCP_Wrappers主机访问控制(TCP Wrappers的应用将在后续课程中讲解)


四、建立匿名FTP

(1)修改vsftpd.conf配置文件,开放匿名访问,上传许可

#cd /etc/vsftpd
#vim vsftpd.conf
anonymous_enable=YES
       local_enable=YES
       write_enable=YES
       local_umask=022
       dirmessage_enable=YES
       xferlog_enable=YES
       connect_from_port_20=YES
       xferlog_std_format=YES
       listen=YES
       pam_service_name=vsftpd
       userlist_enable=YES
       tcp_wrappers=YES

anon_umask=022         //设置匿名用户上传建立文件时的权限掩码

anon_upload_enable=YES          //允许匿名上传文件

anon_mkdir_write_enable=YES    //允许匿名用户创建目录

(2)重启服务
       #service   vsftpd restart
       #chkconfig vsftpd on

五、本地用户 FTP

(1) 创建本地用户

#useradd tom

(2) 修改vsftpd.conf开放本地用户

#vim /etc/vsftpd.conf

anonymous_enable=NO    //若不需要启用匿名访问,可将些设为NO

local_enable=YES      //允许本地用户访问

       write_enable=YES
       local_umask=022
       dirmessage_enable=YES
       xferlog_enable=YES
       connect_from_port_20=YES
       xferlog_std_format=YES
       listen=YES
       pam_service_name=vsftpd
       userlist_enable=YES
       tcp_wrappers=YES

chroot_local_user=YES //为安全起见,将用户禁锢于其宿主目录

local_max_rate=102400 //本地用户下载上传限速为100K/s

(3) 结合user_list文件设置公允许本地用户tom 访问vsftpd服务器
 #vim /etc/vsftpd/user_list
  tom                          // 添加此行,并清空其他内容
 #vim /etc/vsftpd/vsftpd.conf

userlist_enable=YES           //添加以下两行并重启服务

userlist_deny=NO

六、 建立虚拟用户的vsftpd服务器

   vsftpd 服务的虚拟用户数据库是使用的Berkeley DB 格式的数据文件。
需要使用db_load命令工具,安装db4-utils-4.3.29-10.el5.i386.rpm
(1)首先建立文本格式的用户名密码列表

       #vim /etc/vsftpd/user_login.list

       mike
       123
       john
       456
       #db_load –T -t hash -f user_login.list user_login.db
       #chmod 600 user_login.*     // 降低文件权限提高安全
(2)建立FTP访问的根目录及虚拟用户对应的系统账号

       #useradd –d /var/ftproot –s/sbin/nologin laye //建立映射账号

       #chmod 755 /var/ftproot    //更改FTP根目录权限

(3) 建立PAM认证文件
       #cp -p /etc/pam.d/vsftpd /etc/pam.d/vsftpd.vu
       #vim   /etc/pam.d/vsftpd.vu

auth requiredpam_userdb.so db=/etc/vsftpd/user_login

account   required   pam_userdb.so  db=/etc/vsftpd/user_login

(4)   修改vsftpd.conf 配置文件,添加虚拟用户支持
       anonymous_enable=NO

local_enable=YES       //使用虚拟用户需要启用本地用户

       write_enable=YES

anon_umask=022         //设置虚拟用户上传建立文件时的权限掩码

       dirmessage_enable=YES
       xferlog_enable=YES
       connect_from_port_20=YES
       xferlog_std_format=YES
       listen=YES

pam_service_name=vsftpd.vu    //修改使用的PAM文件位置

       userlist_enable=YES
       tcp_wrappers=YES

guest_enable=YES              //启用用户映射功能

guest_username=laya          //将映射用户指定为laya

(5) 为不同虚拟用户建立独立的配置文件
修改vsftpd.conf主配置文件,添加目录支持

user_config_dir=/etc/vsftpd/vusers_dir

     #mkdir /etc/vsftpd/vusers_dir   //创建用户配置目录

     #cd /etc/vsftpd/vusers_dir

     #vim john                    //为john建立独立配置文件

anon_upload_enable=YES

anon_mkdir_write_enable=YES

     #touch mike        // 为mike建立空配置文件,无额外权限设置

注意:在vsftpd服务中,虚拟用户账户默认作为匿名用户处理以降低权限,因此对应权限设置通常使用以 anon_ 开头的配置项。