为什么将“sudo echo”标准输出重定向到文件不会授予 root 所有权?

为什么将“sudo echo”标准输出重定向到文件不会授予 root 所有权?

我对 Linux 的使用还很陌生,我正在尝试了解有关文件所有权和权限的更多信息。我刚才偶然发现的一件事正是标题所说的,运行:

weee@my-server:~$ sudo echo "hello" > some-file.txt
weee@my-server:~$ ls -lh
total 4.0K
-rw-rw-r-- 1 weee weee 6 Dec  5 21:21 some-file.txt

该文件归我所有,但其touch工作原理正如人们所期望的那样:

weee@my-server:~$ sudo touch other-file.txt
weee@my-server:~$ ls -lh
total 4.0K
-rw-r--r-- 1 root    root    0 Dec  5 21:22 other-file.txt

我如何强制文件由 root 创建?我是否只需在我的主目录中创建文件,然后sudo chown root...sudo mv ...其移动到/var我需要的位置?我希望只需一步即可完成此操作。

答案1

命令:

sudo [some command] > [some file]

只需以 身份运行命令root,然后将输出重定向为当前用户。为了实现您想要的效果,请尝试:

sudo bash -c "[some command] > [some file]"

答案2

如果您需要文件的所有权为 root,您也可以将用户切换为 root。(如果可能且合适):

su root

相关内容