Co robi usługa sudo?

17

O ile mi wiadomo i wydaje się, że inni ludzie mają takie samo zdanie, sudo to polecenie, które wykonuje coś z uprawnieniami administracyjnymi.

Jednak po uruchomieniu rcconfwidzę tę linię:

[*] sudo    Provide limited super user privileges to specific users

Po co więc ta usługa? Czy to nawet usługa?

s3v3n
źródło
Właśnie to znalazłem podczas wyszukiwania google-> Sudo
adi
„W tym miejscu pojawia się sudo - pozwala autoryzowanym użytkownikom (zwykle użytkownikom„ administracyjnym ”; więcej informacji na ten temat można znaleźć w AddUsersHowto) na uruchamianie niektórych programów jako root, bez konieczności znajomości hasła roota”. - Właśnie to powiedziałem w moim pytaniu.
s3v3n
3
Pytanie dotyczy usługi, a nie polecenia
s3v3n,

Odpowiedzi:

22

Krótka odpowiedź

Aby odwołać „uwierzytelniane w pamięci podręcznej” czynności uwierzytelniania użytkowników podczas ponownego uruchamiania. To nie jest demon, tylko skrypt uruchamiany podczas rozruchu.


Obszerna odpowiedź

Przeglądając plik init, /etc/init.d/sudoktóry „uruchamia usługę”, możesz łatwo zobaczyć, co robi:

case "$1" in
  start)
        # make sure privileges don't persist across reboots
        if [ -d /var/lib/sudo ]
        then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
        fi
        ;;
  stop|reload|restart|force-reload)
        ;;
  *)
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

Zasadniczo wystarczy dotknąć niektórych plików /var/lib/sudona początku systemu, aby mieć bardzo stary znacznik czasu modyfikacji. W wyniku tego udzielone „uwierzytelniane w pamięci podręcznej” akcje uwierzytelnienia są cofane na początku usługi (co dzieje się podczas uruchamiania).

Poproszę więcej szczegółów na temat /var/lib/sudokatalogu i tych znaczników czasu? Z mapy sudo(8):

[...]
Once a user has been authenticated, a time stamp is updated and the
user may then use sudo without a password for a short period of time
(15 minutes unless overridden in sudoers).
[...]
Since time stamp files live in the file system, they can outlive a
user's login session.  As a result, a user may be able to login, run a
command with sudo after authenticating, logout, login again, and run
sudo without authenticating so long as the time stamp file's
modification time is within 15 minutes (or whatever the timeout is set
to in sudoers).
[...]
/var/lib/sudo           Directory containing time stamps
gertvdijk
źródło
Idealna odpowiedź :)
s3v3n 12.12.12
12

Plik sudousługi istnieje, aby upewnić się, że wymagane uprawnienia nie pozostaną po ponownym uruchomieniu. Zasadniczo gwarantuje, że po ponownym uruchomieniu normalni użytkownicy, którzy zażądali uprawnień root, pozostaną normalnymi użytkownikami.


Szczegółowe wyjaśnienie sudo

Wszystkie poniższe wyjaśnienia mają na celu uzyskanie wszystkich informacji dla wszystkich, którzy czytają to pytanie, a następnie wyjaśnienie, co robi tam plik sudo w folderze usługi.

Podczas instalowania Ubuntu lub innej dystrybucji korzystającej sudoz różnicy między byciem rootem a byciem użytkownikiem, który używa sudodo uzyskiwania uprawnień typu „root jak” (uprawnienia administratora lub superużytkownika), jest to:

Jako root

  • Nie jest wymagane podanie hasła do każdego lub wszystkich poleceń uruchamianych w sesji
  • Nie wszystkie wykonywane polecenia będą domyślnie rejestrowane
  • System zakłada, że ​​wiesz, co robisz (powód, dla którego nie pyta o hasło przy każdym wykonaniu polecenia)
  • Jeśli popełnisz błąd, nie ma drugiej szansy ani opcji w ostatniej chwili

Jak sudo

  • Zostaniesz poproszony o podanie hasła do każdego lub wszystkich poleceń uruchamianych w sesji. Na przykład, jeśli otworzysz terminal i wykonasz polecenie wymagające uprawnień administracyjnych, poprosi on o hasło dla tej sesji, dopóki nie zamkniesz terminalu lub wylogujesz się. Zależy to od tego, jakiego polecenia używasz i gdzie. Może zapytać raz lub wiele razy.
  • Wszystkie wykonywane polecenia będą rejestrowane, ponieważ faktycznie pytasz o pozwolenie na użycie polecenia uprzywilejowanego dla superużytkownika.
  • System zakłada, że ​​czasowo prosi o pozwolenie, a prawo administracyjne zostanie tymczasowo pożyczone (do czasu wylogowania, zamknięcia terminala itp.)
  • Masz opcję ostatniej chwili, aby poprawić każdy błąd. Odbywa się to w momencie, gdy zostaniesz zapytany o hasło.

