Jak skonfigurować „sudo” bez hasła w systemie Linux?

156

W jaki sposób można sudoskonfigurować dostęp bez hasła w dystrybucji RHEL (Fedora, CentOS itp.) Lub Ubuntu? (Jeśli to samo dotyczy różnych dystrybucji, to jeszcze lepiej!)

Ustawienie: sprzęt osobisty i / lub laboratoryjny / szkoleniowy bez obaw o nieautoryzowany dostęp (tj. Urządzenia znajdują się w niepublicznych sieciach, a każdemu / wszystkim użytkownikom cieszy się pełne zaufanie, a zawartość urządzeń jest „zwykła waniliowa”) .

królikarnia
źródło
1
Odpowiedź @Richipal brzmi: ta, która działa najlepiej przy najmniejszym wysiłku: wydaje się, że zasady sudoers obowiązują w odwrotnej kolejności.
a1an
2
@ a1an reguły są stosowane w takiej samej kolejności, jak wymieniona w pliku sudoers, a gdy są stosowane, niejako się nadpisują. Dlatego jeśli nie chcę, aby reguła w ogóle się zmieniała, umieściłbym ją pod koniec pliku, aby została zastosowana w końcu i nie można jej zastąpić.
rsjethani

Odpowiedzi:

173

EDYCJA dzięki komentarzowi medyny: Według strony podręcznika powinieneś być w stanie pisać

ALL            ALL = (ALL) NOPASSWD: ALL

aby umożliwić wszystkim użytkownikom uruchamianie wszystkich poleceń bez hasła.


Dla porównania pozostawiam moją poprzednią odpowiedź:

Jeśli dodasz wiersz formularza

%wheel         ALL = (ALL) NOPASSWD: ALL

do /etc/sudoers( visudooczywiście za pomocą polecenia), pozwoli wszystkim w grupie wheeluruchamiać dowolne polecenia bez podawania hasła. Myślę więc, że najlepszym rozwiązaniem jest umieszczenie wszystkich użytkowników w jakiejś grupie i umieszczenie takiego wiersza sudoers- oczywiście powinieneś zastąpić wheelrzeczywistą grupą, z której korzystasz.

Alternatywnie możesz zdefiniować alias użytkownika,

User_Alias     EVERYONE = user1, user2, user3, ...

i użyj tego:

EVERYONE       ALL = (ALL) NOPASSWD: ALL

chociaż będziesz musiał aktualizować za /etc/sudoerskażdym razem, gdy dodajesz lub usuwasz użytkownika.

David Z
źródło
2
Czy nie ALLdziała zamiast *określać wszystkich użytkowników? Zobacz przykład w sudoers(5).
medina
1
@medina: tak się dzieje, tęskniłem za tym, kiedy czytałem stronę podręcznika. Będę edytować.
David Z
6
pod Ubuntu, utworzenie pliku pod /etc/sudoers.d i umieszczenie w nim tych wpisów, wtedy nie będziesz musiał edytować sudoers
Xetius
1
W CentOS7 ten wpis jest domyślnie skomentowany.
killjoy
1
Udało się go używać tylko w centOS przez kopiowanie / wklejanie, nie powiodło się każda próba bezpośredniego wpisania konfiguracji. Ale wynik wydaje się identyczny, z wyjątkiem spacji ...
MUY Belgium
95

Wypróbowałem powyższe rozwiązania bezskutecznie. Następujące rozwiązanie działało dla mnie Edytuj plik / etc / sudoers i dodaj następujący wiersz

username ALL=(ALL) NOPASSWD: ALL

Klucz jest dodanie go po ostatnim wierszu, który mówi

