如何在 Linux 中搭建 FTP 服務

linux.cn發表於2015-09-24

在本教程中,我將會介紹如何搭建你自己的FTP服務。但是,首先我們應該來的學習一下FTP是什麼。

FTP是什麼?

FTP 是檔案傳輸協議(File Transfer Protocol)的縮寫。顧名思義,FTP用於計算機之間通過網路進行檔案傳輸。你可以通過FTP在計算機賬戶間進行檔案傳輸,也可以在賬戶和桌面計算機之間傳輸檔案,或者訪問線上軟體歸檔。但是,需要注意的是多數的FTP站點的使用率非常高,可能需要多次重連才能連線上。

FTP地址和HTTP地址(即網頁地址)非常相似,只是FTP地址使用ftp://字首而不是http://

如何在 linux 中搭建 FTP 服務

FTP伺服器是什麼?

通常,擁有FTP地址的計算機是專用於接收FTP連線請求的。一臺專用於接收FTP連線請求的計算機即為FTP伺服器或者FTP站點。

現在,我們來開始一個特別的冒險,我們將會搭建一個FTP服務用於和家人、朋友進行檔案共享。在本教程,我們將以vsftpd作為ftp服務。

VSFTPD是一個自稱為最安全的FTP服務端軟體。事實上VSFTPD的前兩個字母表示“非常安全的(very secure)”。該軟體的構建繞開了FTP協議的漏洞。

儘管如此,你應該知道還有更安全的方法進行檔案管理和傳輸,如:SFTP(使用OpenSSH)。FTP協議對於共享非敏感資料是非常有用和可靠的。

使用 rpm 安裝VSFTPD:

你可以使用如下命令在命令列介面中快捷的安裝VSFTPD:

dnf -y install vsftpd

使用 deb 安裝VSFTPD:

你可以使用如下命令在命令列介面中快捷的安裝VSFTPD:

sudo apt-get install vsftpd

在Arch 中安裝VSFTPD:

你可以使用如下命令在命令列介面中快捷的安裝VSFTPD:

sudo apt-get install vsftpd

配置FTP服務

多數的VSFTPD配置項都在/etc/vsftpd.conf配置檔案中。這個檔案本身已經有非常良好的文件說明了,因此,在本節中,我只強調一些你可能進行修改的重要選項。使用man頁面檢視所有可用的選項和基本的 文件說明:

man vsftpd.conf

根據檔案系統層級標準,FTP共享檔案預設位於/srv/ftp目錄中。

允許上傳:

為了允許ftp使用者可以修改檔案系統的內容,如上傳檔案等,“write_enable”標誌必須設定為 YES。

write_enable=YES

允許本地(系統)使用者登入:

為了允許檔案/etc/passwd中記錄的使用者可以登入ftp服務,“local_enable”標記必須設定為YES。

local_enable=YES

匿名使用者登入

下面配置內容控制匿名使用者是否允許登入:

# 允許匿名使用者登入
anonymous_enable=YES
# 匿名登入不需要密碼(可選)
no_anon_password=YES
# 匿名登入的最大傳輸速率,Bytes/second(可選)
anon_max_rate=30000
# 匿名登入的目錄(可選)
anon_root=/example/directory/

根目錄限制(Chroot Jail)

( LCTT 譯註:chroot jail是類unix系統中的一種安全機制,用於修改程式執行的根目錄環境,限制該執行緒不能感知到其根目錄樹以外的其他目錄結構和檔案的存在。詳情參看chroot jail

有時我們需要設定根目錄(chroot)環境來禁止使用者離開他們的家(home)目錄。在配置檔案中增加/修改下面配置開啟根目錄限制(Chroot Jail):

chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd.chroot_list

“chroot_list_file”變數指定根目錄限制所包含的檔案/目錄( LCTT 譯註:即使用者只能訪問這些檔案/目錄)

最後你必須重啟ftp服務,在命令列中輸入以下命令:

sudo systemctl restart vsftpd

到此為止,你的ftp服務已經搭建完成並且啟動了。

相關文章