我希望能够快速检查我是否都有sudo访问权限,并且我的密码已经过身份验证。我并不担心sudo访问专门用于我即将执行的操作,但这将是一个很好的奖励。
具体来说,我正在尝试使用它是一个脚本,我希望可以由一系列用户运行。有些人有sudo访问权限。都知道root密码。
当他们运行我的脚本时,我希望它在不提示输入密码的情况下使用sudo权限(如果可能的话),否则回到要求 root 密码(因为他们可能没有sudo access)。
我的第一次非工作尝试是在STDIN关闭或从/ dev / null读取时将sudo -S true
分叉。但是仍然提示输入密码并等待几秒钟。
我已经尝试了其他一些事情,包括等待0.3秒以确定它是否立即成功,但我尝试的所有事情在某些情况下都会失败。 (并不是因为我的超时时间太短。)很难弄清楚发生了什么,因为我不能像往常那样直截了当。
我知道无效的一件事是在运行sudo -S true
之前关闭STDIN或将其附加到管道。我希望这会使密码提示立即失败,但它仍然会提示并表现得很奇怪。我想它可能需要一个终端。
答案 0 :(得分:3)
答案 1 :(得分:2)
我不知道需要这样做的最终原因是什么,但我想也许你可能需要重新考虑核心原因。尝试使用权限执行复杂,不寻常的事情经常会导致安全漏洞。
更具体地说,无论脚本尝试做什么,最好用setuid代替sudo。 (我也不得不想知道为什么这么多人拥有root密码.Sudo专门用来避免给人们root密码。)
答案 2 :(得分:0)
getent group admin | grep $particular_user
您可以使用whoami来获取当前用户。
编辑:但是,如果您仍然执行sudo任务,这无法帮助您找到......嗯..
答案 3 :(得分:0)
运行
sudo -S true < /dev/null &>/dev/null
似乎有效,但在失败之前会延迟一秒钟。