Aktivieren Sie Sudo ohne Passwort als bestimmten Benutzer

26

Ich habe zwei Benutzer auf meinem System: itsadokmeinen elasticsearchHauptbenutzer und einen Benutzer mit einem anderen ulimit zum Ausführen von ElasticSearch.

Ich möchte in der Lage sein, Inhalte als sekundärer Benutzer auszuführen, ohne jedes Mal zur Eingabe eines Kennworts aufgefordert zu werden.

Ich habe folgende Zeile hinzugefügt /etc/sudoers:

itsadok ALL=(elasticsearch:elasticsearch) NOPASSWD: ALL

So wie ich es verstehe, sollte dies dem Benutzer itsadok ermöglichen, auf einem beliebigen Host einen beliebigen Befehl als (Benutzer- oder Gruppen-) Elasticsearch ohne Kennwort auszuführen. Versuchen Sie jedoch etwas wie

itsadok@dev001$ sudo -u elasticsearch ls

fordert mich zur Eingabe eines Passworts auf. Neustart der Maschine hat nicht geholfen.

Was mache ich falsch?

UPDATE :

Es stellt sich heraus, dass die Reihenfolge der Zeilen sudoerssignifikant ist. Ich habe die Zeile unter "Benutzerberechtigungsspezifikation" platziert, was nach der richtigen Stelle klang, aber die Zeile für die %adminGruppe, die später kommt, hat die Einstellung außer Kraft gesetzt.

Das Problem wurde behoben, indem dieselbe Zeile am Ende der sudoers-Datei eingefügt wurde.

itsadok
quelle

Antworten:

12

Überarbeitete Antwort von Kommentaren: Wenn Sie Anweisungen unten platzieren #includedir, werden sie ignoriert. Verschieben Sie die Zeile neben die Definition sudooder die adminGruppendefinition oder platzieren Sie sie in einer separaten Datei in /etc/sudoers.d/.

Tuminoid
quelle
Hat nicht funktioniert Außerdem enthielt die Datei bereits ein root ALL=(ALL:ALL) ALLohne Leerzeichen um den Doppelpunkt, sodass sie nicht richtig zu sein scheint. Nur um sicher zu gehen, habe ich es einfach versucht (elasticsearch). Funktioniert nicht
Itsadok
Sie haben Recht, es funktioniert zumindest in 12.10 ohne Leerzeichen. Welches Ubuntu benutzt du und wo genau platzierst sudoersdu diese Zeile? Ich kann mich nur schwach daran erinnern, dass bei älteren Systemen die Zeile, nach der Sie sie platziert haben #includedir, ignoriert wurde. Wenn es sich am Ende der Datei befindet, versuchen Sie, es über dem includeir einzufügen.
Tuminoid
1
Ihr Kommentar hat mich auf den richtigen Weg gebracht: Auf die Reihenfolge der Einträge kommt es an. Spätere Einstellungen überschreiben frühere Einstellungen.
Itsadok
16

Folge diesen Schritten:

  1. Sudoers-Datei bearbeiten (kann in /etc/sudoers.d/file_name vorhanden sein)
sudo visudo -f /etc/sudoers
  1. Fügen Sie am Ende der Datei eine Zeile hinzu
usernameusedforlogin ALL=(ALL) NOPASSWD:ALL
  1. Datei speichern
esc :wq!
jatashankar shukla
quelle
Auf diese Weise kann der Benutzer alle Befehle auf allen Hosts ohne Kennwörter als Benutzer ausführen, gewährt jedoch keine Gruppenberechtigungen, die Teil der ursprünglichen Frage waren. Im Allgemeinen ist dies ein schlechter Rat, da Sie dem Benutzer sehr breite Rechte einräumen.
d4nyll