Linux

使用 sudo 重定向輸出

  • January 24, 2019

我想使用 sudo 作為另一個使用者執行命令,並將該命令的輸出重定向為該使用者。例如,如果我執行:

touch some-file

在使用者 simon 下,some-file 將歸使用者 simon 所有。如果我執行:

sudo -u ernesto touch some-file

然後 some-file 歸使用者 ernesto 所有,因為我指定我想以 ernesto 身份執行 touch 命令。最後,如果我執行:

sudo -u ernesto ls /some-folder/ > some-file

some-file 再次歸使用者 simon 所有,因為 > 運算符將 > 之前的整個命令的輸出重定向到 some-file(實際上是由使用者 simon 執行的)。我需要獲取將目錄列為 ernesto 但使用 sudo 的輸出,因為我要列出的目錄歸 ernesto 所有,我無法使用 simon 列出目錄。

它必須使用 sudo,因為使用者 ernesto 允許我在沒有密碼的情況下執行 sudo 命令。

我試過

sudo -u ernesto $(ls /some-folder/ > some-file)
sudo -u ernesto `ls /some-folder/ > some-file`
sudo -u ernesto 'ls /some-folder/ > some-file'
sudo -u ernesto eval(ls /some-folder/ > some-file)
sudo -u ernesto exec(ls /some-folder/ > some-file)

希望這能起作用,但仍然沒有運氣。

您可以使用teethroughsudo以其他使用者身份寫入文件。

在您編寫目錄列表的案例中,它變得很簡單

sudo -u ernesto ls some-directory | sudo -u ernesto tee some-file

引用自:https://serverfault.com/questions/950507