首先安装Vsftpd,本文以Yum方式安装,当然也可以源码方式编译安装Vsftpd,感觉没那个必要。
yum -y install vsftpd
备份默认配置文件
cd /etc/vsftpd
cp vsftpd.conf vsftpd.conf.back
vim vsftpd.conf
添加如下配置:
listen=YES
hide_ids=YES
tcp_wrappers=NO
dirmessage_enable=NO
utf8_filesystem=YES
use_localtime=YES
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/run/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/run/log/vsftpd.log
log_ftp_protocol=YES
#pam认证配置/etc/pam.d/vsftpd_db
pam_service_name=vsftpd_db
#处理ftp读写任务的vsftpd子进程运行用户
nopriv_user=www-data
#开启被动模式
pasv_enable=YES
pasv_min_port=65400
pasv_max_port=65410
#ubuntu使用本地用户shell为/usr/sbin/nologin时要将/usr/sbin/nologin添加到/etc/shells
#或去除/etc/pam.d/vsftpd内auth required pam_shells.so
local_umask=022
local_enable=YES
write_enable=YES
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
userlist_enable=YES
userlist_deny=NO
#可登录的本地用户或虚拟用户列表
userlist_file=/etc/vsftpd/allow_user
#非匿名用户使用宿主用户
guest_enable=YES
#读写文件宿主用户
guest_username=www-data
#虚拟用户使用宿主用户权限
virtual_use_local_privs=YES
local_root=/webdav/
#user_sub_token=$USER
#local_root=/webdav/$USER
#虚拟用户配置文件目录,如user1配置文件/etc/vsftpd/vusers/user1
#user_config_dir=/etc/gfw/vsftpd/vusers
#如同时开启local和userlist_enable白名单,要将anonymous用户添加进去,不然不能匿名登录
anonymous_enable=YES
no_anon_password=YES
#匿名访问目录
anon_root=/mnt/
#匿名用户上传/删除/重命名权限
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_umask=022
虚拟用户密码使用db5格式:
apt install db-util
cat >> /etc/vsftpd/user.txt << EOF
testuser
password
EOF
db_load -T -t hash -f user.txt user.db
cat >> /etc/pam.d/vsftpd_db << EOF
#注意user文件不带后缀.db,不然会提示找不到文件
auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_userdb.so db=/etc/vsftpd/user
session required pam_loginuid.so
EOF
使用htpasswd验证密码:
#使用openssl生成密码:echo 123456|openssl passwd -6 -in -
apt install htpasswd libpam-pwdfile
htpasswd -b -d /etc/gfw/vsftpd/user.htpasswd testuser password
cat >> /etc/pam.d/vsftpd_db << EOF
auth required pam_pwdfile.so pwdfile /etc/vsftpd/user.htpasswd
account required pam_permit.so
EOF
如有开启iptalbes防火墙,放行Vsftpd端口:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 65400:65410 -j ACCEPT
启动Vsftpd,配置为开机自启动。
/etc/init.d/vsftpd start
chkconfig vsftpd on
添加用户:
adduser test -s /sbin/nologin -d /home/test
passwd test
标签:centos, linux, ftp, vsftp, linux安装配置vsftpd服务器