ubuntu22.04中vsftp的安装

在 Ubuntu 22.04 中设置 FTP 服务可以通过安装和配置 vsftpd(Very Secure FTP Daemon)来实现。以下是详细的分步指南:

1. 安装 vsftpd
打开终端,更新软件包列表并安装 vsftpd:

sudo apt update
sudo apt install vsftpd


2. 配置 vsftpd
(1) 备份默认配置文件

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup


(2) 编辑配置文件

sudo nano /etc/vsftpd.conf


(3) 修改配置参数
根据需求调整以下参数(示例为基本安全配置):

# 允许本地用户登录
local_enable=YES
write_enable=YES
local_umask=022

# 禁止匿名登录(如需要匿名登录,设置为 YES)
anonymous_enable=NO

# 限制用户访问其主目录(重要!)
chroot_local_user=YES
allow_writeable_chroot=YES

# 日志记录
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

# 被动模式配置(可选,用于防火墙环境)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000

# 其他安全设置
ssl_enable=NO  # 如需启用 SSL/TLS 设置为 YES
require_ssl_reuse=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO


(4) 保存并退出编辑器
按 Ctrl+O 保存,Ctrl+X 退出。

3. 创建 FTP 用户
(1) 创建专用用户(可选)

sudo adduser ftpuser


按提示设置密码和用户信息。

(2) 限制用户访问权限
如果启用了 chroot_local_user=YES,需确保用户主目录不可写:

sudo chmod a-w /home/ftpuser


(3) 创建用户专用目录(可选)

sudo mkdir /home/ftpuser/ftp
sudo chown ftpuser:ftpuser /home/ftpuser/ftp


4. 调整防火墙(UFW)
如果启用了 UFW 防火墙,开放 FTP 相关端口:

 

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp  # 被动模式端口范围
sudo ufw reload


5. 重启 vsftpd 服务

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd  # 设置开机自启


6. 测试 FTP 服务
(1) 命令行测试
使用 ftp 客户端连接:

 

ftp localhost

 

输入用户名和密码(如 ftpuser 及其密码)。

(2) 使用 FTP 客户端
使用 FileZilla、WinSCP 等工具连接:

地址: 服务器 IP 或域名

端口: 21

协议: FTP

登录类型: 普通(输入用户名和密码)

7. 高级配置(可选)
(1) 启用 SSL/TLS
生成 SSL 证书:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt


修改 vsftpd.conf:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key


(2) 限制用户列表
创建用户列表文件:

 

sudo nano /etc/vsftpd.userlist


添加允许或禁止的用户名(每行一个)。

修改 vsftpd.conf:

ini
复制

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO  # 仅允许列表中的用户


8. 常见问题解决
(1) 连接超时或拒绝
检查防火墙规则:sudo ufw status

确认 vsftpd 运行状态:sudo systemctl status vsftpd

(2) 用户无法上传文件
确保目录权限:sudo chmod 755 /home/ftpuser/ftp

检查 write_enable=YES 是否启用。

(3) 日志查看
bash
复制

sudo tail -f /var/log/vsftpd.log


总结
通过上述步骤,您可以在 Ubuntu 22.04 上快速搭建一个安全的 FTP 服务器。建议根据实际需求调整配置(如匿名访问、SSL 加密等),并始终优先考虑使用更安全的协议(如 SFTP 或 FTPS)。

 

troubleshooting:

如果你使用 usermod -s /usr/sbin/nologin ftpuser 禁止ftpuser登录shell 你就会看到如下错误

/home/ftpuser/ftp# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:somebody): ftpuser
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp> exit

原因:

大多数 FTP 服务(如 vsftpd/proftpd)要求用户具有有效的 Shell(如 /bin/bash 或 /bin/false),否则会直接拒绝登录。

解决的办法:

确保/etc/shells中有/bin/false 

root@somemachine:/home/somebody# cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/bin/false
usermod -s /bin/false ftpuser

在基本的ftp中,没有办法支持多级目录的创建,也就是不支持mkdir -p data/test/store , 需要一级一级创建,但是你可以安装lftp,这个支持很多高阶功能,除了可以创建多层目录,还可以断点续传

posted on 2025-04-22 16:50  emalovecode  阅读(381)  评论(0)    收藏  举报