将 sudo echo "xyz" 的输出重定向到文件时,为什么会出现“权限被拒绝”的情况?

将 sudo echo "xyz" 的输出重定向到文件时,为什么会出现“权限被拒绝”的情况?

为什么我得到

-bash: test: Permission denied

当我跑步时

sudo echo "xyz" > test

目录权限为:

drwxr-xr-x 3 root root 4096 2014-08-05 16:26 

我使用 在目录中创建文件没有问题sudo。但为什么我不能使用 sudo echo 进入它?

答案1

发生这种情况是因为您仅以echoroot 身份运行该命令。输出重定向由您的(非 root)shell 处理。为了避免这种情况,请不要使用 shell 的重定向并使用实际命令来处理写入:tee。你想做的事情可以这样做:

echo "xyz" | sudo tee test > /dev/null

(如果不重定向输出,tee也会输出xyz到标准输出)

相关内容