Linux

在 Linux 中為特定使用者阻止特定命令

  • April 21, 2016

如何阻止命令,比如說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

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