首先下载并安装vsftp
yum install vsftp
修改配置文件
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO # 不允许匿名访问,禁用匿名登录
chroot_local_user=YES # 启用限定用户在其主目录下
use_localtime=YES # 使用本地时(自行添加)
chroot_list_enable=YES
local_enable=YES # 允许使用本地帐户进行FTP用户登录验证
allow_writeable_chroot=YES # 如果启用了限定用户在其主目录下需要添加这个配置,解决报错 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
xferlog_enable=YES # 启用上传和下载的日志功能,默认开启。
local_umask=022 # 设置本地用户默认文件掩码022
# FTP上本地的文件权限,默认是077,不过vsftpd安装后的配置文件里默认是022
listen_port=21
idle_session_timeout=300
data_connection_timeout=120 # 数据连接超时时间
guest_enable=YES # 设定启用虚拟用户功能
guest_username=ftpuser # 指定虚拟用户的宿主用户 ftpuser(就是我们后面会新建这个用户)
# guest_username=www
# 如果ftp目录是指向网站根目录,用来上传网站程序,
# 可以指定虚拟用户的宿主用户为nginx运行账户www,可以避免很多权限设置问题
user_config_dir=/etc/vsftpd/vuser_conf # 虚拟用户配置文件目录
virtual_use_local_privs=YES # NO时,虚拟用户和匿名用户有相同的权限,默认是NO
pasv_min_port=10060 # 被动模式最小端口号10060
pasv_max_port=10090 # 被动模式最大端口号10090
accept_timeout=5
connect_timeout=1
关闭防火墙
systemctl stop firewalld
关闭SELinux
vi /etc/selinux/config
# SELINUX=enforcing
# 注释掉
# SELINUXTYPE=targeted
# 注释掉
SELINUX=disabled
# 增加
:wq! #保存退出
setenforce 0
创建宿主用户
useradd ftpuser -d /home/vsftpd -s /bin/false
chown ftpuser:ftpuser /home/vsftpd -R
建立虚拟用户文件
touch /etc/vsftpd/vuser_passwd
vi /etc/vsftpd/vuser_passwd
test #用户名
12121212 #密码
生成虚拟用户数据文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db
创建虚拟用户配置
mkdir /etc/vsftpd/vuser_conf
cd /etc/vsftpd/vuser_conf
vi test
local_root=/home/vsftpd/test # 用户 hss 配置目录,这个地方不一样
write_enable=YES # 允许本地用户对FTP服务器文件具有写权限
anon_world_readable_only=NO
anon_upload_enable=YES # 允许匿名用户上传文件(须将全局的write_enable=YES,默认YES)
anon_mkdir_write_enable=YES # 允许匿名用户创建目录
anon_other_write_enable=YES # 允许匿名用户删除和重命名权限(自行添加)
创建用户目录
mkdir -p /home/vsftpd/test
修改pam.d认证
vi /etc/pam.d/vsftpd
注释掉原来的auth和account
增加下面2行
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
启动vsftpd服务
systemctl start vsftpd