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/sh
Lub /bin/bash
lub /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 foo
Wymaga foo
posiadania 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/passwd
w 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 /home
i 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 . passwd
Wpis /etc/nsswitch.conf
Określa, gdzie można znaleźć informacje o użytkowniku. Zwykle użytkownicy systemu są lokalnymi /etc/passwd
i 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 adduser
vs adduser --system
lub useradd
vs useradd -r
w systemie Linux.