1. 程式人生 > 其它 >Linux-ftp檔案傳輸協議

Linux-ftp檔案傳輸協議

FTP工作原理

檔案傳輸協議:file transfer protocol    早期的三個應用級協議之一

資料傳輸格式:二進位制和文字

雙通道協議:命令和資料連線

兩種模式:從伺服器角度

  • 主動(POPT style):伺服器主動連線
      • 命令(控制):客戶端:隨機port-->伺服器:21/tcp
  • 被動(PASV style):客服端主動連線
      • 命令(控制):客服端:隨機port-->伺服器:21/tcp
    • 資料:客戶端:隨機port-->伺服器:隨機port/tcp

伺服器資料埠為:224*256+59

FTP服務狀態碼:

1XX:資訊 2XX:成功類狀態
3XX:補充類 4XX:客戶端錯誤 5XX:伺服器錯誤
125:資料連線開啟 200:命令OK     331:使用者名稱OK 425:不能開啟資料連線 530:不能登入
   230:登入成功      

使用者認證:

  • 匿名使用者:ftp,anonymous,對應Linux使用者ftp
  • 系統使用者:Linux使用者,使用者/etc/passwd,密碼/etc/shadow
  • 虛擬使用者:特定服務的專用使用者,獨立的使用者/密碼檔案

FTP伺服器端軟體

vsftpd:Very Secure FTP Daemon,CentOS 預設FTP伺服器

vsftpd 軟體介紹

  • 由vsftpd包提供
  • 使用者認證配置檔案:/etc/pam.d/bsftpd

啟動服務相關檔案:

/usr/lib/systemd/system/vsftpd.service
/etc/rc.d/init.d/vsftpd

配置檔案:

/etc/vsftpd/vsftpd.conf

配置檔案格式:

option=value
注意:= 前後不要有空格

使用者和其共享目錄

  • 匿名使用者(對映為系統使用者ftp )共享檔案位置:/var/ftp
  • 系統使用者共享檔案位置:使用者家目錄
  • 虛擬使用者共享檔案位置:專用於FTP服務的使用者帳號, 為其對映的系統使用者的家目錄

vsftpd服務建立配置

listen_port=2121 預設值為21

主動模式埠

connect_from_port_20=YES 主動模式埠為20
ftp_data_port
=20 (預設) 指定主動模式的埠

被動模式埠範圍

linux       ftp   客戶端預設使用被動模式
windows     ftp   客戶端預設使用主動模式
pasv_min_port=6000   0為隨機分配,埠範圍會影響客戶端的併發數
pasv_max_port=6010

使用當地時間

有的瀏覽器會自動校對時間,沒有校對時間的,時間差8個小時

use_localtime=YES 使用當地時間(預設為NO,使用GMT)

匿名使用者登入

anonymous_enable=YES   支援匿名使用者,CentOS8 預設不允許匿名
no_anon_password=YES   匿名使用者略過口令檢查 , 預設NO

匿名使用者上傳

anon_upload_enable=YES      匿名上傳,注意:檔案系統許可權
anon_mkdir_write_enable=YES    匿名建目錄
setfacl -m u:ftp:rwx /var/ftp/pub

注意:還需要開啟檔案系統訪問的許可權,不能給FTP根目錄寫許可權,只能給子目錄寫許可權,否則報如 下錯誤
anon_world_readable_only=NO  只能下載全部讀的檔案, 預設YES
anon_umask=0333         指定匿名上傳檔案的umask,預設077,注意:0333中的0不能省略
anon_other_write_enable=YES   可刪除和修改上傳的檔案,預設NO

 指定匿名使用者的上傳檔案的預設的所有者和許可權

chown_uploads=YES        #預設NO
chown_username=wang
chown_upload_mode=0644

Linux系統使用者

local_enable=YES     是否允許linux使用者登入
write_enable=YES     允許linux使用者上傳檔案
local_umask=022      指定系統使用者上傳檔案的預設許可權對應umask

將所有系統使用者對映為指定的guest使用者

guest_enable=YES               所有系統使用者都對映成guest使用者
guest_username=ftp               配合上面選項才生效,指定guest使用者
local_root=/ftproot             指定guest使用者登入所在目錄,但不影響匿名使用者的登入目錄
user_config_dir=/etc/vsftpd/conf.d/   每個使用者獨立的配置檔案目錄

禁錮系統使用者

禁錮所有系統使用者在家目錄中

chroot_local_user=YES   #禁錮系統使用者,預設NO,即不禁錮

禁錮或不禁錮特定的系統使用者在家目錄中,與上面設定功能相反

chroot_list_enable=YES                    #預設是NO
chroot_list_file=/etc/vsftpd/chroot_list         #預設值
  
當chroot_local_user=YES和chroot_list_enable=YES時,則chroot_list中使用者不禁錮,即白名單
當chroot_local_user=NO和chroot_list_enable=YES時, 則chroot_list中使用者禁錮,即黑名單

日誌

#wu-ftp 日誌:預設啟用
xferlog_enable=YES               #啟用記錄上傳下載日誌,此為預設值
xferlog_std_format=YES            #使用wu-ftp日誌格式,此為預設值
xferlog_file=/var/log/xferlog        #可自動生成, 此為預設值

#vsftpd日誌:預設不啟用 dual_log_enable
=YES              使用vsftpd日誌格式,預設不啟用 vsftpd_log_file=/var/log/vsftpd.log    可自動生成, 此為預設值

提示資訊

登入前提示資訊

ftpd_banner="welcome to mage ftp server"
banner_file=/etc/vsftpd/ftpbanner.txt

目錄訪問提示資訊

dirmessage_enable=YES #此為預設值
message_file=.message #資訊存放在指定目錄下.message ,此為預設值,只支援單行說明

PAM模組實現使用者訪問控制

pam_service_name=vsftpd
#pam配置檔案:/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers 預設檔案中使用者拒絕登入,預設是黑名單,但也可以是白名單
#修改PAM配置,使ftpusers成為白名單
#將sense=deny 修改為 sense=allow
auth       required     pam_listfile.so item=user sense=allow
file=/etc/vsftpd/ftpusers onerr=succeed

是否啟用控制使用者登入的列表檔案

never allow users in this file, and do not even prompt for a password.

userlist_enable=YES   此為預設值
userlist_deny=YES(預設值) 黑名單,不提示口令,NO為白名單
userlist_file=/etc/vsftpd/user_list 此為預設值

vsftpd服務指定使用者身份執行

nopriv_user=nobody   此為預設值

連線數限制

max_clients=0 #最大併發連線數
max_per_ip=0 #每個IP同時發起的最大連線數

傳輸速率,單位:位元組/秒

限速

anon_max_rate=0      匿名使用者的最大傳輸速率,以位元組為單位,比如:1024000表示1MB/s
local_max_rate=0      本地使用者的最大傳輸速率

連線時間:秒為單位

connect_timeout=60       主動模式資料連線超時時長
accept_timeout=60       被動模式資料連線超時時長
data_connection_timeout=300 資料連線無資料輸超時時長
idle_session_timeout=60    無命令操作超時時長

以文字方式傳輸

以文字方式傳輸檔案時,會自動對檔案進行格式轉換,比如轉換成windows的文字格式

#啟用此選項可使伺服器在ASCII模式下實際對檔案進行ASCII處理。
#預設是禁用,禁用後,伺服器將假裝允許ASCII模式,但實際上會忽略啟用它的請求
ascii_upload_enable=YES
ascii_download_enable=YES

注意:只適用於文字檔案傳輸,其它格式的檔案會被破壞。