Linux-ftp檔案傳輸協議
阿新 • • 發佈:2022-05-28
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
注意:只適用於文字檔案傳輸,其它格式的檔案會被破壞。