1 概述
文章主要講了CentOS8如何利用vsftpd搭建一個FTP服務器,然後進行簡單的匿名上傳/下載與用戶上傳/下載測試,還有使用了wget測試.
2 安裝vsftpd
yum install -y vsftpd
3 開啓服務
service httpd start
4 設置開機啓動
可以用
systemctl list-unit-files | grep vsftpd
查看是否開機啓動.顯示disabled.
通過
chkconfig vsftpd on
開啓自啓,再次執行systemctl,可以看到變成了enabled.
5 修改/etc/vsftpd/vsftpd.conf
sudo vim /etc/vsftpd/vsftpd.conf
首先修改
爲YES.
再添加一行anon_upload_enable=YES
第一行的意思是允許匿名登錄,第二行的意思是允許匿名上傳.
重啓服務.
service vsftpd restart
6 創建測試文件
cd /var/ftp/pub
sudo vim test
7 測試
7.1 瀏覽器測試
7.1.1 匿名測試
ifconfig獲取內網ip,在瀏覽器中輸入ftp://ip.
可以看到有一個pub文件夾,裏面有剛纔新建的test文件.
右鍵保存即可下載文件.
下載完成.
去終端看看.
7.1.2 用戶登錄測試
輸入
ftp://username@ip
再輸入用戶密碼.
默認訪問的是用戶根目錄下的文件,這裏顯示出來了.
下載的話同上,右鍵選擇即可.
7.2 ftp命令測試
首先安裝ftp:
sudo yum install ftp
7.2.1 匿名測試
ftp ip
這裏用戶名選擇ftp,密碼爲空,表示匿名登錄.ftp爲默認的匿名登錄用戶名,至於密碼,可以在/etc/vsftpd/vsftpd.conf中設置一個
no_anon_password=YES
這樣匿名用戶可以不用密碼登錄.
7.2.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設置.
getsebool -a | grep ftp
把ftpd_full_access開啓:
setsebool ftpd_full_access on
再進入upload.txt所在的文件夾,執行ftp,再次put.
成功!
7.2.1.2 下載測試
直接get文件即可,由於上面已經設置好了權限,所以不會出現問題.
若出現權限問題可從三方面入手:
- (1)/var/ftp/pub的對other用戶的可讀權限:因爲是下載,而且匿名,所以只需要對other用戶的可讀權限
- (2)被下載文件的對other用戶的可讀權限
- (3)selinux的問題,設置ftpd_full_access爲on
7.2.2 用戶登錄測試
執行ftp時用對應用戶名與密碼登錄.
默認進入了用戶根目錄.
7.2.2.1 上傳測試
直接put即可.
若出現權限問題參照上面7.2.1.2的那三條方法.
7.2.2.2 下載測試
隨便在用戶根目錄新建一個文件,這裏是kr.
直接get即可.
7.3 wget測試
wget用來下載文件,初始下載的目錄與ftp登錄時的目錄一致,比如匿名登錄ftp,登錄的是/var/ftp目錄,則wget會從這個/var/ftp目錄下載文件,下載到執行wget命令所在的目錄.使用用戶"kr"登錄ftp,則登錄的是/home/kr目錄,wget會從/home/kr下載文件.
7.3.1 匿名測試
注意,請確保被下載文件對other用戶有可讀權限.
sudo chmod o+w xxxxxx
然後使用wget
wget ftp://ip/pub/xxxx
7.3.2 用戶登錄測試
使用--ftp-user,--ftp-password指定用戶名與密碼,其餘同上.
wget ftp://ip/xxx --ftp-user=xxxx --ftp-password=xxxx
成功.
8 總結
呃....簡單來說,就是先安裝好ftp與vsftpd,然後修改/etc/vsftpd/vsftpd.conf添加相應權限,對於不能上傳與下載的原因,基本上都是權限的問題,主要就是三方面:
- (1)ftp目錄的權限:比如可以是/var/ftp/pub沒有對應的寫權限導致上傳失敗,沒有對應讀權限導致下載失敗.
- (2)被上傳文件的權限:比如上傳的文件沒有讀權限導致上傳失敗.
- (3)selinux:使用setsebool設置爲on.
解決權限問題後,基本就可以通過ftp或wget順利地使用這個ftp服務器上傳/下載文件了.