Jakie są niebezpieczeństwa związane z tworzeniem normalnego użytkownika o UID <500?

14

Jakie są niebezpieczeństwa związane z tworzeniem normalnego użytkownika o UID <500? Zakładając, że UID nie są duplikatami istniejących UID, co może pójść nie tak?

To nie jest coś, co chcę zrobić, ale coś, co widziałem i chcę wiedzieć, dlaczego nie należy tego robić. W tym przykładzie jest on na RHEL5.

Jeff
źródło
2
Wydaje się, że systemy pochodzące z Debiana zaczynają normalne UID od 1000, a nie od 500.
Keith Thompson

Odpowiedzi:

16

Nie sądzę, aby istniało nieodłączne ryzyko, jest to po prostu zrobione, aby stworzyć separację między kontami systemowymi a kontami użytkowników. Z mojego doświadczenia wynika, że ​​praktyką używania liczb poniżej 500 jest Redhatizm, a tak naprawdę nic więcej.

W systemie Solaris widziałem, że użytkownikom przypisuje się również numery zaczynające się od 100, ale dopiero po latach odkryłem, że połączenie systemów dwóch mniejszych działów powoduje pewien rodzaj koszmaru, ponieważ w dwóch działach było wielu użytkowników o tym samym UID / GID przypisany.

To jest naprawdę główne ryzyko / ból głowy podczas przypisywania identyfikatorów UID. Ponieważ UID jest tym, co ostatecznie zapisano do i-węzła dla podanych przez użytkownika plików / katalogów, nie chcesz, żebyś szedł dalej, masowo findszukając plików, które są własnością UID 1234 i zmieniając je na 5678 .

Dlatego zastanawiając się nad wyborem identyfikatorów UID, administratorzy mogą uniknąć kłopotów na drodze.

Zastosowanie 500 i więcej jest po prostu próbą Redhata (i innych Uniksów), aby zapewnić sobie wystarczającą ilość bufora, aby wszelkie konta systemowe, które mogą wymagać utworzenia, nie zostały zmieszane z identyfikatorami UID przypisanymi do użytkowników.

/etc/login.defs

Nawiasem mówiąc, liczba 500 jest napędzany przez tego ustawienia w pliku konfiguracyjnym, /etc/login.defs.

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN           500
UID_MAX         60000

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN           500
GID_MAX         60000

Możesz zmienić to na dowolne, jeśli chcesz zastąpić domyślne zachowanie poleceniami useradd/ adduser.

Strona man dodana przez użytkownika

Jeśli spojrzysz na useraddstronę manuala, zauważysz tę część, która omawia domyślną wartość GID, ale ten komentarz dotyczy również UID:

fragment

-g, --gid GROUP
    The group name or number of the user´s initial login group. The group name 
    must exist. A group number must refer to an already existing group.

    If not specified, the behavior of useradd will depend on the USERGROUPS_ENAB 
    variable in /etc/login.defs. If this variable is set to yes 
    (or -U/--user-group is specified on the command line), a group will be 
    created for the user, with the same name as her loginname. If the variable 
    is set to no (or -N/--no-user-group is specified on the command line), 
    useradd will set the primary group of the new user to the value specified by 
    the GROUP variable in /etc/default/useradd, or 100 by default.

Konta systemowe

Inną rzeczą, na którą należy zwrócić uwagę na useraddstronie podręcznika, jest ten bit dotyczący generowania kont systemowych.

fragment

-r, --system
    Create a system account.

    System users will be created with no aging information in /etc/shadow, 
    and their numeric identifiers are choosen in the SYS_UID_MIN-SYS_UID_MAX 
    range, defined in /etc/login.defs, instead of UID_MIN-UID_MAX (and their 
    GID counterparts for the creation of groups).

    Note that useradd will not create a home directory for such an user, 
    regardless of the default setting in /etc/login.defs (CREATE_HOME). You 
    have to specify the -m options if you want a home directory for a system 
    account to be created.

Ta metoda ( useradd -r ...) jest często używana przez skrypty, które są wbudowane w różne menedżery pakietów, takie jak RPM, podczas instalowania pakietu. Skrypty w ten sposób umożliwiają systemowi automatyczne wybranie następnego dostępnego identyfikatora UID / GID w danym systemie bez ryzyka nadepnięcia na identyfikatory UID / GID przypisane już użytkownikom systemu.

