創建僅具有執行 C 程序的權限的使用者
我正在嘗試建構線上程式碼編輯器。我的場景:通過 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 銷毀臨時環境。什麼都沒有留下,(幾乎)沒有安全風險。