Назад | Перейти на главную страницу

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