CentOS8搭建FTP服務器


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/pubother用戶有寫權限:

在這里插入圖片描述

默認的/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_accesson

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 總結

總結一下步驟:

  • 安裝好ftpvsftpd
  • 修改配置文件(/etc/vsftpd/vsftpd.conf
  • 添加對操作的文件的相應權限

對於不能上傳與下載的原因,基本上都是權限的問題,主要就是三方面:

  • ftp目錄的權限:比如可以是/var/ftp/pub沒有對應的寫權限導致上傳失敗,沒有對應讀權限導致下載失敗
  • 被上傳文件的權限:比如被上傳的文件沒有讀權限導致上傳失敗
  • selinux:使用setsebool設置ftpd_full_accesson

解決權限問題后,基本就可以通過ftp/wget順利地使用這個ftp服務器上傳/下載文件了。

8 還有疑問?

可以在評論留言大家一起討論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM