Praktyką nie jest tworzenie jednego użytkownika i grupy na aplikację, ale na usługę. Oznacza to, że programy wykonywane przez lokalnego użytkownika nie muszą być instalowane jako użytkownik inny niż root. Są to demony , programy działające w tle i wykonujące żądania przychodzące przez sieć lub inne środki komunikacji, które powinny działać jako dedykowany użytkownik.
Demon działa jako oddany użytkownik, więc jeśli źle zachowuje się (z powodu błędu, prawdopodobnie wywołanego przez atakującego), szkody, które może wyrządzić, są ograniczone: dotyczy to tylko plików danych demona (chyba że atakującemu udało się znaleźć lokalną główną dziurę , co może się zdarzyć). Na przykład demon bazy danych mysqld
działa jako dedykowany użytkownik i grupa, mysql:mysql
a pliki danych bazy danych ( /var/lib/mysql/*
) należą mysql:mysql
.
Należy pamiętać, że plik wykonywalny demona i inne dane statyczne i pliki konfiguracyjne, które są używane, ale nie powinny być modyfikowane przez demona, nie mogą należeć do dedykowanego użytkownika; powinny być własnością root:root
, podobnie jak większość programów i plików konfiguracyjnych. W mysqld
procesie nie ma nadpisywania biznesowego /usr/sbin/mysqld
lub /etc/mysql/my.cnf
dlatego te pliki nie mogą należeć do mysql
użytkownika ani być zapisywalne przez mysql
użytkownika lub mysql
grupę. Jeśli niektóre pliki muszą być odczytywalne tylko przez demona i administratora, powinny być własnością użytkownika root i dedykowanej grupy oraz mieć tryb 0640 ( rw-r-----
).
Specjalną kategorią plików wykonywalnych, których właścicielem nie może być, root:root
są programy wywoływane przez użytkownika, ale wymagające uruchamiania z dodatkowymi uprawnieniami. Te pliki wykonywalne muszą być setuid root, jeśli muszą działać (przynajmniej częściowo) jako root; wówczas plik wykonywalny musi mieć tryb 4755 ( rwsr-xr-x
). Jeśli program potrzebuje dodatkowych uprawnień, ale nie ma uprawnień roota, należy ustawić go na setgid, aby dodatkowe uprawnienia były przekazywane przez grupę, a nie przez użytkownika. Plik wykonywalny ma wtedy tryb 2755 ( rwxr-sr-x
). Powody są dwojakie:
- Plik wykonywalny nie powinien mieć możliwości samodzielnej modyfikacji, więc jeśli użytkownik zdoła wykorzystać lukę, może modyfikować pliki danych używane przez program, ale nie wstrzykiwać konia trojańskiego do pliku wykonywalnego w celu zaatakowania innych użytkowników uruchamiających program .
- Plik danych pliku wykonywalnego należy do grupy. Program setuid musiałby przełączać się między prawdziwym użytkownikiem (użytkownikiem, który wywołał program), aby wchodzić w interakcje z użytkownikiem i efektywnym użytkownikiem (użytkownikiem, z którego działa program), aby uzyskać dostęp do jego prywatnych plików danych (powód tego mieć dodatkowe uprawnienia). Program setgid może ponadto segregować dane dla poszczególnych użytkowników, które są dostępne tylko dla grupy (np. Poprzez przechowywanie plików należących do użytkownika w katalogu, który jest dostępny tylko dla roota i grupy programu).