1.ftp與sftp
大致了解下:
ftp是一個文件傳輸協議,linux環境需要它才能支持文件的傳輸與查看,它的默認端口是21。
sftp是加密/解密的文件傳輸協議,因為它每次傳輸都有加密解密的步驟,所以效率比ftp低的多但是安全。
2.ftp服務的安裝
使用命令行從軟件庫下載安裝:apt-get install vsftp ftp

3.ftp服務的匿名訪問測試
安裝完成后我們可以進行測試,首先測試一下匿名登錄:
修改vsftpd的配置文件:vim /etc/vsftpd.conf(配置文件的位置可能不同)

將anonymous_enable設置為YES,意思是允許匿名登錄;
再添加一行匿名登錄的默認目錄:anon_root=/home/annoDir;
最后啟動vsftpd服務:/etc/init.d/vsftpd start

用瀏覽器匿名訪問目錄:
可以看到,無需輸入賬號密碼就可以訪問annoDir這個目錄:

4.ftp服務的配置詳解
參考(https://www.linuxidc.com/Linux/2017-04/142493.htm)
anonymous_enable=NO # 關閉匿名登錄 默認為NO local_enable=YES # 允許本地用戶登錄 write_enable=YES # 啟用可以修改文件的 FTP 命令
local_umask=022 #設置本地用戶新增文檔的umask,默認為022,
這里的022ftp服務會把它解析成2進制的000 010 010 再取反,即755,代表了文件的權限,即 對新增的目錄有讀寫執行權
dirmessage_enable=YES # 當用戶第一次進入新目錄時顯示提示消息(按照默認就好) xferlog_enable=YES # 一個存有詳細的上傳和下載信息的日志文件(啟用日志文件) connect_from_port_20=YES # 在服務器上針對 PORT 類型的連接使用端口 20(FTP 數據) xferlog_std_format=YES # 保持標准日志文件格式(默認不動) listen=NO # 阻止 vsftpd 在獨立模式下運行,默認為NO,但是據說設置為NO的話,有些配置功能會被限制(找不到相關資料) listen_ipv6=YES # vsftpd 將監聽 ipv6 而不是 IPv4,你可以根據你的網絡情況設置,如果需要同時支持ipv4和ipv6的話,需要配置2套 pam_service_name=vsftpd # vsftpd 將使用的 PAM 驗證設備的名字(默認就好) userlist_enable=YES # 允許 vsftpd 加載用戶名字列表,
注意,默認vsftp是基於/etc/vsftpd.userlist來作為禁止訪問ftp的名單的,比如其中就包含root用戶
我們也可以通過配置 userlist_deny=NO 這個選項來反轉配置,即只有該名單內的用戶可以訪問該目錄。
chroot_local_user=YES allow_writeable_chroot=YES
#選項chroot_local_user=YES 表示本地用戶將進入 chroot 環境,當登錄以后默認情況下是其 home 目錄。
並且我們要知道,默認情況下,出於安全原因,VSFTPD 不允許 chroot 目錄具有可寫權限。然而,我們可以通過選項 allow_writeable_chroot=YES 來允許。
chroot_list_enable=YES #限制只訪問自身目錄
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #限制訪問自身目錄的用戶列表
5.新增ftp用戶
正常使用ftp服務,很少會用匿名登錄,我們需要一個專門的用戶去做ftp操作。
1.新建用戶(xjxftp)並設置主目錄和密碼:


2.在ftp的配置文件中限制用戶的訪問路徑:
編輯vsftpd.conf文件,設置chroot_local_user=YES

同時,新建一個chroot_list文件,將受限制的用戶加入:一個用戶名占一行,直接加入就好。
重啟服務:root@instance-7k2jqcks:/etc# ./init.d/vsftpd restart
注:如果我們設置了chroot_local_user=YES,又設置了chroot_list_enable=YES限制訪問自身目錄,則擁有寫權限的用戶將無法登錄:
這是由於ftp新版本的安全機制導致的(https://www.cnblogs.com/zhjh256/p/9155281.html)
我們當然不能沒有寫的權限,這里我們可以設置 allow_writeable_chroot=YES 來允許(如果white_enable=YES這行被注釋掉的話也把它放開)
這樣,我們使用xftp就可以新建文件,並且所有的操作也被限制在該用戶主目錄下:

6.ftp用戶無法新建文件夾和403
這里稍微說一點點遇到的小問題,一個是提到的限制用戶訪問主目錄后的無法寫的問題,上面的已經有方案了。
403的問題:
1.如果我們使用阿里雲服務器,它進入的協議和端口默認是有限制的,我們需要自己做安全組配置,打開20和21端口,如果服務器自帶防火牆也一樣。
2.還有就是你ftp登錄的用戶有沒有對主目錄應有的訪問讀寫權限。
3.默認ftp是對ftpusers這個文件里的用戶禁止訪問的。它里面就包含root,如果我們的用戶在/etc/ftpusers這個文件夾里,登錄驗證也將失敗。
無法新建文件夾的問題:注意有的版本配置文件中write_enable=YES 這個是被注釋掉的,這樣我們無法寫,需要把它打開。
7.vsftpd配置必須需要賬號密碼訪問
把user_list文件作為允許訪問的用戶列表
配置文件中 配置 userlist_enable=YES和 userlist_deny=NO
