您可以让 Sudo 在授予访问权限时显示一条消息吗?

您可以让 Sudo 在授予访问权限时显示一条消息吗?

当访问被拒绝时,Sudo 已经告诉用户:

[jayman@this-machine:~]$ sudo echo hi
[sudo] password for jayman: 
Sorry, try again.
[sudo] password for jayman: 
Sorry, try again.
[sudo] password for jayman: 
sudo: 3 incorrect password attempts
[git@this-machine:~]$ sudo echo hi
Sorry, user git may not run sudo on this-machine.

但是,Sudo 不会告诉用户何时授予访问权限。考虑sudo dd if=foo of=bar运行时会发生什么。对我来说,会发生以下两件事之一:

  1. Sudo 提示我输入密码。我输入密码并看到终端转到下一行,但dd有一段时间没有输出任何内容。我最终等待了几秒钟,以确保 Sudo 不会等待说“抱歉,请重试”并再次提示我输入密码。
  2. Sudo 不会提示我输入密码,因为我的凭据已缓存。dd有一段时间没有输出任何东西。我最终等待了几秒钟,以确保 Sudo 不仅仅需要一段时间来提示我输入密码。

如果 Sudo 在我的密码被接受后打印一条消息,那么我就不必等待弄清楚是否已经dd开始。有什么方法可以让 Sudo 在授予访问权限后打印消息吗?

答案1

我最终创建了一个名为的 Bash 脚本sudo

set -e
console="$(tty)"
readonly console

/path/to/real/sudo -v
# Sudo normally writes directly to the terminal device instead of
# writing to stdout, so that’s what I’m doing here
echo Access granted. &> "$console"
/path/to/real/sudo "$@"

然后,我将我的设置PATH"/path/to/fake/sudo/dir:$PATH".此解决方案有一些限制:

  • 如果禁用凭证缓存,它将无法正常工作。
  • 如果您的凭据未缓存,则sudo --helpsudo -k将提示输入密码。

相关内容