W typowej konfiguracji polecenie nie ma znaczenia. Musisz podać hasło przy pierwszym użyciu sudo i nie potrzebujesz hasła w tej konkretnej powłoce przez następne 15 minut.
Z punktu widzenia komputera nie ma czegoś takiego jak „polecenie wymagające sudo”. Każdy użytkownik może podjąć próbę uruchomienia dowolnego polecenia. Wynikiem może być komunikat o błędzie, taki jak „Odmowa zezwolenia” lub „Brak takiego pliku lub katalogu”, ale zawsze można uruchomić polecenie.
Na przykład, jeśli uruchomisz du
drzewo katalogów, które zawiera treści, do których nie masz uprawnień dostępu, otrzymasz błędy uprawnień. To właśnie oznacza „odmowa zezwolenia”. Jeśli uruchomisz sudo du
, sudo działa du
jako root, więc nie otrzymujesz błędów uprawnień (to jest punkt konta root: root¹ zawsze ma uprawnienia). Po uruchomieniu sudo du
, du
działa jako root, i sudo
nie jest zaangażowany w ogóle po du
uruchomieniu. To, czy du napotka błędy uprawnień, jest całkowicie nieistotne dla działania sudo.
Istnieją polecenia, które wymagają sudo, aby zrobić coś pożytecznego . Przydatność to ludzka koncepcja. Musisz użyć sudo (lub innych metod, aby uruchomić komendę jako root), jeśli komenda robi coś pożytecznego, gdy uruchomisz ją jako root, ale nie po uruchomieniu na koncie.
To, czy sudo poprosi o twoje hasło, zależy od dwóch rzeczy.
- Na podstawie konfiguracji sudo decyduje, czy konieczne jest uwierzytelnienie. Domyślnie sudo wymaga hasła. Można to wyłączyć na kilka sposobów, w tym poprzez ustawienie
authenticate
opcji false i zastosowanie odpowiedniej reguły do NOPASSWD
tagu.
- Jeśli sudo wymaga hasła, użycie wartości z pamięci podręcznej może być zadowalające. Jest to w porządku, ponieważ powodem, dla którego sudo potrzebuje twojego hasła, nie jest uwierzytelnianie, kto go wywołuje (sudo wie, który użytkownik go wywołał), ale potwierdzenie, że to ty wciąż wykonujesz polecenia, a nie ktoś, kto przejął kontrolę nad klawiaturą. Domyślnie sudo jest skłonny uwierzyć, że nadal jesteś przy komendach, jeśli hasło zostało wprowadzone mniej niż 15 minut temu (można to zmienić za pomocą
timeout
opcji). Musisz wprowadzić hasło w tym samym terminalu (aby pozostać zalogowanym na jednym terminalu, pozostawić ten terminal bez nadzoru, a następnie użyć innego terminala, ktoś może „tty_tickets
¹ prawie, ale to jest poza zakresem tego wątku.