Почему переменная $PATH в эмуляторе терминала и внутри tmux отличается?

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

С точки зрения компьютера не существует такого понятия, как «команда, которой требуется sudo». Любой пользователь может попытаться запустить любую команду. Результатом может быть не что иное, как сообщение об ошибке, такое как «Отказано в доступе» или «Нет такого файла или каталога», но всегда можно запустить команду.

Например, если вы запустите duдля дерева каталогов с содержимым, на доступ к которому у вас нет разрешения, вы получите ошибки разрешения. Вот что означает «отказано в доступе». Если вы запустите sudo du, sudo запустит duот имени пользователя root, поэтому вы не получите ошибок разрешения (, в этом суть учетной записи root :root¹ всегда имеет разрешение ). Когда вы запускаете sudo du, duзапускается от имени root, а sudoвообще не участвует после запуска du. Обнаруживает ли du ​​ошибки прав доступа, совершенно не имеет отношения к тому, как работает sudo.

Есть команды, которым требуется sudo , чтобы сделать что-то полезное . Полезность — это человеческое понятие. Вам нужно использовать sudo (или некоторые другие методы для запуска команды от имени пользователя root ), если команда делает что-то полезное при запуске от имени пользователя root, но не при запуске под вашей учетной записью.

Запрашивает ли sudo ваш пароль, зависит от двух вещей.

  1. В зависимости от конфигурации sudo решает, нужно ли вам проходить аутентификацию. По умолчанию sudo требует пароль. Это можно отключить несколькими способами, в том числе установить для параметра authenticateзначение false и применить применимое правило с тегом NOPASSWD.
  2. Если sudo запрашивает ваш пароль, возможно, будет достаточно использовать кешированное значение. Это нормально, потому что причина, по которой sudo нужен ваш пароль, не для аутентификации того, кто его вызывает (sudo знает, какой пользователь его вызвал ),но чтобы подтвердить, что это все еще вы командуете, а не кто-то, кто взял под контроль вашу клавиатуру. По умолчанию sudo готов поверить, что вы все еще находитесь в командах, если вы ввели свой пароль менее 15 минут назад (это можно изменить с помощью опции timeout). Вам необходимо ввести пароль в том же терминале (, чтобы, если вы остаетесь в системе на одном терминале, затем оставили этот терминал без присмотра, а затем использовали другой терминал, кто-то не мог воспользоваться этим, чтобы использовать sudo на другом терминале. — но это очень слабое преимущество, и его можно отключить, установив для параметра tty_ticketsзначение false ).

¹ почти, но это выходит за рамки этой темы.

0
15.03.2020, 12:36
1 ответ

Благодаря @mosvy, согласно комментарию пользователя, я ввел местоположения /usr/sbinи /sbinв свой файл ~/.profile.

Источники шелла входа в систему ~/.profileи, следовательно, теперь отсутствующие местоположения отображаются в то время как echo $PATH.

0
28.04.2021, 23:20

Теги

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