Yan*_*ard 4 redhat sudo environment-variables
无论我尝试什么,在我使用 sudo 运行命令后,似乎都没有保留LD_LIBRARY_PATH环境变量。我设法让它坚持下去的唯一方法是每当我sudo
从命令行LD_LIBRARY_PATH=/the/path
调用它时在我的命令前加上前缀,但我不想每次都这样做。
似乎 env_keep 选项忽略了这个变量,exempt_group 选项也是如此。
我的 %group 目前ALL=(ALL) NOPASSWD:ALL
在 sudoers 中具有访问权限。我希望为我运行的任何命令保留这个特定的环境变量。
我怎样才能做到这一点?
我的服务器运行的是 Red Hat Enterprise Linux 5.7。
use*_*517 14
你可能希望你可以使用
Defaults env_keep += "LD_LIBRARY_PATH FRED"
Run Code Online (Sandbox Code Playgroud)
但是对CentOS 6.2
with的快速测试Sudo version 1.7.4p5
没有通过LD_LIBRARY_PATH
但确实通过了FRED
。sudoers 手册页有这个说法
请注意,大多数操作系统上的动态链接器将删除 可以控制来自 setuid 可执行文件环境的动态链接,包括 须藤。根据操作系统,这可能包括 _RLD、DYLD_、LD_、 LDR_、LIBPATH、SHLIB_PATH 等。这些类型的变量从 sudo 甚至开始执行之前的环境,因此,它不是 sudo 可以保存它们
所以看起来系统LD_LIBRARY_PATH
在 sudo 看到它之前从环境中删除了它。
为了让它发挥作用,我必须这样做:
Defaults env_keep += "LD_LIBRARY_PATH"
到 sudoersalias sudo='sudo LD_LIBRARY_PATH=/mypath'
现在我用 sudo 调用的任何命令都将具有变量设置。
归档时间: |
|
查看次数: |
14497 次 |
最近记录: |