在第一个命令上使用&&和sudo时,第二个命令是否也以sudo身份运行?

Modified on: Fri, 08 Jun 2018 23:17:23 +0800

如果我运行命令。

sudo some-command && some-other-command

第二个命令是否也以sudo previle运行?

最佳答案

TL; DR:


第一个命令是

sudo some-command

第二个命令是

some-other-command

命令sudo采用以下命令并使用提升的权限执行它。但是,在执行第一个命令之前,&&不属于命令并由shell解释。它告诉bash首先执行第一个命令,第二个命令成功。

所以sudo不知道&& some-other command。当提升的进程终止时,bash获取其返回值,然后执行另一个命令,该命令再次不知道第一个命令。

这很容易证明:

some-other-command

要达到你想要的,你可以启动一个提升的bash,让它执行两个命令:

$ sudo whoami && whoami
root
username

现在,两个命令都以root身份执行,因为上述整个过程是在提升过程中执行的,即bash会话以此命令启动,该命令在完成后立即退出。但是,两个whoami都不知道彼此的存在。

这不适合任何目的,但对于此演示,更简单的方法是简单地执行

$ sudo bash -c 'whoami && whoami'
root
root
作者:,s3lph

相关问答

添加新评论