Zmuszanie sudo do pytania o hasło

26

Jeśli wykonam następujące czynności:

sudo su -
//enter password
exit
exit
//login again straight away
sudo su -

Drugie wywołanie sudo nie wymaga podania hasła, ponieważ mimo że wylogowałem się ponownie, nadal mam pewien limit czasu, co oznacza, że ​​nie muszę być ponownie monitowany o podanie hasła.

Ponieważ wypróbowuję nowych szeregowców, aby upewnić się, że działają, to naprawdę mnie spowalnia, czekając na upływ czasu.

Czy istnieje polecenie, które mogę uruchomić, aby zresetować limit czasu?

Nawiasem mówiąc, nie chcę zmieniać limitu czasu ani wpływać na innych użytkowników!

Bogaty
źródło
Jeśli nadal nie możesz zmusić sudo do pytania o hasło, być może będziesz musiał skomentować reguły użytkownika wspominające „NOPASSWD”, jeśli są one obecne w /etc/sudoers.d/katalogu. Mam linię #includedir /etc/sudoers.dw /etc/sudoersI mimo, że linia jest wyłączona przez komentarzu, ale wygląda na to, że #zanim includedirnie jest odczytywany jako komentarz!
baptx

Odpowiedzi:

40

sudo -kZabije znacznik czasu przekroczenia limitu czasu. Możesz nawet wprowadzić polecenie później, na przykładsudo -k test_my_privileges.sh

Od man sudo:

-K Opcja -K (pewnie zabij) jest podobna do -k z tym wyjątkiem, że całkowicie usuwa znacznik czasu użytkownika i nie może być używana w połączeniu z poleceniem lub inną opcją. Ta opcja nie wymaga hasła.

-k Gdy jest używana sama, opcja -k (kill) do sudo unieważnia znacznik czasu użytkownika, ustawiając w nim czas na Epokę. Przy następnym uruchomieniu sudo wymagane będzie hasło. Ta opcja nie wymaga hasła i została dodana, aby umożliwić użytkownikowi cofnięcie uprawnień sudo z pliku .logout.

Możesz go również zmienić na stałe. Od man sudoers:

timestamp_timeout

Liczba minut, które mogą upłynąć, zanim sudo poprosi ponownie o hasło. Limit czasu może obejmować element ułamkowy, jeśli drobna ziarnistość jest niewystarczająca, na przykład 2,5. Wartość domyślna to 5. Ustaw tę wartość na 0, aby zawsze monitować o hasło. Jeśli zostanie ustawiona wartość mniejsza niż 0, znacznik czasu użytkownika nigdy nie wygasa. Można to wykorzystać, aby umożliwić użytkownikom tworzenie lub usuwanie własnych znaczników czasu za pomocą odpowiednio sudo -v i sudo -k.

Shawn J. Goff
źródło
2
Uważaj, sudo -k commandaby nie usunąć poświadczeń. Po prostu ignoruje bieżące poświadczenia i nie przechowuje ich.
user1346466,
Aby to dodać. Jeśli chcesz zmienić limit czasu znacznika czasu, musisz edytować sudoersplik za pomocą sudo visudo. Następnie dodajesz linię Defaults timestamp_timeout = 0na końcu listy innych Defaultsw pliku. Wyjmij linię ponownie, aby powrócić do „normalnego” limitu czasu.
Floris,
Moje następne
UlfR
5

Odpowiedź Shawna jest świetna, ale istnieje dodatkowa opcja konfiguracji, która może być przydatna w tej sytuacji.

Od man sudoers:

tty_tickets

Jeśli jest ustawiony, użytkownicy muszą uwierzytelniać się na podstawie każdego tty. Po włączeniu tej flagi sudo użyje pliku o nazwie tty, na której użytkownik jest zalogowany w katalogu znaczników czasu użytkownika. Jeśli ta opcja jest wyłączona, zamiast niej używana jest sygnatura czasowa katalogu.

Ta flaga jest domyślnie włączona.

Od man sudo:

Gdy w sudoers jest włączona opcja tty_tickets, znacznik czasu ma szczegółowość per-tty, ale nadal może przeżyć sesję użytkownika. W systemach Linux, w których używany jest system plików devpts, w systemach Solaris z systemem plików urządzeń, a także w innych systemach wykorzystujących system plików devfs, który monotonicznie zwiększa liczbę i-węzłów urządzeń podczas ich tworzenia (takich jak Mac OS X), sudo jest w stanie aby ustalić, kiedy plik znacznika czasu oparty na tty jest nieaktualny i zignoruje go. Administratorzy nie powinni polegać na tej funkcji, ponieważ nie jest ona powszechnie dostępna.

Myślę, że jest stosunkowo nowy. Jeśli twój system to obsługuje, wyloguj się, a następnie zaloguj, sudo ponownie poprosi o hasło. (Mam również sudo -Kw skrypcie wylogowania z powłoki).

Arrowmaster
źródło