4.3.5 vsftpd应用案例
案例1:虚拟账户FTP,满足大量账户的访问需求
vsftpd虚拟账户的数据需要保存在Berkeley DB格式的数据文件中,所以需要安装db4_utils工具来创建这样的数据文件,具体步骤如下。
(1)创建虚拟用户数据库
首先需要创建明文密码文件,明文文件奇数行为用户名,偶数行为密码。然后使用db_load工具将其转换为数据库文件,db_load工具需要通过安装db4-utils软件获得,最后可以通过修改文件权限以增强数据资料的安全性。
[root@instructor ~]# yum -y install db4-utils
[root@instructor ~]# vim /etc/vsftpd/vlogin
tomcat
123456
jerry
123456
[root@instructor ~]# db_load -T -t hash -f /etc/vsftpd/vlogin /etc/vsftpd/vlogin.db
[root@instructor ~]# chmod 600 /etc/vsftpd/{vlogin,vlogin.db}
(2)创建PAM文件,设置基于虚拟账户验证
Linux一般通过PAM文件设置账户的验证机制,然后通过创建新的PAM文件,使用新的数据文件进行登录验证,PAM文件中的db选项于指定并验证账户和密码的数据库文件,数据库文件无需.db的名称后缀。注意,因为本环境使用的是CentOS6.4 64位操作系统,所以验证模块调用的是lib64目录下文件。
[root@instructor ~]# vim /etc/pam.d/vsftpd.pam
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin
(3)设置虚拟账户目录共享
因为所有的虚拟账户最终都需要映射到一个真实的系统用户,所以这里需要添加一个系统账户并设置家目录,为了进行测试,这里复制一份测试文件。
[root@instructor ~]# useradd -s /sbin/nologin -d /home/ftp virtual
[root@instructor ~]# cp /etc/RedHat-release /home/ftp/
(4)修改主配置文件
与配置本地账户FTP一样,我们需要修改vsftpd的主配置文件,使用guest_enable选项开启虚拟账户功能,所有的虚拟账户都将被映射为guest_username指定的一个系统真实账户。如果需要对虚拟账户进行权限设置,使用与匿名账户一样的设置项即可,如anon_mkdir_write_enable=NO,就可以控制虚拟账户无法创建目录。
[root@instructor ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.pam
user_config_dir=/etc/vsftpd_user_conf
user_sub_token=$USER
(5)为每个用户设置独立的共享路径
通过在主配置文件中使用user_config_dir选项,设置一个基于账户的配置目录,在该目录下,可以创建若干个与账户名称同名的文件,并在文件中为此账户设置独立的配置选项,包括权限与共享路径等设置,这样就可以为每个账户做单独的权限设置等操作。本例仅以tomcat为例,其他账户参考模板文件即可。当然,如果你还需要对权限、限速、并发量等选项进行设置,可以参考匿名账户的设置选项添加至账户独立的配置文件中。
[root@instructor ~]# mkdir /etc/vsftpd_user_conf
[root@instructor ~]# mkdir /home/ftp/tomcat
[root@instructor ~]# vim /etc/vsftpd_user_conf/tomcat
local_root=/home/ftp/$USER