Не уверенный, с чем Вы имеете в виду:
и
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)
Результатом является определенно масштабируемое окно сообщения:
Это на самом деле зависимый конфигурации .В 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
. Таким же образом можно задать и другие переменные, что часто бывает полезно. Одна или другая из них может быть запрещена вашей конфигурацией.
При выполнении 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>
Вам нужна оболочка для интерактивного входа в систему 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.