Jak sprawić, by sudo poprosiło o hasło roota?

25

Kiedy działam sudojako zwykły nieuprzywilejowany użytkownik, prosi o moje hasło, a nie hasło roota. Jest to często wygodne, ale zmniejsza ilość informacji, które ktoś musiałby mieć, aby uruchamiać polecenia jako root. Jak więc mogę sudopoprosić o hasło roota zamiast hasła użytkownika wywołującego?

Wiem, że można to zrobić z liniowym wejściem /etc/sudoers, ale nigdy nie wydaje mi się, aby poprawnie analizował gramatykę BNF na stronie podręcznika, aby dowiedzieć się, co dokładnie napisać.

David Z
źródło
Zalecam ograniczenie poleceń, które są dozwolone jako użytkownik inny niż root, abyś nie musiał się martwić o ujawnianie dowolnych poleceń.
Slartibartfast
@slartibartfast: ale co się dzieje, gdy muszę uruchomić polecenie jako root, którego nie ma na liście wstępnie zatwierdzonych?
David Z

Odpowiedzi:

25

Ok, znowu jest, więc możesz ustawić znacznik wyboru.

W /etc/sudoersdodaj tę linię:

Defaults rootpw

aby włączyć flagę rootpw, powodując, że sudo poprosi o hasło roota.

Florian Diesch
źródło
7
Zawsze należy używać visudopolecenia zamiast ręcznie edytować /etc/sudoersplik. visudosprawdza poprawność pliku, aby upewnić się, że jest poprawny przed zapisaniem, więc nie zostaniesz zablokowany z sudo, jeśli popełnisz błąd składniowy ... askubuntu.com/a/81054/166411
Colin D Bennett
5

Musisz włączyć rootpwflagę.

Ignacio Vazquez-Abrams
źródło
Jak już powiedziałem, nie byłem w stanie pracować z notacją BNF na stronie podręcznika - więc do której linii wstawiłbym, /etc/sudoersaby włączyć tę flagę?
David Z
2
Domyślnie rootpw
Florian Diesch
@Florian: co wiesz, to takie proste :-) Jeśli opublikujesz to jako odpowiedź, otrzymasz znak zaznaczenia.
David Z
3

Wiem, że to pytanie jest stare, ale jest to najbardziej zwięzłe pytanie, jakie znalazłem dla tego przypadku użycia (co stanowi niewielki procent, prawda, ale mimo to uzasadnione i pomocne w odpowiednim scenariuszu).

