У меня 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