В типичной конфигурации команда не имеет значения. Вам нужно ввести свой пароль при первом использовании sudo, и вам не нужен пароль в этой конкретной оболочке в течение следующих 15 минут.
С точки зрения компьютера не существует такого понятия, как «команда, которой требуется sudo». Любой пользователь может попытаться запустить любую команду. Результатом может быть не что иное, как сообщение об ошибке, такое как «Отказано в доступе» или «Нет такого файла или каталога», но всегда можно запустить команду.
Например, если вы запустите du
для дерева каталогов с содержимым, на доступ к которому у вас нет разрешения, вы получите ошибки разрешения. Вот что означает «отказано в доступе». Если вы запустите sudo du
, sudo запустит du
от имени пользователя root, поэтому вы не получите ошибок разрешения (, в этом суть учетной записи root :root¹ всегда имеет разрешение ). Когда вы запускаете sudo du
, du
запускается от имени root, а sudo
вообще не участвует после запуска du
. Обнаруживает ли du ошибки прав доступа, совершенно не имеет отношения к тому, как работает sudo.
Есть команды, которым требуется sudo , чтобы сделать что-то полезное . Полезность — это человеческое понятие. Вам нужно использовать sudo (или некоторые другие методы для запуска команды от имени пользователя root ), если команда делает что-то полезное при запуске от имени пользователя root, но не при запуске под вашей учетной записью.
Запрашивает ли sudo ваш пароль, зависит от двух вещей.
authenticate
значение false и применить применимое правило с тегом NOPASSWD
. timeout
). Вам необходимо ввести пароль в том же терминале (, чтобы, если вы остаетесь в системе на одном терминале, затем оставили этот терминал без присмотра, а затем использовали другой терминал, кто-то не мог воспользоваться этим, чтобы использовать sudo на другом терминале. — но это очень слабое преимущество, и его можно отключить, установив для параметра tty_tickets
значение false ). ¹ почти, но это выходит за рамки этой темы.
Благодаря @mosvy, согласно комментарию пользователя, я ввел местоположения /usr/sbin
и /sbin
в свой файл ~/.profile
.
Источники шелла входа в систему ~/.profile
и, следовательно, теперь отсутствующие местоположения отображаются в то время как echo $PATH
.