当前位置: 首页 > 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"

http://www.xdnf.cn/news/601525.html

相关文章:

  • 【ARM/RISCV 嵌入式 编译系列 16 -- GCC 进制优化编译的常用方法】
  • echarts实现项目进度甘特图
  • 甘特图实例 dhtmlxGantt.js
  • 第六章 进阶12 周报的妙用
  • OverLoCK:先概览,再聚焦。CVPR2025全新主干网络
  • 打卡Day33
  • 300. 最长递增子序列【 力扣(LeetCode) 】
  • android13 禁止用户修改指定APP运行时权限
  • 前端vue2-完全前端生成pdf->pdf-lib,html2canvas+jspdf,原生打印,三种方式(打印带有echarts图的pdf)
  • 【论文精读】2023 AAAI--FastRealVSR现实世界视频超分辨率(RealWorld VSR)
  • 学习黑客TTryHackMe — Tcpdump基础 | 网络安全入门(THM)
  • 【AS32X601驱动系列教程】SMU_系统时钟详解
  • Flume的大概简单介绍
  • 微信小程序:列表项上同样的css样式在IOS上字体大小不一样
  • 原创|查询大数据级数据表的AI实现思路(Excel2SQL,Text2SQL)
  • POI模板生成EXCEL 64000 style in a .xlsx Workbook
  • 数字信号处理大实验2 利用FFT估计信号的频率
  • QML与C++联合编程
  • OpenSSL详解
  • 【数据架构06】可信数据空间架构篇
  • MySQL 8.0 OCP 1Z0-908 题目解析(13)
  • MySQL 8.0 OCP 英文题库解析(八)
  • MySQL 8.0 OCP 1Z0-908 题目解析(12)
  • debian搭建ceph记录(接入libvirt)
  • 打破双亲委派模型的实践:JDBC与Tomcat的深度解析
  • RISC-V 开发板 MUSE Pi Pro OpenCV结合Gstreamer实时显示CSI摄像头
  • 03 基于 java udp 做一个dns服务器 和 一个dns代理服务器
  • Android Raspberry 请求 api 失败 iOS 请求成功【ssl 证书配置问题】
  • Android计算机网络学习总结
  • 【KWDB 创作者计划】_玩转数据库——纯硬核的工业级KWDB数据库产品评测报告(附测试代码)