Если вы хотите запросить пароль 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
расширение к переданной базе данных, поэтому вы должны оставить .db
off.
Согласно dannysauer в комментарии , вам, возможно, придется сделать то же самое редактирование /etc/pam.d/sudo-i
.
Теперь, чтобы использовать sudo, я должен использовать password
вместо своего реального пароля для входа в систему:
Энтони @ Судотест: ~ $ Судо -К
anthony @ sudotest: ~ $ sudo echo -e '\ nit works'
[sudo] пароль для Энтони: passwordRETURN
это сработало