Mir*_*gel 5 sudo environment-variables tmp
sudo 联机帮助页告诉我,我可以通过传递选项来保护环境-E,这在以下情况下不起作用$TMPDIR:
> env | grep TMPDIR
TMPDIR=/localdata/tmp
> sudo env | grep TMPDIR
[no output]
> sudo -E env | grep TMPDIR
[no output]
Run Code Online (Sandbox Code Playgroud)
此选项未列入黑名单,即sudo sudo -V未将其列为“要删除的环境变量”。按照问题“如何指定根的环境变量”的答案中提出的方法,我尝试将其列入白名单,这是我的/etc/sudoers读物:
Defaults env_reset
Defaults env_keep = "TMPDIR"
Run Code Online (Sandbox Code Playgroud)
这也不起作用,它实际上甚至没有TMPDIR出现在白名单中(即“sudo sudo -V”打印为“要保留的环境变量”)。
(我运行的是 Ubuntu 10.04。)
看起来 glibc 在运行 setuid 程序时会删除某些环境变量(sudo当然是 setuid)。TMPDIR 是这些环境变量之一,尽管它似乎没有在任何地方记录。这是一项安全功能,可防止 setuid 程序更改其环境以允许恶意读取/写入文件数据。
如果你想TMPDIR在你的 sudo 环境中,你可以明确地传递它:
sudo TMPDIR=$TMPDIR env
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1393 次 |
| 最近记录: |