例如,如果我想获取 my 的输出,dmesg
我必须使用sudo dmesg
.
现在,假设我想监视输出,我可以watch
使用 或 来watch -n 1 sudo dmesg
将其放入sudo watch -n 1 dmesg
。他们都输出相同的东西。
我的问题是:
是否有任何例子
sudo
以不同的顺序使用会导致不同的输出?在这些情况下是否有任何“标准”或正式的符号?我应该
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"