我遇到了一些奇怪的行为。
我的 sudoers 文件很短,如下所示:
默认 env_reset 默认 mail_badpass 默认值 secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 根 ALL=(全部:全部) 全部 %admin 全部=(全部) 全部 %sudo ALL=(全部:全部) 全部
(请注意,这是带有反向移植的 3.12 内核的 Ubuntu 13.10)
使用此 sudoers,当我这样做时,sudo env
我几乎可以获得所有非特权用户的环境,包括http_proxy
和https_proxy
。现在,如果我将此行附加到文件,环境将被剥离:
Defaults env_keep="http_proxy"
我的猜测是,有一个默认值,可以env_keep
保存我环境中设置的大部分内容,如果不定义它,env_keep+=
则会删除它。
或者这是一个我应该提交的 sudo 错误?
答案1
在排除故障并与鲍勃在根访问聊天,我们发现 env_keep 确实有未记录的默认值。
摘自 sudo 的手册页:
-V -V(版本)选项使 sudo 打印其版本字符串和版本 安全策略插件和任何 I/O 插件的字符串。如果调用 如果用户已经是 root 用户,则 -V 选项将显示传递给 当 sudo 被构建时配置,并且插件可能会显示更详细的信息 如默认选项。
用户@主机 $: sudo sudo -V : [...] 要保存的环境变量: 授权 权威 泰泽 PS2 PS1 小路 LS_颜色 KRB5CCNAME 主机名 家 展示 颜色 [...]
如果你设置 env_keep 而不附加它,它将覆盖这些值。因此使用Defaults env_keep +="values"