為 root 帳戶使用非 root 使用者配置
當我使用終端並使用
su
或執行具有 root 使用者權限的命令時,是否可以應用儲存在該使用者主目錄中sudo
的“非 root 使用者”(我從中呼叫su
或)的配置?sudo
例如,考慮(以非 root 使用者身份登錄)我想編輯配置文件
/etc/some_file
,vim
並且我的 vim 配置文件位於/home/myuser/.vimrc
. 啟動命令行並輸入sudo vim /etc/some_file
,我希望“我的”漂亮且配置良好的vim
顯示出來。但是我得到的是vim
預設配置的醜陋,沒有外掛等。我可以製作
su
或sudo
使用我的使用者的配置文件,而不是位於 /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