我想限制使用者的所有命令,除了 ssh 命令

我想限制使用者的所有命令,除了 ssh 命令

我是 root 用戶,不希望用戶可以執行 ssh 以外的所有 Linux 命令。他們只需在其用戶中使用 ssh 命令。怎麼做?請任何人幫忙。

答案1

您可以採取幾種不同的方法來實現這一目標。以下是一些選項:

使用 bash shell 內建的受限模式:您可以透過執行 bash -r 或 rbash 以受限模式啟動使用者的 shell。這將阻止使用者執行大多數命令,包括更改目錄、設定環境變數以及使用 /bin/sh 運行命令。但是,使用者仍然可以執行 bash shell 中內建的命令,例如 cd、echo 和 exit。

使用 bash shell 的別名命令:您可以使用別名命令來定義允許使用者執行的自訂命令。例如,您可以為 ssh 建立一個別名,如下所示:

alias ssh='/usr/bin/ssh'

這將允許用戶運行 ssh 命令,但他們將無法運行任何其他命令。

使用 bash shell 的內建命令:內建命令可讓您像從命令列運行命令一樣運行命令,而不是作為函數或內建命令運行。您可以使用它來允許使用者運行特定命令,同時仍然阻止他們運行其他命令。例如:

command ssh

這將允許用戶運行 ssh 命令,但他們將無法運行任何其他命令。

使用 bash shell 內建的指令:enable 內建指令可讓您啟用或停用特定的 shell 內建指令或指令。您可以使用它來允許使用者運行特定命令,同時仍然阻止他們運行其他命令。例如:

enable -n ssh

這將禁用 ssh 命令,因此用戶將無法運行它。

使用bash shell的export指令:可以使用export指令設定不允許使用者更改的環境變數。例如:

export PATH=/usr/bin:/usr/sbin

這會將使用者的 PATH 環境變數設定為僅包含 /usr/bin 和 /usr/sbin 目錄,因此他們只能執行位於這些目錄中的命令。

使用自訂 shell:您可以建立僅允許使用者執行特定命令的自訂 shell。例如,您可以建立一個名為 ssh-only 的 shell 腳本,如下所示:

#!/bin/bash

# Check if the first argument is "ssh"
if [ "$1" == "ssh" ]; then
  # If it is, run the ssh command
  /usr/bin/ssh "$@"
else
  # If it's not, print an error message
  echo "Command not allowed"
fi

然後,使用 chsh 指令將使用者的 shell 設定為 /path/to/ssh-only。這將允許用戶運行 ssh 命令,但他們將無法運行任何其他命令。

相關內容