Si vous souhaitez demander le mot de passe root, par opposition au mot de passe de l'utilisateur, vous pouvez insérer des options /etc/sudoers
. rootpw
en particulier, il demandera le mot de passe root. Il y a runaspw
et targetpw
aussi; voir la page de manuel sudoers (5) pour plus de détails.
En dehors de cela, sudo fait son authentification (comme tout le reste) via PAM. PAM prend en charge la configuration par application. La configuration de Sudo est dans (au moins sur mon système Debian) /etc/pam.d/sudo
, et ressemble à ceci:
$ cat sudo
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
En d'autres termes, par défaut, il s'authentifie comme tout le reste sur le système. Vous pouvez modifier cette @include common-auth
ligne et demander à PAM (et donc à sudo) d'utiliser une autre source de mot de passe. Les lignes non commentées dans common-auth ressemblent à quelque chose (par défaut, ce sera différent si vous utilisez par exemple LDAP):
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
Vous pouvez par exemple utiliser, pam_userdb.so
au lieu de pam_unix.so
, et stocker vos mots de passe alternatifs dans une base de données Berkeley DB.
Exemple
J'ai créé le répertoire /var/local/sudopass
, propriétaire / groupe root:shadow
, mode 2750
. À l'intérieur, j'ai continué et créé un fichier de base de données de mots de passe en utilisant db5.1_load
(qui est la version de Berkeley DB utilisée sur Debian Wheezy):
# umask 0027
# db5.1_load -h / var / local / sudopass -t hash -T passwd.db
anthony
WMaEFvCFEFplI
^D
Ce hachage a été généré avec mkpasswd -m des
, en utilisant le mot de passe "mot de passe". Très hautement sécurisé! (Malheureusement, pam_userdb ne semble pas prendre en charge mieux que l'ancien crypt(3)
hachage).
Maintenant, modifiez /etc/pam.d/sudo
et supprimez la @include common-auth
ligne, et placez-la à la place:
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
Notez que pam_userdb ajoute une .db
extension à la base de données passée, vous devez donc laisser cette option .db
désactivée.
Selon dannysauer dans un commentaire , vous devrez peut-être également effectuer la même modification /etc/pam.d/sudo-i
.
Maintenant, pour sudo, je dois utiliser à la password
place de mon vrai mot de passe de connexion:
anthony @ sudotest: ~ $ sudo -K
anthony @ sudotest: ~ $ sudo echo -e '\ nit travaillé'
[sudo] mot de passe pour anthony: passwordRETURN
ça a marché