Dlaczego utworzono SUDO

Tworzenie SUDO zostało wykonane, ponieważ w przeszłości używanie root'a powodowało więcej problemów niż rozwiązań. Użytkownicy mieli wszelkie prawa, co oznaczało, że jeśli oni zrobili jakieś porządki wiosna i dosłownie usunięty /usr, /libi /binfoldery (bo myśleli, że ich nie potrzebne) .. wiecie co by się stało. Wiele problemów w przeszłości było spowodowanych tym, że użytkownicy nie znali mocy, jaką mieli podczas korzystania z roota. Zasadniczo mieli root, ale nie rozumieli Linuksa, hierarchii systemu plików, jakie pliki były ważne itp. (Coś w stylu ferrari i nieumiejętności prowadzenia ... na autostradzie!)

SUDO jest również używany przez aplikacje GUI (jak Update Manager), gdy potrzebują tymczasowych uprawnień administracyjnych, aby coś zrobić. Potrzebują go tylko do określonej liczby poleceń (zazwyczaj 1), a następnie wracają do uprawnień na poziomie użytkownika. Ma to na celu uniknięcie posiadania uprawnień roota przez cały czas i uniknięcie pomyłki, jeśli użytkownik zdecyduje się usunąć ważną część systemu.

Ponadto zapewnia większe bezpieczeństwo, ponieważ użytkownik root jest domyślnie wyłączony.

Wreszcie, jeśli masz komputer stacjonarny lub serwer, naprawdę nie chcesz, aby wszyscy byli rootami ani nie mieli wszystkich uprawnień administratora. Bardzo zły pomysł, jeśli twoja młodsza siostra lub młodsi bracia zaczną się zastanawiać, co by się stało, gdyby /bootspotkał się z DELkluczem. W tym sudomomencie zmniejsza się szansa, że ​​stanie się coś złego.

Co oznacza Ograniczone uprawnienia superużytkownika dla określonych użytkowników ?

Użytkownik sudo lub sudoers faktycznie mają plik konfiguracyjny, który mówi im, jak ograniczone lub otwarte jest polecenie sudo dla konkretnego użytkownika. Plik /etc/sudoerszawiera wszystkie informacje, aby ograniczyć lub umożliwić dostęp do użytkownika sudo. Domyślnie ma dostęp do wszystkiego, ale możesz to skonfigurować lub ograniczyć, jak chcesz.

Aby uzyskać informacje o tym, jak używać typu sudoers man sudoersw terminalu. Na przykład normalny format to:

HOSTA UŻYTKOWNIKA = POLECENIA

Na przykład cyrex server1 = /bin/lsda użytkownikowi cyrex na serwerze hosta1 dostęp do uruchomienia polecenia ls.

Na przykład cyrex server1 (root) = /bin/lsda użytkownikowi cyrex na serwerze hosta1 dostęp do uruchomienia komendy ls jako root.

Na przykład cyrex ALL = /bin/lsda użytkownikowi cyrex dostęp do wszystkich hostów w celu uruchomienia polecenia ls.

Na przykład cyrex ALL = ALLzapewni użytkownikowi cyrex dostęp do wszystkich hostów w celu uruchomienia wszystkich poleceń.

Na przykład luis ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killallpozwoli mi uruchomić sudo dla poleceń killi killalljako root bez pytania o hasło.

wprowadź opis zdjęcia tutaj

Luis Alvarado
źródło
2
Wie o tym, co robi polecenie sudo. Pytanie dotyczy usługi systemowej dla sudo.
gertvdijk
1
@gertvdijk - musiałem najpierw wyjaśnić podstawy, ponieważ nie tylko on będzie patrzył na to pytanie. Ostatnia część zawiera jedyny powód, dla którego widzę plik sudo w folderze usługi.
Luis Alvarado,
Dzięki Luis Alvarado - The Wolver za tak obszerną informację i dzięki za zabawne zmodyfikowane xkcd odnoszące się do !!operatora Bang Bang, ale co robi usługa (NIE polecenie) sudo? Byłoby wspaniale, gdybyś mógł zaktualizować swoją odpowiedź, aby naprawdę odpowiedzieć na pytanie.
s3v3n 12.12.12
1
Trochę przesady tłumacząc to wszystko na koniec, ale odpowiada na moje pytanie;)
s3v3n 12.12.12
1
@ LuisAlvarado-TheWolverine Haha, twoje prawo. Dobrze, że mi odpowiedziałeś, tak, zrobiłem .. Dzięki
Lucio,