当前位置: 首页 > news >正文

Ubuntu 24-部署FTP和自定义用户

目录

一、 安装 vsftpd

二、创建 FTP 数据目录

三、创建 FTP 用户

四、配置 vsftpd

五、重启 vsftpd 服务

六、增加新用户脚本


一、 安装 vsftpd

sudo apt update
sudo apt install vsftpd -y

二、创建 FTP 数据目录

sudo mkdir -p /data/ftp
sudo chown nobody:nogroup /data/ftp
sudo chmod a-w /data/ftp

三、创建 FTP 用户

# 创建用户 test
sudo useradd --home /data/ftp/test --shell /bin/bash test
sudo mkdir -p /data/ftp/test
sudo chown test:test /data/ftp/test
sudo chmod 750 /data/ftp/test
echo "test:test" | sudo chpasswd

四、配置 vsftpd

sudo vim /etc/vsftpd.conf

使用以下配置:

listen=NO
listen_ipv6=YES
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
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
allow_writeable_chroot=YES
user_sub_token=$USER
local_root=/data/ftp/$USERallow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/user_conf
user_sub_token=$USER
local_root=/data/ftp/$USERpasv_enable=YES
pasv_min_port=10000
pasv_max_port=10100

五、重启 vsftpd 服务

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

六、增加新用户脚本

#!/bin/bash# FTP 用户添加脚本
# 使用方法: sudo ./add_ftp_user.sh# 检查是否以 root 运行
if [ "$(id -u)" -ne 0 ]; thenecho "错误: 此脚本必须使用 sudo 或以 root 用户运行" >&2exit 1
fi# 检查 vsftpd 是否安装
if ! dpkg -l | grep -q vsftpd; thenecho "错误: vsftpd 未安装,请先安装 vsftpd" >&2exit 1
fi# 输入用户名
read -p "请输入要创建的 FTP 用户名: " username# 更可靠的用户存在检查
if getent passwd "$username" >/dev/null 2>&1; thenecho "错误: 用户 $username 已存在" >&2exit 1
fi# 输入密码
read -p "请输入 $username 的密码: " -s password
echo
read -p "再次确认密码: " -s password_confirm
echoif [ "$password" != "$password_confirm" ]; thenecho "错误: 两次输入的密码不匹配" >&2exit 1
fi# 创建用户和目录
echo "正在创建用户 $username ..."
useradd --home-dir "/data/ftp/$username" --shell /bin/bash --create-home "$username"# 设置目录权限
mkdir -p "/data/ftp/$username"
chown "$username:$username" "/data/ftp/$username"
chmod 750 "/data/ftp/$username"# 设置密码
echo "$username:$password" | chpasswd || {echo "错误: 设置密码失败" >&2userdel "$username"exit 1
}# 创建用户特定配置
mkdir -p /etc/vsftpd/user_conf
echo "write_enable=YES" > "/etc/vsftpd/user_conf/$username"# 重启服务
systemctl restart vsftpdecho "FTP 用户 $username 创建成功!"
echo "主目录: /data/ftp/$username"
echo "登录方式: ftp://$username@服务器IP"

相关文章:

  • 【JavaScript篇】对象武林:构造函数创世录与实例江湖风云
  • 根据YOLO数据集标签计算检测框内目标面积占比(YOLO7-10都适用)
  • 马里兰大学飞行模拟和控制实验室突破性XR研究
  • 基于51单片机和8X8点阵屏、独立按键的飞行躲闪类小游戏
  • python学习day2:运算符+优先级
  • 《Medical SAM适配器:将分割一切模型适配于医学图像分割》|文献速递-深度学习医疗AI最新文献
  • 2025 最新 Redis 面试题大全
  • 海拔案例分享-实践活动报名测评小程序
  • STM32+腾讯物联网平台OTA升级详细教程
  • STM32 TIM 定时器深度剖析:结构、时基、中断与应用开发(超形象详解)
  • 20250523在荣品的PRO-RK3566开发板的Android13下解决千兆网异常的问题【硬件部分】
  • InonoDB(一)
  • threadPool.submit() 和 threadPool.execute()的区别
  • 2008年EJOR SCI2区,连续蚁群优化算法ACOR,深度解析+性能实测
  • 主成分分析基本概念及python代码使用
  • Flask框架
  • 智能体与大模型的区别联系
  • 卷积神经网络(CNN)可视化技术详解:从特征学到演化分析
  • 《P3375 【模板】KMP》
  • 深度学习笔记24-LSTM火灾预测(Ptorch)
  • 济南企业网站搭建/企业建站用什么好
  • 网站建设销售销售流程/百度关键词统计
  • 网站开发外包价格/百度查询关键词排名工具
  • 黄色网站模板/外包网站
  • 网站开发建设合同范本/steam交易链接在哪里
  • 做网站手机端不做PC可以吗/网络广告的概念