Jak zwiększyć limit czasu zapamiętywania hasła sudo?

61

Wiem już, że muszę dostroić plik / etc / sudoers, ale chciałbym zobaczyć pełne informacje, a także rozwiązanie, które nie wymagałoby ode mnie używania viedytora.

Aktualizacja: nigdy, nigdy nie próbuj edytować pliku za pomocą czegoś innego niż visudo.

sorin
źródło
1
możesz ustawić EDITOR env var jednocześnie używając visudo :: sudo env EDITOR = nano visudo
Dobra Osoba

Odpowiedzi:

86

Uruchom sudo visudoi dodaj ten wiersz:

Defaults    timestamp_timeout=-1

Zobaczyć man 5 sudoers. -1powoduje, że hasło nigdy się nie kończy. Możesz zmienić liczbę na dowolną w kilka minut.

Strona podręcznika man sudomówi, że sudo -v„wydłuża limit czasu sudo o kolejne 5 minut”.

Uruchomienie „sudo visudo” zamiast edycji pliku powoduje, że system sprawdza poprawność pliku sudoers przed zatwierdzeniem zmian. Na przykład, jeśli zostawisz gdzieś zabłąkaną postać, podczas zapisywania i wychodzenia powie, „w pliku sudoers wystąpił błąd, co chcesz zrobić?” ... dzięki czemu masz szansę wrócić i edytować. Tak się właśnie stało 10 minut temu.

lhf
źródło
20
Tak, ale visudouruchamia kilka podstawowych kontroli poprawności pliku sudoers przed zapisaniem. Jeśli zepsujesz plik, używając vibezpośrednio, możesz zablokować się przed użyciem sudo, co bardzo utrudnia cofnięcie zmiany.
nohillside
4
Przywileje są podobne w innych systemach, więc nie ma to nic wspólnego z Apple. visudoowija się wokół domyślnego edytora systemu (domyślam się, że użytkownik root jest domyślny, jeśli root zastąpił domyślnego), więc nie ma to nic wspólnego z nazwą vi. W moim systemie (nie Apple BTW) dostaję nano. Wypróbuj export EDITOR='/bin/nano'dowolny edytor, a następnie użyj visudo.
Chris,
4
Um ... Nie możesz użyć roota, żeby to poprawić, bo nie możesz dostać się do roota, bo właśnie wypchałeś plik sudo ... To jest cały punkt.
daviewales
1
W roli zawodowej możesz mieć dostęp do sudo, ale nie masz hasła roota. Twój serwer może znajdować się w centrum danych w całym kraju, co utrudnia dostęp do trybu pojedynczego użytkownika. Ale jeśli powiesz, że jesteś profesjonalistą, prawdopodobnie nie dostałbyś takich ostrzeżeń. Chodzi o to, że powinieneś uczyć się od profesjonalistów. Nie szukaj sposobów uniknięcia dobrych nawyków. Następnie musimy usłyszeć twoje szalone płacze na Stack Exchange i IRC.
Bruno Bronosky
1
(Być może jest to oczywiste dla wszystkich, ale dodanie): timestamp_timeout jest w minutach, może zawierać element ułamkowy.
użytkownik
3

Bądź bardzo ostrożny przy /etc/sudoersbezpośredniej modyfikacji !

Na przykład wypróbowałem powyższą sugestię bezpośrednio:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

który pomieszał mój /etc/sudoersplik (na maszynie wirtualnej CentOS Virtualbox). Powinien był być:

sudo sh -c 'echo -e "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

Na szczęście miałem dostęp do konta root, zalogowałem się jako root, użyłem visudoi naprawiłem problem! Zgadzam się więc na użycie powyższych komentarzy visudo.

użytkownik304227
źródło
1

Wszystkie informacje dla sudoerów można znaleźć w terminalu za pomocą polecenia

man sudoers

Możesz nawet użyć prostego tekstu do edycji plików, jednak prywatni to utrudniają. sudoers jest-r--r----- (Octal 0440)

Oznacza to, że Apple naprawdę nie chce, abyś zadzierał z plikiem. To naprawdę jest podstawowa ochrona systemu operacyjnego.

Opcje edycji to vi, emacs lub mój osobisty ulubiony BBEdit.

Andrei Freeman
źródło
5
Istnieje powód, dla którego te uprawnienia są ustawione. Są one ustawione, aby zmusić cię do używania visudozamiast samodzielnej edycji pliku. Nie ma to również nic wspólnego z OS X. Jest to standardowy * nix. Ponadto, jeśli chcesz użyć edytora innego niż domyślny, po prostu ustaw $EDITORzmienną środowiskową przed wywołaniem visudo. np EDITOR=nano sudo visudo.
daviewales
1

Wyłącz limit czasu sudo za pomocą tego polecenia:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

Aby ponownie włączyć limit czasu sudo za pomocą tej metody:

sudo sed -i "/Defaults timestamp_timeout=-1/d" /etc/sudoers
patpat
źródło
8
Ze strony podręcznika sudoers: Plik sudoers powinien zawsze być edytowany poleceniem visudo, które blokuje plik i sprawdza gramatykę. Konieczne jest, aby sudoers nie zawierał błędów składniowych, ponieważ sudo nie będzie działać z niepoprawnym składniowo plikiem sudoers.
Matteo
@Matteo Cóż, możesz zrobić wszystko, co chcesz na własnej nieruchomości, pod warunkiem, że zdajesz sobie sprawę z konsekwencji. W niektórych sytuacjach jest to w porządku, na przykład używam go na świeżych kompilacjach Mac, które nie zawierają cennych danych w ramach skryptu automatyzacji. Zasugerowałem edycję tej odpowiedzi, aby uzyskać ostrzeżenie. Idealnie sudopowinien mieć liniowy sposób na zmianę tego bez konieczności edytowania pliku!
samthebest
1
Uwaga, to niebezpieczna rada. Zamiast tego użyj visudo.
Will Sheppard