linux容器技術之chroot


linux容器技術之chroot

linux chroot 機制的由來

  • root 用戶啟動一個daemon,必須用root 用戶來啟動,比如一個web 服務器(nginx/apapce 80端口)是在操作系統的接口(1-1024),只有root 有這個權限來啟動這類接口;用root 戶啟動daemon 的程序也被認為是一個自然的事情。
  • 隨着安全的攻擊越來越嚴重,如果任何一個提供TCP 服務的程序出現漏洞,那攻擊者就獲取到了root 權限,無疑是災難性的。為了降低這個問題帶來的風險,現在幾乎所有的用戶程序都是 用root 用戶啟動程序,然后主動放棄root 權限,該用一個普通的用戶(比如 admin/nobody) 進行運行。    這樣一旦攻擊者獲取到了這個程序的權限,也是此時運行用戶的權限,不是root 權限對系統造成的危害相對要小了許多
  • 為了進一步提高系統的安全性,linux 系統引入了chroot 機制;chroot 是一個系統調用,程序可以通過調用chroot的函數庫來更改一個進程所能看到的跟目錄  。比如httpd 軟件安裝在/usr/local/httpd 這個目錄下,那這個進程(httpd) 只可以讀、寫到這個指定的目錄: [usr/local/httpd] ;這樣即使攻擊者獲取進程的權限,也只能讀寫這個目錄下的文件,這樣就變的安全了許多,起碼不會影響這個台機器其他的進程,和其他的機器的安全問題

chroot 的意義

  • chroot 全程是change to root : 其中root 是根目錄的意思,也就是改變(linux 根目錄是/,也可以理解為設置)一個程序運行時參考的根目錄的位置

# 根目錄的參考
linux 系統(原始的方案)  | 引入chroot 機制
/                                 /lxc
/usr                            /lxc/usr
/bin                            /lxc/bin
/sys                            /lxc/sys

//我們看的一旦使用了chroot ,用戶的權限就不是linux 系統的根目錄,而是我們指定的/lxc (這個目錄可以任意指定),所以chroot 確實可以修改根目錄.
  • 增強系統的安全性,定程序訪問的根目錄,防止用攻擊者可以通過程序的漏洞獲取其他目錄的讀寫權限;比如/etc/passwd 比如/ 下所有的權限

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM