vsftp
安装
yum install vsftpd
创建虚拟用户
# 创建用户目录
mkdir /home/ftpuser
# 添加匿名用户
useradd -s /sbin/nologin ftpuser
主配置文件
配置文件:/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
write_enable=YES
chroot_local_user=YES
chroot_list_enable=NO
use_localtime=YES
local_enable=YES
allow_writeable_chroot=YES
xferlog_enable=YES
local_umask=022
pam_service_name=vsftpd
listen_port=21
idle_session_timeout=120
data_connection_timeout=120
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/conf.d
virtual_use_local_privs=YES
chroot_list_file=/etc/vsftpd/chroot_list
accept_timeout=60
connect_timeout=60
dirmessage_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES
pasv_min_port=49000
pasv_max_port=50000 # 服务器安全组或防火墙需要对外开通TCP出口
虚拟账号
配置文件
# 创建子用户根目录,并赋予ftp用户ftp属组
mkdir -p /home/wwwroot/user1 && chown -R ftpuser:ftp /home/wwwroot/user1
# 创建自配置文件目录
mkdir /etc/vsftpd/vuser
touch /etc/vsftpd/vuser/user1
vim /etc/vsftpd/vuser/user1
local_root=/home/wwwroot/user1
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
建立虚拟账号数据库文件
# 一行账号
# 一行密码
# 一行账号
# 一行密码
# ...
vim /etc/vsftpd/chroot_list.txt
user1
pass1
把生成命令文件写到脚本,方便下次添加用户
#!/bin/sh
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/chroot_list.db
chmod 600 /etc/vsftpd/chroot_list.db
建立支持虚拟用户的PAM认证文件
配置文件:/etc/pam.d/vsftpd
#%PAM-1.0
# session optional pam_keyinit.so force revoke
# auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
# auth required pam_shells.so
# auth include password-auth
# account include password-auth
# session required pam_loginuid.so
# session include password-auth
auth required pam_userdb.so db=/etc/vsftpd/chroot_list
account required pam_userdb.so db=/etc/vsftpd/chroot_list
开放端口
服务器安全组或防火墙需要对外开通 80、[49000-50000]的端口