sudo команда временно изменяют $PATH, чтобы быть корнем?

Не уверенный, с чем Вы имеете в виду:

и zenity --text-info только примите вывод из файла

Вот команда, продолжающая много линий вывода:

ls -l /usr/bin | wc -l
1726

Вы просто передаете его по каналу к zenity:

ls -l /usr/bin | zenity --text-info --height=500 --width=400

или:

zenity --text-info --height=500 --width=400 < <(ls -l /usr/bin)

Результатом является определенно масштабируемое окно сообщения:

enter image description here

6
13.04.2017, 15:36
3 ответа

Это на самом деле зависимый конфигурации sudoers имеется опция env _ reset , которая в сочетании с env _ check и env _ delete управляет заменой, расширением или передачей некоторых или всех переменных среды, включая PATH .

Поведение по умолчанию должно включать env _ reset и сбрасывать PATH . Значением PATH можно управлять с помощью опции secure _ path , в противном случае это определяется конфигурацией пользователя.

Можно отключить env _ reset или добавить PATH в env _ keep , чтобы изменить это поведение, но обратите внимание, что оно может не иметь желаемого эффекта в целом - часто существуют каталоги ( sbin ) в корне PATH , которые не принадлежат вашему пользователю. Вместо этого можно включить setenv , чтобы разрешить переопределение среды для одиночного выполнения sudo с помощью опции -E для sudo .

Все они уже могут быть изменены в конфигурации дистрибутива по умолчанию. Запустите sudo visudo , чтобы узнать, что в данный момент находится в файле sudoers .


Существуют альтернативные подходы. Одним из простых способов является использование встроенной переменной среды sudo , или env :

sudo PATH="$PATH" command ...
sudo env PATH="$PATH" command ...

будет выполнять только эту команду с текущим пользователем PATH . Таким же образом можно задать и другие переменные, что часто бывает полезно. Одна или другая из них может быть запрещена вашей конфигурацией.

6
27.01.2020, 20:20

При выполнении sudo под пользовательской сессией входа в систему, будет это $PATH изменения, чтобы быть $PATH корня во время выполнения sudo ?

sudo будет изменяться $PATH переменная, зависеть от вашей политики безопасности. От страница справочника sudo :

PATH
    May be overridden by the security policy.

В большей части системы, опция env_reset включена по умолчанию, это заставляет команды выполняться с минимальной средой, содержащей ТЕРМИН , ПУТЬ , ДОМАШНИЙ , SHELL, LOGNAME, ПОЛЬЗОВАТЕЛЬ и ИМЯ ПОЛЬЗОВАТЕЛЯ в дополнение к переменным от процесса вызова, разрешенного env_check и опции env_keep sudoers.

Из соображения безопасности, /etc/sudoers имеет опция secure_path установить сейф ПУТЬ для sudo:

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

, Если полагается на $PATH пользователя, не $PATH корня, как может пользователь выполненный sudo успешно?

, поскольку пользователь ПУТЬ может быть сохранен, когда вы работаете sudo. Можно всегда делать:

sudo env "PATH=$PATH" <command>
9
27.01.2020, 20:20

Вам нужна оболочка для интерактивного входа в систему root?

sudo -H -i

от man sudo :

 -H          The -H (HOME) option requests that the security policy set the HOME environment variable to the home directory of the
             target user (root by default) as specified by the password database.  Depending on the policy, this may be the default
             behavior.


 -i [command]
             The -i (simulate initial login) option runs the shell specified by the password database entry of the target user as a
             login shell.  This means that login-specific resource files such as .profile or .login will be read by the shell.  If a
             command is specified, it is passed to the shell for execution via the shell's -c option.  If no command is specified,
             an interactive shell is executed.  sudo attempts to change to that user's home directory before running the shell.  The
             security policy shall initialize the environment to a minimal set of variables, similar to what is present when a user
             logs in.  The Command Environment section in the sudoers(5) manual documents how the -i option affects the environment
             in which a command is run when the sudoers policy is in use.
5
27.01.2020, 20:20

Теги

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