Linux
使用 sudo 重定向輸出
我想使用 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)
希望這能起作用,但仍然沒有運氣。
您可以使用
tee
throughsudo
以其他使用者身份寫入文件。在您編寫目錄列表的案例中,它變得很簡單
sudo -u ernesto ls some-directory | sudo -u ernesto tee some-file