Sudo - 是否有命令可以检查我是否有 sudo 和/或还剩多少时间?

val*_*dil 29 linux sudo bash

(最初发布在 Stack Overflow 上。他们建议我改为在这里尝试。这是原始帖子:https : //stackoverflow.com/questions/3858208/sudo-is-there-a-command-to-check-if-i-have -sudo-and-or-how- much-time-is-left )

见标题。我想要一个让我查询 sudo 的命令。理想情况下,如果我仍然有 sudo 和 false 如果 sudo 已过期,它将返回成功。获得剩余时间也可能有用(尽管如果我担心我可以执行 sudo -v 重新验证。)哦,它不应该要求输入密码。

我发现的最接近的东西是“sudo -n true”,但 -n 选项仅存在于我的 Centos 5 机器上。-n 如果必须要求输入密码,则失败。有没有其他方法可以获得这个功能?假设我实际上在我使用的所有机器上都没有 root,所以我无法根据自己的喜好安装新版本的 sudo。

我这样做是值得的,这样我就可以得到指示 sudo 状态的提示。我喜欢知道哪些终端可以主动使用 sudo。我也有一个提示,当我是 root 时会改变颜色,但我不经常使用 root,所以使用有限。

小智 30

我知道这是一个非常古老的问题,但这是我今天在脚本中所做的。假设成为 sudo 意味着能够以 sudo 的身份运行任何命令(或者至少是正常运行时间)

CAN_I_RUN_SUDO=$(sudo -n uptime 2>&1|grep "load"|wc -l)
如果 [ ${CAN_I_RUN_SUDO} -gt 0 ]
然后
    echo "我可以运行 sudo 命令"
别的
    echo "我无法运行 Sudo 命令"
菲

但是,如果您的用户在 visudo 中有限制,则此检查是不够的,例如,如果您的用户只能使用 make 命令。尝试运行一些您知道会起作用的命令。您可以添加过滤器 grep -v 抱歉,例如:$(sudo -n uptime 2>&1|grep "load" | grep -v 抱歉|wc -l) 以避免这些误报。


小智 11

-n选项在较新版本的 sudo 中可用,但正如您所说,这不是一个选项。除了尝试 sudo 并查看它是否会提示输入密码之外,没有真正的方法可以执行您正在寻找的操作。如果您担心需要视觉指示,为什么不开始执行 sudo /bin/bash 来启动 root bash 会话?请注意,这是不安全的,但如果有人意识到您对 sudo 的提示更改,这也有点不安全。