Potrzebuję sudo bez pytania o hasło dla skryptów. Gdzie popełniłem błąd?

9

W porządku, jestem w grupie sudo:

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

W moich sudores wydaje mi się, że mam odpowiednie ustawienie:

sudo    ALL=(ALL:ALL) NOPASSWD: ALL

i jest to ostatnia niekomentowana linia tam.

Ale kiedy próbuję git pull, próbuję ponownie wpisać hasło:

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

Nie jest to problem, gdy jestem zalogowany w konsoli, ale jest to niedopuszczalne w skryptach. Więc jak mogę pozwolić komukolwiek w grupie sudo na ściąganie jako dane www bez ponownego wpisywania hasła?

Kiedy umieszczam swoje imię bezpośrednio:

molot ALL=(ALL) NOPASSWD: ALL

mi to pasuje. Ale oczywiście nie dla marianów ani innych użytkowników z grupy sudo. O ile rozumiałem instrukcję , zarówno nazwy użytkowników, jak i nazwy grup powinny działać w pierwszym pliku.

Mołot
źródło
Nie możesz sudo -u www-data ./your_script.sh? Jaki jest cel skryptu?
jimbobmcgee
@ jimbobmcgee to git hook, więc nie, nie mogę nic do tego przygotować. Jest wywoływany przez użytkownika, który pchnął zmiany git i nie znalazłem prawdziwego sposobu na obejście tego.
Mołot
Pierwsze pole (jeśli moje szybkie zrozumienie sudoersformatu pliku jest prawidłowe) to nazwa użytkownika wywołującego. Czy próbowałeś zastąpić go symbolem wieloznacznym *lub jakimkolwiek użytkownikiem, który działa jako hak git?
CVn
@ MichaelKjörling, jak stwierdzono tutaj , powinno być możliwe pisanie zarówno użytkowników, jak i grup w pierwszym polu. *nie działa. Umieszczenie mojego imienia bezpośrednio działa dla mnie ... ale oczywiście nie dla innych użytkowników w grupie sudo.
Mołot
@ MichaelKjörling dziękuję, twój komentarz zmusił mnie do szukania specjalnych znaków i pozwolił mi znaleźć odpowiedź: D Edytuj: usunąłem odpowiedź własną i zaakceptowałem odpowiedź strony trzeciej od tego samego momentu.
Mołot

Odpowiedzi:

19

Wygląda na to, że w sudoersach brakuje odpowiedniej linii:

sudo ALL = (ALL: ALL) NOPASSWD: ALL

pasuje do użytkownika o nazwie „sudo”. Dla „wszystkich użytkowników w grupie sudo” powinno być:

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

(zwróć uwagę na znak% na początku).

rafalmp
źródło
1
Ach, więc to, co %się %wheelmyśli.
nikhil
1

sudo visudo

Następnie, zakładając, że molotto Twoja nazwa użytkownika, przejdź na koniec pliku i:

molot ALL=(ALL) NOPASSWD: ALL

To powinno działać, ale jeśli nie, informuj nas na bieżąco.

Jugurtha Hadjar
źródło
To działa. Dla mnie. Ale oczywiście nie dla Mariana ani żadnego innego użytkownika w grupie sudo.
Mołot
Następnie utwórz alias użytkownika ( User_Alias) i zezwól na uruchamianie określonych poleceń jako root ( Runas_Alias). Nie wiem, jak twoja grupa jest skonfigurowana, możesz sprawdzić wiki sudoers help.ubuntu.com/community/Sudoers To jest naprawdę zwięzłe. Sprawdź sekcję „Specyfikacje użytkownika”, to powinno pomóc.
Jugurtha Hadjar