扩大sudo的范围?

tin*_*lyx 1 linux sudo bash

可以sudo在单个命令上使用超级用户权限运行它:

sudo echo "hi"
Run Code Online (Sandbox Code Playgroud)

但是当我使用带有命令的管道时:

sudo echo "hi" > /a.txt
Run Code Online (Sandbox Code Playgroud)

超级用户权限未扩展到管道 ( > /a.txt) 部分,并且我收到拒绝权限的错误:

bash: /a.txt: 权限被拒绝

我的问题是:

是否有一种语法可以将sudo上面的范围扩展到管道部分?

Del*_*tik 6

在 root 提升的 shell 中运行命令,然后你的 I/O 重定向也将以 root 身份完成:

sudo bash -c 'echo "hi" > /a.txt'
Run Code Online (Sandbox Code Playgroud)

如果您不想创建子shell 来执行此操作,可以使用以下解决方法tee

echo "hi" | sudo tee /a.txt > /dev/null
Run Code Online (Sandbox Code Playgroud)

其他资源: