Jaka jest różnica między kontem użytkownika a kontem usługi?

16

Chciałbym poznać różnicę między kontem użytkownika a kontem usługi.

Wiem, że np. JenkinsZainstalowany na Ubuntu nie jest użytkownikiem, ale kontem serwisowym .

  1. Co to jest korzystanie z konta serwisowego?
  2. Kiedy ich potrzebujemy?
  3. Jak mogę założyć konto usługi?
Rudziankoŭ
źródło

Odpowiedzi:

18

Konta użytkowników są używane przez prawdziwych użytkowników, konta usług są używane przez usługi systemowe, takie jak serwery sieciowe, agenci transportu poczty, bazy danych itp. Zgodnie z konwencją i tylko zgodnie z konwencją konta usług mają identyfikatory użytkowników z niskiego zakresu, np. <1000 lub więcej . Z wyjątkiem UID 0 konta usług nie mają żadnych specjalnych uprawnień. Konta serwisowe mogą - i zazwyczaj mają - własne zasoby, nawet specjalne pliki urządzeń, ale nie mają uprawnień przypominających administratora.

Konta usługowe można tworzyć jak zwykłe konta użytkowników (np. Za pomocą useradd). Jednak konta serwisowe są zazwyczaj tworzone i konfigurowane przez menedżera pakietów po instalacji oprogramowania serwisowego. Tak więc, nawet jako administrator, rzadko powinieneś bezpośrednio zajmować się tworzeniem kont serwisowych.

Z ważnego powodu: W przeciwieństwie do kont użytkowników, konta usług często nie mają „właściwej” powłoki logowania, tj. Mają /usr/sbin/nologinpowłokę logowania (lub dawniej /bin/false). Co więcej, konta usług są zazwyczaj zablokowane, tzn. Logowanie nie jest możliwe (w przypadku tradycyjnego, /etc/passwda /etc/shadowmożna to osiągnąć poprzez ustawienie wartości skrótu hasła na dowolne wartości, takie jak *lub x). Ma to na celu zahartowanie kont usług przed nadużyciami ( dogłębna obrona ).

Posiadanie indywidualnych kont usług dla każdej usługi służy dwóm głównym celom: Jest to środek bezpieczeństwa mający na celu zmniejszenie wpływu w przypadku incydentu z jedną usługą ( podział na przedziały ) i upraszcza administrację, ponieważ łatwiej jest wyśledzić, jakie zasoby należą do której usługi . Zobacz to czy to odpowiedzi na pytania związane więcej szczegółów.

przeciwdziałanie
źródło
4

Początkowo użytkownicy mieli korespondować z człowiekiem korzystającym z systemu, stąd nazwa. Każdy proces działa jako określony użytkownik, a każdy plik jest własnością określonego użytkownika. Specjalny użytkownik, zwany root, jest używany do rzeczy, które nie należą do żadnego konkretnego użytkownika, tj. Do samego systemu operacyjnego. Ponieważ root odpowiada samemu systemowi operacyjnemu, ma on wszystkie uprawnienia.

Wkrótce ludzie stwierdzili, że wygodnie było utworzyć wielu użytkowników systemu, bez rozległych uprawnień. Umożliwia to izolowanie różnych usług uruchomionych na komputerze, aby nie stąpały po sobie nawzajem. Konto usługi (lub „konto systemowe”, te dwa terminy są synonimami) to konto, które odpowiada usłudze działającej w systemie, a nie osobie korzystającej z systemu. Na ogół masz konto usługi dla każdego zadania uruchomionego w systemie, które ma swój własny zestaw uprawnień (np. Własne pliki, własne porty sieciowe itp.).

