我最近了解更多fakechroot
。 AFAIK 這看起來很危險,因為它會提升使用者權限,即使它位於 chroot 中。我知道,fakeroot
但它不一樣,因為你不能用它做任何需要根的事情。
但是,fakechroot
您實際上可以在 chroot 中執行需要 root 權限的操作。那麼這是否意味著使用fakechroot
普通使用者有可能獲得 root chroot,然後在主機上以 root 身分突破?
我在他們的手冊頁上讀到fakechroot
不會升級用戶權限,我不確定我是否完全理解。
答案1
某些 Linux 應用程式僅在目前使用者為 時才能運作root
。大多數這些應用程式都與改變 Linux 本身有關,因此受到保護,不會被普通用戶使用。
然而,有時,當我們作為普通用戶工作時,我們希望在不提升到 的情況下運行此類命令root
,只是為了臨時將這些命令用於特定目的。
此類命令並不是安全缺陷,因為它們在當前用戶下運行,並且對 Linux 的運行版本沒有任何實際影響。
此類命令的最佳範例是fakeroot
.其作用是假裝目前用戶是root
,但實際上並沒有發生這種情況。
這使得期望以 root 身分運行的程式實際上以普通使用者身分執行,同時錯誤地認為需要 root 的操作會成功。
這通常在建立軟體包時使用,以便正在安裝的軟體包的安裝過程可以順利進行,即使它運行chown root:root
、 或install -o root
等,
fakeroot
也會記住它假裝提供給這些文件的假所有權,因此後續操作會檢查所有權將被root
視為所有者而不是真正的所有者。
例如,這允許後續tar
運行將檔案儲存為 root 擁有的檔案。fakeroot
在這種情況下,將建立一個包含 root 和 suid 擁有的檔案的 tarball。但是,您將無法提取該 tarball 並保留這些權限,除非您以 root 身分執行此操作,並且不會進行權限升級。
fakeroot
然後允許以普通用戶身份運行構建,同時保留構建以 root 身份運行時所產生的效果,從而允許稍後重播它們。 「真正」應用程式效果需要真正的 root 權限,但fakeroot
沒有提供任何取得方法。
另一個例子是假根。
fakechroot
是一個常規的非 setuid 程式。它不會增強使用者的權限,也不會降低系統的安全性。它創建了一個可以在沒有 root 權限的情況下使用 chroot(8) 命令的環境,這對於呼叫apt
安裝軟體包而不需要 root 權限很有用。使用者透過這種方式在自己的小氣泡中創建根環境,而不會影響系統上的其他任何人。
fakechroot
不提供該fakeroot
功能,因此需要fakechroot
透過fakeroot
命令呼叫。這兩個命令是互補的並且多次一起使用。