У меня может быть другой $HOME для меня как sudo?

В нашей сети весь пользователь и идентификаторы группы распределяются через NIS с центрального сервера и каждый пользователь $HOME каталог находится на смонтированной папке, которая живет на том центральном сервере.

Очевидно, у пользователя есть другой GID от root и так root не имеет доступа к смонтированному $HOME папка, мешая (если не невозможный), чтобы пользователь выполнил что-то как sudo apt update поскольку этому нужен доступ к $HOME как замечено sudo.

Мой вопрос, могу я иметь локальное для машины $HOME для файлов и папок это sudo доступ потребностей, к в то время как $HOME для мой другого (не -sudo) работа продолжает указывать на смонтированную папку?

Дополнительная информация:

[user@machine ~]$ id
uid=544(user) gid=40(src) groups=40(src),101(systemd-journal)

[user@machine ~]$ sudo id
uid=0(root) gid=0(root) groups=0(root),40(src),101(systemd-journal),600(visitors),13010(hlcc),19016(identhw),51107(cadadm)

[user@machine ~]$ sh -c 'echo $HOME'
/net/server/home/user

[user@machine ~]$ sudo sh -c 'echo $HOME'
/net/server/home/user

Как я могу изменить результат последней строки (т.е. sudo версия $HOME) укажите на локальную папку на machine вместо смонтированного сетевого пути?

Править:

Спасибо за ответы. Оказывается, что мой вопрос был почти идентичен этому на unix.stackexchange.com.

Я также узнал, что проблема имел с apt-get update не был на самом деле связан с HOME переменная среды, вместо этого это было связано с тем, что я звонил sudo apt-get update от моего (user) размещают папку, подобную этому вопросу, который может быть решен путем простого вызова sudo apt-get update от другой папки, например. /.

Но так как мой вопрос здесь был больше о HOME замеченный sudo, Я принял ответ techraf, потому что он не требует никаких дополнительных переключателей или определений в sudo командная строка.

4
задан 13 April 2017 в 15:37

2 ответа

Необходимо добавить следующую строку к sudoers разделу Command Environment (с sudo visudo).

Defaults        env_keep -= "HOME"

Затем можно использовать сценарии без изменений.

<час>

существует различие между Debian и Ubuntu способом sudo, команда обрабатывает по умолчанию HOME переменная (конкретно эта переменная, не целая среда):

  • В значении Debian HOME заменяется корневым каталогом (целевого пользователя) корня;

  • Ubuntu сохраняет установку вызывающего абонента.

Этот ответ на Unix. SE содержит больше деталей.

2
ответ дан 1 December 2019 в 09:07

Если вы вызовете sudo с помощью -i, вы получите дом root.

Если вы хотите, чтобы sudo наследовал от текущей среды, вы можете просто установить дом для чего-то другого.

Итак, используйте sudo -i command или HOME=/wherever sudo command.

Например:

sudo -i sh -c 'echo $HOME'

Что дает вам:

/root

Или:

HOME=/foo sudo sh -c 'echo $HOME'

Что дает вам:

/foo
6
ответ дан 1 December 2019 в 09:07

Другие вопросы по тегам:

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