Якщо ви хочете запитати корінний пароль, на відміну від пароля користувача, є варіанти, які ви можете ввести /etc/sudoers. rootpwзокрема змусить запросити пароль для кореня. Є runaspwі targetpwяк; див. детальну інформацію про сторінку "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) використовувати альтернативне джерело паролів. Рядки, коментовані без коментування, у загальному 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(яка є версією Берклі БД, що використовується в Debian Wheezy):
# umask 0027
# db5.1_load -h / var / local / sudopass -t хеш -T passwd.db
антоній
WMaEFvCFEFplI
^D
Цей хеш був створений за mkpasswd -m desдопомогою пароля "пароль". Дуже високобезпечно! (На жаль, схоже, пам_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розширення до переданої бази даних, тому потрібно залишити .dbвимкнено.
За словами dannysauer у коментарі , можливо, вам доведеться зробити таку саму редакцію/etc/pam.d/sudo-i .
Тепер для sudo я повинен використовувати passwordзамість реального пароля вхід:
anthony @ sudotest: ~ $ sudo -K
anthony @ sudotest: ~ $ sudo echo -e '\ nit працював'
[sudo] пароль для антоні: passwordRETURN
це спрацювало