我对 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