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
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...