Setuid: Różnice pomiędzy wersjami
[wersja nieprzejrzana] | [wersja przejrzana] |
Usunięta treść Dodana treść
+skrypty perla |
przepisanie; dodatkowo poprzednia edycja wprowadzała błędną informację. |
||
Linia 1:
'''Setuid''' oraz '''setgid''' – atrybuty [[plik]]ów oraz [[katalog (system plików)|katalogów]] w systemach [[Unix|uniksopodobnych]], które pozwalają na uruchomienie pliku wykonywalnego z prawami właściciela/grupy tego pliku oraz zmieniają działanie niektórych operacji na katalogach. Ich nazwy to [[skrótowiec|skrótowce]] powstałe z [[język angielski|
== Pliki ==
Atrybuty <code>setuid</code> oraz <code>setgid</code> mają praktyczne znaczenie jedynie w odniesieniu do plików wykonywalnych. Typowy proces w systemach uniksowych uruchamia się z prawami wywołującego go użytkownika, jednak uniemożliwia to mu dostęp do pewnych operacji, które powinny z punktu widzenia używalności systemu być jednak dla niego dostępne. Przykładem takiej operacji jest zmiana hasła realizowana przez program <code>passwd</code>, który w tym celu potrzebuje zmodyfikować chroniony plik <code>/etc/shadow</code>, do którego dostęp ma tylko [[superużytkownik]]. Ustawienie jednego z tych atrybutów powoduje, że proces uruchamiany jest odpowiednio na prawach właściciela bądź grupowego właściciela pliku, umożliwiając obejście tego ograniczenia. Ma to daleko idące konsekwencje związane z bezpieczeństwem, gdyż w ten sposób dajemy użytkownikom możliwość wykonywania zadań z prawami kogoś innego, a w szczególności - ''roota''. W typowym systemie uniksowym atrybuty <code>setuid</code> oraz <code>setgid</code> nadane są jedynie krytycznym aplikacjom, które zostały szczególnie uważnie zweryfikowane pod kątem odporności na różne ataki, np. poprzez przepełnienie bufora, aby mieć pewność, że wykonujący je użytkownik nie będzie w stanie wykorzystać ich do nieupoważnionego zdobycia jeszcze szerszych uprawnień. Dodatkowo, atrybuty te są ignorowane w odniesieniu do wykonywalnych skryptów powłoki.
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.▼
Użytkownik, który uruchomił proces z nadanymi atrybutami <code>setuid</code> lub <code>setgid</code>, pozbawiony jest dostępu do prawie wszystkich operacji mogących w jakikolwiek sposób wpłynąć na jego pracę lub odczytać jego wewnętrzny stan. Nie może on stosować mechanizmu <code>ptrace</code>, manipulować zmienną środowiskową <code>D_LIBRARY_PATH</code> definiującą ścieżki do [[Biblioteka współdzielona|bibliotek współdzielonych]], ani wysyłać sygnałów do takiego procesu (wyjątkiem są tu sygnały emitowane przez terminal). Nie można także tworzyć obrazów pamięci takiego procesu (''core dumps'').
▲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.
== Katalogi ==
W przypadku [[katalog (system plików)|katalogów]] atrybuty <code>setuid</code> oraz <code>setgid</code> mają odmienne znaczenie; w katalogach opatrzonych atrybutem <code>setgid</code> wszystkie
Atrybut <code>setuid</code> na katalogu jest w większości systemów operacyjnych ignorowany.
== Zobacz też ==
* [[chmod]]
* [[Eskalacja uprawnień]]
[[Kategoria:Unix]]
|