При применении sudo
к команде, которая на самом деле не нужна sudo
,
иногда он не спрашивает мой пароль. Например под моим
$HOME
,sudo ls
.Но я помню, что это относится к какой-то другой команде, хотя я забыл, какая именно.
Поэтому мне было интересно, как sudo
решается, стоит ли запрашивать пароль, когда дается команда, которая на самом деле не нужна sudo
? Есть ли какое-то правило при /etc/sudoers
указании этого?
Моя настоящая проблема заключается в том, что при использовании du
иногда отображается «отказано в разрешении» для некоторых каталогов, а иногда нет, возможно, из-за того, что у меня нет разрешения на некоторые каталоги? Я обращаюсь sudo
к du
независимо, и думал, что меня попросят пароль независимо, но на самом деле не в моих собственных каталогах.
Ответы:
В типичной конфигурации команда не имеет значения. Вы должны ввести свой пароль при первом использовании sudo, и вам не понадобится пароль в этой конкретной оболочке в течение следующих 15 минут.
С точки зрения компьютера, такой вещи, как «команда, требующая sudo», не существует. Любой пользователь может попытаться выполнить любую команду. Результатом может быть только сообщение об ошибке, например «Отказано в доступе» или «Нет такого файла или каталога», но всегда можно выполнить команду.
Например, если вы работаете
du
в дереве каталогов с содержимым, к которому у вас нет прав доступа, вы получите ошибки разрешения. Вот что означает «отказано в разрешении». Если вы запускаетеsudo du
, sudo запускаетсяdu
от имени пользователя root, поэтому вы не получаете ошибок прав доступа (в этом суть учетной записи root: root: всегда имеет разрешение). При запускеsudo du
,du
работает как корень, иsudo
не участвуют вообще после того, какdu
начался. Встречается ли du с ошибками разрешения, совершенно не имеет значения, как работает sudo.Есть команды, которые нуждаются в sudo, чтобы сделать что-то полезное . Полезность - это человеческое понятие. Вам нужно использовать sudo (или некоторые другие методы для запуска команды от имени root), если команда делает что-то полезное, когда запускается от имени root, но не от имени вашей учетной записи.
Запрашивается ли sudo ваш пароль, зависит от двух вещей.
authenticate
параметра значение false и применив правило сNOPASSWD
тегом.timeout
опции). Вам необходимо ввести пароль в том же терминале (чтобы вы оставались в системе на одном терминале, оставляли этот терминал без присмотра, а затем использовали другой терминал, кто-то можетtty_tickets
¹ почти, но это выходит за рамки этой темы.
источник
sudo
не знает, должна ли команда, которую просят запустить, запускаться от имени другого пользователя (обычно root), все, что она знает, это ее конфигурация. Это определяет, каким пользователям разрешено работатьsudo
, с какими пользователями в качестве «целей» и для каких команд; он также определяет, нужен ли пароль, какой именно, и нужно ли хранить токен аутентификации.Если вы используете конфигурацию Debian по умолчанию, последняя, скорее всего, задействована здесь:
sudo
попросит вас ввести пароль в первый раз, когда вы будете использовать его в любом терминале, затем он будет хранить маркер аутентификации в течение определенного времени. Если вы повторно используетеsudo
в том же терминале в течение этого периода времени, он не будет запрашивать пароль.источник
sudo du /path/to/some/dir
должен ли мне всегда нужен мой пароль, или никогда, независимо от/path/to/some/dir
?/etc/sudoers
можно указывать команды и их аргументы. Тем не менее, если вы не добавили ничего подобногоsudoers
(и, надеюсь, вы узнаете об этом), аргументы не будут иметь значения (равно как и команда, если у вас есть общий доступ к root черезsudo
).sudo
не сохраняет ваш пароль в кеше, только информация о том, что ваша личность уже была проверена один раз с проверкой пароля. Посколькуsudo
это программа setuid-root, у нее уже есть все разрешения, необходимые для запуска чего-либо, какsudoers
и у любого другого, но ей доверяют только то, чтобы пользователи могли использовать ее в точности так, как указано в файле, и отклоняют все другие попытки ее использования. , Вот почему так важно, чтоsudo
это такая маленькая и очень хорошо изученная программа.Дело не в том, что команда нуждается или не нуждается в sudo. Когда ты бежишь
система выполняется
command
какuser
.Будет ли вызов успешным или нет, и будет ли запрашиваться пароль, зависит от политики безопасности
sudoers
(обычно настраивается в/etc/sudoers
).источник