发布于 

centos7安装配置vsftp虚拟用户登录

安装vsftp

yum安装

#查询仓库里的安装包
yum list | grep vsftp
#安装
yum install vsftpd.x86_64

rpm安装

#上传安装包到当前目录
#安装
rpm -ivh  vsftpd-3.0.2-28.el7.x86_64.rpm

修改配置文件

1、修改/etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
connect_from_port_20=YES
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
ascii_upload_enable=YES
ascii_download_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES
chroot_list_enable=YES
allow_writeable_chroot=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf
# 开启被动模式
pasv_enable=YES
#指定被动监听本机IP
pasv_address=192.168.18.141
# 被动模式最小端口
pasv_min_port=6000
# 被动模式最大端口
pasv_max_port=7000

2、创建虚拟用户配置文件存放的目录,这个目录是vsftpd.conf配置文件中的参数user_config_dir=/etc/vsftpd/vconf定义的

mkdir -p /etc/vsftpd/vconf

3、创建保存 虚拟用户 的文件

touch /etc/vsftpd/vusers

4、写入虚拟用户账号密码,奇数行账号,偶数行密码

echo "test" >> /etc/vsftpd/vusers
echo "123456" >> /etc/vsftpd/vusers

5、生成虚拟用户数据库加密文件

db_load -T -t hash -f /etc/vsftpd/vusers /etc/vsftpd/vusers.db

6、备份vsftpd的pam认证文件”/etc/pam.d/vsftpd”

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

7、修改vsftpd的pam认证文件”/etc/pam.d/vsftpd”

首先删除/etc/pam.d/vsftpd的所有内容,然后添加以下内容到这个文件中

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

8、创建虚拟用户的配置文件,每个虚拟用户的配置文件可以不同,每个虚拟用户的配置文件是个独立的文件,
配置文件新建到vsftpd.conf的配置文件中的参数user_config_dir=/etc/vsftpd/vconf定义的目录中,这个目录在第3步已经创建
各个虚拟用户的配置文件名称,必须设置得和虚拟用户数据库中的虚拟用户名相同,例:在虚拟用户的数据库文件中定义了user1这个用户,那么在/etc/vsftpd/vconf/这个目录中,就必须定义1个user1这个用户
配置文件的格式

cat  /etc/vsftpd/vconf/test 
local_root=/srv/vsftp/test
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5

9、创建虚拟用户的ftp上传目录 ,这个目录是由第9步的配置文件中的参数 local_root=/srv/vsftp/test定义的,参考示例配置

mkdir -p /srv/vsftp/test

10、修改虚拟用户的ftp上传目录权限, 这个用户是由vsftpd.conf配置文件的参数 guest_username=ftp 定义的

chown -R ftp.root /srv/vsftp/test

11、创建文件vsftpd.conf配置文件中参数 chroot_list_file=/etc/vsftpd/vsftpd.chroot_list 定义的文件,
这个参数和chroot_local_user=YES,chroot_list_enable=YES这2个参数配合使用,表示如果在chroot_list_file参数中未定义任何用户,就没有任何用户能切换到ftp的上级目录

touch /etc/vsftpd/vsftpd.chroot_list

重启服务

systemctl restart vsftpd