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 для злонамеренного чтения / записи данных файла.

Если ты хочешь TMPDIR в вашей среде sudo вы можете передать это явно:

sudo TMPDIR=$TMPDIR env
Другие вопросы по тегам