如何切換到 root 並使用與普通使用者相同的點檔案?

如何切換到 root 並使用與普通使用者相同的點檔案?

我在 Mac OSX 上執行 zsh,有時想在終端機中切換到 root 使用者。

我想保留我的普通用戶的所有點文件、環境路徑配置和腳本,並以 root 身份執行很多操作。

我一直在運行sudo bashorsudo zsh作為切換到 root 的簡單方法,但這有一個缺點,就是不能運行我的普通用戶的所有 zsh 配置。

“成為 root ”來運行一系列命令並保留普通用戶的所有配置/環境設定的最佳方法是什麼?

例如,我為普通用戶自訂了以下內容,並希望 root 用戶也可以使用它們:

  • .zshrc
  • ~/bin
  • .別名
  • vim模式輸入

編輯:請注意,我知道我不應該經常「以 root 身份運行」。但我不這麼認為。但有時我確實必須以 root 身份不斷運行一些簡單的命令,並且我只是為了這種用途而打開 tmux 拆分,而不是其他用途。

答案1

若要取得常用的點文件,請確保sudo不會更改HOME環境變數。是否發生這種情況取決於 sudo 的編譯時和運行時配置。要保留HOME,請編輯該sudoers文件(運行visudo,切勿直接編輯此文件!)並確保它包含

Defaults !always_set_home, !set_home
Defaults env_keep+=HOME

(根據編譯選項,其中一些可能是不必要的。)當然不要運行sudo -i.

不過,請避免以 root 身分做太多事情。例如,不要以 root 身分執行編輯器,而是使用sudoedit.

答案2

您幾乎肯定不想這樣做。

如果您的根用戶指向普通用戶的點文件,那麼這些點文件的權限可能會發生變化,從而使普通用戶的事情變得複雜。

您可以做的是在每次登入時將檔案複製到根用戶主目錄。

在 ~/.zshenv(對於 root 使用者)的某個位置複製這些檔案並調整它們的權限。這樣您就可以保持環境的正常運行,並開始使用您的自訂設定。

就我個人而言,如果我想執行多個 root 命令,sudo su -但您可以嘗試sudo -E su -p保留使用者的環境。

強制警告!

跑步從來都沒有充分的理由sudo su。很遠更好的sudo在每個命令之前運行。也就是說,我sudo su有時會這樣做。但一般規則是不要sudo su

相關內容