Настройка PATH так, чтобы она применялась ко всем пользователям, включая root / sudo

Инструкции в Как настроить переменные PATH для всех пользователей на сервере? работают для установки PATH для всех «обычных» пользователей. Однако, если я сделаю sudo -s, а затем printenv PATH, обновленный путь не будет показан. Я посмотрел, например, Настройка пути TeX Live для root , но, похоже, это не имеет смысла для меня, возможно, поскольку я из Windows. Есть ли способ установить действительно общесистемный путь, чтобы записи наследовались абсолютно всеми процессами, работающими в системе?

47
задан 13 April 2017 в 15:23

2 ответа

Обновление:

Установка глобальных переменных среды по-прежнему должна выполняться в / etc / environment , но, как вы отметили, с помощью sudo -s приводит к тому, что эти переменные «исчезают».

Причина в том, что sudo имеет политику сброса среды и установки безопасного пути ]. Он включен по умолчанию:

/etc/sudoers:

Defaults  env_reset
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Таким образом, все, что установлено в / etc / environment для пути, заменяется sudo .

Страница руководства для sudoers гласит:

   env_reset       If set, sudo will reset the environment to only contain
                   the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
                   variables.  Any variables in the caller's environment
                   that match the env_keep and env_check lists are then
                   added.  The default contents of the env_keep and
                   env_check lists are displayed when sudo is run by root
                   with the -V option.  If the secure_path option is set,
                   its value will be used for the PATH environment
                   variable.  This flag is on by default.

В качестве обходного пути вы можете использовать sudo su , который предоставит оболочку с привилегиями root, но содержит правильный PATH.


Исходный ответ

Вы должны установить его в / etc / environment .

Попробуйте sudo YOUR_TEXT_EDITOR / etc / environment (сначала обязательно создайте резервную копию).

Для получения дополнительной информации: EnvironmentVariables

Общесистемные переменные среды

Параметры переменных среды, влияющие на систему в целом (а не только конкретного пользователя) не следует помещать ни в одну из множество скриптов системного уровня, которые выполняются, когда система или сеансы рабочего стола загружаются, но в

/ etc / environment - этот файл специально предназначен для общесистемных настроек переменных среды. Это не файл сценария, а скорее состоит из выражений присваивания, по одному в каждой строке. В частности, это В файле хранятся общесистемные настройки локали и пути.

Не рекомендуется:

/ etc / profile - этот файл запускается всякий раз, когда вводится оболочка входа в bash (например, при входе в систему с консоли или через ssh), поскольку а также DisplayManager при загрузке сеанса рабочего стола. Это вероятно, файл, на который вы попадете, когда спросите ветерана UNIX системные администраторы о переменных окружения. Однако в Ubuntu этот файл делает немного больше, чем вызывает файл /etc/bash.bashrc.

/etc/bash.bashrc - это общесистемная версия файла ~ / .bashrc. Ubuntu по умолчанию настроен для выполнения этого файла всякий раз, когда пользователь входит в оболочку или среду рабочего стола.

47
ответ дан 13 April 2017 в 15:23

sudo -i будет имитировать вход в систему (аналогично sudo su - ) и, таким образом, предоставить вам эти переменные среды.

2
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

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