Centos 7.5 搭建FTP配置虛擬用戶

来源:https://www.cnblogs.com/joe-four/archive/2020/02/24/joefour_linux_ftp.html
-Advertisement-
Play Games

Centos 7.5 搭建FTP配置虛擬用戶 1.安裝vsftpd #vsftpd下載地址 http://mirror.centos.org/centos/7/os/x86_64/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm #安裝vsftpd rpm -ivh v ...


Centos 7.5 搭建FTP配置虛擬用戶

1.安裝vsftpd

#vsftpd下載地址

http://mirror.centos.org/centos/7/os/x86_64/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm

#安裝vsftpd

rpm  -ivh vsftpd-3.0.2-25.el7.x86_64.rpm

 

2.創建vsftpd系統用戶

#建立Vsftpd服務的宿主用戶

useradd vsftpd -M -s  /sbin/nologin

#建立Vsftpd虛擬宿主用戶

useradd virftpuser -M -s /sbin/nologin –d /var/ftp/

 

3.配置vsftpd

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsfftpd.conf.bak

#新建vsftpd.conf

vim  /etc/vsftpd/vsftpd.conf

內容如下:

anonymous_enable=NO

#設成YES,允許匿名用戶登陸

local_enable=YES

#允許/禁止本地用戶登陸 註意:主要是為虛擬宿主用戶,如果該項目設定為NO那麼所有虛擬用戶將無法訪問。

write_enable=YES

#設定可以進行寫操作。

local_umask=022

#設定上傳後文件的許可權掩碼,文件644,文件夾755

dirmessage_enable=YES

#設定開啟目錄標語功能

xferlog_enable=YES

#設定開啟日誌記錄功能。

connect_from_port_20=YES

#設定埠20進行數據連接

xferlog_std_format=YES

#設定日誌使用標準的記錄格式

listen=YES

#開啟獨立進程vsftpd,不使用超級進程xinetd。設定該Vsftpd服務工作在StandAlone模式下。

pam_service_name=vsftpd

#設定,啟用pam認證,並指定認證文件名/etc/pam.d/vsftpd

userlist_enable=YES

#設定userlist_file中的用戶將不得使用FTP

tcp_wrappers=YES

#設定支持TCP Wrappers

chroot_local_user=YES

#限制所有用戶在主目錄

#限制所有用戶在主目錄

#以下這些是關於Vsftpd虛擬用戶支持的重要配置項目。預設Vsftpd.conf中不包含這些設定項目,需要自己手動添加配置

guest_enable=YES

#設定啟用虛擬用戶功能

guest_username=virftpuser

#指定虛擬用戶的宿主用戶

virtual_use_local_privs=YES

#設定虛擬用戶的許可權符合他們的宿主用戶

user_config_dir=/etc/vsftpd/vconf

#設定虛擬用戶個人Vsftp的配置文件存放路徑。也就是說,這個被指定的目錄里,將存放每個Vsftp虛擬用戶個性的配置文件,

#一個需要註意的地方就是這些配置文件名必須和虛擬用戶名相同。

 

 

#建立Vsftpd的日誌文件,修改屬主為vsftpd服務用戶

touch /var/log/vsftpd.log
chown vsftpd.vsftpd /var/log/vsftpd.log

 

4.虛擬用戶配置

#創建虛擬用戶配置文件存放路徑

mkdir –pv /etc/vsftpd/vconf/

#製作虛擬用戶資料庫文件

vim /etc/vsftpd/virtusers

#編輯虛擬用戶名單文件virtusers,在其中加入用戶的用戶名和口令信息。格式:“奇數行用戶名,偶數行口令”。

virtusers文件格式如下:

test       #用戶名

test1234   #用戶密碼

test1          #用戶名

test1234    #用戶密碼

#生成虛擬用戶數據文件:

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
#添加用戶需添加至virtusers文件,然後重新執行上述命令。

5. 設置認證文件PAM

#備份配置文件
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
#編輯Vsftpd的PAM驗證配置文件,把原來的配置文件全部註釋掉(不註釋掉虛擬用戶會登錄不上),添加如下行
auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers

#以上兩條是手動添加的,內容是對虛擬用戶的安全和帳戶許可權進行驗證。

這裡的auth是指對用戶的用戶名口令進行驗證。

這裡的accout是指對用戶的帳戶有哪些許可權哪些限制進行驗證。

