Environment-Variables
sudo 不保留 TMPDIR
sudo 手冊頁告訴我,我可以通過傳遞
-E
選項來保護環境,這在以下情況下不起作用$TMPDIR
:> env | grep TMPDIR TMPDIR=/localdata/tmp > sudo env | grep TMPDIR [no output] > sudo -E env | grep TMPDIR [no output]
此選項未列入黑名單,即
sudo sudo -V
未將其列為“要刪除的環境變數”。按照在回答“如何指定 root 的環境變數”問題中提出的方法,我嘗試將其列入白名單,這是我的/etc/sudoers
閱讀:Defaults env_reset Defaults env_keep = "TMPDIR"
這也不起作用,它實際上甚至沒有
TMPDIR
出現在白名單中(也就是說,“sudo sudo -V”列印為“要保留的環境變數”。(我正在執行 Ubuntu 10.04。)
看起來 glibc 在執行 setuid 程序時會刪除某些環境變數(
sudo
當然是 setuid)。TMPDIR 是這些環境變數之一,儘管它似乎沒有在任何地方記錄。這是一項安全功能,可防止 setuid 程序更改其環境以允許惡意讀取/寫入文件數據。如果你想
TMPDIR
在你的 sudo 環境中,你可以明確地傳遞它:sudo TMPDIR=$TMPDIR env