Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 快速检查sudo权限是否可用_Unix_Sudo - Fatal编程技术网

Unix 快速检查sudo权限是否可用

Unix 快速检查sudo权限是否可用,unix,sudo,Unix,Sudo,我希望能够快速检查我是否都有sudo访问权限,并且我的密码已经过身份验证。我并不担心我将要执行的操作会有专门的sudo访问权限,但这将是一个很好的奖励 具体来说,我正试图使用它来创建一个脚本,我希望它能被一系列用户运行。有些人有sudo权限。所有人都知道根密码 getent group admin | grep $particular_user 当他们运行我的脚本时,如果可能的话,我希望它使用sudo权限而不提示输入密码,否则返回到请求root密码(因为他们可能没有sudo访问权限) 我的第一

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

具体来说,我正试图使用它来创建一个脚本,我希望它能被一系列用户运行。有些人有sudo权限。所有人都知道根密码

getent group admin | grep $particular_user
当他们运行我的脚本时,如果可能的话,我希望它使用sudo权限而不提示输入密码,否则返回到请求root密码(因为他们可能没有sudo访问权限)

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

我还尝试过其他几种方法,包括等待0.3秒,看它是否立即成功,但在某些情况下,我尝试的所有方法都以失败告终。(并不是因为我的超时时间太短。)很难弄清楚到底发生了什么,因为我不能像平时那样扫射


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

我不知道需要这样做的最终原因是什么,但我想也许你需要重新思考核心原因是什么。尝试使用权限执行复杂、不寻常的操作通常会导致安全漏洞

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

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

编辑:但这并不能帮助你找到你是否仍然有权做sudo任务。。。嗯…

跑步

sudo -S true < /dev/null &>/dev/null
sudo-S true/dev/null
似乎可以工作,但在失败之前会延迟一秒钟。

对于较新版本的,有一个用于此目的的选项:

sudo -n true

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

我们免费提供根密码,并将继续,直到它导致问题。6年来我们一直很好,这让生活变得更轻松。但是我们中的许多人更喜欢使用sudo,因为(1)它是我们自己的密码,(2)动作被记录下来。所以这是为了方便,而不是绕开限制。setuid是个好主意,可能在75%的时间内都可以使用,但我们经常通过网络将其连接到新构建的盒子上,设置setuid位会破坏方便性。(这是一个略微改进的
xauth-f/var/gdm/:0.xauth列表| xargs-n3 xauth add