在Ubuntu上快速创建FTP服务器,推荐使用vsftpd(Very Secure FTP Daemon)。以下是完整步骤:
1. 安装vsftpd
sudo apt update
sudo apt install vsftpd
2. 配置vsftpd
备份原始配置
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
编辑配置文件
sudo vim /etc/vsftpd.conf
配置内容
# 基本设置
listen=YES
listen_ipv6=NO
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
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd# 用户限制
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO# 日志设置
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES# 端口范围
pasv_min_port=40000
pasv_max_port=50000# 根目录限制
local_root=/srv/ftp/shared
3. 创建FTP目录和设置权限
# 创建共享目录
sudo mkdir -p /srv/ftp/shared# 设置目录权限
sudo chown nobody:nogroup /srv/ftp/shared
sudo chmod 755 /srv/ftp/shared# 创建上传目录(普通用户可上传)
sudo mkdir -p /srv/ftp/shared/upload
sudo chown ftp:ftp /srv/ftp/shared/upload
sudo chmod 755 /srv/ftp/shared/upload
4. 创建用户
创建普通用户组和用户
# 创建用户组
sudo groupadd ftpusers# 创建普通FTP用户(无删除权限)
sudo useradd -g ftpusers -d /srv/ftp/shared -s /bin/bash ftpuser1
sudo passwd ftpuser1sudo useradd -g ftpusers -d /srv/ftp/shared -s /bin/bash ftpuser2
sudo passwd ftpuser2
创建特殊用户(有删除权限)
# 创建特殊用户组
sudo groupadd ftpadmin# 创建管理员用户
sudo useradd -g ftpadmin -d /srv/ftp/shared -s /bin/bash ftpadmin
sudo passwd ftpadmin
5. 配置用户权限
创建用户列表文件
sudo vim /etc/vsftpd.user_list
添加允许登录的用户:
ftpuser1
ftpuser2
ftpadmin
设置目录权限控制删除功能
# 设置共享目录权限,禁止普通用户删除
sudo chown ftpadmin:ftpadmin /srv/ftp/shared
sudo chmod 755 /srv/ftp/shared# 上传目录设置为粘滞位,防止用户删除他人文件
sudo chown ftpadmin:ftpusers /srv/ftp/shared/upload
sudo chmod 3755 /srv/ftp/shared/upload # 粘滞位,只有文件所有者和ftpadmin可以删除
6. 配置PAM认证
sudo vim /etc/pam.d/vsftpd
确保包含以下行:
auth required pam_shells.so
7. 启动服务
# 重启vsftpd服务
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd# 检查服务状态
sudo systemctl status vsftpd
8. 配置防火墙(如果需要)
# 开放FTP端口
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw reload
9. 测试FTP连接
在局域网内其他机器测试
# 安装ftp客户端
sudo apt install ftp# 连接测试
ftp 192.168.1.100 # 替换为你的Ubuntu服务器IP
10. 高级配置(可选)
创建更精细的权限控制脚本
sudo vim /usr/local/bin/ftp_permission_check.sh
#!/bin/bash
# FTP权限检查脚本USER=$1
OPERATION=$2
FILE=$3if [ "$OPERATION" == "delete" ]; then# 只有ftpadmin用户可以删除文件if [ "$USER" != "ftpadmin" ]; thenecho "Permission denied: Only admin can delete files"exit 1fi
fiexit 0
验证功能
测试普通用户权限
# 以普通用户登录
ftp 192.168.1.100
# 用户名: ftpuser1
# 尝试删除文件 - 应该失败
测试管理员权限
# 以管理员登录
ftp 192.168.1.100
# 用户名: ftpadmin
# 尝试删除文件 - 应该成功
故障排除
查看日志
sudo tail -f /var/log/vsftpd.log
检查连接
# 检查端口监听
sudo netstat -tlnp | grep vsftpd# 测试本地连接
ftp localhost
快速部署脚本
如果你想要一键部署,可以创建脚本:
#!/bin/bash
# ftp_setup.shecho "开始部署FTP服务器..."# 安装vsftpd
sudo apt update && sudo apt install -y vsftpd# 创建目录结构
sudo mkdir -p /srv/ftp/shared/upload# 配置权限
sudo chown nobody:nogroup /srv/ftp/shared
sudo chmod 755 /srv/ftp/shared
sudo chown ftpadmin:ftpusers /srv/ftp/shared/upload
sudo chmod 3755 /srv/ftp/shared/upload# 创建用户
sudo groupadd ftpusers
sudo groupadd ftpadmin
sudo useradd -g ftpusers -d /srv/ftp/shared -s /bin/bash ftpuser1
echo "ftpuser1:password123" | sudo chpasswd
sudo useradd -g ftpadmin -d /srv/ftp/shared -s /bin/bash ftpadmin
echo "ftpadmin:admin123" | sudo chpasswd# 配置用户列表
echo -e "ftpuser1\nftpadmin" | sudo tee /etc/vsftpd.user_listecho "FTP服务器部署完成!"
这样你就建立了一个满足所有需求的FTP服务器:
-
✅ 局域网用户可连接
-
✅ 所有用户可上传下载
-
✅ 普通用户不能删除文件
-
✅ 特定管理员用户可以删除文件