在 Ubuntu 22.04 手动搭建 vsftpd 服务器

2025-02-16

1. 安装 vsftpd 软件包

1
2
sudo apt update
sudo apt install vsftpd -y

2. 备份原始配置文件

1
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

3. 配置 vsftpd

修改主配置文件

1
sudo nano /etc/vsftpd.conf

保留以下核心参数(其他参数注释或删除):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
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
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
user_sub_token=$USER
local_root=/var/ftp/$USER
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

4. 创建专用用户

创建 FTP 用户组

1
sudo groupadd ftpusers

添加用户并设置目录

1
2
3
4
sudo useradd -m -g ftpusers -d /var/ftp/testuser -s /bin/ testuser
sudo chmod 750 /var/ftp/testuser
sudo echo "testuser" | sudo tee -a /etc/vsftpd.userlist
sudo passwd testuser

5. 调整目录权限

1
2
3
sudo mkdir -p /var/ftp
sudo chown root:root /var/ftp
sudo chmod 755 /var/ftp

6. 重启服务

1
2
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

7. 防火墙配置

1
2
3
4
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw reload

8. 客户端测试

1
2
ftp 192.168.1.10  # 替换为服务器IP
# 输入用户名密码测试上传/下载

注意事项

  1. 将示例 IP 192.168.1.10 替换为实际服务器地址
  2. 用户 testuser 需按实际需求创建
  3. 被动模式端口范围 40000-50000 需与防火墙规则匹配
  4. 日志查看命令:tail -f /var/log/vsftpd.log
  5. 重要文件权限要求:
    • /etc/vsftpd.userlist 应属于 root:root
    • 用户家目录权限不可超过 750