Shell

儘管有 sudo 權限,但無法清空文件

  • October 2, 2020

我有一個由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 ?

sudo > api-server-out-0.log

不會工作。它實際上做了什麼,它在sudo沒有任何參數的情況下啟動,並嘗試將其在您的使用者帳戶下的輸出重定向到指定的文件,這當然不會起作用,因為該文件歸根使用者所有。

你真正想做的是

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'

Artem S. Tashkinov描述了“為什麼”並提供了許多選項中的一些。這是另一種解決方法:

sudo tee api-server-out-0.log </dev/null

引用自:https://unix.stackexchange.com/questions/612604