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.)
1 ответ
Похоже, glibc удалит определенные переменные окружения при запуске программ setuid (sudo
это, конечно, setuid). TMPDIR - одна из этих переменных среды, хотя, кажется, она нигде не документирована. Это функция безопасности, которая предотвращает изменение окружения программами setuid для злонамеренного чтения / записи данных файла.
- Ссылка: ld.so очищает TMPDIR для программ setuid
- Ссылка: TMPDIR игнорируется, когда setuid для dumpcap
Если ты хочешь TMPDIR
в вашей среде sudo вы можете передать это явно:
sudo TMPDIR=$TMPDIR env