我希望能够快速检查我是否都有 sudo 访问权限并且我的密码已经过身份验证。我不担心专门为我将要执行的操作拥有 sudo 访问权限,但这将是一个不错的奖励。
具体来说,我试图将其用于一个脚本,我希望该脚本可由一系列用户运行。有些有 sudo 访问权限。都知道root密码。
当他们运行我的脚本时,如果可能的话,我希望它使用 sudo 权限而不提示输入密码,否则回退到询问root密码(因为他们可能没有 sudo 访问权限)。
我的第一次非工作尝试是在关闭sudo -S true
STDIN 或从 /dev/null 读取的情况下分叉。但这仍然提示输入密码并等待几秒钟。
我尝试了其他几件事,包括等待 0.3 秒以查看它是否立即成功,但我尝试的一切最终都在某些情况下失败。(并不是因为我的超时时间太短。)很难弄清楚发生了什么,因为我不能像往常一样只是 strace。
我知道不起作用的一件事是在运行之前关闭 STDIN 或将其附加到管道上sudo -S true
。我希望这会使密码提示立即失败,但它仍然提示并且行为奇怪。我认为它可能需要一个终端。