充分发挥 sudo 的作用
2009-11-26 00:00:00 来源:WEB开发网保留系统环境变量的另一种方法是在 sudoers 中使用 Defaults !env_reset 指令:
Defaults !env_reset
然后,在命令行上指定环境变量名和值:
$ sudo LIBPATH=″/usr/lib:/opt/db2_09_05/lib64″ -u delta /usr/local/bin/datapmp
如果没有设置 !env_reset 条目,那么在试图运行命令时会从 sudo 收到以下错误:
sudo: sorry, you are not allowed to set the following environment variables: LIBPATH
如果发现 sudo 还会缩减其他环境变量,那么可以在 sudoers 中指定变量名(使用 Defaults env_keep += 指令),让 sudo 保持这些变量不变。例如,假设对于我的一个使用 sudo 的脚本,sudo 会缩减应用程序变量 DSTAGE_SUP 和 DSTAGE_META。为了保留这些变量,可以在 sudoers 中设置以下条目:
Defaults env_keep += "DSTAGE_SUP"
Defaults env_keep += "DSTAGE_META"
注意,我指定了变量名,但是没有指定变量值。值已经包含在我的脚本中,比如:
export DSTAGE_SUP=/opt/dstage/dsengine; export DSTAGE_META=/opt/dstage/db2
现在,在执行这个脚本时,这两个环境变量会保持不变。
保护 sudo 路径
可以使用 secure_path 指令修改 sudoers 中默认的 PATH。这个指令指定当用户执行 sudo 命令时在什么地方寻找二进制代码和命令。这个选项的目的显然是要限制用户运行 sudo 命令的范围,这是一种好做法。在 sudoers 中使用以下指令,指定安全 PATH 及其搜索目录:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/opt/freeware/bin:/usr/sbin"
更多精彩
赞助商链接