快速检查sudo权限是否可用
时间:2020-03-06 14:36:41 来源:igfitidea点击:
我希望能够快速检查我是否都具有sudo访问权限以及我的密码是否已通过身份验证。我不担心专门针对我将要执行的操作使用sudo访问,但这将是一个不错的收获。
具体来说,我正在尝试使用的脚本是一个我希望可由一系列用户运行的脚本。有些具有sudo访问权限。所有人都知道root密码。
当他们运行我的脚本时,我希望它使用sudo权限而不提示我们输入密码(如果可能的话),否则便退回要求输入root密码(因为他们可能没有sudo访问权限)。
我的第一个无效的尝试是在STDIN关闭或者从/ dev / null读取时分叉sudo -S true。但这仍然会提示我们输入密码,并等待几秒钟。
我已经尝试了其他几件事,包括等待0.3秒以查看它是否立即成功,但是我尝试的所有操作在某些情况下都以失败告终。 (这不是因为我的超时时间太短。)很难弄清楚发生了什么,因为我不能像往常一样仅仅跟踪。
我知道不起作用的一件事是在运行sudo -S true之前关闭STDIN或者将其添加到管道上。我希望这会使密码提示立即失败,但是它仍然提示并表现异常。我认为它可能需要一个终端。
解决方案
我不知道需要这样做的最终原因是什么,但是我认为也许我们可能需要重新考虑什么根本原因。尝试使用权限来做复杂的,不寻常的事情经常会导致安全漏洞。
更具体地说,无论脚本试图做什么,最好用setuid而不是sudo来完成。 (我也不得不怀疑为什么会有这么多人拥有root密码。Sudo专门用于避免为人们提供root密码。)
getent group admin | grep $particular_user
我们可以使用whoami获取当前用户。
编辑:但这并不能找到是否仍然可以执行sudo任务...嗯..
跑步
sudo -S true < /dev/null &>/dev/null
似乎可以正常工作,尽管它在失败之前会延迟一秒钟。