slm
źródło
1
FWIW, myślę, że to jest ogólny GNU / Linux-ism, a nie tylko Red Hat-ism. Widziałem to na wszystkich używanych przeze mnie systemach i nigdy nie korzystałem z Red Hat.
strugee
@strugee - dzięki, że nie chciałem, aby stwierdzenie było zbyt szerokie i kazało mi wrócić, by mnie ugryzł.
slm
2

Z punktu widzenia jądra jest tylko jeden specjalny użytkownik: UID 0. Podział zakresów UID z powodów administracyjnych ułatwia twoje życie. Typowe zakresy to sprzedawca, system, lokalny, globalny.

Użytkownicy dostawcy są instalowani podczas pierwszej instalacji systemu i są statycznie zarządzani przez dostawcę. użytkownicy systemu są instalowani na maszynie w zależności od zainstalowanych pakietów. większość programów do dodawania / usuwania użytkowników ma limit zasięgu, który obsługuje je osobno. lokalni użytkownicy to zwykli użytkownicy przypisani do poszczególnych komputerów. globalnym użytkownikom przypisuje centralna baza danych, ale są to zwykli użytkownicy. stosowanie zakresów UID zapobiega konfliktom między tymi różnymi grupami. gdzie te wartości odcięcia mogą się różnić, ale zwykle można je konfigurować.

Hildred
źródło
1

Nie ma w tym żadnego niebezpieczeństwa. Jeśli utworzysz użytkownika z identyfikatorem UID 499, nie będzie on miał żadnych dodatkowych uprawnień. Powodem, dla którego nie zaleca się tego, jest po prostu fakt, że identyfikatory UID są zwykle zarezerwowane dla użytkowników systemu. Problemem, który można napotkać podczas tworzenia takiego identyfikatora UID, jest to, że niektóre usługi systemowe oczekują, że identyfikator UID będzie dostępny. To trochę jak tworzenie nowej usługi działającej na dobrze znanym porcie - niekoniecznie nie ma z tym problemu, ale nie jest to dobra praktyka i może powodować problemy w dalszej części drogi, gdy konfigurujesz sshd, ftpd itp.

To powiedziawszy, widziałem wiele systemów, w których użytkownicy zostali utworzeni z UID <500 bez problemu. Jednak wraz ze wzrostem bazy użytkowników i obecnością tysięcy użytkowników może być trudno rozróżnić konta użytkowników od kont systemowych. Zgodnie z zasadą braku UID <500 jest to bardzo łatwe. To dobry sposób na organizowanie kont.

Franz Kafka
źródło
1

Nie ma realnego niebezpieczeństwa. Jądro nie dba o wartości identyfikatora użytkownika, z wyjątkiem 0. Większość narzędzi administracyjnych również nie ma znaczenia - bardzo niewiele części systemu robi różnicę między użytkownikami systemu a użytkownikami.

Użytkownicy systemu mają zwykle dedykowane grupy, więc prawdopodobnie nie utworzy to kont należących do większej liczby grup, niż powinny.

Niektóre dystrybucje rezerwują zakres 1–499 (Red Hat i krewni) lub 1–999 (Debian i krewni) dla użytkowników systemu, w tym użytkowników przydzielonych podczas instalowania pakietu zawierającego usługę systemową, która wymaga dedykowanego użytkownika. Konwencja Debiana polega na tym, że zakres 1–99 jest przydzielany statycznie (więc utworzenie użytkownika w tym zakresie jest bardzo złym pomysłem, ponieważ może kolidować z użytkownikiem systemu), podczas gdy zakres 100–999 jest przydzielany dynamicznie (a więc tworzenie użytkownika ludzkiego w tym zakresie jest nieszkodliwy, ponieważ każdy nowy użytkownik systemu wybierze bezpłatny identyfikator użytkownika).

Możesz napotkać niewielkie niedogodności, takie jak menedżery wyświetlania, którzy nie oferują użytkownikom identyfikatorów UID poniżej progu na liście.

Głównym zagrożeniem dla odizolowanej maszyny jest to, że prawdopodobnie wprowadzisz w błąd innych administratorów systemu. W przypadku komputera w sieci, w którym identyfikatory użytkowników są udostępniane, możesz napotkać konflikty z innymi komputerami, na których użytkownicy ci mają taki sam identyfikator użytkownika jak użytkownik systemu. W sieciach o wspólnych identyfikatorach użytkowników najlepiej trzymać się zakresu 1000–65533, a nawet 10000–65533 dla użytkowników.

Gilles „SO- przestań być zły”
źródło