Конфигурация исходного пользователя при получении root-прав

одно линейное решение на основеjtcи xargs:

bash $ jtc -x'l[+0]l[-1]' -y'l' -y'l' -y'l' your.json | xargs -n3
.gitignore FILE 224
Jenkinsfile FILE 1396
README.md FILE 237
pom.xml FILE 2548
bash $ 

Примечание:в вашем файле json неправильный (ключ размера присутствует не в каждой записи ), для его исключения первый аргумент -xпостроен таким образом (обрабатывать только те записи, где размер присутствует ).

0
03.02.2021, 15:33
1 ответ

В зависимости от конфигурации sudo, переменная окружения HOMEможет указывать на ваш домашний каталог или указывать на домашний каталог целевого пользователя. Может иметь значение, запускаете ли вы sudo -sилиsudo zsh(снова, в зависимости от конфигурации sudo ).

Чтобы всегда иметь свой домашний каталог, вы можете использовать

sudo --preserve-env=HOME

, если позволяет конфигурация sudo, или

sudo env HOME="$HOME" zsh

что всегда возможно.

Вы можете сделать это псевдонимом или функцией, например.

alias sudo='sudo --preserve-env=HOME'

или

function sudo {
  if [ $# -eq 0 ]; then
    set env HOME="$HOME" zsh
  fi
  sudo "$@"
}

Имейте в виду, что некоторые приложения сохраняют файлы состояния в вашем домашнем каталоге, и вы можете получить некоторые файлы, принадлежащие root -, например .viminfoи .zsh_history. Если проблемы возникают только с несколькими программами, настройте их на использование разных файлов состояния. Например, у меня есть это в моем.vimrc:

" Disable viminfo if running as root
if has("unix")
  if system("id -u") == 0
    set viminfo=
  endif
endif

И (более сложная версия )этого в моем.zshrc:

if [[ $UID -eq 0 ]]; then
  HISTFILE="${HISTFILE%_history}_root_history"
fi
2
18.03.2021, 22:32

Теги

Похожие вопросы