2021.2.20 更新
1 概述
文章核心:
CentOS8使用vsftpd搭建FTP服務器- 安裝以及測試的詳細過程
2 安裝
2.1 安裝vsftpd+ftp
sudo yum install -y vsftpd
sudo yum install -y ftp # 測試使用,搭建FTP服務器只需要vsftpd
2.2 開啟服務
systemctl start vsftpd
2.3 設置開機啟動(可選)
可以用
systemctl list-unit-files | grep vsftpd
查看是否開機啟動,筆者機器上顯示disabled:

通過
chkconfig vsftpd on
開啟自啟,再次執行systemctl,可以看到變成了enabled。
2.4 修改配置文件
配置文件默認為/etc/vsftpd/vsftpd.conf:
sudo vim /etc/vsftpd/vsftpd.conf
首先修改anonymouse enable=YES,再添加一行anon_upload_enable=YES:

第一行的意思是允許匿名登錄,第二行的意思是允許匿名上傳,接着重啟服務:
systemctl restart vsftpd
3 測試准備
安裝部分就算完成了,下面是測試。測試分為:
- 瀏覽器測試
ftp命令測試
而為了測試權限,兩者又分為:
- 匿名測試
- 用戶登錄測試
另外為了測試的完整還加入了wget的下載測試。
在測試之前先創建測試文件:
cd /var/ftp/pub
sudo vim test

4 瀏覽器測試
4.1 匿名測試
ifconfig獲取內網ip,在瀏覽器中輸入ftp://ip:

可以看到有一個pub文件夾,里面有剛才新建的test文件:


右鍵保存即可下載文件:

下載完成。

去終端看看:

4.2 用戶登錄測試
輸入
ftp://username@ip

再輸入用戶密碼即可登錄成功。默認訪問的是用戶根目錄下的文件:

下載的話同上,右鍵選擇下載即可。
5 ftp命令測試
首先安裝ftp:
5.1 匿名測試
ftp ip
ftp為默認的匿名登錄用戶名,至於密碼,可以在/etc/vsftpd/vsftpd.conf中設置一個
no_anon_password=YES
這樣匿名用戶可以空密碼登錄。

5.1.1 上傳測試
直接使用put命令,后面接上文件,這里的upload.txt是執行ftp之前的所在文件夾下的upload.txt:

這里提示不能創建文件,是權限的原因,要確保/var/ftp/pub對other用戶有寫權限:

默認的/var/ftp/pub的權限是644,修改成647:
sudo chmod 647 /var/ftp/pub
同時修改上傳文件的權限,允許other用戶可讀:
sudo chmod 644 /root/upload.txt
如果不行,可以使用selinux設置ftpd_full_access:
getsebool -a | grep ftp

把ftpd_full_access開啟:
setsebool ftpd_full_access on

再進入upload.txt所在的文件夾,執行ftp,再次put:

成功!

5.1.2 下載測試
直接get文件即可,由於上面已經設置好了權限,所以不會出現問題。


若出現權限問題可從三方面入手:
/var/ftp/pub的對other用戶的可讀權限:因為是下載,而且匿名,所以只需要對other用戶的可讀權限- 被下載文件的對
other用戶的可讀權限 selinux的問題,設置ftpd_full_access為on
5.2 用戶登錄測試
執行ftp時用對應用戶名與密碼登錄:

默認進入了用戶根目錄。
5.2.1 上傳測試
直接put即可:


若出現權限問題參照上面5.1.2的那三種方法。
5.2.2 下載測試
隨便在用戶根目錄新建一個文件,這里是kr:

直接get即可:


6 wget測試
wget用來下載文件,初始下載的目錄與ftp登錄時的目錄一致:
- 匿名登錄
ftp,登錄的是/var/ftp目錄,則wget會從這個/var/ftp目錄下載文件,下載到執行wget命令所在的目錄 - 使用用戶kr登錄
ftp,則登錄的是/home/kr目錄,wget會從/home/kr下載文件
6.1 匿名測試
注意,請確保被下載文件對other用戶有可讀權限:
sudo chmod o+w xxxxxx
然后使用wget:
wget ftp://ip/pub/xxxx


6.2 用戶登錄測試
使用--ftp-user,--ftp-password指定用戶名與密碼,其余同上:
wget ftp://ip/xxx --ftp-user=xxxx --ftp-password=xxxx

成功。
7 總結
總結一下步驟:
- 安裝好
ftp與vsftpd - 修改配置文件(
/etc/vsftpd/vsftpd.conf) - 添加對操作的文件的相應權限
對於不能上傳與下載的原因,基本上都是權限的問題,主要就是三方面:
ftp目錄的權限:比如可以是/var/ftp/pub沒有對應的寫權限導致上傳失敗,沒有對應讀權限導致下載失敗- 被上傳文件的權限:比如被上傳的文件沒有讀權限導致上傳失敗
selinux:使用setsebool設置ftpd_full_access為on
解決權限問題后,基本就可以通過ftp/wget順利地使用這個ftp服務器上傳/下載文件了。
8 還有疑問?
可以在評論留言大家一起討論。
