如题!
mmmmn 回复于:2002-07-31 10:09:51
呵呵,这个我也想知道,好象是配合ftp使用的吧?
prowater 回复于:2002-07-31 10:45:10
CHROOT就是Change Root,也就是改變程式執行時所參考的根目錄位置。
一般的目錄架構:
/
/bin
/sbin
/usr/bin
/home
CHROOT的目錄架構:
/hell/
/hell/bin
/hell/usr/bin
/hell/home
* 為何要CHROOT?
1.限制被CHROOT的使用者所能執行的程式,如SetUid的程式,或是會造成
Load 的 Compiler等等。
2.防止使用者存取某些特定檔案,如/etc/passwd。
3.防止入侵者/bin/rm -rf /。
4.提供Guest服務以及處罰不乖的使用者。
5.增進系統的安全。
* 要如何建立CHROOT的環境?
1.chroot()這個function:
chroot(PATH)這個function必須具有 root 的身份才能執行,執行後會
將跟目錄切換到 PATH 所指定的地方。
2.login的過程:
使用者無論是從console或是telnet進入,都必須執行/usr/bin/login來
決定是否能進入系統,而login所做的動作大致是:
(1)印出login的提示符號,等待使用者輸入密碼。
(2)檢查密碼是否正確,錯誤的話回到(1)。
(3)正確的話以setuid()來改變身份為login_user。
(4)以exec()執行user的shell。
因此我們必須先修改/usr/bin/login的source code,讓login在(2)到(3)
的中間執行chroot($CHROOT_PATH)的動作,已達到CHROOT的目的,並以修
改過的login替代原先的/usr/bin/login。
(5)稍微好一點的方法必須在做chroot()之前檢查login
user的group,如果有某個特定的group(如chrootgrp)
才執行chroot(),不然所有的人都會被chroot了。
3.建立CHROOT所需的環境:
(1)必須具備的目錄:(假設$CHROOT為希望建立的路徑)
$CHROOT/etc $CHROOT/lib $CHROOT/bin
$CHROOT/sbin $CHROOT/usr/lib $CHROOT/usr/bin
$CHROOT/usr/bin $CHROOT/usr/local $CHROOT/home
(2)仔細審查/etc中的檔案,需具備執行程式時所需的檔
案,如passwd,groups,hosts,resolv.conf等等。
(3)拿掉不想給的執行檔,如su,sudo等SetUid的程式,
以及compiler甚至telnet。
(4)測試一下,以root身份執行 chroot $CHROOT /bin/sh
即可進入CHROOT環境中。(man chroot for details)
4.在console或是以telnet進入試試。
5.Username/Password Resolve的考量:
在CHROOT時你可能不希望被CHROOT的使用者(以後簡
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 用法 CHROOT chroot root CHROOT/etc/passwd /etc/passwd |
注册
个人空间
