9-3 檔案傳輸伺服器 - vsftpd
內容:
9-3-1 FTP 簡介
『檔案傳輸協定』(File Transfer Protocol, FTP)主要應用於異質性電腦之間,檔案相互傳輸使用。各類型電腦的檔案儲存格式,多半不會相同,所以檔案如果沒有經過特殊處理,異質電腦之間的檔案將很困難相互共享。而共享的機制必須透過裝置將共享檔案以某一種標準格式儲存(ASCII 或 Image 格式),再利用某一種專屬協定(FTP 協定)讓共享檔案可以在不同電腦之間流通,此設備即是 FTP 系統。在 FTP 系統上,客戶端可透過網路由 FTP 伺服器下載或上傳檔案。上傳檔案時,FTP 伺服器會使用某一種標準格式儲存;下載時,檔案儲存到目的主機時,也會轉換成該主機的檔案格式,如圖 9-6 所示。
圖 9-7 FTP 系統架構
標準 Unix/Linux 版本上的 FTP 伺服器,使用者都必須具有系統帳戶名稱及密碼才可以登入。但目前 Internet 網路上共享資源愈來愈多,而且都是無條件讓使用者下載使用,如需要帳戶名稱及密碼的話,將會嚴重限制使用者的方便性,因此,就有『匿名 FTP』(Anonymous FTP)的產生。在匿名 FTP 之下,使用者以 anonymous 為使用者名稱,再以電子郵遞帳號作為密碼便可登入,來從事檔案傳輸的工作,除非特殊網站,否則一般伺服器並不會真正去偵測帳號的真實性,只判斷是否有『@』便決定允許登入與否。許多廠商會將一般共享軟體或產品更新程式放置於匿名 FTP 網站,供客戶自由下載。
目前許多知名的 FTP 網站都使用 vsftpd(very secure FTP daemon)套件,相對的,許多 Linux Distributuion 也都將該套件列入所發行 Linux 系統的標準配備中。本書就以此套件來說明 FTP 伺服器的安裝與管理。
9-3-2 FTP 伺服器安裝
(A) 查詢 vsftpd 服務
查詢 vsftpd 服務是否以安裝,操作如下:
[root@tsnien ~]# systemctl | grep vsftpd
[root@tsnien ~]# [沒訊息表示沒有安裝] |
上述結果表示系統還未安裝 vsftpd 套件。
(B) 安裝 vsftpd 伺服器
只要網路設定正常,yum 可以線上直接安裝,操作方法如下:
[root@tsnien ~]# yum -y install vsftpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.tc.edu.tw
* extras: ftp.tc.edu.tw
* updates: ftp.tc.edu.tw
…
Complete! |
安裝完成之後,可再查詢 vsftpd 是否,如下:
# systemctl | grep vsftpd [雖已安裝,但還未被導入執行]
#
rpm -qa |grep vsftpd [查詢套件是否已安裝]
vsftpd-3.0.2-21.el7.x86_64 [套件已安裝]
# systemctl start vsftpd [啟動 vsftpd 套件]
# systemctl | grep vsftpd [查詢vsftpd 服務]
vsftpd.service loaded active running Vsftpd ftp daemon [vsftpd 執行中]
#
systemctl enable vsftpd
[開機時啟動vsftpd
服務]
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service
→
/usr/lib/systemd/system/vsftpd.service. |
(C) 安裝客戶端工具
一般伺服器主機也允許當作 FTP 客戶端操作,因此,也需安裝 FTP 工具,操作如下:
[root@tsnien ~]# yum -y install ftp
Loaded plugins: fastestmirror, langpacks
…
Installed:
ftp.x86_64 0:0.17-67.el7
Complete! |
(D) 組態設定
vsftpd 套件係利用 /etc/vsftpd/vsftpd.conf 設定檔來規劃其運作環境,主要的設定項目是:(1) 是否允許匿名登入(除 FTP 操作者外,不允許上傳檔案)、(2) 是否允許建立個人 FTP 網站、與(3) 個人 FTP 網站是否允許上傳檔案(內定值都是允許的,大多不需要修改)。
操作命令:# vi /etc/vsftpd/vsftpd.conf (利用 vi 編輯,僅列出部分檔案)
Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
……
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES 【允許匿名登入】
#
# Uncomment this to allow local users to log in.
local_enable=YES 【允許建立個人網站】
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES 【允許個人網站上傳檔案】
…… |
(E) 設定匿名 FTP 網站
匿名 FTP(Anonymous FTP)網站也是需要適當的限制,譬如是否允許使用者上傳檔案,或建立新目錄,都是由 /etc/vsftpd/vsftpd.conf 檔案設定,設定範例如下:(內定值大多是不允許的,僅列出部分檔案)
……
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES 【前面是 # 號表示沒有開放】
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES 【前面是 # 號表示沒有開放】
…… |
另外,匿名網站所儲存的位置是在 /var/ftp/pub
目錄下, FTP 管理者或該目錄擁有者可上傳檔案供匿名使用者下載。
(F)
開啟防火牆
- ftp
埠口
開啟防火牆的
ftp
埠口,如下:
#
firewall-cmd --add-service=ftp --permanent
success
#
firewall-cmd --reload
success |
(G) 重新啟動 vsftpd
更改組態檔案後,須重新啟動才有效,如下:
[root@tsnien ~]# systemctl restart vsftpd [重新啟動 vsftpd]
[root@tsnien ~]# |
(I) FTP 使用者管理
在 /etc/vsftpd/
目錄下,有兩個管理 FTP 使用者的設定檔,如下:
所謂允許登入
FTP
的意思是允許該帳戶名稱建立個人 FTP
網站,不允許登入,則不允許建立個人網站。譬如設定
root
可以使用 ftp
服務,如下:(#
vi /etc/vsftpd/ftpusers)
或
(# vi /etc/vsftpd/user_list)
# Users that are not
allowed to login via ftp
#
root [前面加
#
號表示沒有限制
root
帳戶]
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody |
9-3-3 Windows客戶端操作
vsftpd
服務啟動後,每一個使用者的家目錄(Home
directory),即是該使用者的個人
FTP
網站位置。登入時,必須輸入使用者名稱與密碼;以
student01
使用者為例,其家目錄為
/home/student01,客戶端可利用下列兩種方法上傳或下載檔案。
(A) FileZilla Client
操作
目前免費
FTP
傳輸工具以 FileZilla
最為普遍使用,可利用
Google
搜尋並下載安裝,如下:
安裝後,即可啟動上傳或下載檔案:
(B) FTP
命令
操作
在 Windows 工作站或 Unix/Linix 系統上,命令登入如下:
D:\>ftp [鍵入 ftp 命令]
ftp> open 120.119.165.113 [鍵入 open IP 位址]
Connected to 120.119.165.113.
220 (vsFTPd 2.3.4)
User (120.119.165.113:(none)): tsnien [鍵入使用者名稱]
331 Please specify the password.
Password:********
230 Login successful.
ftp>
ls [鍵入 shell 命令]
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
Backup2013_04_15
…
ftp> pwd [鍵入 pwd 命令]
257 "/home/tsnien"
257 "/home/tsnien"
ftp> |
其中『?』命令是 Help 的功能,它會顯示出所有 FTP 命令,我們大略由上列命令名稱來知道它的功能為何,但是我們還是將較常用的命令條列如表 9-1。
表 9-1 常用的 FTP 命令
命令名稱 |
功 能 說 明 |
? |
顯示命令(help)。 |
! |
執行本機命令,如 ! ls 表示執行本機上的 ls 命令。 |
ascii |
設定 ASCII 模式傳輸,使用於文字檔案傳輸。 |
binary |
設定二進位模式傳輸,一般使用於執行檔或影像檔傳輸。 |
bye |
結束 FTP 連線。 |
cd |
切換伺服器的工作目錄。 |
close |
關閉 FTP 連線。 |
debug |
進入偵錯模式。 |
delete |
刪除遠端伺服器檔案。 |
dir |
顯示遠端伺服器工作目錄下的檔案和目錄清單。 |
get |
下載一個檔案 |
mdelete |
刪除多個遠端檔案。 |
mget |
下載多個檔案。 |
mkdir |
在遠端伺服器建立目錄。 |
mput |
上傳多個檔案到遠端伺服器。 |
open |
開啟 FTP 連線。 |
put |
上傳一個檔案到遠端伺服器。 |
pwd |
顯示目前遠端伺服器的工作目錄。 |
rmdir |
刪除遠端伺服器的目錄。 |
status |
顯示目前連線狀態。 |
type |
設定檔案傳輸模式。 |
user |
登入 FTP 伺服器使用者名稱(如 user tsnien)。 |
9-3-4
匿名
FTP
管理
匿名
FTP (Anonymous FTP)
允許使用者以
Anonymous
帳號登入,密碼僅有
"@" 記號的
E-mail
帳號即可(系統不會檢查真偽)。應用於公用檔案讓一般用戶下載,客戶端不需要在系統上建立帳號即可下載檔案,但吾人大多會限制其被上傳檔案的功能(如
9-2-3
敘述)。Anonymous
FTP
公用檔案儲存於
/var/ftp/pub
目錄下,需具有 root
權限才可以上傳檔案,但
vsftpd
安裝後,自動限制 root
登入
FTP
功能,因此,需編輯
/etc/vsftpd/ftpusers
與
/etc/vsftpd/user_list
兩檔案。
(A)
開啟
root FTP
登入
編輯
/etc/vsftpd/ftpusers
與
/etc/vsftpd/user_list
兩檔案,以
# vi /etc/vsftp/ftpusers
為例,如下:
# Users that are not
allowed to login via ftp
#
root
(前面加入
#
號)
bin
daemon
adm
lp
sync
..... |
(B)
上傳公用檔案
- root
開啟
FilleZilla
後,以
root
帳號登入,並上傳一個檔案到 /var/ftp/pub
目錄下。
(C) Chrome
瀏覽器下載
- Windows
客戶端可利用瀏覽器直接下載公用檔案,如下:(ftp://192.168.1.107)
|