Wie bringe ich sudo dazu, nach dem root-Passwort zu fragen?

25

Wenn ich sudoals normaler, nicht privilegierter Benutzer ausgeführt werde, werde ich nach meinem Kennwort gefragt, nicht nach dem Root-Kennwort. Das ist oft praktisch, reduziert aber die Menge an Informationen, die jemand haben müsste, um Befehle als root auszuführen. Wie kann ich also sudodas root-Passwort anstelle des Passworts des aufrufenden Benutzers anfordern?

Ich weiß, dass dies mit einem Line-In geschehen würde /etc/sudoers, aber ich kann die BNF-Grammatik in der Manpage nie richtig analysieren, um genau herauszufinden, was ich schreiben soll.

David Z
quelle
Ich empfehle Ihnen, die Befehle, die als Benutzer ohne Rootberechtigung zulässig sind, einzuschränken, damit Sie sich nicht darum kümmern müssen, beliebige Befehle verfügbar zu machen.
Slartibartfast
@slartibartfast: aber was passiert dann, wenn ich einen Befehl als root ausführen muss, der nicht in der vorab genehmigten Liste enthalten ist?
David Z

Antworten:

25

Ok, hier ist es wieder so, dass Sie das Häkchen setzen können.

In /etc/sudoers, fügen Sie diese Zeile:

Defaults rootpw

Um das rootpw-Flag zu aktivieren, fragt sudo nach dem root-Passwort.

Florian Diesch
quelle
7
Sie sollten den visudoBefehl immer verwenden, anstatt die /etc/sudoersDatei manuell zu bearbeiten . visudoÜberprüft die Datei vor dem Speichern, um sicherzustellen, dass sie korrekt ist, damit Sie bei Auftreten
Colin D Bennett
5

Sie müssen die rootpwFlagge einschalten .

Ignacio Vazquez-Abrams
quelle
Wie gesagt, ich konnte die BNF-Notation in der Manpage nicht durcharbeiten. In welche Zeile sollte ich diese Markierung einfügen /etc/sudoers?
David Z
2
Standard rootpw
Florian Diesch
@Florian: whaddya know, so einfach ist das :-) Wenn du das als Antwort postest, bekommst du das Häkchen.
David Z
3

Ich weiß, dass diese Frage alt ist, aber es ist die prägnanteste Frage, die ich für diesen Anwendungsfall gefunden habe (ein kleiner Prozentsatz, wahr, aber dennoch legitim und hilfreich im richtigen Szenario).

