redhat – 如何配置sudoers以始终保持LD_LIBRARY_PATH环境变量?

无论我尝试什么,似乎在我用sudo运行命令后都没有保存LD_LIBRARY_PATH环境变量.我设法让它坚持的唯一方法是每当我从命令行调用它时,用我的sudo命令前缀LD_LIBRARY_PATH = / / path,但我不想每次都这样做.

似乎env_keep选项忽略了这个变量,exempt_group选项也是如此.

我的%组目前有ALL =(ALL)nopASSWD:ALL作为其在sudoers中的访问权限.我想为我运行的任何命令保留这个特定的环境变量.

我怎样才能做到这一点?

我的服务器正在运行Red Hat Enterprise Linux 5.7.

解决方法

你可能希望你可以使用它
Defaults env_keep += "LD_LIBRARY_PATH FRED"

但是使用Sudo版本1.7.4p5对CentOS 6.2进行快速测试不会传递LD_LIBRARY_PATH但会传递FRED. sudoers man page有这个说法

Note that the dynamic linker on most operating systems will remove variables that
can control dynamic linking from the environment of setuid executables,including
sudo. Depending on the operating system this may include _RLD,DYLD_,LD_,LDR_,LIBPATH,SHLIB_PATH,and others. These type of variables are removed from 
the environment before sudo even begins execution and,as such,it is not 
possible for sudo to preserve them

所以看起来系统在sudo看到它之前从环境中删除了LD_LIBRARY_PATH.

相关文章

1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...
1 删除0字节文件 find -type f -size 0 -exec rm -rf {} ...
## 步骤 1:安装必要的软件包 首先,需要确保系统已安装 `dh...