我的系统是centos6.5 64位
目的是用虚拟用户访问ftp,传输文件。不同用户限定在自己的目录。下面开始配置:
一、安装vsftpd和db4-utils
#yum -y install vsftpd #vsftpd软件
#yum -y install db4-utils #生成虚拟用户认证数据文件命令
二、配置vsftpd
#vim /etc/vsftpd/vsftpd.conf
listen_port=21 #端口
listen=YES #独立运行vsftpd
anonymous_enable=NO #限制匿名用户登录
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_list_enable=YES #限制虚拟用户切换目录
chroot_list_file=/etc/vsftpd/chroot_list #限制切换目录的用户列表
chroot_local_user=YES
guest_enable=YES #开启虚拟用户认证
guest_username=nobody #映射的真实用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf #虚拟用户配置目录
pam_service_name=vsftpd #vsftpd认证的pam认证模块
local_enable=YES
pasv_min_port=9981 #在混杂模式下的最小端口
pasv_max_port=9990 #在混杂模式下的最大端口
anon_umask=011
pasv_promiscuous=YES #工作在混杂模式
三、生成虚拟用户口令认证文件
#cd /etc/vsftpd
#vim user.txt
xiake #用户名
000000 #密码
:wq #保存退出
#db_load -T -t hash -f user.txt /etc/vsftpd/vsftpd_login.db
#chmod 600 /etc/vsftpd/vsftpd_login.db
配置pam认证
#vim /etc/pam.d/vsftpd
把里面默认的都注释掉,添加以下两行内容
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
:wq #保存退出
#vim /etc/vsftpd/chroot_list #限制虚拟用户切换目录
ftp
xiake
:wq #保存退出
四、建立本地映射用户并设置宿主目录权限(实际上面配置文件里面我设置的映射的真实用户是nobody,系统已经存在。所以这里不用建立了。如果大家是别的用户没有的话就要按照下面的步骤操作。)
所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。
#useradd –d /home/vftpsite –s /sbin/nologin vftpuser
#chmod 700 /home/vftpsite
五、.配置各个虚拟用户自己的配置文件
#cd /etc/vsftpd/vsftpd_user_conf
#vim xiake
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vftpsite (这里我的实际目录不是这个,大家根据实际情况设置)
:wq 保存退出
六、启动vsftpd
#/etc/init.d/vsftpd restart
配置过程中遇到的问题
1.启动后台连接报错vsftpd 530 login incorrect
解决:因为用的是centos 64位的系统所以那个配置pam认证的#vim /etc/pam.d/vsftpd的时候里面的lib要写成lib64。如果不是这个问题查看配置文件中是否这项pam_service_name=vsftpd没加进去
2.配置文件里面的配置的那个混杂模式是公司的线路有几条所以我设定了端口范围。如果大家没这种情况就把那几项设置去掉。