Linux
為使用者提供具有嚴格限制的 Shell 訪問權限
我正在開發一個內部文件共享系統,例如 Google Drive/Dropbox,它對使用者自己的文件夾的 shell 訪問非常有限。使用者必須能夠使用
mv
ssh
ls
cd
命令來訪問和導航他們自己的文件夾,而且一些使用者將能夠執行gcc
來編譯他們自己的程序(但他們不允許執行他們編譯的程序)。唯一的問題是我不希望人們在系統文件中漫遊或修改系統設置/變數。首先,我認為使用容器/BSD Jails 可能是解決方案,但鑑於該系統可能有超過 300 個使用者,它增加了不必要的複雜性和成本。
開放的網際網路上有哪些解決方案?謝謝!
首先,讓我說,你在這個領域所做的任何事情都取決於使用者尋找創造性的方法來解決你已經實施的問題。
Bash 提供了“受限制的 shell”的概念,它將阻止使用者使用
cd
並將其限制為僅使用其路徑中預先存在的命令。您可以創建一個包含指向“允許”命令集的符號連結的目錄,並將使用者的路徑配置為指向該目錄:https://www.gnu.org/software/bash/manual/html_node/The-Restricted-Shell.html
$ PATH=/tmp/ex rbash $ ls src $ cd / rbash: cd: restricted $ export PATH=/usr/bin:$PATH rbash: PATH: readonly variable $
但是請注意,如果您將命令放在可以執行任意命令的路徑中,這將無濟於事:
$ rbash $ cd /tmp rbash: cd: restricted $ vim :!/bin/bash $ cd /tmp $
甚至 Bash 受限外殼的文件也說:
現代系統提供了更安全的方法來實現受限環境,例如監獄、區域或容器。