Linux, sudo env не имеет переменной среды, в то время как у пользователя root есть

Linux, sudo env не имеет переменной среды, в то время как у пользователя root есть

У меня RHEL 7, и я хочу установить переменную окружения для sudo.

Я запустил sudo su, чтобы переключиться на пользователя root и добавил exportв его .bashrcфайл. Затем я перезагрузил их с помощью source.

Теперь, когда я запускаю envв rootрежиме, у него есть переменная окружения. Однако, когда я выхожу и запускаю, sudo envее нет.

Почему это происходит?

решение1

sudoзапускает программы в своей собственной ограниченной среде (см. раздел СРЕДА руководства man sudo). Он неявно используется bashдля запуска программ, поэтому ~/.bashrcне запускается, хотя вы можете вызвать его явно:

sudo bash --rcfile=~root/.bashrc -c ProgramAndParameters

Вы можете задать переменную среды в строке запуска:

sudo variable=value ProgramAndParameters

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

В качестве альтернативы вы можете добавить файл среды ( для получения дополнительной информации /etc/sudoersсм .man sudoers

решение2

запись sudoers, как показано ниже

%DBTEAM     ALL = (oracle) NOPASSWD: ALL

DBTEAM --> Имя группы

oracle --> имя пользователя oracle

переключиться на целевого пользователя без переменной среды sudo -s -u oracle

переключиться на целевого пользователя с переменной среды sudo -i -u oracle

Связанный контент