1. 程式人生 > 實用技巧 >配置FTP伺服器(2) 本地使用者下載和上傳

配置FTP伺服器(2) 本地使用者下載和上傳

在上篇博文中我們實現了匿名使用者的下載和上傳,但在更多情況下我們需要對訪問FTP的使用者進行身份驗證,這就需要設定FTP使用者。

vsftpd可以直接使用Linux系統的本地使用者作為FTP使用者,提供基於使用者名稱/密碼的登入驗證。使用本地使用者登入FTP伺服器後,預設將位於使用者自己的主目錄中,且具有讀寫許可權。如利用zhangsan使用者訪問ftp,那麼預設將進入到的目錄是/home/zhangsan。


配置檔案/etc/vsftpd/vsftpd.conf中關於本地使用者的預設設定:
065437445.jpg

系統預設已經允許系統使用者訪問,由於系統使用者預設只能訪問自己的使用者主目錄,所以自然就具備了寫入的許可權,寫入時的umask值也是022。

下面我們先建立一個系統使用者ftpuser,為其設定密碼,並在它的主目錄中放置一個測試檔案:
#useraddftpuser
#passwdftpuser
#echo‘ftptest’>/home/ftpuser/ftptest.txt
然後在Windows客戶端利用資源管理器測試訪問,在空白介面點選右鍵之後選擇“登入”,輸入使用者名稱ftpuser及密碼就可以進入到使用者的主目錄中,並具備寫入許可權。

也可以在客戶端通過ftp命令列訪問:
065554918.jpg

注意,系統使用者雖然預設訪問到的是自己的主目錄,但是卻可以用cd命令切換到伺服器端任何具備訪問許可權的目錄,比如切換到/etc/目錄:

065659659.jpg

而這會帶來很大的安全風險,所以一般都需要將系統使用者禁錮於其主目錄中,禁止隨意切換。在vsftpd.conf檔案中增加一行“chroot_local_user=YES”:

065741613.jpg

“chroot_local_user=YES”的作用就是將使用者禁錮在自己的主目錄中。vsftpd.conf檔案對設定專案的位置沒有要求,這項設定可以放在檔案中的任意位置。
設定完成後,儲存退出,重啟服務:
#servicevsftpdrestart
在客戶端利用命令列重新登入,此時再切換到其它目錄時便會被拒絕。

如果希望系統使用者在登入時也是訪問ftp服務的主目錄/var/ftp,可以在配置檔案中再增加一行“local_root=/var/ftp”:

065912160.jpg

儲存退出,重啟服務。
然後在客戶端再次用ftpuser的身份訪問ftp伺服器,此時就是進入到了ftp的主目錄中。


vsftpd 配置 / chroot_local_user 與 chroot_list_enable的關係:

一開始 chroot_local_user 與 chroot_list_enable的關係很難搞清楚,找了網上的部分資料也是迷迷糊糊的,

chroot_local_user=YES #是否將所有使用者鎖定在主目錄,YES為啟用 NO禁用.(包括註釋掉也為禁用)
chroot_list_enable=YES #是否啟動鎖定使用者的名單 YES為啟用 NO禁用(包括註釋掉也為禁用)

chroot_list_file=/etc/vsftpd.chroot_list #禁用的列表名單格式為一行一個使用者, 如果名單裡面有一個ftpuser的使用者, 則ftpuser使用者不會鎖定在主目錄,使用者將可以自由切換目錄.

舉例:

情況一:

現在有 ftp1 ftp2 ftp3 這三個ftp的使用者, 想讓1跟2使用者鎖定主目錄不允許切換到其他目錄, 但是允許3使用者自由切換

那麼/etc/vsftpd.chroot_list列表名單如下:

ftp3

也就說chroot_local_user=YES 並且 chroot_list_enable=YES 的時候
vsftpd.chroot_list名單裡面新增的是排除鎖定主目錄的使用者名稱單.

情況二:

如果chroot_local_user=NO 並且 chroot_list_enable=YES 的時候

那麼/etc/vsftpd.chroot_list列表名單如下:

ftp1

ftp2

情況三:

如果chroot_local_user=YES 並且 chroot_list_enable=NO 的時候

那列表名單也就不生效了,

因此滿足上面的條件時, 所有的FTP使用者將全部鎖定在主目錄.



設定使用者列表

預設設定下,FTP伺服器中的所有系統使用者都可以訪問FTP,如何來限定只有指定的使用者可以訪問呢?


vsftpd中提供了2個與本地使用者相關的配置檔案:/etc/vsftpd/ftpusers、/etc/vsftpd/user_list,這兩個檔案中均包含一份FTP使用者名稱的列表,但是它們的作用截然不同。

  • /etc/vsftpd/ftpusers,這個檔案中包含的使用者賬號將被禁止登入vsftpd伺服器,不管該使用者是否在/etc/vsftpd/user_list檔案中出現。通常將root、bin、daemon等特殊使用者列在該檔案中,禁止用於登入FTP服務。

  • /etc/vsftpd/user_list,該檔案中包含的使用者賬戶可能被禁止登入,也可能被允許登入,具有在主配置檔案vsftpd.conf中決定。當存在“userlist_enable=YES”的配置項時,/etc/vsftpd/user_list檔案生效,如果配置“userlist_deny=YES”,則僅禁止列表中的使用者賬戶登入,如果配置“userlist_deny=NO”,則僅允許列表中的使用者賬戶登入。

綜合來看,/etc/vsftpd/ftpusers檔案為vsftpd服務提供了一份用於禁止登入的FTP使用者列表,而/etc/vsftpd/user_list檔案提供了一份可靈活控制的FTP使用者列表。通常都是將二者相互結合使用。
比如在配置檔案中進行如下設定:

070308198.jpg

“userlist_enable=YES”是系統的預設設定,表示啟用userlist使用者列表。
“userlist_deny=NO”是我們後來新增的,表示只允許列表中的使用者登入。
這份列表中預設存在的使用者與ftpusers中是一樣的,這些使用者都禁止登入。
我們在其中新增ftpuser

070441250.jpg

儲存退出,重啟服務。
然後在客戶端測試,此時只有ftpuser使用者才可以訪問FTP。


轉載於:https://blog.51cto.com/foreverzpk/1588089