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ć.


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.


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ę.


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ą!


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

Ś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.


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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.