首頁 > 系統教程 > Linux > 主體

Linux上的chroot命令:如何在隔離的空間中運行和測試應用程式

PHPz
發布: 2024-02-12 12:12:03
轉載
873 人瀏覽過

如果你是Linux愛好者,你可能經常需要在你的系統上安裝或卸載各種應用程式或服務。但是,你是否知道每個應用​​程式或服務都依賴一些共享的物件文件,這些文件是其他軟體包提供的?如果這些物件檔案缺失或損壞,你的應用程式或服務可能無法正常運作,甚至無法啟動。因此,了解如何在隔離的空間中運行和測試應用程式或服務是一個非常有用的技能,可以幫助你維護和優化你的Linux系統。本文將介紹一個強大的命令列工具,叫做chroot,它可以讓你在Linux上創建一個獨立的環境,並在其中運行和測試應用程式或服務。

什麼是 Linux 中的 chroot?

#讓我們詳細探討chroot,了解其好處、使用場景,如何在Linux系統上設定它,以及如果需要的話,如何跳出(chroot)環境。

chroot 就是 change-root,可以說是最簡單和古老的容器化軟體之一,它允許使用者安全地將應用程式和服務隔離。在計算術語中,隔離是將程式限制在一個受限空間內,具有預先定義的資源。

如果您熟悉 Docker 及其工作原理,您可以將 chroot 視為其大幅簡化的版本。 chroot 透過更改程式的根目錄,限制存取和可見性,從而提供了額外的隔離和安全層級。

基本上,您建立一個單獨的目錄,將所有程式的依賴項複製到新目錄中,然後執行chroot命令。這使得程式能夠正常運行,同時無法存取基本檔案系統。

將程式設定為 chroot 環境是一種在安全空間中測試其可靠性的好方法,而不會改變實際系統的檔案。此外,在 chroot 環境中,您還可以減少受損軟體包引起的安全風險,因為在 chroot 環境中,受損的軟體包將無法存取和修改敏感系統檔案。

程式只能存取和檢視匯入到 chroot 目錄中的文件,也被稱為」chroot監獄」。這樣可以防止程式及其子進程幹擾基本系統的運作。

什麼是chroot監獄?

#一個 chroot 監獄是一個隔離的環境,其中運行和執行chroot程式。 chroot 監獄這個術語源自於這樣一個概念:chroot 環境內的進程及其子進程無法存取或查看基本檔案系統,並且受限於chroot所預定的資源。

現在你對 chroot 的概念有了清楚的了解,讓我們動手實踐,學習如何創建一個 chroot 監獄並在其中執行程式。

如何建立 chroot 監獄並在其中執行程式

chroot 監獄(chroot jail)實質上是目錄,其中包含了程式正常運作所需的所有資源、檔案、二進位檔案和其他依賴項。

然而,與常規的 Linux 環境不同,chroot監獄的環境受到嚴格限制,程式無法存取外部或額外的檔案和系統資源。

例如,要在 chroot 監獄中執行 Bash shell,你需要將 Bash 二進位檔案及其所有相依性複製到chroot目錄中。

以下是建立 chroot 監獄並產生 Bash shell 的步驟:

1、要成功執行一個程序,你需要將它的所有依賴項複製到 chroot 監獄的目錄中。讓我們使用 which 和 ldd 指令來找到二進位檔案(在本例中為Bash)及其所有相依性的位置:

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ which bash
/usr/bin/bash
                                                                           
┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ ldd /usr/bin/bash
登入後複製
Linux上的chroot命令:如何在隔離的空間中運行和測試應用程式

2、現在你知道了二進位檔案和其依賴項的位置,將它們複製到你想要轉換為 chroot 監獄的目錄中。使用 mkdir 指令建立必要的目錄,並使用 cp指令將所有檔案複製到對應的目錄:

mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* ./lib64/ && cp /bin/bash /bin/
登入後複製
Linux上的chroot命令:如何在隔離的空間中運行和測試應用程式

3、最后,当程序和它的依赖项复制完成后,你可以使用 sudo 前缀以提升的权限运行 chroot 命令,在所选择的目录中生成 chroot 环境。默认情况下,它将生成一个Bash shell。下面是要输入的命令:

linuxmi@linuxmi:~$ sudo chroot www.linuxmi.com
登入後複製
Linux上的chroot命令:如何在隔離的空間中運行和測試應用程式

这就是生成chroot监狱并在其中运行程序的所有步骤。

如何逃离chroot监狱

虽然 chroot 监狱对于测试不稳定的软件很有用,但在处理 SSH 连接时也很有用,因为将连接的用户设置为 chroot 环境是保护 SSH 服务器的众多方法之一。

另一方面,如果你是一名渗透测试人员,并且已登录到目标的 SSH 服务器,发现它是一个 chroot 环境,可能会感到沮丧,感觉走投无路。

然而,有很多方法可以逃离错误配置的 chroot 狱,有些方法需要 C 编程技巧,而其他方法可以使用工具自动化。一些简单的 chroot 逃逸方法包括:

  • 嵌套的 chroot 调用
  • 带有保存的文件描述符的嵌套 chroot 调用
  • 根目录挂载方法
  • procfs 逃逸
  • ptrace 逃逸

请注意,要使用这些方法之一进行 chroot 逃逸,你需要在系统中具有升级的特权。通过访问 chw00t 的 GitHub 存储库,你可以了解更多关于这些逃逸方法的信息,那是一个 chroot 逃逸自动化工具。

现在你应该对 Linux 中的 chroot 了如指掌了

通过本文的介绍,我们了解了chroot是什么、它是如何工作的以及如何实现它,我们还学习了如何创建chroot监狱并在其中执行应用程序或服务,以及如何逃离chroot监狱。chroot是一个简单而强大的工具,可以让你在安全和隔离的空间中运行和测试应用程序或服务。请记住,chroot并不是一个完美的安全解决方案,它有一些局限性和缺陷,因此你应该谨慎地使用它,并结合其他的沙盒或虚拟化技术来提高你的系统的安全性和稳定性。

以上是Linux上的chroot命令:如何在隔離的空間中運行和測試應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:lxlinux.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!