Korzystam z systemu stacjonarnego Ubuntu 12.04. Do tej pory zainstalowałem tylko niektóre programy (mam prawa sudo).
Kiedy sprawdzam listę użytkowników w systemie, widzę długą listę, na przykład ponad 20 użytkowników - kiedy ci użytkownicy zostali stworzeni (np. Demon, sys, synchronizacja, gry, puls itp.)? W jaki sposób są one związane z instalowaniem nowych programów?
Jeśli uruchomię program w moim systemie, powinien on działać z moim identyfikatorem UID. Ale podczas psowania widzę wiele innych programów działających z innym UID (takich jak root, daemon, avahi, syslog, colord itp.) - jak te programy zostały uruchomione z różnymi UID?
Odpowiedzi:
Konta użytkowników są używane nie tylko dla rzeczywistych, ludzkich użytkowników, ale także do uruchamiania usług systemowych, a niekiedy także jako właścicieli plików systemowych. Dzieje się tak, ponieważ rozdzielenie zasobów ludzkich użytkowników (procesów, plików itp.) I rozdzielenie zasobów usług systemowych wymaga tych samych mechanizmów pod maską.
Programy, które uruchamiasz zwykle działają z twoim identyfikatorem użytkownika. To tylko demony systemowe działające na ich własnym koncie. Plik konfiguracyjny wskazujący, kiedy uruchomić demona, wskazuje również, który użytkownik powinien go uruchomić, lub demon przełącza się na nieuprzywilejowane konto po uruchomieniu. Niektóre demony wymagają pełnych uprawnień administracyjnych, więc działają na koncie root . Wiele demonów potrzebuje dostępu tylko do określonego urządzenia sprzętowego lub do określonych plików, więc działają one na dedykowanym koncie użytkownika. Odbywa się to dla bezpieczeństwa: w ten sposób, nawet jeśli w jednej z tych usług występuje błąd lub błędna konfiguracja, nie może to prowadzić do pełnego ataku systemu, ponieważ atakujący będzie ograniczony do tego, co ta usługa może zrobić i nie będzie możliwość nadpisywania plików, szpiegowania procesów itp.
W systemie Ubuntu podczas instalacji systemu tworzone są identyfikatory użytkowników z zakresu 0–99. 0 oznacza root; wiele z tych w zakresie 1–99 istnieje tylko ze względów historycznych i jest przechowywanych tylko dla wstecznej kompatybilności z niektórymi lokalnymi instalacjami, które ich używają (kilka dodatkowych wpisów nie szkodzi). Identyfikatory użytkowników w zakresie 100–999 są tworzone i usuwane dynamicznie, gdy usługi wymagające dedykowanego identyfikatora użytkownika są instalowane lub usuwane. Zakres od 1000 jest przeznaczony dla użytkowników lub innych kont utworzonych przez administratora systemu. To samo dotyczy grup.
źródło
Zakładam, że znajdujesz tę listę użytkowników, sprawdzając
/etc/passwd
? Jest to całkowicie normalne - „użytkownicy” służą do przenoszenia zestawu uprawnień, przydatnych do blokowania nie tylko „rzeczywistych użytkowników”, ale także programów w określonych obszarach systemu i śledzenia zmian, które zmienili (ta sama koncepcja z grupami).Wstawiłem jeden z moich
/etc/passwd
plików Raspberry Pi poniżej w celach informacyjnych; zauważysz użytkownikantop
na dole tego pliku, utworzonego przez programntop
(monitorowanie sieci). Podobniesshd
,gnats
zgłaszanie błędów itp.źródło
dpkg --get-selections | grep -v deinstall
i porównać z listą plików / etc / passwd użytkowników, jeśli chcesz. Jeśli chodzi o twoje pytanie: „... jak te programy działają z różnym UID”, możesz spróbować sam. Napisz losowy skrypt bash,test_file
który zawiera coś niewinnego (echo "Test"
). Następniesudo chmod 755 test_file
(więc jest czytelny i wykonywalny dla każdego i czytelny, zapisywalny i wykonywalny przez właściciela), a następniesudo chown nobody
przypisuje go użytkownikowinobody
. Następnie uruchom. „Program”test_file
właśnie działał z UIDnobody
.nobody
UID, ale działało z Twoim UID; w tym celu należy ustawić plik SUID, ale bit SUID jest usuwany, jeśli plik jest uruchamiany za pomocą interpretera.dpkg
kawałek jest nadal przydatny (mam nadzieję), proszę zignoruj część dotyczącą uruchamiania go jako siebie! AlboW przypadkach, o których wspomniałeś, zostały one utworzone podczas instalacji systemu. Te konta użytkowników są konwencjonalne, niektóre sięgają dziesięcioleci. Są również znormalizowane. Linux Standard Base dzieli je na:
root
,bin
, idaemon
; iadm
,lp
,sync
,shutdown
,halt
,mail
,news
,uucp
,operator
,man
, inobody
Inne konta użytkownika, które są wymienione tutaj -
pulse
,avahi
,colord
orazDebian-exim
(aby wybrać jeden z pliku haseł py4on'S) - doprowadzi nas do następnego pytania.Niestandardowe konta użytkowników są tworzone i niszczone przez „skrypty opiekuna” dla różnych pakietów, ponieważ pakiety te są instalowane i usuwane. Konto użytkownika zostanie utworzone za pomocą tak zwanego
postinst
skryptu opiekuna pakietu , który uruchamia się,getent
aby sprawdzić, czy konto użytkownika już istnieje, auseradd
jeśli nie. Teoretycznie zostałby usunięty przez uruchomiony tak zwanypostrm
skrypt opiekuna pakietuuserdel
.W praktyce konta użytkowników dla pakietów nie są usuwane. Wiki Fedory (qv) wyjaśnia, że byłoby to trudne. Zobacz błąd Debiana # 646175, aby zobaczyć przykład takiego uzasadnienia w działaniu, w którym postanowiono po prostu nie usuwać
rabbitmq
konta użytkownika po wyczyszczeniu pakietu, aby rozwiązać problem z demonem, który nadal działa pod egidą tego konta.W systemach Unix i Linux proces działający pod egidą administratora może zmienić konto użytkownika na coś innego i kontynuować działanie tego samego programu, ale odwrotność nie jest dozwolona. (Należy użyć mechanizmu set-UID.)
System zarządzania dæmon działa jako administrator. Jego dane konfiguracyjne określają, że poszczególne demony działają pod egidą poszczególnych kont użytkowników:
rc
skrypt/etc/init.d
używa narzędzia pomocniczego, takiego jakstart-stop-daemon
i jego--chuid
opcji.run
rozmowy skryptsetuidgid
,s6-setuidgid
,chpst
, lubrunuid
z nazwą konta użytkownika. Istnieją tego przykłady w /unix//a/179798/5132, które ustawiająnagios
konto użytkownika.setuid
w pliku zadania znajduje się zwrotka określająca konto użytkownika. Nie jest to szczególnie drobnoziarniste i czasami chce się tego, co opisano na /superuser//a/723333/38062 .User=
ustawienie w pliku jednostki serwisowej, które określa konto użytkownika.Gdy system zarządzania demonem odradza proces, który jest demonem, mechanizmy te usuwają uprawnienia administratora, aby proces demon kontynuował działanie pod egidą nieuprzywilejowanego konta użytkownika.
Istnieje dość długie wytłumaczenie, dlaczego dobre zarządzanie demonem odbywa się w ten sposób. Ale nie pytałeś dlaczego; tylko kiedy, jak i skąd. ☺ Bardzo krótka zasada, dlatego:
Systemy operacyjne Unix i Linux izolują procesy działające pod egidą różnych kont użytkowników. Historycznie, jeśli ktoś był w stanie przejąć demona, który działał jako superużytkownik, mógł zrobić wszystko, co mu się podobało. Z drugiej strony demon działający pod egidą nieuprzywilejowanego konta może uzyskiwać dostęp tylko do plików, katalogów, urządzeń i procesów, do których może mieć to konto nieuprzywilejowane. System wzajemnie niezaufanych programów dæmon działających pod egidą różnych kont użytkowników i niezdolnych do uzyskania dostępu / kontroli (wewnętrznych, zaufanych) plików / katalogów / procesów / urządzeń jest znacznie trudniejszy do złamania.
Dalsza lektura
źródło
W systemie Linux, gdy instalujemy usługę, tworzy ona nazwę swojej usługi lub podobną do niej, aby nie mogła uzyskać dostępu do innych plików.
źródło