Я запускаю zsh на Mac OSX и иногда хочу переключиться в терминале на пользователя root.
Я хотел бы сохранить все мои dotfiles, конфигурацию путей к среде и скрипты от моего обычного пользователя и просто выполнять большую часть задач как root.
Я использовал sudo bash
или sudo zsh
как простой способ переключиться на root, но у этого способа есть недостаток: он не запускает все мои конфигурации zsh, которые есть у меня для обычного пользователя.
Каков наилучший способ «стать пользователем root» для выполнения ряда команд и сохранить все настройки конфигурации/среды, имеющиеся у моего обычного пользователя?»
Например, я настроил следующие параметры для обычного пользователя и хотел бы, чтобы все они были доступны также и пользователю root:
- .zshrc
- ~/bin
- .псевдонимы
- режим vim для ввода
EDIT: Обратите внимание, что я знаю, что мне не следует часто "запускать как root". И я этого не делаю. Но мне приходится время от времени постоянно запускать несколько простых команд как root, и я открываю разделение tmux только для этого использования, и ни для чего другого.
решение1
Чтобы получить обычные файлы dot, убедитесь, что это sudo
не изменяет HOME
переменную окружения. Произойдет ли это, зависит от конфигурации sudo во время компиляции и во время выполнения. Чтобы сохранить HOME
, отредактируйте sudoers
файл (запустите visudo
, никогда не редактируйте этот файл напрямую!) и убедитесь, что он содержит
Defaults !always_set_home, !set_home
Defaults env_keep+=HOME
(Некоторые из них могут быть ненужными в зависимости от параметров компиляции.) И, конечно же, не запускайте sudo -i
.
Однако избегайте слишком многого от имени root. Например, вместо того, чтобы запускать редактор от имени root, используйте sudoedit
.
решение2
Вы почти наверняка не захотите этого делать.
Если ваш пользователь root был направлен на файлы точек обычных пользователей, то разрешения для этих файлов точек могут измениться, что усложнит ситуацию для вашего обычного пользователя.
Вместо этого вы можете копировать файлы в домашний каталог пользователя root при каждом входе в систему.
Где-нибудь в вашем ~/.zshenv (для root) скопируйте файлы и настройте их разрешения. Таким образом вы сохраните свою среду в порядке и сможете использовать свои настройки.
Лично я, если хочу запустить несколько команд root, sudo su -
могу попробовать sudo -E su -p
сохранить среду пользователя.
Обязательное предупреждение!
Никогда не бывает веской причины бежать sudo su
. Это далеколучшезапускать sudo
перед каждой командой. Я, конечно, sudo su
иногда так делаю. Но общее правило — не надо sudo su
.