安装和配置vsftpd
1. 安装vsftpd和ftp命令
```
yum install -y vsftpd ftp
```
## 2. 配置vsftpd
### 2.1 创建宿主用户
```
useradd ftpuser
```
### 2.2 备份vsftpd.conf文件
```
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
```
### 2.3 修改vsftpd.conf文件
打开配置文件:
```
vim /etc/vsftpd/vsftpd.conf
```
添加以下内容:
```
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to FTP Server
chroot_local_user=YES
ls_recurse_enable=NO
listen=YES
hide_ids=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
allow_writeable_chroot=YES
# 宿主用户
guest_username=ftpuser
virtual_use_local_privs=YES
# 个人vsftp文件存放目录
user_config_dir=/etc/vsftpd/vconf
```
> **注意:**
>
> - 宿主用户要改为自己创建的用户。
> - `user_config_dir` 是个人vsftp文件存放的目录,可以自定义。
### 2.4 虚拟用户配置
1. 创建虚拟用户配置文件存放路径
```
mkdir /etc/vsftpd/vconf
```
2. 创建虚拟用户家路径
```
mkdir /home/vft
```
3. 赋予宿主用户权限
```
chown ftpuser:ftpuser /home/vftp
```
4. 建立 **单个虚拟用户** 配置文件
**==myftp1 是自定义的虚拟用户名字==**
```
vim /etc/vsftpd/vconf/myftp1
```
```
local_root=/home/ftp
#指定虚拟用户的具体主路径,可更改
anonymous_enable=NO
#设定不允许匿名用户访问
write_enable=YES
#设定允许写操作
local_umask=022
#设定上传文件权限掩码
anon_upload_enable=NO
#设定不允许匿名用户上传
anon_mkdir_write_enable=NO
#设定不允许匿名用户建立目录
idle_session_timeout=600
#设定空闲连接超时时间
data_connection_timeout=120
#设定单次连续传输最大时间
max_clients=10
#设定并发客户端访问个数
max_per_ip=5
#设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件
local_max_rate=50000
#设定该用户的最大传输速率,单位b/s
```
5. 复制 修改文件名为第二个虚拟用户的名字
```
cp /etc/vsftpd/vconf/myftp1 /etc/vsftpd/vconf/myftp2
```
## 3 配置黑名单
1. 在vsftpd.conf中修改userlist_enable = YES
```
vim /etc/vsftpd/vsftpd.conf
```
```
userlist_enable=YES
```
> 本文中已修改
2. 在黑名单中添加用户名字 **myftp2**
```
vim /etc/vsftpd/user_list
```
添加并保存
## 4 测试
+ 重启服务
```
systemctl restart vsftpd
```
+ 测试黑名单
```
ftp localhost
```

+ 创建

## 5 遇到的错误
> **500 OOPS: vsftpd: refusing to run with writable root inside chroot()**
在vsftpd.conf中把 allow_writeable_chroot打开 (本文配置中已打开)
```
allow_writeable_chroot=YES
```
> **550 create directory operation failed**
关闭SELinux
```
vim /etc/selinux/config
```
将 SELINUX=XXX -->XXX 代表级别
改为:
```
SELINUX=disabled
```
## 6 参考文章
[vsftpd——虚拟用户配置 - 少力 - 博客园 (cnblogs.com)](https://www.cnblogs.com/UG9527/p/11409703.html)