我经常使用嵌入式 Linux 发行版,因此有时我有一个甚至多个终端来minicom
连接到该系统。我曾两次输入reboot
错误的控制台,然后我重新启动了主机操作系统而不是嵌入式设备。我知道这是我的错,我应该更加小心,但我想知道是否可以强制使用sudo
不需要的命令sudo
。我想reboot
在控制台中输入时必须输入密码。
答案1
如果/usr/local/bin
位于PATH
包含该命令的目录之前reboot
,您可以简单地创建一个名为 的脚本/usr/local/bin/reboot
,该脚本可以询问您想要的任何类型的确认问题。
例如,脚本可能是这样的:
#!/bin/sh
echo "Please enter the short hostname of the system you wish to reboot:"
read REBOOTHOST
if [ "$REBOOTHOST" = "$(hostname -s)" ]
then
# invoke the real reboot command
exec /sbin/reboot "$@"
else
echo "Sorry, you're in the wrong system. This is $(hostname -s)."
echo "Please be more careful!"
fi
该脚本不要求您输入密码(您现在可能可以通过脊椎反射操作来执行此操作,无需实际思考),而是要求您输入要重新启动的系统的主机名,并在以下情况下拒绝执行操作:输入的主机名不正确。这将强制在您的意图和您输入命令的实际主机之间进行交叉检查。
对于更严格的实现,您可能需要研究 Debianmolly-guard
包裹:它提供了一个可以轻松实现此类检查的框架,以及许多针对各种情况的现成检查。