其後的sufficient表示充分條件,也就是說,一旦在這裡通過了驗證,那麼也就不用經過下麵剩下的驗證步驟了。相反,如果沒有通過的話,也不會被系統立即擋之門外,因為sufficient的失敗不決定整個驗證的失敗,意味著用戶還必須將經歷剩下來的驗證審核。

再後面的/lib/security/pam_userdb.so表示該條審核將調用pam_userdb.so這個庫函數進行。

最後的db=/etc/vsftpd/virtusers則指定了驗證庫函數將到這個指定的資料庫中調用數據進行驗證。

---------------------------------------------------------------------------------
vim /etc/pam.d/vsftpd
#%PAM-1.0
auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     password-auth
#account    include     password-auth
#session    required     pam_loginuid.so
#session    include     password-auth
 
 

6.虛擬用戶配置

#虛擬用戶許可權介紹
例,分別創建admin web download upload 4個賬戶,
許可權分配如下:
admin  #管理員賬戶,虛擬用戶具有寫許可權(上傳、下載、刪除、重命名),新建目錄

 

web   #web網站文件傳輸賬戶, 和admin管理員許可權相同,由於web頁面的特殊性,故單獨設置上傳文件許可權為755

 

download  #下載賬戶,只能瀏覽目錄和下載

 

upload     #上傳賬戶,只能新建目錄和上傳、下載

 

#各虛擬用戶配置文件如下:

#admin

local_root=/home/ftp           #虛擬用戶根目錄

anon_world_readable_only=NO   #開放下載許可權

write_enable=YES               #寫許可權

anon_mkdir_write_enable=YES    #新建目錄許可權

anon_upload_enable=YES        #上傳許可權

anon_other_write_enable=YES    #刪除/重命名的許可權

 

#web

local_root=/var/www             #虛擬用戶根目錄

anon_world_readable_only=NO   #開放下載許可權

anon_umask=022    #umask =022時,新建的目錄許可權是755(777-022),文件的許可權是 644,

#umask =077時,新建的目錄許可權是700,文件的許可權時 600

write_enable=YES (寫許可權)
anon_mkdir_write_enable=YES (新建目錄許可權)
anon_upload_enable=YES(上傳許可權)
anon_other_write_enable=YES(刪除/重命名的許可權)

 

#download

local_root=/home/ftp             #虛擬用戶根目錄

anon_world_readable_only=NO   #開放下載許可權, 寫YES,將不能列出文件和目錄

anon_mkdir_write_enable=NO    #這句可以不寫,不寫同樣不能新建文件夾

 

#upload

local_root=/home/ftp              #虛擬用戶根目錄

virtual_use_local_privs=NO        #虛擬用戶和匿名用戶有相同的許可權,預設是NO;與本地用戶許可權相同是YES

anon_world_readable_only=NO    #開放下載許可權,寫成YES,將不能列出文件和目錄

write_enable=YES                #寫許可權

anon_upload_enable=YES         #上傳許可權

 

#創建虛擬用戶根目錄,這裡我使用預設目錄 /var/ftp/pub/

#屬主修改為虛擬宿主用戶virftpuser

chown –R virftpuser:virftpuser  /vat/ftp/pub/

#在虛擬用戶配置文件目錄創建虛擬用戶對應配置文件,文件名與虛擬用戶名一致

vim   /etc/vsftpd/vconf/username          #配置文件內容根據需求自行配置。

 

 

 

7.firewall和SElinux設置

#如無特殊要求可直接關閉firewall和SElinux

 

firewall-cmd --list-services                    #查看防火牆允許的服務。

firewall-cmd --add-service=ftp --permanent     #永久開放ftp服務

firewall-cmd --add-port=20/tcp –permanent     

firewall-cmd --add-port=21/tcp --permanent     #開放埠,允許外網訪問

firewall-cmd –reload                         #重新載入配置

setsebool ftpd_full_access 1                  #selinux設置

setsebool tftp_home_dir 1

 

8.啟動服務,測試

systemctl start vsftpd                         #啟動vsftpd

systemctl enable vsftpd                       #添加服務至開機啟動

 

#測試需安裝ftp軟體

ftp

>open 127.0.0.1

 

9. vsftpd單用戶多目錄的配置

#可讀寫掛載

mount --bind /home/test1/ /data/www/virtual/test1/

#只讀掛載

mount –bind –o ro /home/test2/ /data/www/virtual/test2/

 

#mount --bind連接的兩個目錄的inode號碼並不一樣,只是目標目錄的block被屏蔽掉,inode被重定向到原目錄的inode (目標目錄的inode和block依然沒變,就是說目標目錄只是隱藏不是刪除,數據都沒有改變,只是訪問不到了)

