vsftpd部署
# 安装vsftpd
yum install vsftpd -y
1
# 默认配置介绍
grep -vE "^#|^$" /etc/vsftpd/vsftpd.conf
# 这个选项禁止匿名用户登录。默认情况下是 NO,即禁止匿名访问
anonymous_enable=NO
# 允许本地用户使用他们的系统账户登录 FTP 服务器。如果设置为 NO,则只有匿名用户和虚拟用户可以登录。
local_enable=YES
# 禁止任何写操作,包括上传、删除、修改文件等操作。默认情况下是 NO,如果需要允许用户进行写操作,必须将此选项设置为 YES
write_enable=YES
# 定义本地用户上传文件时的权限掩码,默认值 022 会为文件设置权限为 755
local_umask=022
# 当用户进入目录时显示包含消息的文件,通常是 .message 文件。
dirmessage_enable=YES
# 启用传输日志,所有的上传和下载操作都会记录在日志文件中,日志路径可以通过 xferlog_file 进行配置。
xferlog_enable=YES
# 禁止本地用户访问文件系统的根目录。设置为 YES 后,本地用户会被限制在自己的主目录中,无法访问其他系统文件。
connect_from_port_20=YES
# 定义是否以标准格式记录传输日志
xferlog_std_format=YES
# 控制 vsftpd 是否作为独立的服务监听 IPv4 连接,如果设置为 NO,vsftpd 将不会独立监听 IPv4 网络接口
listen=NO
#控制 vsftpd 是否作为独立的服务监听 IPv6 连接。如果设置为 YES,vsftpd 将独立监听 IPv6 网络接口,而不依赖于 inetd 或 xinetd
listen_ipv6=YES
# 该选项指定了 PAM(Pluggable Authentication Module)服务名称,用于认证 FTP 用户
pam_service_name=vsftpd
# 启用用户列表功能,阻止用户登录。通过 userlist_file 指定用户列表文件的路径。
userlist_enable=YES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 匿名用户配置操作
功能:可以查看,删除文件夹,创建文件夹,修改文件夹
# 这个选项禁止匿名用户登录。默认情况下是 NO,即禁止匿名访问
anonymous_enable=YES
#允许匿名用户上传文件并可以创建目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
1
2
3
4
5
6
2
3
4
5
6
授权 chown ftp.ftp /var/ftp/pub/
注意,默认匿名用户家目录的权限是755,这个权限是不能改变的。切记!
# 系统用户操作
#使用家目录创建
useradd -s /sbin/nologin team1
useradd -s /sbin/nologin team2
指定目录创建
useradd team2 -d /data/ftp -s /sbin/nologin
#centos执行
echo "123456" | passwd --stdin team1
echo "123456" | passwd --stdin team2
#debian执行
cho "ftpuser:123456" | sudo chpasswd
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
配置文件
anonymous_enable=NO:禁止匿名用户登录
local_enable=YES:允许本地用户登录
local_root=/var/www/html:设置本地用户的根目录为/var/www/html
chroot_list_enable=YES:激chroot 功能
chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名
allow_writeable_chroot=YES :允许锁定的用户有写的权限
#被动模式端口范围:如果使用被动模式,需要在防火墙中开放被动模式端口。你可以在 vsftpd 配置中指定被动模式端口范围:
pasv_min_port=40000
pasv_max_port=50000
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 建立/etc/vsftpd/chroot_list 文件,添加team1 和team2 帐号
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
team1
team2
ll -d /var/www/html/
drwxr-xrwx. 2 root root 4096 Oct 9 2018 /var/www/html/
vim /etc/pam.d/vsftpd
#注释掉以下这一行:
#auth required pam_shells.so
#重启vsftpd 服务使配置生效
systemctl restart vsftpd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 配置vsftpd,使用SSL证书加密数据传输
FTP与HTTP一样缺省状态都是基于明文传输,希望FTP服务器端与客户端传输保证安全,可以为FTP配置SSL
使用OpenSSL生成自签证书
openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem -days 3560
1
mkdir .sslkey
cp vsftpd.pem .sslkey/
chmod 400 .sslkey/vsftpd.pem
vi /etc/vsftpd/vsftpd.conf
#ssl
ssl_enable=YES
allow_anon_ssl=NO
force_local_logins_ssl=YES
force_local_data_ssl=YES
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/.sslkey/vsftpd.pem
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 配置白名单
只允许白名单用户访问:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
1
2
3
2
3
然后将 ftpuser
添加到 /etc/vsftpd.userlist
:
echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist
1
# debian 12部署配置记录
vsftpd.conf
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
local_root=/data/ftp/version_manager
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
allow_writeable_chroot=YES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
=======
# docker compose部署vsftp
#docker-compose.yaml
version: '3.9'
services:
vsftp:
image: fauria/vsftpd
container_name: version_manager_vsftp
environment:
FTP_USER: team01
FTP_PASS: Team01RT
PASV_ADDRESS: 192.168.153.134
PASV_MIN_PORT: 21100
PASV_MAX_PORT: 21110
volumes:
- ./ftp_data:/home/vsftpd
ports:
- "21:21"
- "21100-21110:21100-21110"
networks:
- app-network
restart: unless-stopped
networks:
app-network:
driver: bridge
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 给容器中的vsftp增加用户
docker exec -it version_manager_vsftp bash
mkdir -p /home/vsftpd/school
echo -e "school\nSchool" >> /etc/vsftpd/virtual_users.txt
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
exit
docker restart version_manager_vsftp
1
2
3
4
5
6
2
3
4
5
6


上次更新: 2025/07/22, 11:07:56