Кажется, при sudo
использовании sudo -u $user
этой среды все еще используется среда root. Как я могу sudo
использовать пользовательскую среду? в качестве особого примечания, не все пользователи, на которых я буду использовать это, имеют оболочки входа в систему.
19
# whoami => root # sudo -u user whoami => user
sudo -u user
аналогиченsu user
переключению env в su, который вы должны использоватьsu - user
-u
также игнорирует группы ... Я пробовал что-то из root (используя sudo -u down), и это сработало, по-видимому, не для пользователя. ... поэтому я должен убедиться, что я запускаю команды таким образом, чтобы иметь все ограничения и проблемы с окружающей средой.Ответы:
Пытаться
sudo -i -u $user
источник
/etc/passwd
:( но я думаю, что это будет ...-E
именно она сохраняет среду, то есть все переменные среды и т. Д. Есть, хотя она все еще не установленаPATH
иLD_LIBRARY_PATH
для вызывающего пользователя.$SUDO_USER
можно использоватьman sudoers
в Debian упоминается еще одна возможность. Не уверен, какой путь вы хотите, но ваш вопрос звучит так, как будто вы хотели бы иметьenv_reset
вариант из/etc/sudoers
- наоборот, в основномenv_keep
список. Для того, чтобы установить правильное значение,HOME
вы можете использовать-H
опциюsudo
напрямую или, опять жеsudoers
, сalways_set_home
опцией.В качестве альтернативы вы можете использовать,
env_file
чтобы указать точное окружение, которое вы хотите передать. Тем не менее, я думаю, что было бы лучше, если бы вы проверилиenv_*
вариантыman sudoers
, потому что/etc/sudoers
контролирует все это, и это точка, к которой следует обратиться.Вот часть контекста, в котором я использую
env_reset
внутри моегоsudoers
файла:источник
Когда Судо ИНГ переменные окружения не сохраняются.
В моем случае я использую здесь документ .
Вы помещаете свои действия, например, в
my_script.sh
ЗДЕСЬ ДОКУМЕНТ:Вы не должны помещать переменные прямо здесь, так как они будут интерпретированы вашим текущим пользователем.
Если
$MY_VAR
не установлен для пользователя, выполняющего скрипт, он не будет установлен.Ваша переменная должна вызываться внутри ваших скриптов, или вы должны избегать их с помощью
\
.Например.
Здесь
$MY_VAR
будет иметьsome_user
контекстное значение.источник
su - some_user
вместоsu -u some_user
.