Vsftp搭建FTP服务器

环境配置

  • Centos 7
  • VM虚拟机
  • root

搭建过程

安装vsftp

1
yum install vsftpd

关闭vsftp防火墙

1
2
systemctl stop firewalld
setenforce 0

创建共享目录

1
2
mkdir -p /var/class/test1
mkdir -p /var/class/test2

添加vsftp系统账号

1
2
useradd -s /sbin/nologin vftp

用的是虚拟账号,这里是vsftp实际的实体账号

设置目录权限

1
2
# 每次添加新用户或者添加文件夹,执行一遍,改变属主和属组
chown -R vftp:vftp /var/class

配置虚拟账号密码

1
vim /etc/vsftpd/logins.txt 
1
2
3
4
5
6
# 单行账户,双行密码
test1
123456
test2
123456

针对配置的虚拟账号密码生成数据库文件

1
2
3
# 生成对应的数据库,修改了logins.txt就得重新生成
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/login.db
chmod 600 /etc/vsftpd/login.db

配置PAM模块

1
2
3
4
# 配置PAM模块
vim /etc/pam.d/ftp
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login

配置vsftpd的默认配置

1
vim /etc/vsftpd/vsftpd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=NO
chown_uploads=NO
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ls_recurse_enable=NO
tcp_wrappers=YES
virtual_use_local_privs=YES
guest_enable=YES
guest_username=vftp
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40010
anon_world_readable_only=NO
user_config_dir=/etc/vsftpd/user_conf

配置各用户的权限配置信息

1
mkdir /etc/vsftpd/user_conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建虚拟用户配置文件,文件名对应虚拟账户,其他虚拟用户copy这份改改就行
vim /etc/vsftpd/user_conf/test1
anonymous_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=200
max_per_ip=100
local_max_rate=50000
cmds_denied=DELE,RMD,RNFR,RNTO # 禁止删除,删除目录,重命名
local_root=/var/class/test1 # 虚拟用户路径

重启VSFTPD服务

1
systemctl restart vsftpd

问题

  1. 文件名为单数汉字是会乱码,怀疑是GBK流转UTF8流出现的问题,暂时想不到解决办法