Podczas stosowania sudo
do polecenia, które tak naprawdę nie potrzebuje sudo
,
czasami nie pyta mnie o hasło. Na przykład pod moim
$HOME
,sudo ls
.Ale pamiętam, że robi to w przypadku jakiegoś innego polecenia, chociaż zapominam, które z nich.
Zastanawiałem się więc, jak sudo
zdecydować, czy poprosić o hasło, gdy otrzymam polecenie, które tak naprawdę nie potrzebuje sudo
? Czy istnieje jakaś reguła w /etc/sudoers
określaniu tego?
Moim prawdziwym problemem jest to, że kiedy używam du
, czasami pokazuje „odmowa dostępu” dla niektórych katalogów, a czasem nie, prawdopodobnie dlatego, że nie mam uprawnień na niektóre katalogi? Zgłaszam sudo
się du
niezależnie i myślałem, że zostaniesz poproszony o hasło niezależnie, ale tak naprawdę nie we własnych katalogach.
Odpowiedzi:
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 uruchomiszsudo du
, sudo działadu
jako root, więc nie otrzymujesz błędów uprawnień (to jest punkt konta root: root¹ zawsze ma uprawnienia). Po uruchomieniusudo du
,du
działa jako root, isudo
nie jest zaangażowany w ogóle podu
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.
authenticate
opcji false i zastosowanie odpowiedniej reguły doNOPASSWD
tagu.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.
źródło
sudo
nie wie, czy polecenie, które ma zostać uruchomione, musi działać jako inny użytkownik (zwykle root), wszystko co wie, to jego konfiguracja. To określa, którzy użytkownicy mogą uruchamiać sięsudo
, z tym, którzy użytkownicy są „celami” i dla jakich poleceń; określa również, czy hasło jest potrzebne, i które ma pozostać przy tokenie uwierzytelniającym.Jeśli używasz domyślnej konfiguracji Debiana, ta druga jest najprawdopodobniej o to tutaj chodzi:
sudo
poprosi cię o hasło przy pierwszym użyciu w dowolnym terminalu, a następnie zachowa token uwierzytelniający przez pewien czas. Jeśli użyjesz ponowniesudo
w tym samym terminalu w tym czasie, nie poprosi o podanie hasła.źródło
sudo du /path/to/some/dir
że albo zawsze potrzebuję mojego hasła, albo nigdy, niezależnie od/path/to/some/dir
?/etc/sudoers
może określać polecenia i ich argumenty. Jednak jeśli nie dodałeś czegoś takiego dosudoers
(a jeśli tak, mam nadzieję, że będziesz tego świadomy), argumenty nie będą miały znaczenia (podobnie jak polecenie, jeśli masz ogólny dostęp do roota za pośrednictwemsudo
).sudo
nie przechowuje Twojego hasła w pamięci podręcznej, tylko informacje, że Twoja tożsamość została już raz zweryfikowana za pomocą sprawdzenia hasła. Ponieważsudo
jest to program root-setuid, ma już wszystkie uprawnienia, których potrzebuje, aby uruchamiać cokolwiek jak każdy - ale ufa się, że pozwala użytkownikom korzystać z niego dokładnie tak, jak określono wsudoers
pliku, i odrzuca wszelkie inne próby jego użycia . Dlatego tak ważnysudo
jest tak mały i bardzo dobrze zbadany program.To nie jest takie polecenie potrzeby lub potrzeby nie sudo. Kiedy biegniesz
system działa
command
jakouser
.To, czy wywołanie zakończy się powodzeniem, czy nie, i pytanie o hasło, zależy od zasad bezpieczeństwa
sudoers
(zwykle skonfigurowanych w/etc/sudoers
).źródło