В типичной конфигурации команда не имеет значения. Вы должны ввести свой пароль при первом использовании sudo, и вам не понадобится пароль в этой конкретной оболочке в течение следующих 15 минут.
С точки зрения компьютера, такой вещи, как «команда, требующая sudo», не существует. Любой пользователь может попытаться выполнить любую команду. Результатом может быть только сообщение об ошибке, например «Отказано в доступе» или «Нет такого файла или каталога», но всегда можно выполнить команду.
Например, если вы работаете du
в дереве каталогов с содержимым, к которому у вас нет прав доступа, вы получите ошибки разрешения. Вот что означает «отказано в разрешении». Если вы запускаете sudo du
, sudo запускается du
от имени пользователя root, поэтому вы не получаете ошибок прав доступа (в этом суть учетной записи root: root: всегда имеет разрешение). При запуске sudo du
, du
работает как корень, и sudo
не участвуют вообще после того, как du
начался. Встречается ли du с ошибками разрешения, совершенно не имеет значения, как работает sudo.
Есть команды, которые нуждаются в sudo, чтобы сделать что-то полезное . Полезность - это человеческое понятие. Вам нужно использовать sudo (или некоторые другие методы для запуска команды от имени root), если команда делает что-то полезное, когда запускается от имени root, но не от имени вашей учетной записи.
Запрашивается ли sudo ваш пароль, зависит от двух вещей.
- Основываясь на конфигурации, sudo решает, нужно ли вам проходить аутентификацию. По умолчанию для sudo требуется пароль. Это можно отключить несколькими способами, в том числе установив для
authenticate
параметра значение false и применив правило с NOPASSWD
тегом.
- Если sudo требует ваш пароль, он может использовать содержимое в кэше. Это нормально, потому что причина, по которой sudo нуждается в вашем пароле, заключается не в том, чтобы аутентифицировать, кто его вызывает (sudo знает, какой пользователь его вызвал), а в том, чтобы подтвердить, что все равно вы в команде, а не кто-то, кто взял под контроль вашу клавиатуру. По умолчанию sudo готов поверить, что вы все еще в команде, если вы ввели свой пароль менее 15 минут назад (это можно изменить с помощью
timeout
опции). Вам необходимо ввести пароль в том же терминале (чтобы вы оставались в системе на одном терминале, оставляли этот терминал без присмотра, а затем использовали другой терминал, кто-то можетtty_tickets
¹ почти, но это выходит за рамки этой темы.