Centos搭建FTP服務

前言:

Centos 搭建FTP服務學習記錄

FTP簡介

FTP簡稱“文件傳輸協議”,用於Internet上的控制文件的雙向傳輸。
在FTP中常遇到兩個概念:
下載和上傳

“下載”文件就是從遠程主機拷貝文件至自己的計算機上
“上傳”文件就是將文件從自己的計算機拷貝到遠程主機上。

FTP連接及傳輸模式

控制連接 TCP 21 ,用於發送FTP命令信息
數據連接 TCP 20,用於上傳、下載數據

數據連接的建立類型:

主動模式:服務端從20端口主動向客戶端發起連接 被動模式:服務端在指定範圍內某個端口被動等待客戶端連接

被動模式相較於主動模式好,因爲主動連接的話會涉及到開放服務器端防護牆的20、21端口,而且主動模式服務器無法控制客戶端所開啓的端口,也容易被客戶端的防火牆攔截。

FTP用戶的類型:
匿名賬戶:

anonymous
ftp

本地用戶

在這裏插入圖片描述

搭建過程

服務器端:

這裏實驗使用的是vsftpd,所以要先下載

$ yum install vsftpd

但是下載的過程遇到了點問題,如下:
在這裏插入圖片描述
這個問題是yum命令被鎖

 Existing lock /var/run/yum.pid

解決方法:等待一會或者強制結束

rm -f /var/run/yum.pid

下載好之後,先來了解一下vsftpd服務的一些默認目錄,以免後面操作時不知道有關目錄在哪裏

/usr/sbin/vsftpd ---- VSFTPD的主程序
/etc/rc.d/init.d/vsftpd ---- 啓動腳本
/etc/vsftpd/vsftpd.conf ---- 主配置文件
/etc/pam.d/vsftpd ---- PAM認證文件
/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用戶列表文件
/etc/vsftpd.user_list ---- 禁止或允許使用VSFTPD的用戶列表文件
/var/ftp ---- 匿名用戶主目錄
/var/ftp/pub ---- 匿名用戶的下載目錄

查看配置文件

vi /etc/vsftpd/vsftpd.conf
#PS:以root權限去看,因爲下載的時候便是用的root用戶

在這裏插入圖片描述
這裏就解釋其中重要的一些配置:

參數 作用
download_enable 是否允許下載文件
anonymous_enable 是否允許匿名用戶訪問
anon_upload_enable 是否允許匿名用戶上傳文件
anon_mkdir_write_enable 是否允許匿名用戶創建目錄
anon_other_write_enable 是否開放匿名用戶的其他寫入權限
local_enable 是否允許本地用戶登錄 FTP

在這裏插入圖片描述
其他的如果用到查詢即可

安裝完成後,啓動 FTP 服務:
systemctl restart vsftpd.service
啓動後,可以看到系統已經監聽了 21 端口:
netstat -nltp | grep 21

客戶端:

客戶機需要安裝一下ftp包,這樣才能使用連接命令ftp ip,下載命令:

yum install ftp

匿名用戶測試

對於vsftpd默認配置是開啓了本地用戶和匿名用戶,可以直接登錄的,所以這裏沒有對配置文件進行修改

服務器端先開啓一下服務
在這裏插入圖片描述
客戶端使用匿名用戶連接,注意需要在同一個網段(兩個網絡都選爲僅主機模式即可或自己手動配置),如果不在一個網段則會出現下面的問題
在這裏插入圖片描述
但是還有一種情況,就是客戶端和服務器端都在一個網段,還是出現這個情況,那就應該是服務器端的防火牆將請求給攔截了,所以就需要關閉服務器端的防火牆

解決方法:

1.查看防火牆:iptables -L
2.清空防火牆:iptables -F
#注:這個設置只是暫時的,一旦關機再開機還需要重新進行輸入,如果想永久更改就需要下載iptables-services,然後進行更改,這裏不詳細敘述

客戶端再次連接,連接成功(匿名用戶ftp沒有密碼,空格即可)
在這裏插入圖片描述
配置文件中匿名用戶登錄 vsftpd 服務後的根目錄是 /var/ftp/,進入/var/ftp/pub上傳一個自己創建的文件看一下,發現無法創建
在這裏插入圖片描述
查看一下配置文件,匿名用戶上傳功能開了,但爲什麼還是不行
在這裏插入圖片描述
看了老師的講解,才知道目錄也需要進行設置權限,但如果直接使用chmod命令是不行的,會有一小bug,最好的方法是更改目錄的屬主

$ chown ftp /var/ftp/pub

在這裏插入圖片描述
重啓一下,客戶端再次連接,但發現還是不行,之前忘記在配置文件加上一段代碼,這段代碼寫哪裏都可以,只要是在配置文件中

write_enable=YES
#enable any form of FTP write command

但。。。。還是不行,我要吐了,什麼情況,查了半天發現:是selinux限制了,把selinux關掉就可以了

先查看下selinux裏有哪些關於ftp的

getsebool -a | grep ftp

在這裏插入圖片描述
如果是寫權限和全部權限是off的話就使用命令打開

setsebool -P allow_ftpd_anon_write on 
setsebool -P allow_ftpd_full_access on

再在客戶端進行上傳測試,成功。
在這裏插入圖片描述
下載測試,成功
在這裏插入圖片描述

最後這裏提一點常用的Linux ftp 命令

ftp中用lcd切換本地路徑,用cd切換遠程服務器的路徑。如:cd目錄名(進入服務器目錄)    lcd目錄名(進入本機目錄)
!命令是執行本地shell命令

具體的看大師傅的博客
Linux ftp 命令

本地用戶測試

上面使用了匿名用戶進行登陸,並上傳下載,這次通過本地用戶來實現一下

我的本地用戶是shy,第一步就設置配置文件(其實不用改就可以)

local_enable=YES
write_enable=YES
local_umask=022
userlist_deny=YES
userlist_enable=YES

爲了安全默認禁止以root身份登入,如果你實在想改的話就可以編輯一下文件

vi /vsftpd/user_list

在這裏插入圖片描述
不過不建議,自己可以設置一個新的用戶進行測試,這裏我就使用本地用戶shy
在這裏插入圖片描述
登陸成功,進行上傳下載測試,注意創建的文件位於shy賬戶家目錄
在這裏插入圖片描述
上傳成功
在這裏插入圖片描述
除本地用戶以爲,還有一個虛擬用戶,虛擬用戶不是系統中存在的,因此比本地用戶安全。這裏就先不學習,待到有需要時再進行學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章