Почему значение $ PATH различно для пользователя root и обычного пользователя?

для обычного пользователя я получаю:

/ usr / lib / lightdm / lightdm: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin : / sbin: / bin: / usr / games: / usr / local / games: / home / monty / google_appengine

, который фактически является содержимым /etc/environment

Для пользователя root я получаю:

/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

В чем причина этого и в каком файле содержится эта строка?

2
задан 20 November 2012 в 13:08

2 ответа

PATH - это переменная среды, и поэтому она "по умолчанию" или "сбрасывается" при изменении среды. См. man sudoers для объяснения:

 env_reset       If set, sudo will reset the environment to only contain
                   the LOGNAME, SHELL, USER, USERNAME and the SUDO_* vari-
                   ables.  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 sudo was compiled with the SECURE_PATH
                   option, its value will be used for the PATH environment
                   variable.  This flag is on by default.

/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

- это базовый путь без доработок. Разным пользователям будут добавлены разные каталоги по нескольким причинам.

Причина должна быть такой: root никогда не должен иметь больше каталогов в своем PATH, чем необходимо. Или наоборот: если root нужен файл, он должен находиться в / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin . Вы не играете в игры с правами root. Вы не используете диспетчер рабочего стола как root. Корень предназначен для административных задач.

В вики есть дополнительная информация (среди прочего, какие файлы используются для добавления в PATH): https://help.ubuntu.com/community/EnvironmentVariables

3
ответ дан 20 November 2012 в 13:08

В случае обычного пользователя такие файлы, как ~ / .profile , ~ / .bash_profile , ~ / .bashrc может быть добавлен к вашему пути по умолчанию (который должен быть таким же, как тот, который вы указали для root.

Вы можете проверить любой из этих файлов (это самые распространенные, о которых я знаю) на наличие таких строк, как

экспорт PATH = $ PATH: / usr / games: / usr / local / games: / home / monty / google_appengine
или
экспорт PATH = / usr / lib / lightdm / lightdm: $ PATH

Изменить

.bashrc и .profile , похоже, имеют версии по умолчанию ( / etc / profile / и /etc/bash.basrhc ) в ] / etc / , вы можете проверить их на предмет пути к корневому каталогу.

Кроме того, / root / эквивалентен / home / для ] root . Я ожидаю, что в этом каталоге есть файлы ~ / .profile , ~ / .bash_profile , ~ / .bashrc , что аль так что помогите управлять $ PATH root .

1
ответ дан 20 November 2012 в 13:08

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

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