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.pswp.cn/bicheng/82679.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82679.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82679.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL問題:什么是MySQL的中的最左匹配原則?

是指在復合索引中,查詢條件需要按照索引列的順序從最左側列開始依次匹配。只有查詢條件中的列按照索引的最左邊列開始進行匹配,索引才能被有效使用,但有時雖然不是正常順序,由于MySQL中存在優化器,會自動調整順序&…

2025軟考軟件設計師題目

選擇題(綜合題) 確定得分的 1、Linux外設目錄是什么 /dev。存儲磁盤的目錄 2、Linux外設sdc類型設備屬于什么 scsi hard disk。根據第一個字母s盲猜的 3、計算機中讓程序計數器PC不能指向當前運行程序的技術是 流水線。根據流水線的原理 4、Python程…

Deep Evidential Regression

摘要 翻譯: 確定性神經網絡(NNs)正日益部署在安全關鍵領域,其中校準良好、魯棒且高效的不確定性度量至關重要。本文提出一種新穎方法,用于訓練非貝葉斯神經網絡以同時估計連續目標值及其關聯證據,從而學習…

每天掌握一個Linux命令 - sqlite3

Linux 命令工具 sqlite3 使用指南 一、工具概述 sqlite3 是 SQLite 數據庫的命令行工具,用于在 Linux 系統中直接操作 SQLite 數據庫(輕量級、無服務器、嵌入式關系型數據庫)。 核心特點: 無需安裝數據庫服務,直接通…

leetcode:2160. 拆分數位后四位數字的最小和(python3解法,數學相關算法題)

難度:簡單 給你一個四位 正 整數 num 。請你使用 num 中的 數位 ,將 num 拆成兩個新的整數 new1 和 new2 。new1 和 new2 中可以有 前導 0 ,且 num 中 所有 數位都必須使用。 比方說,給你 num 2932 ,你擁有的數位包括…

Python打卡第38天

浙大疏錦行 作業: 了解下cifar數據集,嘗試獲取其中一張圖片 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加載數據的工具 from torchvision im…

AI 數據采集實戰指南:基于 Bright Data 快速獲取招標訊息

AI 數據采集實戰指南:基于Bright Data快速獲取招標訊息 在招標行業中,快速、準確地獲取招標公告、項目詳情、投標截止日期和其他關鍵招標信息,是投標企業提高競標成功率的核心競爭力。然而,招標信息往往分散在不同的平臺和網頁&a…

TCP 三次握手,第一次握手報文丟失會發生什么?

文章目錄 RTO(Retransmission Timeout)注意 客戶端想與服務端建立 TCP 連接時,先發送 SYN 報文,在這之后,如果客戶端遲遲收不到服務端的 SYNACK 報文,就會觸發「超時重傳」機制,重新發送 SYN 報文,而且重傳…

【DeepSeek論文精讀】12. DeepSeek-Prover-V2: 通過強化學習實現子目標分解的形式化數學推理

歡迎關注[【AIGC論文精讀】](https://blog.csdn.net/youcans/category_12321605.html)原創作品 【DeepSeek論文精讀】1. 從 DeepSeek LLM 到 DeepSeek R1 【DeepSeek論文精讀】10. DeepSeek-Coder-V2: 突破閉源模型在代碼智能領域的障礙 【DeepSeek論文精讀】12. De…

第十一節:第一部分:正則表達式:應用案例、爬取信息、搜索替換

正則表達式介紹 String提供的正則表達式的方法的書寫規則 正則表達式總結 正則表達式作用: 作用三:搜索替換 案例分析及代碼(圖片解析) 代碼: 代碼一:校驗手機號和郵箱格式是否正確 package com.itheima.…

視頻監控匯聚平臺EasyCVR工業與安全監控:防爆攝像機的安全應用與注意事項

石油、化工、煤礦等行業存在易燃易爆氣體、粉塵,普通監控設備易因電火花、高溫引發爆炸火災。隨著工業規模擴大,安全生產監控需求激增,防爆攝像機成為保障安全的關鍵。加之國家法規與行業標準對危險環境監控設備要求嚴格,規范其應…

重學計算機網絡之命令整理

配置權限相關 1.用戶執行模式:查看網絡設備狀態信息 2.特權執行模式:查看和修改網絡設備的狀態和控制信息 3.全局配置模式:對整個網絡設備進行全局性參數配置 4.接口配置模式:對網絡設備的接口進行配置 enable #進入特權執行模式…

數據結構與算法Day3:緒論第三節抽象數據類型、算法及其描述

各位親愛的讀者,大家好!今天博主給大家帶來的內容是C語言數據結構與算法當中抽象數據類型、算法及其分析的相關知識。 一.抽象數據類型 抽象數據類型:指的是用戶進行軟件系統設計時從問題的數據模型中抽象出來的邏輯數據結構和邏輯數據結構上…

ABC 350

E. Toward 0 從大規模向小規模,用記憶化搜索,只需要分好類,有哪幾種搜法。 期望實際上就是把每一種情況的答案答案都算出來,然后取個平均值 ,并不困難。 f ( i ) [ f ( i / 6 ) f ( i / 5 ) f ( i / 4 ) f ( i / 3…

多相電機驅動控制學習(1)——基于雙dq坐標系的六相/雙三相PMSM驅動控制

1.引言 最近想學習一下多相電機。想從相對簡單的開始吧,先學一個基于雙dq的六相/雙三相PMSM驅動控制(考慮中性點隔離以及不隔離的情況,即考慮是否有零序電流回路),后面有時間再學學基于VSD的六相/雙三相PMSM驅動控制。…

筆記: 在WPF中ContentElement 和 UIElement 的主要區別

一、目的:簡要姐掃在WPF中ContentElement 和 UIElement 的主要區別 ContentElement 和 UIElement 是 WPF 中的兩個基類,它們在功能和用途上有顯著的區別。 二、主要區別 ContentElement 主要特點: ? 沒有視覺表示: ContentElement 本身不直接渲染任…

Android-Glide學習總結

Glide三級緩存? 面試官 我看你簡歷里提到熟悉 Glide,能聊聊它的緩存機制嗎?比如加載圖片的時候,Glide 是怎么決定從內存還是磁盤讀取的? ?你? 哦,Glide 的緩存機制是吧?嗯,這個我之前在做項…

安卓證書的申請(保姆級圖文)

目錄 確認安裝了對應版本的jdk生成證書文件1. -genkey2. -alias test_certalias3. -keyalg RSA4. -keysize 20485. -validity 365006. -keystore test_cert.keystore 查看證書內容總結 歡迎關注 『發現你走遠了』 博客,持續更新中 歡迎關注 『發現你走遠了』 博客&a…

Unity性能優化

SetPass calls表示在當前攝像機的渲染過程中,Unity切換著色器通道(Shader Pass)來渲染游戲對象的次數。一個著色器(Shader)可以包含多個著色器通道,每個著色器通道可以通過不同的方式來渲染游戲對象。但每次…

Python+AI Agent:解鎖MCP Servers的智能潛力

💝💝💝歡迎蒞臨我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:「storms…