#includedir /etc/sudoers.d
Richipal
źródło
1
//, To wygląda na lepszy sposób, szczególnie gdy niektóre aplikacje dodają własne reguły dla użytkowników systemu, Richipal. Więcej informacji na temat sudoers.d: sudo.ws/man/1.8.13/sudoers.man.html
Nathan Basanese
1
// Czy zechciałbyś dodać część diagnostyki Gearoid Murphy do swojej odpowiedzi?
Nathan Basanese
1
Dziękuję za to wyjaśnienie. Dodanie go po linii #includedir /etc/sudoers.d wydaje się ważne w CentOS 7, podczas gdy wydaje się, że dobrze jest mieć linię wcześniej w pliku w CentOS 6.
dmohr
3
Problem z ignorowaniem NOPASSWD% wheel wydaje się wynikać z /etc/sudoers.d/USERNAMEprzesłonięcia uprawnień grupy NOPASSWD. Zastosowanie NOPASSWD /etc/sudoers.d/USERNAMErozwiązuje problem.
węgorz ghEEz
1
Duże ulepszenia do tego, po dołączeniu są ważne
Theodore Howell
27

Próbowałem wszystkich odpowiedzi na tej stronie, ale bez żadnych użytecznych wyników. W końcu to rozgryzłem, użyj tego polecenia, aby wyświetlić listę swoich praw sudo:

sudo -l

To powinno dać ci taki wynik:

User gmurphy may run the following commands on this host:
    (root) NOPASSWD: ALL
    (ALL) ALL

Pokazuje, że jestem skonfigurowany z uprawnieniami administratora, ale nadal jestem częścią grupy (administratora) dopasowanej do reguły sudo, która oczekuje hasła („(WSZYSTKO) WSZYSTKO”). To zmusiło sudo do podpowiedzi. Chodziło o administratorów:

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Gdy to skomentowałem, mogłem sudo bez hasła. Mam nadzieję, że przyda się to komuś innemu.

Gearoid Murphy
źródło
1
Ahhh, dzięki! To doprowadzało mnie do szału ... w moim przypadku mój użytkownik był częścią grupy „sudo”, a także „admin” (który utworzyłem), a uprawnienia do każdego z nich były źle dopasowane, tak jak w twoim przypadku . Teraz te rzeczy działają! :)
neezer
14
Komentowanie wyjścia jest tępym narzędziem. Być może zainteresuje Cię informacja, że ​​„sudo czyta plik sudoers i stosuje uprawnienia w kolejności od góry do dołu. Tak więc ostatni wiersz w pliku zastąpi każdy poprzedni konflikt” zgodnie z ubuntuforums.org/showthread.php?t=1132821 - - i to zadziałało dla mnie.
David J.
10

Wewnątrz /etc/sudoersznajduje się przykład tego na dole pliku:

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
Ignacio Vazquez-Abrams
źródło
2
tej próbki nie było w mojej - ale dzięki!
warren
1
Tak jak twoja zwięzła odpowiedź
Pan Pei
6

Istnieje inny sposób, aby to zrobić bez dotykania pliku sudoers.

  • Edytuj /etc/pam.d/sui odkomentuj poniższy wiersz:

    auth           sufficient      pam_wheel.so trust use_uid
    
  • Dodaj użytkownika do wheelgrupy.

topdog
źródło
2

Istnieje inny sposób, aby to zrobić bez dotykania pliku sudoers.

  • Edytuj /etc/pam.d/sudoi dodaj poniższy wiersz:

    auth wystarczające pam_wheel.so ufaj use_uid
  • Dodaj użytkownika do wheelgrupy.

Wspiera „topdog” i „Daniel Serodio” za oryginalną odpowiedź w odniesieniu do „su” zamiast „sudo”. Wykorzystałem to jako odniesienie i bezwstydnie skopiowałem i poprawiłem ich post.

noabody
źródło
1
Myślę, że zamiast kopiować dosłownie, lepiej byłoby je przypisać, ale wyjaśnij dokładnie, jak dokładnie różnią się twoje odpowiedzi. Zakładam, że to pozwala bez hasła su, zamiast / jak również bez hasła sudo? Nawiasem mówiąc, dodatek Daniela to tylko formatowanie.
mwfearnley