Как настроить sudoers, чтобы всегда сохранить переменную среды LD_LIBRARY_PATH?

Большинство процессов в гостевых машинах будет в состоянии сна почти всем временем. Можно проверить, насколько процессы спят с командой PS. На современных гипервизорах дублирующиеся страницы памяти совместно используются виртуальными машинами с техникой под названием KSM на Linux. VMware имеет то же самое. Не уверенный в Hyper-V в эти дни.

В целом, виртуализация имеет наверху, но не так, как Вы думаете.

3
задан 20 March 2012 в 18:36
4 ответа

Вы можете ожидать, что это можно сделать, используя

Defaults env_keep += "LD_LIBRARY_PATH FRED" 

, но быстрый тест на CentOS 6.2 с Sudo версии 1.7.4p5 не проходит LD_LIBRARY_PATH , но проходит FRED . На странице руководства sudoers есть это

Note that the dynamic linker on most operating systems will remove variables that
can control dynamic linking from the environment of setuid executables, including
sudo. Depending on the operating system this may include _RLD, DYLD_, LD_, 
LDR_, LIBPATH, SHLIB_PATH, and others. These type of variables are removed from 
the environment before sudo even begins execution and, as such, it is not 
possible for sudo to preserve them

. Похоже, система удаляет LD_LIBRARY_PATH из среды до того, как sudo его увидит.

13
ответ дан 3 December 2019 в 04:40

Чтобы заставить это работать, мне пришлось сделать следующее:

  1. Добавить Значения по умолчанию env_keep + = "LD_LIBRARY_PATH" в sudoers
  2. Добавить этот псевдоним в моем .bashrc файл: alias sudo = 'sudo LD_LIBRARY_PATH = / mypath'

Теперь любая команда, которую я вызываю с помощью sudo, будет иметь настройку переменной.

4
ответ дан 3 December 2019 в 04:40

Похоже, вы еще не выполнили экспорт LD_LIBRARY_PATH . Это сделает переменную окружения доступной для всех и решит эту проблему.

В качестве альтернативы, если вам нужна надежная постоянная переменная среды,

-1
ответ дан 3 December 2019 в 04:40

Это происходит не только с LD_LIBRARY_PATH, но и с некоторыми другими переменными среды, которые могут влиять на вашу среду сборки. В моем случае sudo изменился на:

sudo -HE env PATH=${PATH} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} PYTHONPATH=${PYTHONPATH} my_command
0
ответ дан 3 December 2019 в 04:40

Теги

Похожие вопросы