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/$USER

allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/user_conf
user_sub_token=$USER
local_root=/data/ftp/$USER

pasv_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 ]; then
    echo "错误: 此脚本必须使用 sudo 或以 root 用户运行" >&2
    exit 1
fi

# 检查 vsftpd 是否安装
if ! dpkg -l | grep -q vsftpd; then
    echo "错误: vsftpd 未安装,请先安装 vsftpd" >&2
    exit 1
fi

# 输入用户名
read -p "请输入要创建的 FTP 用户名: " username

# 更可靠的用户存在检查
if getent passwd "$username" >/dev/null 2>&1; then
    echo "错误: 用户 $username 已存在" >&2
    exit 1
fi

# 输入密码
read -p "请输入 $username 的密码: " -s password
echo
read -p "再次确认密码: " -s password_confirm
echo

if [ "$password" != "$password_confirm" ]; then
    echo "错误: 两次输入的密码不匹配" >&2
    exit 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 "错误: 设置密码失败" >&2
    userdel "$username"
    exit 1
}

# 创建用户特定配置
mkdir -p /etc/vsftpd/user_conf
echo "write_enable=YES" > "/etc/vsftpd/user_conf/$username"

# 重启服务
systemctl restart vsftpd

echo "FTP 用户 $username 创建成功!"
echo "主目录: /data/ftp/$username"
echo "登录方式: ftp://$username@服务器IP"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值