很多情況下,我們希望限制ftp用戶只能在其主目錄下(root dir)下活動回挽,不允許他們跳出主目錄之外瀏覽服務(wù)器上的其他目錄八毯,這時候我就需要使用到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總是一個全局性的設(shè)定呻率,其為YES時硬毕,全部用戶被鎖定于主目錄,其為NO時礼仗,全部用戶不被鎖定于主目錄吐咳。那么我們勢必需要在全局設(shè)定下能做出一些“微調(diào)”逻悠,即,我們總是需要一種“例外機制"韭脊,所以當(dāng)chroot_list_enable=YES時蹂风,表示我們“需要例外”。而”例外“的含義總是有一個上下文的乾蓬,即,當(dāng)”全部用戶被鎖定于主目錄“時(即chroot_local_user=YES)慎恒,"例外"就是:不被鎖定的用戶是哪些任内;當(dāng)"全部用戶不被鎖定于主目錄"時(即chroot_local_user=NO),"例外"“就是:要被鎖定的用戶是哪些融柬。這樣解釋和記憶兩者之間的關(guān)系就很清晰了死嗦!
對于chroot_local_user與chroot_list_enable的組合效果,可以參考下表:
讓我們舉個例子:
假設(shè)有ftp1, ftp2兩個ftp用戶, 計劃讓ftp1用戶鎖定在主目錄下粒氧,不允許切換到其他目錄, 但是允許ftp2用戶自由切換目錄越除,則可以分如下兩種方式實現(xiàn):
方式一:
令:
chroot_local_user=YES
chroot_list_enable=YES
/etc/vsftpd/chroot_list名單列表為:
ftp2
解釋:chroot_local_user=YES將所有用戶限定在主目錄內(nèi),chroot_list_enable=YES表示要啟用chroot_list_file, 因為chroot_local_user=YES外盯,即全體用戶都被“限定在主目錄內(nèi)”,所以總是作為“例外列表”的chroot_list_file這時列出的是那些“不會被限制在主目錄下”的用戶摘盆。
方式二:
令:
chroot_local_user=NO
chroot_list_enable=YES
/etc/vsftpd/chroot_list名單列表為:
ftp1
解釋:chroot_local_user=NO則所有用戶不被限定在主目錄內(nèi),chroot_list_enable=YES表示要啟用chroot_list_file, 因為chroot_local_user=NO饱苟,即全體用戶都“不被限定在主目錄內(nèi)”,所以總是作為“例外列表”的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
當(dāng)chroot_list_enable=NO時,就不再啟用chroot_list_file箱熬,此時就是單純的把全部用戶限定或不限定在主目錄下了类垦!
補充:
關(guān)于chroot_local_user的設(shè)置,通常我們傾向于:全局禁止跳出主目錄城须,使用chroot_list添加例外蚤认!即:使用Case 1的設(shè)置!
匿名用戶默認的root是/var/ftp