有什么办法可以禁用远程机器的关闭吗?

有什么办法可以禁用远程机器的关闭吗?

我有时会错误地使用 关闭远程计算机sudo init 0,因此我在我的 rc 文件之一中编写了类似的内容:

alias sudo='sudo '
if [ $SSH_CLIENT ]; then
  alias init 'echo Never use init when ssh'
fi

然而,尽管 rc 文件被执行,但init仍然运行/sbin/init而不是别名。而且我不喜欢将全局包装脚本添加到/usr/local/bin.那么可以禁用吗sudo init 0?或者我必须向管理员寻求帮助?

答案1

重新定义sudo为函数:

sudo() if [ "$1" = init ] && [ -n "$SSH_CLIENT" ]; then
  echo >&2 "Never use init when ssh"
  return 1
else
  command sudo "$@"
fi

如果您希望在之后扩展别名sudo,您仍然可以添加

alias sudo='sudo '

它仍然会调用我们的sudo函数。

答案2

对于 Debian 及其衍生品,有一个软件叫做molly-guard这正是您想要的——如果它检测到远程登录,它会拦截关闭命令,并要求您通过输入系统名称来确认是否确定关闭正确的系统。

答案3

sudo从您的问题描述来看,我认为您在通过 SSH 登录时使用频率不高。你应该告诉自己:

if [ -n "$SSH_CLIENT" ]; then
  alias sudo='echo "Reconsider your wish, you must!   "'
fi

这将使每次调用都会sudo产生警告。如果您仍然想要,sudo init 0则必须输入\sudo init 0.这\将使 shell 使用真正的命令,而不是您的别名。

然而,我对您的实际建议是在未来 5 年内停止使用 sudo。真正的。

相关内容