Linux雲端計算-07_Linux檔案伺服器之vsftpd伺服器
1 vsftpd伺服器企業實戰
檔案傳輸協議(File Transfer Protocol,FTP),基於該協議FTP客戶端與服務端可以實現共享檔案、上傳檔案、下載檔案。 FTP基於TCP協議生成一個虛擬的連線,主要用於控制FTP連線資訊,同時再生成一個單獨的TCP連線用於FTP資料傳輸。使用者可以透過客戶端向FTP伺服器端上傳、下載、刪除檔案,FTP伺服器端可以同時提供給多人共享使用。
FTP服務是Client/Server(簡稱C/S)模式,基於FTP協議實現FTP檔案對外共享及傳輸的軟體稱之為FTP伺服器源端,客戶端程式基於FTP協議,則稱之為FTP客戶端,FTP客戶端可以向FTP伺服器上傳、下載檔案。
1.1 FTP傳輸模式
FTP基於C/S模式,FTP客戶端與伺服器端有兩種傳輸模式,分別是FTP主動模式、FTP被動模式,主被動模式均是以FTP伺服器端為參照。主被動模式如圖(a)、(b)所示,主被動模式詳細區別如下:
-
FTP主動模式:客戶端從一個任意的埠N(N>1024)連線到FTP伺服器的port 21命令埠,客戶端開始監聽埠N+1,併傳送FTP命令“port N+1”到FTP伺服器,FTP伺服器以資料埠(20)連線到客戶端指定的資料埠(N+1)。
-
FTP被動模式:客戶端從一個任意的埠N(N>1024)連線到FTP伺服器的port 21命令埠,客戶端開始監聽埠N+1,客戶端提交 PASV命令,伺服器會開啟一個任意的埠(P >1024),併傳送PORT P命令給客戶端。客戶端發起從本地埠N+1到伺服器的埠P的連線用來傳送資料。
在企業實際環境中,如果FTP客戶端與FTP服務端均開放防火牆,FTP需以主動模式工作,這樣只需要在FTP伺服器端防火牆規則中,開放20、21埠即可。關於防火牆配置後面章節會講解。
圖1-1(a) FTP主動模式
圖1-1(b) FTP被動模式
1.2 vsftpd伺服器安裝配置
vsftpd伺服器端安裝有兩種方法,一是基於YUM方式安裝,而是基於原始碼編譯安裝,最終實現效果完全一致,本文采用yum安裝vsftpd,步驟如下:
1.2.1 yum安裝vsftpd
在命令列執行如下命令
# yum install vsftpd* -y
圖1-2 yum安裝vsftpd
1.2.2 檢查vsftpd安裝後的配置檔案路徑
# rpm -ql vsftpd|more
圖1-3 檢查vsftpd安裝後的配置檔案路徑
1.2.3 啟動vsftpd服務
# systemctl restart vsftpd.service
圖1-4 啟動vsftpd服務
1.2.4 檢視程式是否啟動
# ps -ef |grep vsftpd
圖1-5 檢視vsftp程式
1.2.5 vsftpd.conf預設配置檔案詳解
anonymous_enable=YES 開啟匿名使用者訪問;
local_enable=YES 啟用本地系統使用者訪問;
write_enable=YES 本地系統使用者寫入許可權;
local_umask=022 本地使用者建立檔案及目錄預設許可權掩碼;
dirmessage_enable=YES 列印目錄顯示資訊,通常用於使用者第一次訪問目錄時,資訊提示;
xferlog_enable=YES 啟用上傳/下載日誌記錄;
connect_from_port_20=YES FTP使用20埠進行資料傳輸;
xferlog_std_format=YES 日誌檔案將根據xferlog的標準格式寫入;
listen=NO vsftpd不以獨立的服務啟動,透過xinetd服務管理,建議改成YES;
listen_ipv6=YES 啟用IPV6監聽;
pam_service_name=vsftpd 登入FTP伺服器,依據/etc/pam.d/vsftpd中內容進行認證;
userlist_enable=YES vsftpd.user_list和ftpusers配置檔案裡使用者禁止訪問FTP;
tcp_wrappers=YES 設定vsftpd與tcp wrapper結合進行主機的訪問控制,vsftpd伺服器檢查/etc/hosts.allow 和/etc/hosts.deny中的設定,來決定請求連線的主機,是否允許訪問該FTP伺服器。
1.2.6 透過Windows客戶端資源管理器訪問Vsftp伺服器端
ftp://192.168.1.181
圖1-6 匿名使用者訪問FTP預設目錄
1.2.7 FTP設定為被動模式使用埠方法
FTP主被動模式,預設為主動模式,設定為被動模式使用埠方法如下:
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100
1.3 vsftpd伺服器簡介
目前主流的FTP伺服器軟體包括:vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、 FileZilla Server等軟體,其中Unix/Linux使用較為廣泛的FTP伺服器軟體為vsftpd 。
非常安全的FTP服務程式(Very Secure FTP daemon,vsftpd),vsftpd在Unix/Linux發行版中最主流的FTP伺服器程式,優點小巧輕快,安全易用、穩定高效、滿足企業跨部門、多使用者的使用(1000使用者)等。
vsftpd基於GPL開源協議釋出,在中小企業中得到廣泛的應用,vsftpd可以快速上手,基於vsftpd虛擬使用者方式,訪問驗證更加安全。vsftpd還可以基於MYSQL資料庫做安全驗證,多重安全防護。
1.4 FTP客戶端簡介
windows和Linux系統預設都自帶有ftp命令程式,可以連線到FTP伺服器進行互動式的上傳,下載通訊。除此以外,還有大量的圖形化FTP客戶端工具。
windows中常用FTP客戶端軟體包括CuteFTP、FlashFXP、LeapFTP、Filezilla等。
1.5 vsftpd匿名使用者配置
vsftpd預設以匿名使用者訪問,匿名使用者預設訪問的FTP伺服器路徑為:/var/ftp/pub,匿名使用者只有檢視許可權,無法建立、刪除、修改。如需關閉FTP匿名使用者訪問,需修改配置檔案/etc/vsftpd/vsftpd.conf,將anonymous_enable=YES修改為anonymous_enable=NO,重啟vsftpd服務即可。
1、設定允許匿名使用者能夠上傳、下載、刪除檔案
如果允許匿名使用者能夠上傳、下載、刪除檔案,需在/etc/vsftpd/vsftpd.conf配置檔案中加入如下:
anon_upload_enable=YES 允許匿名使用者上傳檔案;
anon_mkdir_write_enable=YES 允許匿名使用者建立目錄;
匿名使用者完整vsftpd.conf配置檔案如下:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
2、修改目錄許可權
由於預設vsftpd匿名使用者有兩種:anonymous、ftp,所以匿名使用者如果需要上傳檔案、刪除及修改等許可權,需要ftp使用者對/var/ftp/pub目錄有寫入許可權,使用如下chown和chmod任意一種即可,設定命令如下:
方法一:
# chown -R ftp /var/ftp/pub
方法二:
# chmod o+w /var/ftp/pub
圖1-6 (a)更改/var/ftp/pub目錄屬主
圖1-6(b)更改/var/ftp/pub目錄寫入許可權
如上vsftpd.conf配置檔案配置完畢,同時許可權設定完
4、重啟vsftpd服務
# systemctl restart vsftpd.service
5、透過Windows客戶端訪問,能夠上傳檔案、刪除檔案、建立目錄等操作,如圖1-7所示:
圖1-7 匿名使用者訪問上傳檔案
1.6 vsftpd系統使用者配置
vsftpd匿名使用者設定完畢,匿名使用者,任何人都可以檢視FTP伺服器的檔案、目錄,甚至可以修改、刪除,此方案不適合存放私密檔案在FTP伺服器,如何保證檔案或者目錄專屬擁有者呢,vsftpd系統使用者可以實現該需求。
實現vsftpd系統使用者方式驗證,只需在Linux系統中建立多個使用者即可,建立使用者使用useradd,同時給使用者設定密碼,即可透過使用者和密碼登入FTP,進行檔案上傳、下載、刪除等操作。vsftpd系統使用者實現方法步驟如下:
1、Linux系統中建立系統使用者superman1、superman2,分別設定密碼為123456:
# useradd superman1
# useradd superman2
# echo 123456|passwd --stdin superman1
# echo 123456|passwd --stdin superman2
圖1-8 建立使用者並設定密碼
2、修改vsftpd.conf配置檔案如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
3、重啟vsftpd服務
# systemctl restart vsftpd.service
4、透過Windows資源客戶端驗證,使用superman1、superman2使用者登入FTP伺服器,即可上傳檔案、刪除檔案、下載檔案,superman1、superman2系統使用者上傳檔案的家目錄在/home/superman1、/home/superman2下,如圖1-9(a)、1-9(b)所示:
圖1-9(a) superman1使用者登入FTP伺服器
圖1-9(b) superman1登入FTP伺服器上傳檔案
1.7 vsftpd虛擬使用者配置
注意:當允許虛擬使用者登入時,就不能實現實體使用者登入!!兩者不共存!
如果基於vsftpd系統使用者訪問FTP伺服器,系統使用者越多越不利於管理,而且不利於系統安全管理,鑑於此,為了能更加的安全使用vsftpd,需使用vsftpd虛擬使用者方式。
vsftpd虛擬使用者原理:虛擬使用者就是沒有實際的真實系統使用者,而是透過對映到其中一個真實使用者以及設定相應的許可權來實現訪問驗證,虛擬使用者不能登入Linux系統,從而讓系統更加的安全可靠。
vsftpd虛擬使用者企業案例配置步驟如下:
1、安裝vsftpd虛擬使用者需用到的軟體及認證模組;
# yum install pam* libdb-utils libdb* --skip-broken -y
圖1-10 安裝vsftpd虛擬使用者需用到的軟體及認證模組
2、建立虛擬使用者臨時檔案/etc/vsftpd/ftpusers.txt,新建虛擬使用者和密碼,其中superman001、superman002為虛擬使用者名稱,123456為密碼,如果有多個使用者,依次格式填寫即可;
# echo "superman001 123456 superman002 123456" > /etc/vsftpd/ftpusers.txt
圖1-11 建立虛擬使用者臨時檔案
3、生成vsftpd虛擬使用者資料庫認證檔案,設定許可權700;
# db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
# chmod 700 /etc/vsftpd/vsftpd_login.db
圖1-12 生成vsftpd虛擬使用者資料庫認證檔案
4、配置PAM認證檔案,/etc/pam.d/vsftpd檔案配置成如下兩行;
# echo "auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login account required pam_userdb.so db=/etc/vsftpd/vsftpd_login" > /etc/pam.d/vsftpd
圖1-13 配置PAM認證檔案
5、所有vsftpd虛擬使用者需要對映到一個系統使用者,該系統使用者不需要密碼,也不需要登入,主要用於虛擬使用者對映使用,建立命令如下;
# useradd -s /sbin/nologin ftpuser
圖1-14 建立虛擬使用者需要對映到的一個系統使用者
6、完整vsftpd.conf配置檔案如下;
#global config Vsftpd
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES
#config virtual user FTP
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
allow_writeable_chroot=YES
如上vsftpd虛擬使用者配置檔案引數詳解:
#config virtual user FTP
pam_service_name=vsftpd 虛擬使用者啟用pam認證;
guest_enable=YES 啟用虛擬使用者;
guest_username=ftpuser 對映虛擬使用者至系統使用者ftpuser;
user_config_dir=/etc/vsftpd/vsftpd_user_conf 設定虛擬使用者配置檔案所在的目錄;
virtual_use_local_privs=YES 虛擬使用者使用與本地使用者相同的許可權;
allow_writeable_chroot=YES 所有的使用者都將擁有chroot許可權。
7、至此,所有虛擬使用者共同基於/home/ftpuser主目錄實現檔案上傳與下載,可以在/etc/vsftpd/vsftpd_user_conf目錄建立虛擬使用者各自的配置檔案,建立虛擬使用者配置檔案主目錄;
# mkdir -p /etc/vsftpd/vsftpd_user_conf
圖1-15 建立虛擬使用者配置檔案主目錄
8、如下分別為虛擬使用者superman001、superman002使用者建立配置檔案;
為superman001使用者建立配置檔案,同時建立私有的虛擬目錄,配置如下:
# echo "local_root=/home/ftpuser/superman001 write_enable=YES anon_world_readable_only=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES" > /etc/vsftpd/vsftpd_user_conf/superman001
圖1-16 為superman001使用者建立配置檔案,同時建立私有的虛擬目錄
為superman002使用者建立配置檔案,同時建立私有的虛擬目錄,配置如下:
# echo "local_root=/home/ftpuser/superman002 write_enable=YES anon_world_readable_only=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES" > /etc/vsftpd/vsftpd_user_conf/superman002
圖1-17 為superman002使用者建立配置檔案,同時建立私有的虛擬目錄
虛擬使用者配置檔案內容詳解:
local_root=/home/ftpuser/superman002 superman002虛擬使用者配置檔案路徑;
write_enable=YES 允許登陸使用者有寫許可權;
anon_world_readable_only=YES 允許匿名使用者下載,然後讀取檔案;
anon_upload_enable=YES 允許匿名使用者上傳檔案許可權,只有在write_enable=YES時該引數才生效;
anon_mkdir_write_enable=YES 允許匿名使用者建立目錄,只有在write_enable=YES時該引數才生效;
anon_other_write_enable=YES 允許匿名使用者其他許可權,例如刪除、重新命名等。
9、建立虛擬使用者各自虛擬目錄;
# mkdir -p /home/ftpuser/{superman001,superman002}
# chown -R ftpuser:ftpuser /home/ftpuser
圖1-18 建立虛擬使用者各自虛擬目錄
10、重啟vsftpd服務;
# systemctl restart vsftpd.service
圖1-19 啟動vsftpd服務
11、透過Windows客戶端資源管理器登入vsftpd服務端,測試結果如圖1-20(a)、1-20(b)所示:
圖1-20(a) superman001虛擬使用者登入FTP伺服器
圖1-20(b) superman001虛擬使用者上傳下載檔案
歡迎關注我的微信公眾號【 超哥的IT私房菜 】獲取更多技術乾貨!
有什麼吐槽或反饋意見,直接告訴我!
我會解決您說的問題,進一步更好的服務您哦!
溫馨提示:如出現二維碼失效也可直接新增微訊號: ysc13803862469 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/291614/viewspace-2781944/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 千峰Linux雲端計算-徐磊-檔案管理Linux
- Linux伺服器---安裝vsftpdLinux伺服器FTP
- 好程式設計師雲端計算學習路線分享雲端計算之檔案查詢程式設計師
- 「雲網路」VS「雲端計算」- vecloud伺服器Cloud伺服器
- 千鋒Linux雲端計算-檔案許可權管理Linux
- 案例:vsftpd伺服器FTP伺服器
- 伺服器上傳檔案至linux伺服器伺服器Linux
- Linux伺服器---apache配置檔案Linux伺服器Apache
- 雲端計算開發學習路線:Linux檔案時間Linux
- 雲端計算與無伺服器有什麼區別?伺服器
- 雲端計算-伺服器叢集技術的分類伺服器
- 雲端計算面試題:檔案定位路徑面試題
- Linux伺服器上傳檔案傳送檔案Linux伺服器
- 雲端計算和Linux什麼關係?linux雲端計算Linux
- 雲端計算時代 中小企業伺服器選型雜談伺服器
- 雲端計算運維學習---web伺服器和NFS伺服器、資料庫伺服器建立連線運維Web伺服器NFS資料庫
- vsftpd伺服器配置與使用FTP伺服器
- FTP伺服器——使用vsftpd搭建FTP伺服器
- 雲端計算,之我想。
- 如何傳輸檔案到linux伺服器?Linux伺服器
- 【linux運維】Linux伺服器玩轉vsftpd安裝與配置Linux運維伺服器FTP
- 檔案伺服器rsync伺服器
- 雲端計算之路-出海記:整一臺 aws 免費雲伺服器伺服器
- NVIDIA與伺服器製造商合作推進AI雲端計算伺服器AI
- VPS、雲主機 and 伺服器叢集、雲端計算 的區別伺服器
- 檔案伺服器之一:NFS伺服器伺服器NFS
- 趨勢分析之雲端計算
- Linux雲端計算面試題第二彈,樂視雲端計算面試題Linux面試題
- 雲端計算管理的功能是什麼?Linux雲端計算學習Linux
- Linux ossutil 拉取所有檔案到伺服器Linux伺服器
- 【Linux 工具】伺服器檔案傳輸利器 lrzszLinux伺服器
- 在linux下使用Apache搭建檔案伺服器LinuxApache伺服器
- linux伺服器目錄檔案的命令操作Linux伺服器
- Linux 下安裝Samba 檔案共享伺服器LinuxSamba伺服器
- 如何保持Linux伺服器間的檔案同步Linux伺服器
- xftp實現linux伺服器傳輸檔案FTPLinux伺服器
- 雲端計算應該學些什麼?Linux雲端計算要學多久Linux
- 雲端計算對生活有什麼影響?學習linux雲端計算Linux