號稱安全性高的 vsftp 預設是所有使用者都能離開 home 目錄,不論是什麼樣的考量都造成管理上的不便。
其實在只要 vsftpd.conf 裡面加一行:
chroot_local_user=YES
這樣 vsftpd.chroot_list 就變成「允許」離開 home 目錄的列表了。
號稱安全性高的 vsftp 預設是所有使用者都能離開 home 目錄,不論是什麼樣的考量都造成管理上的不便。
其實在只要 vsftpd.conf 裡面加一行:
chroot_local_user=YES
這樣 vsftpd.chroot_list 就變成「允許」離開 home 目錄的列表了。
13 comments On 讓 vsftp 預設使用者不能離開 home 目錄
「安全性高的 vsftp 預設是所有使用者都能離開 home 目錄?」
是「都能」還是「都不能」?因為看到後面就變成可以了。
請 Neo 大賜教。
預設是「都能」離開 home,也就是 chroot_local_user 預設是 NO。
所以如果要把user 鎖在 home的話,每增加一個 user ,vsftpd.chroot_list 也要加一個人。
說實在話,我實在看不出來這個預設值安全在哪裡?
說真的我也看不懂Neo大大寫的意思耶…:P
>vsftp 預設是所有使用者”都能”離開 home 目錄
和
>這樣 vsftpd.chroot_list 就變成「允許」離開 home 目錄的列表了。
這兩句差別在哪啊??
初初看我也不明白嗯..
多看幾遍我想應該是這個意思
chroot_local_user=YES // 是決定可否離開root, YES=可
vsftpd.chroot_list // 需要變動(反置)root權限的user列表
而在YES的情況下, 要容許特例用戶離開root,
就要將user設置入vsftpd.chroot_list這個列表
而在NO的情況下, 要”不”容許特例用戶離開root,
就要將user設置入vsftpd.chroot_list這個列表
vsftpd.chroot_list列表的作用就是要將用戶離開root的權限設置為跟chroot_local_user相反的值.
不知是不是這個意思…
IcySora:
解釋的真清楚,就是這樣沒錯。^^
真的對不起大家,最近太忙,文章都沒時間寫了,寫出來還讓大家看不懂,真是該打屁股。Orz
文字有點饒舌,所以大家比較不清楚.
vsftpd.chroot_list這是一個列表,裡面紀錄著誰”不可以”離開home,反之,如果要讓該使用者”可以”離開home,就不要把帳號加進去這檔案.
Vamco:
您說的是 vsftp 預設的狀況,但是這個列表的用處是可以調整的。
所以照 IcySora 的說法會比較清楚,vsftpd.chroot_list 是設定 chroot_local_user 的反向列表(或叫例外列表)
chroot_list_enable=NO時chroot檔案功能會被關掉。
chroot_list_enable=YES時chroot_list_file=/etc/vsftpd.chroot_list才有效用。
只不過效用會被chroot_local_user影響
chroot_local_user=YES時vsftpd.chroot_list名單裡的人不會被鎖在家目錄,其他人會。
chroot_local_user=NO時vsftpd.chroot_list名單裡的人會被鎖在家目錄,其他人不會。
這是 vsftpd 的問題,它設置這個開關會造成截然相反的情況。
chroot_list_enable=NO (預設值)時,chroot_list_file 裡頭的使用者會被限制住只能在自己的目錄;
但 chroot_list_enable=YES 時, chroot_list_file 卻變成,裡頭的使用者可以跑來跑去。
補充一下,如果要讓指定使用者進入的 home 目錄的話,可以修改 /etc/passwd。
A=chroot_local_user,
B=chroot_list_enable,
chroot_list內容為”midas”,
“heidi”為另一個不列入chroot_list的有效帳號
實驗如下:
| midas | heidi
——————————————-
#A(mark A), B=YES | X | O
——————————————-
A=YES, B=YES | O | X
——————————————-
A=YES, #B | X | X
——————————————-
#A, #B | O | O
結論:
If activated, you may provide a list of local users who are placed in a chroot() jail in their home directory upon login. The meaning is slightly
different if chroot_local_user is set to YES. In this case, the list becomes a list of users which are NOT to be placed in a chroot() jail.
以上是chroot_user_list的部分原文, 意思是說如果單純把chroot_user_list=YES而#chroot_local_user(被mark掉), 則chroot_list檔案內列名的user將會被限制在家目錄, 但是如果同時chroot_local_user也設定為YES, 則所有的user都會被限制在家目錄, 反而chroot_list檔案內列名的user除外.
不讓某帳號離開家目錄
修改vsftpd.conf
chroot_list_enable=yes //啟動chroot_list_file檔案的功能
chroot_list_file=/etc/vsftpd.chroot_list //列在裡面的使用者,無法離開家目錄
預設讓所有帳號不能離開家目錄,只有特定的帳號才行
chroot_local_user=yes
chroot_list_enable=yes //啟動chroot_list_file檔案的功能
chroot_list_file=/etc/vsftpd.chroot_list //列在裡面的使用者,可離開家目錄
根據上面的回覆
有提到說修改 /etc/passwd 可以指定使用者的家目錄
設定是正常的
但是如果這時候我又開放chroot_local_user
會變成使用者會在/home裡面
不會在我指定的目錄裡面