如果我运行命令。
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