Si desea solicitar la contraseña de root, en lugar de la contraseña del usuario, hay opciones que puede ingresar /etc/sudoers
. rootpw
en particular hará que solicite la contraseña de root. Hay runaspw
y targetpw
tambié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-auth
lí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.so
lugar de pam_unix.so
y 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 des
la 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/sudo
y elimine la @include common-auth
lí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 .db
extensión a la base de datos pasada, por lo que debe dejarla .db
desactivada.
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 password
lugar 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ó