Setuid
Z Wikipedii
Setuid oraz setgid – to skrótowce powstałe z ang. zdań: "Set User ID (identity)" (Ustaw Identyfikator Użytkownika) oraz "Set Group ID" (Ustaw Identyfikator Grupy). Termin setuid jest często skracany do suid, zaś termin setgid do sgid.
Setuid oraz setgid są atrybutami plików (a także katalogów, plików gniazd, i innych) w uniksowych systemach plików.
Spis treści |
[edytuj] Pliki
W przypadku plików zawierających programy wykonywalne, atrybuty setuid oraz setgid informują system operacyjny o konieczności nadania specjalnych uprawnień procesom powstałym z wykonania tych plików. Nowo powstały proces przejmuje uprawnienia właściciela pliku (często superużytkownika systemu), zaś dla atrybutu setgid – grupy będącej właścicielem pliku.
Powstały proces posiada zmodyfikowane identyfikatory użytkownika (grupy). Identyfikator użytkownika UID (User ID) odpowiada identyfikatorowi użytkownika wykonującego plik, zaś identyfikatory EUID (Effective User ID) oraz SUID (Saved User ID) otrzymują wartość równą UID właściciela wykonywanego pliku.
[edytuj] Ograniczenia
W związku z niebezpieczeństem eskalacji uprawnień w konsekwencji wykorzystania atrybutu setuid w niezamierzony przez programistę lub administratora sposób, w przypadku ustawionych atrybutów setuid lub setgid na proces wykonania pliku nakładane są pewne ograniczenia. Niektóre z nich to:
- Zmienne środowiskowe sterujące konsolidatorem dynamicznym (zmienne środowiskowe LD_) są ignorowane lub filtrowane z wpisów niezgodnych z polityką bezpieczeństwa systemu
- Niemożliwe jest śledzenie wykonania programu (mechanizm ptrace) przez użytkownika wykonującego plik
- Na użytkownika nakładane są ograniczenia co do możliwości wysyłania sygnałów do nowo powstałego procesu (akceptowane są sygnały generowane przez terminal)
- Zakazane jest tworzenie plików z obrazem procesu (coredumps)
- W większości systemów operacyjnych atrybuty setuid/setgid są ignorowane w przypadku skryptów
Obecność atrybutów setuid oraz setgid jest powodem, dla którego wywołanie systemowe chroot jest zazwyczaj niedostępne dla użytkowników nie będących superużytkownikami systemu. W trakcie większości operacji na plikach z ustawionymi atrybutami setuid/setgid – takimi jak: modyfikacja, przenoszenie, zmiana właściciela pliku – atrybuty te są usuwane.
[edytuj] Katalogi
W przypadku katalogów atrybuty setuid oraz setgid mają odmienne znaczenie; w katalogach opatrzonych atrybutem setgid wszystkie nowotworzone wpisy (pliki, katalogi itp.) stają się własnością grupy, będącej właścicielem katalogu. Atrybut ten jest zazwyczaj dziedziczony przez nowotworzone podkatalogi.
Atrybut setuid jest w większości systemów operacyjnych ignorowany.