Ich brauche sudo ohne Passwortabfrage für Skripte. Was habe ich falsch gemacht?


9

Ich bin in der Sudo-Gruppe.

$ id
uid=1002(molot) gid=1002(molot) groups=1002(molot),27(sudo),33(www-data)

In meinen Sudores scheint ich eine angemessene Einstellung zu haben:

sudo    ALL=(ALL:ALL) NOPASSWD: ALL

und es ist die letzte unkommentierte Zeile dort.

Aber wenn ich es versuche git pull, möchte ich mein Passwort erneut eingeben:

$ sudo -u www-data git --git-dir /var/www/.git --work-tree /var/www pull "origin" master
[sudo] password for molot:

Es ist kein Problem, wenn ich in der Konsole angemeldet bin, aber es ist in Skripten nicht akzeptabel. Wie kann ich also jedem in der Sudo-Gruppe erlauben, als WWW-Daten zu ziehen, ohne das Passwort erneut einzugeben?

Wenn ich meinen Namen direkt eingebe:

molot ALL=(ALL) NOPASSWD: ALL

Für mich geht das. Aber natürlich nicht für marianische oder andere Benutzer aus der Sudo-Gruppe. Soweit ich das Handbuch verstanden habe , sollten sowohl Benutzernamen als auch Gruppennamen in der ersten Datei funktionieren.


Können Sie nicht sudo -u www-data ./your_script.sh? Was ist der Zweck des Skripts?
jimbobmcgee

@jimbobmcgee es ist ein Git-Hook, also nein, ich kann ihm nichts voranstellen. Es wird von dem Benutzer aufgerufen, der Git-Änderungen vorgenommen hat, und ich habe keinen wirklichen Weg gefunden, um es zu umgehen.
Mołot

Das erste Feld (wenn mein schnelles Verständnis des sudoersDateiformats korrekt ist) ist der Benutzername des aufrufenden Benutzers. Haben Sie versucht, es durch den Platzhalter zu ersetzen *, oder für welchen Benutzer der Git-Hook ausgeführt wird?
Ein Lebenslauf

@ MichaelKjörling wie hier angegeben sollte es möglich sein, sowohl Benutzer als auch Gruppen in das erste Feld zu schreiben. *funktioniert nicht. Das direkte Eingeben meines Namens funktioniert für mich ... aber natürlich nicht für andere Benutzer in der Sudo-Gruppe.
Mołot

@ MichaelKjörling danke, dein Kommentar hat mich dazu gebracht, nach speziellen Zeichen zu suchen und mir erlaubt, eine Antwort zu finden: D Bearbeiten: Selbstantwort gelöscht und Antwort von Drittanbietern im selben Moment akzeptiert.
Mołot

Antworten:


19

Scheint, als hätten Sie die relevante Zeile in Ihren Sudoern, in der ein Charakter fehlt:

sudo ALL = (ALL: ALL) NOPASSWD: ALL

stimmt mit einem Benutzer namens 'sudo' überein. Für 'alle Benutzer in der Sudo-Gruppe' sollte es sein:

% sudo ALL = (ALL: ALL) NOPASSWD: ALL

(Beachten Sie das% -Zeichen am Anfang).


1
Ah so dass das , was die %in %wheelgemeint.
Nikil

1

sudo visudo

Angenommen, es molotist Ihr Benutzername, gehen Sie zum Ende der Datei und:

molot ALL=(ALL) NOPASSWD: ALL

Dies sollte funktionieren, aber wenn nicht, halten Sie uns auf dem Laufenden.


Das funktioniert. Für mich. Aber natürlich nicht für Marianer oder andere Benutzer in der Sudo-Gruppe.
Mołot

Erstellen Sie dann Benutzer-Aliase ( User_Alias) und erteilen Sie die Berechtigung, bestimmte Befehle als root ( Runas_Alias) auszuführen . Ich weiß nicht, wie Ihre Gruppe aufgebaut ist. Sie können die Sudoers-Wiki- Hilfe lesen. Ubuntu.com/community/Sudoers Es ist wirklich prägnant. Überprüfen Sie den Abschnitt "Benutzerspezifikationen", dies sollte helfen.
Jugurtha Hadjar
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.