Если вы хотите запросить пароль root, в отличие от пароля пользователя, есть варианты, которые вы можете ввести /etc/sudoers. rootpwв частности заставит его запросить пароль root. Есть runaspwи targetpwтак же; см. man-страницу sudoers (5) для подробностей.
Помимо этого, sudo выполняет свою аутентификацию (как и все остальное) через PAM. PAM поддерживает настройку для каждого приложения. Конфигурация Sudo включена (по крайней мере, в моей системе Debian) /etc/pam.d/sudoи выглядит следующим образом:
$ cat sudo
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
Другими словами, по умолчанию он аутентифицируется, как и все остальное в системе. Вы можете изменить эту @include common-authстроку и заставить PAM (и, следовательно, sudo) использовать альтернативный источник пароля. Некомментированные строки в common-auth выглядят примерно так (по умолчанию это будет иначе, если вы используете, например, LDAP):
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
Вы можете использовать, например, pam_userdb.soвместо pam_unix.so, и хранить ваши альтернативные пароли в базе данных Berkeley DB.
пример
Я создал каталог /var/local/sudopass, владелец / группа root:shadow, режим 2750. Внутри я продолжил и создал файл базы данных паролей, используя db5.1_load(это версия Berkeley DB, используемая в Debian Wheezy):
# umask 0027
# db5.1_load -h / var / local / sudopass -t хэш -T passwd.db
Энтони
WMaEFvCFEFplI
^D
Этот хэш был создан с mkpasswd -m desиспользованием пароля «пароль». Очень надежно! (К сожалению, pam_userdb, похоже, не поддерживает ничего лучше, чем древнее crypt(3)хеширование).
Теперь отредактируйте /etc/pam.d/sudoи удалите @include common-authстроку, и вместо этого поместите это на место:
auth [success=1 default=ignore] pam_userdb.so crypt=crypt db=/var/local/sudopass/passwd
auth requisite pam_deny.so
auth required pam_permit.so
Обратите внимание, что pam_userdb добавляет .dbрасширение к переданной базе данных, поэтому вы должны оставить .dboff.
Согласно dannysauer в комментарии , вам, возможно, придется сделать то же самое редактирование /etc/pam.d/sudo-i.
Теперь, чтобы использовать sudo, я должен использовать passwordвместо своего реального пароля для входа в систему:
Энтони @ Судотест: ~ $ Судо -К
anthony @ sudotest: ~ $ sudo echo -e '\ nit works'
[sudo] пароль для Энтони: passwordRETURN
это сработало