如何切换到 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

相关内容