3

我希望能够快速检查我是否都有 sudo 访问权限并且我的密码已经过身份验证。我不担心专门为我将要执行的操作拥有 sudo 访问权限,但这将是一个不错的奖励。

具体来说,我试图将其用于一个脚本,我希望该脚本可由一系列用户运行。有些有 sudo 访问权限。都知道root密码。

当他们运行我的脚本时,如果可能的话,我希望它使用 sudo 权限而不提示输入密码,否则回退到询问root密码(因为他们可能没有 sudo 访问权限)。

我的第一次非工作尝试是在关闭sudo -S trueSTDIN 或从 /dev/null 读取的情况下分叉。但这仍然提示输入密码并等待几秒钟。

我尝试了其他几件事,包括等待 0.3 秒以查看它是否立即成功,但我尝试的一切最终都在某些情况下失败。(并不是因为我的超时时间太短。)很难弄清楚发生了什么,因为我不能像往常一样只是 strace。

知道不起作用的一件事是在运行之前关闭 STDIN 或将其附加到管道上sudo -S true。我希望这会使密码提示立即失败,但它仍然提示并且行为奇怪。我认为它可能需要一个终端。

4

4 回答 4

4

使用较新版本的sudo有一个用于此目的的选项:

sudo -n true

true在这里使用无操作,但您可以使用任何命令。

于 2014-03-10T21:00:40.607 回答
1

我不知道需要这样做的最终原因是什么,但我认为也许你可能需要重新考虑核心原因是什么。尝试使用权限执行复杂、不寻常的事情经常会导致安全漏洞。

更具体地说,无论脚本试图做什么,使用 setuid 而不是 sudo 可能会更好。(我还想知道为什么这么多人拥有 root 密码。Sudo 专门用来避免给人们提供 root 密码。)

于 2008-09-23T16:59:56.600 回答
0

跑步

sudo -S true < /dev/null &>/dev/null

似乎有效,尽管它在失败前延迟了一秒钟。

于 2009-11-04T22:31:03.087 回答
-1
getent group admin | grep $particular_user

您可以使用 whoami 来获取当前用户。

编辑:但这并不能帮助您确定您是否仍然有权执行 sudo 任务...嗯..

于 2008-09-23T17:05:19.863 回答