
我是 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 命令,但他們將無法運行任何其他命令。