Si desea solicitar la contraseña de root, en lugar de la contraseña del usuario, hay opciones que puede ingresar /etc/sudoers. rootpwen particular hará que solicite la contraseña de root. Hay runaspwy targetpwtambién; vea la página de manual de sudoers (5) para más detalles.
Aparte de eso, sudo hace su autenticación (como todo lo demás) a través de PAM. PAM admite la configuración por aplicación. La configuración de Sudo está en (al menos en mi sistema Debian) /etc/pam.d/sudo, y se ve así:
$ cat sudo
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
En otras palabras, de manera predeterminada, se autentica como todo lo demás en el sistema. Puede cambiar esa @include common-authlínea y hacer que PAM (y, por lo tanto, sudo) use una fuente de contraseña alternativa. Las líneas no comentadas en common-auth tienen un aspecto similar (de forma predeterminada, esto será diferente si está utilizando, por ejemplo, LDAP):
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
Puede usar, por ejemplo, en pam_userdb.solugar de pam_unix.soy almacenar sus contraseñas alternativas en una base de datos de Berkeley DB.
ejemplo
Creé el directorio /var/local/sudopass, propietario / grupo root:shadow, modo 2750. Dentro de él, seguí adelante y creé un archivo de base de datos de contraseñas usando db5.1_load(que es la versión de Berkeley DB en uso en Debian Wheezy):
# umask 0027
# db5.1_load -h / var / local / sudopass -t hash -T passwd.db
Antonio
WMaEFvCFEFplI
^D
Ese hash se generó con mkpasswd -m desla contraseña "contraseña". Muy seguro! (Desafortunadamente, pam_userdb parece no admitir nada mejor que el crypt(3)hashing antiguo ).
Ahora, edite /etc/pam.d/sudoy elimine la @include common-authlínea, y en su lugar ponga esto en su lugar:
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
Tenga en cuenta que pam_userdb agrega una .dbextensión a la base de datos pasada, por lo que debe dejarla .dbdesactivada.
Según dannysauer en un comentario , es posible que también deba realizar la misma edición /etc/pam.d/sudo-i.
Ahora, para sudo, debo usar en passwordlugar de mi contraseña de inicio de sesión real:
anthony @ sudotest: ~ $ sudo -K
anthony @ sudotest: ~ $ sudo echo -e '\ nit trabajado'
[sudo] contraseña para anthony: passwordRETURN
funcionó