Nie ma formalnej definicji konta człowiek / system / usługa. Jądro to nie obchodzi (poza przyznaniem wielu uprawnień użytkownikowi z UID 0). Większość poleceń administracyjnych też nie obchodzi. Niektóre typowe różnice to:

  • Ludzki użytkownik ma prawdziwe imię, takie jak „John Doe”, podczas gdy użytkownik systemu ma opisowe imię, takie jak „demon Nasal” lub nie ma go wcale.
  • Ludzki użytkownik ma prawdziwą powłokę logowania (np. /bin/shLub /bin/bashlub /bin/csh. Niektórzy użytkownicy systemu mają powłokę (prawie zawsze /bin/sh), inni nie, w zależności od tego, w jaki sposób mają być używane (np. su fooWymaga fooposiadania powłoki).
  • Ludzki użytkownik często ma hasło - ale nie zawsze tak jest, na przykład użytkownik tylko zdalny może mieć tylko klucz SSH. Pamiętaj, że w nowoczesnych jednorożcach hasło nie znajduje się /etc/passwdw innym pliku, np /etc/shadow.
  • Katalog domowy użytkownika użytkownika jest zwykle w lokalizacji /home(lub w określonej lokalizacji), podczas gdy katalog domowy użytkownika systemu zwykle nie jest w katalogu /homei może nie istnieć (ale są wyjątki).
  • Większość witryn określa zakres identyfikatorów użytkowników dla użytkowników systemu i rozłączny zakres dla użytkowników. Zarezerwowanie 100–65533 lub 500–65533 lub 1000–65533 jest typowe, a większość dystrybucji jest skonfigurowana tak, aby rozpocząć przydzielanie rzeczywistych identyfikatorów użytkowników od 500 lub 1000.

W witrynach, w których konta są współużytkowane na wielu komputerach, zwykle znajduje się centralny serwer zawierający listy użytkowników, dostępny za pośrednictwem NIS lub LDAP . passwdWpis /etc/nsswitch.confOkreśla, gdzie można znaleźć informacje o użytkowniku. Zwykle użytkownicy systemu są lokalnymi /etc/passwdi rzeczywistymi użytkownikami z bazy danych w całej sieci, ale czasami w bazie danych w sieci są użytkownicy systemu (w celu wymuszenia spójnych identyfikatorów UID, co ułatwia replikację serwera i danych), a czasami są użytkownicy w pliku lokalnym (aby mogli się zalogować, nawet gdy sieć jest zamknięta).

Konto dostępne dla człowieka przebrane za użytkownika systemu zwykle nie ma prawdziwej nazwy, ale ma powłokę logowania oraz zestaw haseł lub klucz SSH, mając jednocześnie identyfikator użytkownika w zakresie systemu. W rzeczywistości lepszym rozwiązaniem byłoby użycie rzeczywistego konta systemowego, którego usunięcie spowodowałoby, że niektóre usługi przestałyby działać. Ale nie możesz mieć żadnych twardych i szybkich reguł wykrywających potencjalne ataki: z definicji atakujący nie przestrzegają reguł.

Kontami usług i kontami ludzi zarządza się za pomocą tych samych poleceń i zapisuje się w tych samych plikach. Polecenia tworzenia konta mogą zawierać opcje ustawiania rozsądnych wartości domyślnych dla ludzi lub użytkowników usług, np. Wybranie identyfikatora użytkownika z odpowiedniego zakresu oraz monitowanie o hasło dla człowieka i wyłączenie uwierzytelniania hasła dla usługi. Na przykład adduservs adduser --systemlub useraddvs useradd -rw systemie Linux.

Gilles „SO- przestań być zły”
źródło
3
    1. konto usługi, zwane także kontem technicznym, jest kontem zaprojektowanym do użytku przez usługę / aplikację, a nie przez zwykłego użytkownika.
    1. Twórcy aplikacji i usług chcą, aby te konta ograniczały związane z nimi prawa i uprawnienia procesów, zamiast uruchamiać swoje procesy jako root. Usługi jako rozpoczęte przez init, systemdlub podobnych, które działają jako root, szybko obniżyć do konta usługi, aby ograniczyć ryzyko. W zależności od używanego systemu operacyjnego, konta aplikacji mogą otrzymać więcej uprawnień niż zwykłe konta, np. Prawo do powiązania z uprzywilejowanym portem TCP, lub odwrotnie, ich uprawnienia są zmniejszone w porównaniu do zwykłego użytkownika, na przykład odmawiając procesom usługi zadzwoń fork/ exec. W takim przypadku nie ma potrzeby obniżania poziomu usług do konta usługi, można je z nim uruchomić.
    1. Nie powinieneś po prostu tworzyć konta bez użytecznego hasła i z niedziałającą powłoką (np. /bin/false) I nie będzie to możliwe dla zwykłego użytkownika, tj. Nie będzie sposobu, aby zalogować się lokalnie lub zdalnie (np. przez ssh) przy użyciu nazwy konta. Podobnie jak większość ograniczeń, korzystanie z konta root lub sudopozwala go przezwyciężyć.
jlliagre
źródło
1

Konto usługi może na przykład nie mieć możliwości korzystania z powłoki. Służy do wykonywania usług (demona) z ograniczonym zakresem i uprawnieniami. Uważam, że możesz utworzyć go jako zwykły użytkownik, zachowując ostrożność przy korzystaniu z praw i członkostwa w grupie. Jednak w większości przypadków nie, ponieważ programy automatycznie tworzą je podczas instalacji. Zajrzyj/etc/passwd root:x:0:0:root:/root:/bin/bash

0 jest identyfikatorem UID, charakteryzuje hierarchię konta w przestrzeni użytkownika, root jest ponad wszystkimi, wtedy członkostwo w grupie :rootjest katalogiem domowym, w /rootkońcu powłoka używana przez konto /bin/bashdo „logowania” do systemu.

Możesz użyć /usr/sbin/nologinkonta, dla którego nie chcesz mieć uprawnień do logowania.

Kuruwan
źródło