#兩個目錄的對應關係存在於記憶體里,一旦重啟掛載關係就不存在了,所以我們想要伺服器重啟之後還有效的話就需要寫到/etc/rc.local

或修改fstab文件。

 

#fstab文件格式

# /home/test1/     /data/www/virtual/test1/             xfs     bind    0 0

#/home/test2/     /data/www/virtual/test2/             xfs     bind,ro  0 0

 

 

#修改rc.local

vim /etc/rc.local

#添加如下內容

#可讀寫掛載

mount --bind /home/test1/ /data/www/virtual/test1/

#只讀掛載

mount --bind /home/test2/ /data/www/virtual/test2/

mount -o remount,ro /data/www/virtual/test2/

 

#許可權設置

chmod +x /etc/rc.d

chmod +x /etc/rc.d/rc.local

#設置服務啟動腳本。

cd /usr/lib/systemd/system

vim rc-local.service

註釋掉之前內容,添加以下內容

[Unit]

Description=/etc/rc.d/rc.local Compatibility

ConditionFileIsExecutable=/etc/rc.d/rc.local

After=network.target

 

[Service]

Type=forking

ExecStart=/etc/rc.d/rc.local start

TimeoutSec=0

RemainAfterExit=yes

SysVStartPriority=99

 

[Install]

WantedBy=multi-user.target

 

#啟動服務

systemctl start rc-local

systemctl enable rc-local

 

10.常見問題

1.centos7 550 create directory operation failed

目錄許可權不足,SElinux配置問題

 

2.500 OOPS: vsftpd: refusing to run with writable root inside chroot()

原因

用戶主目錄具有寫許可權,chmod a-w ,去除寫許可權

或在用戶配置文件追加 allow-writeable_chroot=yes,

echo “allow_writeable_chroot=YES” >> /etc/vsftpd/vconf/$username

 

3.開啟了匿名模式,但訪問一直提示輸入用戶及密碼

原因1

參數不對造成,添加anon_umask=022

原因2

根目錄許可權不對

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/8242238.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講行為型設計模式的第十一個模式--解釋器模式,也是面向對象設計模式的最後一個模式。先要說明一下,其實這個模式不是最後一個模 式(按Go ...
  • 1,安裝WinccV7.4並破解: 安裝WinccV7.4SP1. 安裝授權文件---根據提示 安裝免狗驅動,根據提示 安裝SImatic.net v13.2,連接PLC, 首先在同一個區域網裡面,如果是路由器,則可以採用禁用/啟用網路的方法進行讓路由器分配IP地址. 然後在控制面版--->PG..... ...
  • Entity Framework框架提供了幾種開發模式,比如Database First,Model First,Code First。Database First是最老也是應用得最廣泛的一種設計方式。Database First這種方式的設計高度依賴於資料庫中表的結構,根據表及表間的關係來創建模型 ...
  • 首先看 ServiceCollection 的定義 //定義 public class ServiceCollection : IServiceCollection { private readonly List<ServiceDescriptor> _descriptors = new List< ...
  • mssql是.NET的標配,一般使用.NET的人基本都用mssql。 以前mssql只能支持windows平臺,從微軟打出 擁抱開源 的口號開始,mssql的2017 版本,開始支持linux系統。 一開始,我是直接在centos中安裝mssql的,總的來說,比windows快很多。但是現在都使用容 ...
  • 記錄LINQ學習過程。 概要 LINQ是一種“語言集成”的查詢表達式,使用LINQ可以智能提示和進行類型檢查。C#里可以編寫的LINQ查詢有SQL資料庫、XML文檔、ADO.NET數據集、支持IEnumerable和IEnumerable的對象。使用LINQ,可以簡單對數據源進行分組、排序、篩選。有 ...
  • SDK版本v4.0.2目前,RT-Thread Studio還不能夠自定義添加can設備。下麵介紹手動添加過程:使用RT-Thread Studio創建一個簡單工程使用RT-Thread env工具添加CAN設備保存以後,rtconfig.h配置文件會隨之修改拷貝sdk中can樣例到工程中修改stm... ...
  • 802.11幀主要有三種類型: 數據幀(data frame) 數據幀好比802.11中的馱馬,負責在工作站之間搬運數據 控制幀(control frame) 控制幀通常與數據幀搭配使用,負責區域的清空、通道的取得以及載波監聽的維護,並於收到數據時予以肯定確認,藉此提高工作站之間數據傳送的可靠性 管 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...