如何从另一个用户访问 root 中定义的环境变量?

如何从另一个用户访问 root 中定义的环境变量?

test在 user 中定义了一个 env 变量root。我可以root使用命令访问内部用户:

echo $test

现在我切换到另一个用户myuser使用su - myuser.现在如何访问test变量myuser

这是我正在尝试做的一个例子: 在此输入图像描述

答案1

如果您正在使用GNU bash(作为 Linux 上的登录 shell)并且如果您想要FOO设置一些环境变量每个用户对于字符串值,bar您可以在文件/etc/bash.bashrc(接近末尾)中添加几行,例如:

 # to be added in /etc/bash.bashrc
 export FOO=bar

§6.2 Bash 启动文件了解更多。

当然,您需要 root 权限才能编辑(一次,例如/usr/bin/sudo /usr/bin/emacs /etc/bash.bashrc 在某些终端中)该/etc/bash.bashrc文件。

您还可以选择使用其他登录 shell,例如桀骜或者。你需要安装他们的包并使用chsh(1)更改/etc/passwd条目(另请参阅密码(5)/etc/shells记录在文件中贝壳(5))。他们有不同的方法来做同样的事情。

如果该文件/root/.bashrc是世界可读的(这可能是网络安全风险),您可以使用eval内置正则表达式(1)或者呆呆的(1)在其上,使用命令替换

请随时通过电子邮件询问更多信息[email protected](法国巴黎附近)。

答案2

这是一个复杂的方法:

root_test=$( sudo su -l -c 'printf "%s\n" "$test"' )

或者,假设 root 的 shell 是 bash:

eval "$(sudo su -l -c 'declare -p test')"

无论哪种方式,你都需要变得root,在 root 的登录环境中,访问变量的值。

相关内容