我有一个由用户拥有和写入的文件root
。
我有另一个用户打电话systemuser
说我们已经为每个操作授予了 sudo 权限。
我能够systemuser
像我为root
用户所做的那样执行每个操作。
但我试图清空 root 拥有和写入的文件,并且出现权限被拒绝错误。
>api-server-out-0.log
-bash: api-server-out-0.log: Permission denied
$ sudo >api-server-out-0.log
-bash: api-server-out-0.log: Permission denied
注意:与用户一起运行的进程root
当前正在写入此日志文件。
您能否建议我如何使用`systemuser?
答案1
sudo > api-server-out-0.log
行不通的。它实际上做了什么,它sudo
在没有任何参数的情况下启动并尝试重定向其输出在您的用户帐户下到指定的文件,这当然不起作用,因为该文件归 root 所有。
你真正想做的是
sudo dd if=/dev/null of=api-server-out-0.log
# or
sudo truncate -s 0 api-server-out-0.log
# or
sudo sh -c 'echo -n "" > api-server-out-0.log'
# or
sudo sh -c ': > api-server-out-0.log'
答案2
阿乔姆·S·塔什基诺夫描述了“为什么”并提供了许多选项中的一些。这是另一种方法:
sudo tee api-server-out-0.log </dev/null