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,这个支持很多高阶功能,除了可以创建多层目录,还可以断点续传

浙公网安备 33010602011771号