Root

創建僅具有執行 C 程序的權限的使用者

  • May 24, 2016

我正在嘗試建構線上程式碼編輯器。我的場景:通過 Web 伺服器接收到對“C”程序的請求 - root 使用者創建文件,編譯文件並向使用者確認成功。

我們nodejs在後端使用。現在是執行程序的時候了 -nodejs為我們提供了一個選項來生成這個帶有 uid 的使用者程式碼(除了 root 之外的不同使用者)。

如何創建一個沒有 ls、px 之類的權限的使用者,而只是簡單地執行在上述步驟中編譯的執行檔。

我嘗試過的解決方案之一:將/usr/bin, /bin, /usr/sbin/, /sbin, /usr/local/bin,的權限更改/usr/local/sbin為 700,因此只有 root 使用者可以執行所有這些命令,並且該使用者只執行簡單的“C”程序。但是這個使用者仍然可以選擇查看/etc目錄 - 所以基本上我需要一個所有目錄都為 700 的使用者。這是個好主意嗎?

其他選擇是裝備。這個還沒試過。

朋友建議的第三個選項是 chroot,但人們說它不是出於安全措施。

有人可以指導我如何解決這個問題。

chroot 是執行此操作的更傳統方式,您可以使其工作,但由於您是通過 Web 界面執行此操作,因此有點複雜:您必須防止競爭條件(多個使用者使用相同的 chroot 環境) ,您必須為每個請求動態建構一個目錄結構,並且可能還有一些我無法想到的其他事情。

如果您使用的是 Linux,則需要查看容器 ( lxc) 或 Docker 項目 https://docs.docker.com。尤其是 Docker 平台將非常好且輕鬆地讓您在這裡做您想做的事:創建可用於執行完全被監禁的程序而不影響外部(即您的 Web 伺服器)資源的短期、輕量級虛擬系統。您可以下載您希望程序執行的特定作業系統環境的基本 docker 映像(例如,Fedora 12),告訴 docker 在將使用者的程序源導入該環境時執行該環境,然後告訴 docker 執行編譯器並在該環境中生成文件。然後你告訴 docker 銷毀臨時環境。什麼都沒有留下,(幾乎)沒有安全風險。

引用自:https://unix.stackexchange.com/questions/285135