Linux
在 Linux 中為特定使用者阻止特定命令
如何阻止命令,比如說
mkdir
特定使用者?我所做的只是創建了只讀功能並儲存在使用者配置文件中
~/.bashrc
/bin/mkdir() { echo "mkdir command not allow for you" } mkdir() { echo "mkdir command not allow for you" } ./mkdir() { echo "mkdir command not allow for you" } readonly -f /bin/mkdir readonly -f mkdir readonly -f ./mkdir
測試:
rahul@ubuntu:~$ cd /bin/ rahul@ubuntu:/bin$ ./mkdir /home/rahul/ggg mkdir command not allow for you rahul@ubuntu:/bin$ cd rahul@ubuntu:~$ mkdir testing mkdir command not allow for you rahul@ubuntu:~$ /bin/mkdir testing mkdir command not allow for you
所以我的問題是什麼應該是實現這一目標的方式?有什麼工具嗎?
更新 1 # 但如果使用者很聰明,他可以複製 mkdir 二進製文件並重命名並使用它。那麼如何實現呢?
我不知道如何使用 bash,但我知道另一個限制使用者環境的 shell:lshell (limited shell)。
配置概覽
Lshell 是通過 INI 文件配置的。預設情況下,它包含允許命令的白名單,但可以輕鬆配置為禁止使用者使用特定命令。
此配置(預設 conf
/etc/lshell.conf
)禁止使用者foo
使用mkdir
:[foo] allowed = 'all' - ['mkdir', 'bash', 'sh', 'csh', 'dash', 'env']
為了將使用者帳戶配置為預設使用 lshell,您必須:
chsh -s /usr/bin/lshell foo
Lshell 可以做更多的事情,比如:
- 3 級粒度:使用者、組、全部。
- 可以限制對系統中某些路徑的訪問。
- 可以限制某些字元(如
|
)的使用。- 可以限制僅通過 SSH 使用某些命令。
和更多。
**更新 1#**添加了測試結果:
rahul:~$ which bash /bin/bash rahul:~$ dd if=$(which bash) of=my_bash *** forbidden syntax: dd if=$(which bash) of=my_bash rahul:~$ bash *** forbidden command: bash rahul:~$ cp /bin/bash my_bash *** forbidden path: /bin/bash rahul:~$ /bin/bash *** forbidden command: /bin/bash rahul:~$ sh *** forbidden command: sh rahul:~$ dash *** forbidden command: dash rahul:~$ env bash *** forbidden command: env rahul:~$ cp /bin/mkdir mycreatedir *** forbidden path: /bin/mkdir