安装vsftpd
yum install -y vsftpd
关闭防火墙
setenforce 0 && systemctl stop firewalld
关闭selinux 和防火墙
修改配置文件 /etc/vsftpd/vsftpd.conf
\cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back && cat > /etc/vsftpd/vsftpd.conf<< EOF
anonymous_enable=NO
local_enable=YES
chroot_list_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/vuser_conf
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
pasv_promiscuous=YES
EOF
配置解释
anonymous_enable=NO #设定不允许匿名访问
local_enable=YES #设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
chroot_list_enable=NO #使用户不能离开主目录
ascii_upload_enable=YES
ascii_download_enable=YES #设定支持ASCII模式的上传和下载功能
pam_service_name=vsftpd #PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
guest_enable=YES #设定启用虚拟用户功能
guest_username=ftp #指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
user_config_dir=/etc/vsftpd/vuser_conf #设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名
pasv_enable=YES #开启PASV模式
pasv_min_port=40000 #最小端口号
pasv_max_port=50000 #最大端口号
pasv_promiscuous=YES
创建用户和密码
创建 用户密码文件,奇数行是用户名,偶数行是密码
cat >> /etc/vsftpd/vuser_passwd << EOF
test
123456
EOF
生成虚拟用户认证的 db 文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
修改 /etc/pam.d/vsftpd
cat > /etc/pam.d/vsftpd << EOF
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
EOF
创建虚拟用户的配置文件夹
mkdir /etc/vsftpd/vuser_conf
创建虚拟用户的配置文件(配置名需与虚拟用户名保持一致)
cat > /etc/vsftpd/vuser_conf/test << EOF
local_root=/var/ftp/pub
write_enable=YES
anon_umask=002
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF
修改 /var/ftp/pub 目录的用户属主
chown ftp:ftp /var/ftp/pub
启动vsftpd
systemctl restart vsftpd
登录ftp 若是报错
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
追加配置 echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vuser_conf/test