Nachdem Sie alle Schritte aus verschiedenen Quellen zusammengestellt haben - einschließlich mehrerer Antworten auf diese Frage - funktionieren diese Schritte unter Ubuntu-Gnome 16.04 LTS:

  1. Legen Sie ein Passwort für root fest
    • Dies ist KRITISCH zu tun FIRST ! (Ubuntu hat aufgrund der Standard-Sicherheitskonfiguration automatisch kein Passwort für den ROOT-Benutzer.
    • Wenn Sie dies nicht zuerst tun, können Sie nicht auf Root-Rechte zugreifen. Dies kann überwunden werden, indem Sie mit einer Live Disk booten, die Festplatte einbinden und die sudoers-Datei bearbeiten. Am besten vermeiden Sie dies.
    • Öffne ein Terminal und gib ein: sudo passwd
    • Legen Sie Ihr neues Passwort für den ROOT-Benutzer fest.
  2. Ändern Sie die SUDO-Konfiguration so, dass das Root-Passwort erforderlich ist
    • SUDO erfordert, dass der Benutzer Root-Rechte anfordert
    • Wenn Sie stattdessen das "rootpw" -Flag setzen, fordert SUDO das Passwort für den root-Benutzer an.
    • Öffne ein Terminal und gib ein: sudo visudo
    • Dadurch wird die Datei "/ etc / sudoers" geöffnet
    • Fügen Sie nach der anderen Zeile "Defaults" Folgendes hinzu: Defaults rootpw
    • Speichern Sie es (vorausgesetzt, Sie befinden sich in Nano, was die Standardeinstellung ist, dies ist STRG + O)
    • Schließen Sie die Datei (STRG + X) und beenden Sie das Terminal
  3. Sie sind fertig!

Nur eine kurze Anmerkung - ich wollte auch sicherstellen, dass der Root-Benutzer nicht zum Anmelden über die grafische Anmeldung verwendet werden kann, und suchte nach Möglichkeiten, um auszuschließen. Anscheinend ist der Root-Benutzer standardmäßig ausgeschlossen und kann nicht zum Anmelden über die grafische Gnome-Anmeldung verwendet werden - was eine sehr gute Sache ist!

SRDC
quelle
Könnten Sie Verbesserungen vorschlagen, um eine Ablehnung umzukehren?
SRDC
Scheint nicht falsch zu sein.
Ruslan
1
Möglicherweise aufgrund einer einfachen (und funktionierenden) Konfiguration von: root ALL=(ALL) ALL Defaults targetpw ALL ALL=(ALL) ALL Ermöglicht root sudo für jeden Benutzer, der das root-Passwort kennt. Das naive Ändern der letzten beiden Zeilen zu Ihrer Lösung Defaults rootpwführt zu einer Sperrung von sudo. Sie müssen auch Ihren Benutzer hinzufügen, um dies zu sudoersmögen: myusername ALL=(ALL) ALLoder einer Gruppe ähnliche Berechtigungen erteilen und dann myusernamedieser Gruppe hinzufügen .
Paul Parker
1

Eine allgemeine Konfiguration, die das Passwort des Ziels erfordert (nicht das, was wir wollen):

Defaults targetpw
ALL ALL=(ALL) ALL

Die zweite Zeile würde laut lauten wie: "ALLE Benutzer auf ALLEN Hosts können sich als (ALLE) Benutzer ausgeben, wenn ALLE Befehle ausgeführt werden." und die Defaults targetpwMittel, die sie benötigen, um das Passwort des Benutzers zu kennen, dessen Identität sie annehmen, um dies zu tun.

Naives Ändern dieser einfachen Konfiguration in:

Defaults rootpw

würde keinen Benutzer oder keine Gruppe mit der Berechtigung zum Ausführen von Befehlen als anderer Benutzer zurücklassen.

Eine Arbeitsmöglichkeit wäre:

Defaults rootpw
myuser ALL=(ALL) ALL

Im Klartext kann myuserjetzt ALL-Befehle als jeder Benutzer auf ALLEN Hosts ausgeführt werden, solange das root-Passwort bekannt ist.

Eine andere Arbeitsmöglichkeit wäre:

Defaults rootpw
%sudousers ALL=(ALL) ALL

Jedes Mitglied der sudousersGruppe kann ALLE Befehle als jeder Benutzer auf ALLEN Hosts ausführen, solange das root-Passwort bekannt ist. Damit myusersudo-Befehle ausgeführt werden können, sudousersmüssen sie den sekundären Gruppen hinzugefügt werden.

su
usermod -a -G sudousers myuser
exit
Paul Parker
quelle
Tolle Erklärung. Detaillierter als die Schritt-für-Schritt-Anleitung, die ich veröffentlicht habe (die auf Ubuntu-Standardwerten basierte).
SRDC
0

Sie können sudo einfach ausschalten und verwenden su -c.

Nitrodist
quelle
Unbequem, weil ich mein Passwort jedes Mal eingeben muss, wenn ich es ausführe. Der Anwendungsfall besteht darin, dass mehrere Befehle als root schnell hintereinander ausgeführt werden müssen.
David Z
-1

Verwenden

sudo su

Damit können Sie so viele Befehle ausführen, wie Sie möchten.


quelle
2
Gute Idee, aber wenn ich nicht sudozur Eingabe des Root-Passworts übergehe, kann trotzdem jemand Root-Zugriff erlangen, indem nur ein Passwort (nicht das von Root) angegeben wird. Es geht also nicht wirklich um die Sicherheitsbedenken, die meine Frage aufgeworfen haben.
David Z
Anstatt die Kapazität von sudo zu nutzen, um den Zugriff durch Benutzer einzuschränken, setzen Sie Ihr Root-Passwort einer Reihe von Benutzern aus. Sie entfernen auch die Funktion zum Sichern Ihres Servers, indem Sie das Kennwort aus dem Stammverzeichnis entfernen.
BillThor