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 還有疑問?
可以在評論留言大家一起討論。