是否有任何“标准”方法可以将 sudo 与包装器一起使用?

是否有任何“标准”方法可以将 sudo 与包装器一起使用?

例如,如果我想获取 my 的输出,dmesg我必须使用sudo dmesg.

现在,假设我想监视输出,我可以watch使用 或 来watch -n 1 sudo dmesg将其放入sudo watch -n 1 dmesg。他们都输出相同的东西。

我的问题是:

  1. 是否有任何例子sudo以不同的顺序使用会导致不同的输出?

  2. 在这些情况下是否有任何“标准”或正式的符号?我应该sudo在整个包装器之前包装,还是应该放在sudo需要提升权限的命令处?

答案1

您使用的是包装器,而不是管道。包装器将携带他们的权限。

在这种情况下,纯粹出于安全原因,请使用

sudo watch dmesg

代替

watch sudo dmesg

这样您sudo只需触发一次身份验证。否则,它将不断刷新您的身份验证,sudo每秒运行一次。如果你离开,有人走上来^C接受你的命令,他们将能够立即执行sudo其他操作,无论你在该命令上按回车键已经过去了多长时间。

一般来说,每个需要提升的命令都需要sudo

sudo command1 | sudo command2

对于包装器,提升进程将提升该进程生成的任何新进程。唯一的例外是,有些东西会自动以另一个非 root 用户身份运行。例如,在自己的用户下运行的服务。

如果您有多个命令通过管道相互连接,并且所有命令都需要提升,那么通常会看到它们包装在提升的 bash 子 shell 中:

sudo bash -c "command1 | command2"

相关内容