mml*_*mlb 6 sudo bash environment-variables
阅读man pages
我希望sudo -E
将所有环境变量传递给子shell,但我没有得到预期的结果。
正如预期的那样,很棒:
$ export LD_LIBRARY_PATH=/home/mmendez/toolchains/x86-destdir/usr/lib/
$ env | grep LD
LD_LIBRARY_PATH=/home/mmendez/toolchains/x86-destdir/usr/lib/
Run Code Online (Sandbox Code Playgroud)
更多精彩:
$ env -i LD_LIBRARY_PATH=/tmp/no/where env | grep LD
LD_LIBRARY_PATH=/tmp/no/where
Run Code Online (Sandbox Code Playgroud)
不是预期的:
$ env -i LD_LIBRARY_PATH=$LD_LIBRARY_PATH sudo -E /usr/bin/env | grep LD
$
$ env -i LD_LIBRARY_PATH=/tmp/no/where sudo -E /usr/bin/env | grep LD
$
Run Code Online (Sandbox Code Playgroud)
所以,我怎么能得到sudo -E
通过LD_LIBRARY_PATH
,而无需编辑/etc/sudoers
?
编辑:
根据
如何使 sudo 保留我的环境变量?OP 表明外壳可能与!env_reset
. 我正在运行Arch Linux
,默认 shell 是BASH
. 再次,我不想要编辑/etc/sudoers
,这可能吗?
某些环境变量,包括LD_LIBRARY_PATH
或HOSTALIASES
(完整列表在sysdeps/generic/unsecvars.h 中),在执行特权程序(即具有setuid位或具有文件系统功能)时由 glibc 自动取消设置。这是一项安全功能,否则用户可以将他们自己的库加载到su
或sudo
诱骗他们接受任何密码。
您将需要使用sudo env LD_LIBRARY_PATH=$LD_LIBRARY_PATH yourcommand
以将变量传递给通过 sudo 运行的命令。
归档时间: |
|
查看次数: |
2655 次 |
最近记录: |