Linux
我怎樣才能安全地給別人一個貝殼?
我有一個關於向某人提供 shell 帳戶的問題。它有多安全?他可以閱讀/等。我怎樣才能提供一個安全的外殼帳戶,它只會將使用者限制在一些垃圾箱和他自己的家中?chroot監獄是唯一的方法嗎?
控制使用者可以做什麼的最簡單/有效的方法之一是lshell。
lshell 是一個用 Python 編碼的 shell,它允許您將使用者環境限制為有限的命令集,選擇啟用/禁用 SSH 上的任何命令(例如 SCP、SFTP、rsync 等),記錄使用者的命令,實施時間限制,和更多。
如果你給某人一個 shell 帳戶,他們可以看到所有世界可讀的文件。這包括系統工作所必需的許多文件
/etc
,包括/etc/passwd
(包含使用者名但不包含密碼)。如果您只允許使用者在 chroot 內登錄,他們就看不到 chroot 之外的文件。這意味著您必須在 chroot 中放入足夠多的程序、庫等——使用者必須有權訪問的所有內容以及它們的每個依賴項。
請注意,chroot 僅保護直接文件訪問。使用者可以窺探各種事情,包括所有使用者正在執行的程序的名稱和參數(除非您設置了額外的保護,例如 SELinux)。如果使用者不需要做太多事情,您可以使用受限 shell 設置更嚴格的限制(包括阻止使用者創建自己的執行檔),但是設置受限 shell 權限非常棘手,所以我不不推薦它。
如今,虛擬機非常便宜。您有許多免費的實現可供選擇(使用者模式 Linux、VirtualBox、VMware、KVM、OpenVZ、VServer 等),並且額外系統安裝使用的磁碟空間非常小(無論如何您可能需要它用於 chroot)。虛擬機幾乎可以隔離所有內容:文件、程序、網路……除非您有非常不尋常的限制,否則這是要走的路。