Как использовать asdf от имени пользователя root?
Мне нужно прочитать некоторые аппаратные данные с правами доступа, поэтому мне нужно использовать плагин asdf в качестве пользователя root. Как я могу это сделать?
Я пытался запустить пользователя root sudo su
но я не могу получить доступ к asdf
4 ответа
ТЛ; др: sudo -E su
Проблема в том, что sudo
не сохраняет (большинство) переменных окружения по умолчанию. За asdf
переменные среды ASDF_CONFIG_FILE
, ASDF_DATA_DIR
, а также ASDF_DIR
все важны, наряду с обычными подозреваемыми, как PATH
,
К счастью, мы можем поручить sudo
держать все переменные среды вокруг. Из man sudo
:
-E, --preserve-env
Указывает политике безопасности, что пользователь желает сохранить свои существующие переменные среды. Политика безопасности может возвращать ошибку, если у пользователя нет разрешения на сохранение среды.
Ресурсы:
- Asdf комментарий от anandumdas
Существующий ответ на этот пост указал мне правильное направление: sudo -E
требуется для переноса переменных среды (включая важные PATH
) в оболочку sudo.
Однако я все еще получал unknown command: THECOMMAND. Perhaps you have to reshim?
. Что сработало для меня, так это получение пути как к команде, которую вы хотите запустить, так и к двоичному файлу, через который вы хотите ее запустить.
В моем случае я пытался использовать hostile
инструмент управления хостом. Это не удалось, потому что не удалось найтиnode
. Указав как полныеnode
путь и прямой путь к hostile
скрипт мне удалось обойти ошибки решим.
sudo -E `asdf which node` `asdf which hostile` load the_file.txt
Что-то вроде
sudo -E $(which asdf) list
или в рыбе
sudo -E (which asdf) list
Заменятьasdf
с необходимым плагином asdf, а затем поместите аргумент команды, напримерlist
выше
Проверьте, где находятся ваши контейнеры (например,which iex
), в моем случае
/home/<user>/.asdf/shims/
Станьте пользователем root, взяв с собой пользователя env.
sudo -Es
Экспортируйте прокладки (как указано в ошибке)
export PATH=/home/riccardo/.asdf/shims/:$PATH
Вы готовы идти :thumbup: