# FTP SERVER >[time=Wed, Dec 26, 2018 7:00 PM][name=張佳佑] FTP就是用來傳輸的工具 ## TCP/IP <img src="https://i.imgur.com/9T4xnVf.png" width="450" height="390"> ## 主動模式(active mode) 一開始client和server在Port:21建立連線(命令通道),因為如果一直使用Port:21會阻礙到其他client和server的連線,所以client會告訴server期望他可以在自己指定的Port(通常是20)傳送資料,這時候server就會很乖的主動去指定的Port敲門(SYN flag),然後你就要決定是否要讓server傳輸資料進來了,如果你回應可以,就會傳送ACK flag回去,這時後才算建立完連線(資料傳輸通道)。 ## 被動模式(passive mode) 一開始client和server一樣在Port:21建立連線(命令通道),之後整個相反,server會告知client可以在哪些Port進行資料傳輸,一般會在大於1024的Port,然後client會發送SYN flag封包給server的Port進行確認,如果server收到了會回傳ACK flag給client,這時後才算建立完連線(資料傳輸通道)。 ## 一般常用的FTP程式 ==FileZilla== ## 在Ubuntu上架設FTP指令 一開始都要先將自己的ubuntu update一下 ```terminal sudo apt update sudo apt upgrade ``` 下載ftp ``` sudo apt install vsftpd ``` 檢查Port:21是否開啟 ``` netstat -tulpn | grep LISTEN ``` 一般在這時候FTP就架好了,剩下一些設定需要微調。 ``` sudo vi /etc/vsftpd.conf ``` ``` listen=YES listen_ipv6=NO #顯示該目錄需要注意的內容 dirmessage_enable=YES #是否使用本地時間? use_localtime=YES #紀錄使用者上傳與下載檔案 xferlog_enable=YES #主動模式用Port:20 connect_from_port_20=YES #是否允許匿名訪問,NO為不允許 anonymous_enable=NO #是否允許本地用戶訪問,就是linux本機中存在的用戶,YES允許 local_enable=YES #是否開啟寫入模式(上傳資料),YES為開啟 write_enable=YES #新建文件權限,一般設置為022,那麽新建後的文件的權限就是777-022=755 local_umask=022 #設置ftp登入的位置 local_root=/home ``` ``` #是否啟動userlist為白名單模式,NO的話,白名單失效,和下面一個參數配合使用 userlist_enable=YES #是否啟動userlist為黑名單模式,NO表示黑名單失效 userlist_deny=NO #指定哪個文件作為userlist文件,我們稍後編輯這個文件 userlist_file=/etc/vsftpd.user_list ``` ``` #是否限制本地所有用戶訪問ftp根目錄以外的目錄 chroot_local_user=YES #是否限制用戶的list為允許模式,可以用這個當白名單(黑名單),允許訪問ftp根目錄以外的目錄 chroot_list_enable=YES #設置list文件位置 chroot_list_file=/etc/vsftpd.chroot_list #是否開啟寫模式,開啟後可以進行創建文件夾等寫入操作 allow_writeable_chroot=YES ``` 被動模式(passive mode) ``` pasv_enable=YES pasv_min_port=10000 pasv_max_port=10100 ``` 更改設定檔之後都需要restart一遍 ``` sudo service vsftpd restart ``` ## FTP連線 ### linux連linux ``` ifconfig |查詢自己IP位置 ``` ``` ftp IP位置 |連線指令 Name:帳號 Passwd:密碼 ``` ### Windows連linux 開啟Filezilla ### 補充 **反向列表** |chroot_local_user chroot_list_enable | chroot_local_user = YES |chroot_local_user = NO| | -------- | ------------------------| -------------------- | | chroot_list_enable = YES| 只有列表內的名單可以向上 | 列表內的名單不可向上 | | chroot_list_enable = NO | 所有人都不可向上(限制於自己的家目錄)| 所有人都可向上(不限於自己的家目錄) | [第十二周滿意度調查](https://goo.gl/forms/m828XgNYOIMIefBd2) CMRDB wifi:cmrdb_base@304