Verwenden Sie ein Kennwort für die Verwaltung und ein anderes für die Systemanmeldung


10

Wie kann ich einem Benutzer ein Kennwort für die normale Verwendung beim Anmelden und ein anderes Kennwort für die Systemadministration und den Sudo-Zugriff geben ? Ich möchte, dass ein Benutzer zwei Passwörter hat.


1
Warum nicht einfach zwei Konten erstellen, eines für den normalen Gebrauch und das andere für die Verwendung von sudo.
Luis Alvarado

Nein, ich brauche es in nur einem Konto
Varun Sridharan

Warum muss dies ein Konto sein? Sie können ein separates Konto mit Sudo-Zugriff erstellen, jedoch ohne separaten Basisordner. Fügen Sie diesen Benutzer dann derselben Gruppe wie der normale Benutzer hinzu und stellen Sie ihn so ein, dass er denselben Basisordner mitsudo usermod -d /path/to/new/home
Warren Hill,

@SVarun Ich habe meine Antwort mit Schritten aktualisiert, die für mich funktionieren, seit Sie das letzte Mal kommentiert haben. Könnten Sie es überprüfen und mich wissen lassen, ob es für Sie funktioniert?
Aaron D

Antworten:


16

Es gibt eine Möglichkeit, dies zu tun, indem Sie die PAM-Einstellungen (Pluggable Authentication Module) für den sudo-Dienst überschreiben. Tun Sie dies mit großem Risiko für Ihren Computer - kopieren und fügen Sie es nur ein, wenn Sie verstehen, was der Befehl bewirkt, und lassen Sie immer ein Root-Terminal offen - testen Sie test test! - vor dem Abmelden, falls Sie zurückgehen und etwas reparieren müssen.

Ich empfehle, einige Informationen über die Funktionsweise von PAM zu lesen, damit Sie wissen, was zu tun ist, wenn es kaputt geht. Ich empfehle außerdem, dass die meisten Benutzer dieses Problem aus einem anderen Blickwinkel angehen (indem sie ein separates Benutzerkonto für die Verwaltung erstellen), da die Lösung möglicherweise für Hash-Tabellen-Angriffe auf Ihr Kennwort anfällig ist, wenn Sie Ihre Berechtigungen nicht richtig festgelegt haben.

Wenn Sie fortfahren möchten, müssen Sie ein neues PAM-Modul installieren. pam_pwdfile verwendet zur Authentifizierung die Datei vom Typ / etc / passwd im alten Stil, die sich hervorragend für die Verwendung unterschiedlicher Kennwörter für unterschiedliche Dienste eignet. Es bietet keine Kontoerkennung - Sie können Benutzername / Passwort-Paare für Benutzer erstellen, die nicht auf dem System vorhanden sind. Da wir es für sudo verwenden, spielt es keine Rolle, da wir sudo einfach überprüfen lassen, ob das Konto auf die übliche Weise vorhanden ist.

sudo apt-get install libpam-pwdfile

Ich empfehle auch, einen praktischen htpasswd-Datei-Editor zu verwenden. Benjamin Schweizer hat einen praktischen Editor in Python erstellt, der gut funktioniert. Holen Sie es sich von http://benjamin-schweizer.de/htpasswd_editor.html und installieren Sie seine Abhängigkeit:

sudo apt-get install python-newt

Generieren Sie eine Datei im htpasswd-Format mit dem Tool - sudo python htpasswd_editor sudo.passwd. Geben Sie einen Benutzernamen und ein Passwort mit demselben Benutzernamen ein, den Sie für sudo verwenden werden - einen für jeden Benutzer, der ihn verwenden wird. Kopieren Sie es an einen sicheren Ort (beim Testen habe ich es in /etc/sudo.passwd abgelegt) und machen Sie es für normale Benutzer unlesbar: chmod 660 /etc/sudo.passwdals root.

Stellen Sie sicher, dass die Datei Root gehört und für andere Benutzer nicht lesbar ist. Dies ist eine Sicherheitsanfälligkeit, da die Datei ein Hash-Kennwort enthält. Wenn sie von anderen Benutzern gelesen oder beschrieben werden kann, wird Ihre Sicherheit dadurch erheblich beeinträchtigt. Aus diesem Grund empfehle ich diese Methode nicht auf einem Computer, der sicher aufbewahrt werden muss.

Bearbeiten Sie abschließend die /etc/pam.d/sudoDatei. Fügen Sie die folgende Zeile über den anderen @include ...Zeilen hinzu:

auth    required    pam_pwdfile.so pwdfile /etc/sudo.passwd

Ersetzen Sie offensichtlich das letzte Argument durch den Pfad zu Ihrer generierten htpasswd-Datei. Kommentieren Sie die nächste Zeile aus: #@include common-authum sicherzustellen, dass die neue Authentifizierungsmethode verwendet wird.

Achtung - Sie müssen die /etc/pam.d/sudoDatei von einem Root-Terminal aus bearbeiten . Schließen Sie dies nicht ohne zu testen! In diesem Fall können Sie sich möglicherweise nicht erneut anmelden (wenn Sie etwas beschädigt haben) und müssen von einer Wiederherstellungsdiskette booten, um Ihr System zu reparieren. Testen Sie vor dem Abmelden, indem Sie ein neues Terminal öffnen, und versuchen Sie es mit sudo. Sie sollten feststellen, dass es nicht mehr mit Ihrem regulären Anmeldekennwort funktioniert, sondern das neue Kennwort erfordert, das Sie beim Generieren der passwd-Datei verwendet haben. Verwenden Sie das nützliche Tool erneut, um die Datei zu aktualisieren.


Ich muss in Ubuntu laufen, gibt es einen anderen Weg
Varun Sridharan

Ich habe die Antwort aktualisiert - ich habe diese Methode getestet und sie macht, was Sie wollen, wenn ich Ihre Frage richtig verstanden habe. Versuch es bitte.
Aaron D

1
+50 Kopfgeld. @ AaronD Ihre Antwort hat meine Frage gelöst . Vielen Dank!!!
Robbie Wxyz

Ich bin froh, dass Sie es nützlich fanden!
Aaron D

1

Es gibt eine viel einfachere Lösung für die ursprüngliche Frage und so laufe ich:

  • Erstellen Sie einen Benutzer ohne Administratorrechte
  • Erstellen Sie einen Administrator

Melden Sie sich immer als Nicht-Administrator-Benutzer an und wann immer der Nicht-Administrator-Benutzer etwas "Administrator" tun muss, nur:

fab-user@fab-ux:/media/Data/Temp
$ su - fab-root 
Password: 
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc

Ja, es ist nicht das, was Sie wollen, aber es ist das, was Sie tatsächlich brauchen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.