Jak anulować aktualnie zastosowany pozostały limit czasu sudo?

37

Kiedy właśnie uruchomię sudoi nie chcę, aby pozostała aktywna przez normalny czas przerwy, jak mogę anulować pozostałą przerwę ?

sudo -k zabija go dla bieżącej sesji terminala, ale jeśli proces aktualnie działa w tej sesji, a więc nie można go uruchomić sudo -k, czy istnieje sposób na anulowanie go z innej sesji terminala?

Czy istnieje sposób na anulowanie wszystkich aktualnie stosowanych sudoczasów (dla wszystkich sesji terminali i wszystkich uruchomionych aplikacji gksudo itp.)

Chociaż, pomyśl o tym, działający GUI może wymagać wyłączenia, ale właśnie sprawdziłem, czy Alt+ F2utrzymuje gksu aktywne dla kolejnych wywołań.

Peter.O
źródło

Odpowiedzi:

37

Nie jestem pewien, czy masz zamiar zabić limit czasu sudo, aby nie przekroczył limitu czasu, a więc upłynął natychmiast, ale jeśli chcesz usunąć pozostały znacznik czasu, możesz użyć sudo -k

W przeciwnym razie, jeśli próbujesz anulować limit czasu, aby sudo nie przekroczyło limitu czasu, nie sądzę, że jest to możliwe w bieżącej sesji. Jedynym sposobem wiem byłoby zmienić timestamp_timeoutw sudoerspliku i ponownie uruchomić sesję.

wajiw
źródło
Ups .. Byłem trochę powolny ze szczegółami: właśnie dodałem trochę więcej do mojego pytania .. o „-k” ... i tak, mam na myśli sytuację jednorazową , chociaż teraz przynosi podniesienie kwestii systemowego „jednorazowego”. ... Dzięki (+1) za odpowiedź, która była idealna na moje pytanie dotyczące oringiny (brak szczegółów) ..
Peter.O,
1
Nie do końca rozumiem, jak -Kpraktycznie różni się od -k(gdy -k jest używane przez itseld) .., ale -kma podwójne zastosowanie: 1. sam w sobie (unieważnia znacznik czasu) ... 2. gdy jest używany z poleceniem, to monituje o hasło, niezależnie od tego, czy upłynął limit czasu sudo ... A tak przy okazji: sudo -k działa w Alt + F2, aby zabić znacznik czasu poprzedniego połączenia sudo / gksu.
Peter.O,
Tak, nie mam pojęcia, kiedy używałbym jednego nad drugim.
wajiw
Oprócz problemu „zabij wszystkie istniejące znaczniki czasu” ... Bez zmiany podstawowych ustawień sudoers , jedyny sposób, w jaki widzę, aby uruchomić „gwarantowane” jednorazowe sudo to sudo -k; sudo -k appname.... ponieważ chociaż sudo -k appnamezmusza użytkownika do wprowadź hasło, pozostawia istniejący znacznik czasu bez zmian ... (wspominam o tym jako „griss to the mill”) ... i może najprostszym sposobem na „zabicie” wszystkich istniejących znaczników czasu jest po prostu uniknięcie problemu całkowicie i naciśnij Ctrl + Alt + L, aby zablokować ekran. :)
Peter.O
hahaha, jeśli masz taką możliwość,
wybrałbym
8

Tylko na jednym z twoich punktów:

ale jeśli proces jest aktualnie uruchomiony w tej sesji i dlatego nie można uruchomić sudo -k

Jest to specyficzne dla wiersza poleceń, jeśli chcesz coś zrobić podczas działania innego procesu, możesz nacisnąć Ctrl+, Zaby zatrzymać proces; wtedy ponownie uzyskasz dostęp do bieżącego terminala i zrób wszystko, co chcesz. Po jobszakończeniu możesz wpisać, aby uzyskać listę procesów wraz z liczbą obok nich. Wpisz fg 1(na przykład - i po prostu fgjeśli jest tylko jedno zadanie), aby zrestartować proces, podnosząc go na pierwszy plan. Podobnie, bgaby zrobić to samo, ale pozostawiając proces działający w tle.

Przykładowa sesja

$ sudo apt-get install hello
<CTRL+Z>
[1]+  Stopped    sudo apt-get install hello
$ sudo -k
$ jobs
[1]+  Stopped    sudo apt-get install hello
$ fg 1
Loading database...
....
Stefano Palazzo
źródło
1
Stefano: Dzięki… to jest takie dobre… Linux ciągle mi mówi: „Tak, oczywiście, że mogę to zrobić” :)… i, jeśli się nad tym zastanowić, byłem w połowie świadomy tego Ctrl + Z, ale połowa to za mało!) ... Teraz, kiedy spotkałem „prawdziwą” sytuację, w której nie jest to tylko tekst na ekranie, jestem pewien, że nigdy tego nie zapomnę ... muszę iść .. Mam trochę Cntrl + Z-ing do zrobienia ...
Peter.O,
2

Znalazłem rozwiązanie. ponieważ moje wyszukiwanie nie pokazało niczego podobnego i jest to częste pytanie: sudo przechowuje gdzieś w systemie plików (na przykład w / var / run / sudo), jeden katalog na nazwę użytkownika, kilka plików, które działają jako znacznik czasu , jeden plik dla każdego terminala. usuń te pliki, a system będzie ponownie bezpieczny. pamiętaj tylko, że pliki te są widoczne tylko dla rootowania (w przeciwnym razie intruz może odczytać znacznik czasu i ustawić czas zegarowy z powrotem do punktu, w którym nadal były ważne - przyznanie rootowi każdemu jest niebezpieczne). dlatego w moim / etc / pm / sleep / i może także dla wygaszacza ekranu uruchamiam:

rm -f /var/db/sudo/*/*

jako root oczywiście ...

piotr5
źródło