Wenn Sie anstelle des Benutzerpassworts nach dem Root-Passwort fragen möchten, können Sie verschiedene Optionen eingeben /etc/sudoers. rootpwInsbesondere wird es nach dem root-Passwort fragen. Es gibt runaspwund targetpwauch; Einzelheiten finden Sie auf der Hilfeseite sudoers (5).
Ansonsten führt sudo die Authentifizierung (wie alles andere auch) über PAM durch. PAM unterstützt die anwendungsspezifische Konfiguration. Sudos Konfiguration ist in (zumindest auf meinem Debian-System) /etc/pam.d/sudound sieht so aus:
$ cat sudo
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
Mit anderen Worten, es wird standardmäßig wie alles andere im System authentifiziert. Sie können diese @include common-authZeile ändern und PAM (und damit sudo) eine alternative Kennwortquelle verwenden lassen. Die nicht auskommentierten Zeilen in common-auth sehen ungefähr so aus (standardmäßig ist dies anders, wenn Sie z. B. LDAP verwenden):
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
Sie können z. B. Ihre alternativen Kennwörter pam_userdb.soanstelle von verwenden pam_unix.sound in einer Berkeley DB-Datenbank speichern.
Beispiel
Ich habe das Verzeichnis /var/local/sudopass, Eigentümer / Gruppe root:shadow, Modus erstellt 2750. Darin habe ich eine Passwort-Datenbankdatei erstellt, die verwendet wurde db5.1_load(das ist die Version von Berkeley DB, die unter Debian Wheezy verwendet wird):
# umask 0027
# db5.1_load -h / var / local / sudopass -t hash -T passwd.db
anthony
WMaEFvCFEFplI
^D
Dieser Hash wurde mit mkpasswd -m desdem Passwort "password" generiert . Sehr sicher! (Leider scheint pam_userdb nichts besseres zu unterstützen als das alte crypt(3)Hashing).
Bearbeiten /etc/pam.d/sudound entfernen Sie nun die @include common-authZeile und platzieren Sie diese stattdessen:
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
Beachten Sie, dass pam_userdb .dbder übergebenen Datenbank eine Erweiterung hinzufügt , sodass Sie die Option auslassen müssen .db.
Laut Dannysauer in einem Kommentar müssen Sie möglicherweise die gleiche Bearbeitung auch vornehmen /etc/pam.d/sudo-i.
In sudo muss ich jetzt passwordanstelle meines echten Anmeldekennworts Folgendes verwenden:
anthony @ sudotest: ~ $ sudo -K
anthony @ sudotest: ~ $ sudo echo -e '\ nes hat funktioniert'
[sudo] Passwort für Anthony: passwordRETURN
es funktionierte