Command-Line

為 root 帳戶使用非 root 使用者配置

  • July 18, 2014

當我使用終端並使用su或執行具有 root 使用者權限的命令時,是否可以應用儲存在該使用者主目錄中sudo的“非 root 使用者”(我從中呼叫su或)的配置?sudo

例如,考慮(以非 root 使用者身份登錄)我想編輯配置文件/etc/some_filevim並且我的 vim 配置文件位於/home/myuser/.vimrc. 啟動命令行並輸入sudo vim /etc/some_file,我希望“我的”漂亮且配置良好的vim顯示出來。但是我得到的是vim預設配置的醜陋,沒有外掛等。

我可以製作susudo使用我的使用者的配置文件,而不是位於 /root 的 root 使用者的文件嗎?

用於sudo -E保護您的環境:

$ export FOO=1
$ sudo -E env | grep FOO
FOO=1

這將保留$HOME您擁有的任何其他環境變數,因此您開始使用的相同配置文件將由以 root 身份執行的程序訪問。

您可以更新sudoers以禁用該env_reset設置,該設置會清除所有環境變數,並且通常預設啟用。您可能還必須啟用在其中使用的能力sudo -E。還有一些sudoers可能相關的其他設置:env_keep,它允許您指定要預設保留的特定變數,以及env_remove,它聲明要始終刪除的變數。您可以使用sudo sudo -V來查看哪些變數是/未保留的。

如果您無法修改sudoers,另一種方法是明確提供您的環境:

sudo env HOME=$HOME command here

您可以創建一個 shell 別名來自動執行此操作,因此您不必輸入它。

請注意,這樣做(無論哪種方式)都可能產生潛在的不良副作用:例如,如果您執行的程序試圖在您的主目錄中創建文件,這些文件將以 root 身份創建,而您的普通使用者將無法編寫給他們。

對於 的特定情況,如果您是該系統的唯一使用者vim,您也可以將您的.vimrc作為系統範圍。/etc/vimrc

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