Linux,sudo env 没有环境变量,而 root 用户有

Linux,sudo env 没有环境变量,而 root 用户有

我有 RHEL 7 并且我想为 sudo 设置环境变量。

我已运行sudo su以切换到 root 用户并添加export到其.bashrc文件。然后我使用 重新加载它们source

现在,当我envroot模式运行时,它具有环境变量。但是,当我退出并运行时,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

相关内容