一、安装ftp服务
yum install -y vsftp # 安装虚拟用户数据库 yum -y install libdb-utils
二、增加一个系统用户‘virftp’ ,所有虚拟用户都会映射到此用户后对文件系统进行读写操作
#添加用户,用户登录时使用nologin useradd -s /sbin/nologin virftp #设置用户密码 passwd virftp
三、配置vsftp主配置文件
#备份vsftpd主配置文件 cp /etc/vsftpd/vsftpd.conf{,.bak} #查看过滤配置文件注释后内容 grep -v "#" /etc/vsftpd/vsftpd.conf vim /etc/vsftpd/vsftpd.conf #禁止匿名用户登录 anonymous_enable=NO #允许本地用户登录 local_enable=YES #启用虚拟账户 guest_enable=YES #把虚拟账户映射到系统账户virftp guest_username=virftp #使用虚拟用户验证(PAM验证) pam_service_name=vsftpd #设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为它的配置文件) user_config_dir=/etc/vsftpd/vsftpd_viruser #启用chroot时,虚拟用户根目录允许写入 allow_writeable_chroot=YES
#被动模式,文件传输端口的最大最小范围 pasv_min_port=30000 pasv_max_port=35000
四、配置vsftpd pam验证文件
#备份 cp /etc/pam.d/vsftpd{,.bak} #将auth及account的所有配置行均注释掉,再添加如下两行 vim /etc/pam.d/vsftpd auth required pam_userdb.so db=/etc/vsftpd/vir_user account required pam_userdb.so db=/etc/vsftpd/vir_user
五、配置虚拟用户访问vsftpd服务
#创建虚拟用户密码文件(奇数行为帐号,偶数行为密码) vim /etc/vsftpd/vir_user test01 pwd_test01 test02 pwd_test02
六、配置虚拟用户各自的配置文件
#创建‘虚拟用户配置文件’的存放目录 mkdir /etc/vsftpd/vsftpd_viruser/ #创建和配置虚拟用户各自的配置文件(文件名称是‘虚拟用户名’) vim /etc/vsftpd/vsftpd_viruser/test01 # 允许写入 write_enable=YES #允许浏览FTP目录和下载 anon_world_readable_only=NO #禁止用户下载 #download_enable=NO # 允许虚拟用户上传文件 anon_upload_enable=YES # 允许虚拟用户创建目录 anon_mkdir_write_enable=YES # 允许虚拟用户执行其他操作(如改名、删除) anon_other_write_enable=YES # 上传文件的掩码,如022时,上传目录权限为755,文件权限为644 anon_umask=022 # 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录,即登录ftp后访问的根目录) local_root=/home/virftp/test01
七、生成虚拟用户数据库
db_load -T -t hash -f /etc/vsftpd/vir_user /etc/vsftpd/vir_user.db chmod 700 /etc/vsftpd/vir_user.db
八、创建虚拟用户的根目录,要保证虚拟用户映射的系统用户,对这个根目录有读写权限
#创建虚拟用户对应根目录 mkdir -p /home/virftp/test01 #修改目录权限 chown -R virftp.virftp /home/virftp/test01
九、重启服务
systemctl restart vsftpd #开放端口 firewall-cmd --zone=public --add-port=21/tcp --permanent firewall-cmd --zone=public --add-port=30000-35000/tcp --permanent firewall-cmd --reload
注:若添加新虚拟用户,创建用户对应根目录文件夹、在/etc/vsftpd/vsftpd_viruser/目录下创建用户名为文件名的配置文件,/etc/vsftpd/vir_user文件中添加帐号密码
#再执行 db_load -T -t hash -f /etc/vsftpd/vir_user /etc/vsftpd/vir_user.db #重启服务 systemctl restart vsftpd
#被动模式,文件传输端口的最大最小范围pasv_min_port=30000pasv_max_port=35000