Po zebraniu wszystkich kroków z różnych źródeł - w tym wielu odpowiedzi na to pytanie, te kroki działają na Ubuntu-Gnome 16.04 LTS:

  1. Ustaw hasło dla roota
    • To jest KRYTYCZNE, aby zrobić PIERWSZE ! (Ubuntu automatycznie nie ma hasła dla użytkownika ROOT ze względu na standardową konfigurację zabezpieczeń.
    • Jeśli nie zrobisz tego wcześniej, zablokujesz sobie dostęp do uprawnień roota. Można temu zaradzić, uruchamiając się z dysku twardego, montując dysk twardy i edytując plik sudoers, ale najlepiej tego uniknąć.
    • Otwórz terminal i wprowadź: sudo passwd
    • Ustaw nowe hasło dla użytkownika ROOT.
  2. Zmień konfigurację SUDO, aby wymagać hasła roota
    • SUDO wymaga od użytkownika żądania uprawnień roota
    • Ustawienie flagi „rootpw” zamiast tego mówi SUDO, aby wymagała hasła dla użytkownika root.
    • Otwórz terminal i wprowadź: sudo visudo
    • Spowoduje to otwarcie pliku „/ etc / sudoers”
    • Po drugim wierszu „Domyślne” dodaj: Defaults rootpw
    • Zapisz go (zakładając, że jesteś w nano, co jest ustawieniem domyślnym, jest to CTRL + O)
    • Zamknij plik (CTRL + X) i zamknij terminal
  3. Jesteś skończony!

Krótka uwaga - chciałem też upewnić się, że użytkownik root nie będzie mógł zalogować się przy użyciu graficznego logowania, i szukałem sposobów na wykluczenie. Najwyraźniej użytkownik root jest domyślnie wykluczony i nie może być używany do logowania za pomocą graficznego logowania Gnome - co jest bardzo dobrą rzeczą!

SRDC
źródło
Czy możesz zasugerować ulepszenia, aby cofnąć głosowanie negatywne?
SRDC,
Nie wydaje się, że jest źle.
Ruslan,
1
Prawdopodobnie dlatego, że prosta (i działająca) konfiguracja: root ALL=(ALL) ALL Defaults targetpw ALL ALL=(ALL) ALL Pozwala na rootowanie sudo dla każdego użytkownika, który zna hasło roota. Naiwna zmiana dwóch ostatnich linii do twojego rozwiązania Defaults rootpwpowoduje blokadę z sudo. Musisz także dodać użytkownika, aby sudoerspolubił: myusername ALL=(ALL) ALLlub dać podobne uprawnienia grupie, a następnie dodać ją myusernamedo tej grupy.
Paul Parker,
1

Typowa konfiguracja, która wymaga hasła celu (nie tego, czego chcemy):

Defaults targetpw
ALL ALL=(ALL) ALL

Drugi wiersz brzmiałby na głos: „WSZYSCY użytkownicy na WSZYSTKICH hostach mogą personifikować (WSZYSTKICH) użytkowników podczas wykonywania WSZYSTKICH poleceń”. oraz Defaults targetpwoznacza, że ​​muszą znać hasło użytkownika, pod którym się podszywają.

Naiwnie zmieniając tę ​​prostą konfigurację na:

Defaults rootpw

nie pozostawiłby żadnego użytkownika lub grupy z uprawnieniem do uruchamiania poleceń jako inny użytkownik.

Jedną z możliwości pracy byłoby:

Defaults rootpw
myuser ALL=(ALL) ALL

Mówiąc myuserwprost, ma teraz możliwość uruchamiania WSZYSTKICH poleceń jak każdy użytkownik na WSZYSTKICH hostach, o ile znane jest hasło roota.

Inną możliwością pracy byłoby:

Defaults rootpw
%sudousers ALL=(ALL) ALL

Każdy członek sudousersgrupy będzie mógł uruchamiać WSZYSTKIE polecenia jak każdy użytkownik na WSZYSTKICH hostach, o ile znane jest hasło roota. Aby umożliwić myuseruruchamianie poleceń sudo, sudousersnależy dodać do jego grup pomocniczych.

su
usermod -a -G sudousers myuser
exit
Paul Parker
źródło
Świetne wyjaśnienie. Bardziej szczegółowe niż krok po kroku opublikowałem (który działał w oparciu o domyślne ustawienia Ubuntu).
SRDC
0

Możesz po prostu wyłączyć sudo i używać su -c.

Nitrodist
źródło
Niewygodne, ponieważ muszę wprowadzać hasło przy każdym uruchomieniu. Przypadek użycia tutaj polega na szybkim uruchamianiu wielu poleceń jako root.
David Z
-1

Za pomocą

sudo su

pozwoli ci uruchamiać tyle poleceń, ile tylko chcesz.


źródło
2
Dobry pomysł, ale chyba że zmienię się, sudoaby pytać o hasło roota, nadal pozwoli to komuś uzyskać dostęp do roota poprzez przedstawienie tylko jednego hasła (nie roota). Więc tak naprawdę nie rozwiązuje problemu bezpieczeństwa, który spowodował moje pytanie.
David Z
Zamiast korzystać ze zdolności sudo do ograniczania dostępu przez użytkownika, udostępniasz swoje hasło roota wielu użytkownikom. Usuwasz także możliwość zabezpieczenia swojego serwera, usuwając hasło z katalogu głównego.
BillThor,