это сильно зависит от того, как вы называете вашу программу с sudo
или su
.
Е. Г. на компьютере, на котором я нахожусь в данный момент:
.bashrc
COMMAND $HOME $USER Env. $PATH
1. sudo -i (root) root root [1]
2. sudo -s (USER) root USER /home/${USER}/bin:[1]
3. sudo /bin/bash (USER) root USER /home/${USER}/bin:[1]
4. sudo su (root) root USER [1]:/usr/games:/usr/local/games
5. sudo su - (root) root root [1]
где [1]=/usr / local / sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin: / bin
Env=переменные окружения сбрасываются для 1 и 5, берутся из $USER в 2,3,4.
таким образом, скрипт или программа, запущенная с другой опцией, может видеть разные $PATH
,$HOME
, своя раковина может прочитать разные .bashrc
,.profile
переменные среды. Он читает файл, связанный с $HOME
. Каждый пользователь может изменять свое окружение по-разному (variables,$PATH
, .bashrc,.профиль. ,файл, псевдоним...). В частности, пользователь может иметь другой порядок каталогов в своем $PATH
и, как следствие, скрипт может выполнить команду, например, в /home/$USER/bin
вместо этого тот, что в пути ожидается от root.
вы можете запустить программу в sudo -i
как вы были зарегистрированы как root с su -
,
но вы можете иметь другое поведение, если вы запустите его с sudo MyCommand
или su -c MyCommand
.
С man su
:
в описании:
текущая среда передается в новую оболочку. Значение $PATH сбрасывается в / bin: / usr / bin для обычных пользователей или
на /sbin:/ОГРН: выполнить/sbin:/usr/Бен для суперпользователя
...
В разделе Параметры:
-, - l, --login
Предоставьте среда, аналогичная что пользователь будет ожидать, если пользователь вход в систему напрямую.
у мужчины sudo
- i, --login
Запустите оболочку, указанную в записи базы данных паролей целевого пользователя, как оболочка входа. Это означает, что файлы ресурсов для входа
как например. профиль или. логин будет прочитан оболочкой. Если команда указана, то она передается в оболочку для выполнения через
параметр Шелл -Си. Если команда не указана, выполняется интерактивная оболочка. sudo
пытается перейти в домашний каталог пользователя перед запуском оболочки. команда выполняется в среде, аналогичной той, которую пользователь получает в журнале в. Раздел среда команд в руководстве sudoers(5) описывает, как параметр-i влияет на среду, в которой выполняется команда
когда используется политика sudoers.