1. 程式人生 > >ftp服務之鎖定使用者家目錄

ftp服務之鎖定使用者家目錄

很多情況下,我們希望限制ftp使用者只能在其主目錄下(root dir)下活動,不允許他們跳出主目錄之外瀏覽伺服器上的其他目錄,這時候我就需要使用到chroot_local_user,chroot_list_enable,chroot_list_file這三個選項了。以下是對三個配置項的解釋:

chroot_local_user : #是否將所有使用者限制在主目錄,YES為啟用 NO禁用.(該項預設值是NO,即在安裝vsftpd後不做配置的話,ftp使用者是可以向上切換到要目錄之外的)

chroot_list_enable: #是否啟動限制使用者的名單 YES為啟用 NO禁用(包括註釋掉也為禁用)

chroot_list_file=/etc/vsftpd/chroot_list :#是否限制在主目錄下的使用者名稱單,至於是限制名單還是排除名單,這取決於chroot_local_user的值,我們可以這樣記憶: chroot_local_user總是一個全域性性的設定,其為YES時,全部使用者被鎖定於主目錄,其為NO時,全部使用者不被鎖定於主目錄。那麼我們勢必需要在全域性設定下能做出一些“微調”,即,我們總是需要一種“例外機制",所以當chroot_list_enable=YES時,表示我們“需要例外”。而”例外“的含義總是有一個上下文的,即,當”全部使用者被鎖定於主目錄“時(即chroot_local_user=YES),"例外"就是:不被鎖定的使用者是哪些;當"全部使用者不被鎖定於主目錄"時(即chroot_local_user=NO),“例外”“就是:要被鎖定的使用者是哪些。這樣解釋和記憶兩者之間的關係就很清晰了!

對於chroot_local_user與chroot_list_enable的組合效果,可以參考下表:
在這裡插入圖片描述
讓我們舉個例子:
假設有ftp1, ftp2兩個ftp使用者, 計劃讓ftp1使用者鎖定在主目錄下,不允許切換到其他目錄, 但是允許ftp2使用者自由切換目錄,則可以分如下兩種方式實現:

方式一:

令:
chroot_local_user=YES
chroot_list_enable=YES
/etc/vsftpd/chroot_list名單列表為:
ftp2

解釋:chroot_local_user=YES將所有使用者限定在主目錄內,chroot_list_enable=YES表示要啟用chroot_list_file, 因為chroot_local_user=YES,即全體使用者都被“限定在主目錄內”,所以總是作為“例外列表”的chroot_list_file這時列出的是那些“不會被限制在主目錄下”的使用者。

方式二:

令:
chroot_local_user=NO
chroot_list_enable=YES
/etc/vsftpd/chroot_list名單列表為:
ftp1

解釋:chroot_local_user=NO則所有使用者不被限定在主目錄內,chroot_list_enable=YES表示要啟用chroot_list_file, 因為chroot_local_user=NO,即全體使用者都“不被限定在主目錄內”,所以總是作為“例外列表”的chroot_list_file這時列出的是那些“會被限制在主目錄下”的使用者。

其他情況:

對於chroot_local_user和chroot_list_enable的組合還有這樣兩種情況:

chroot_local_user=YES
chroot_list_enable=NO

chroot_local_user=NO
chroot_list_enable=NO

當chroot_list_enable=NO時,就不再啟用chroot_list_file,此時就是單純的把全部使用者限定或不限定在主目錄下了!
補充:

關於chroot_local_user的設定,通常我們傾向於:全域性禁止跳出主目錄,使用chroot_list新增例外!即:使用Case 1的設定!
匿名使用者預設的root是/var/ftp