Setuid

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Příznaky setuid a setgid (zkratka pro „set user ID upon execution“ a „set group ID upon execution“) jsou v informatice označení pro unixová přístupová oprávnění, která umožňují spouštět spustitelné soubory s právy vlastníka nebo skupiny vlastnící spustitelný soubor. Jsou často používána ke spouštění programů v systému s dočasně zvýšenými právy, pro provedení určité úlohy.

Příznaky setuid a setgid jsou potřebné pro úlohy, které vyžadují vyšší oprávnění než ta, která má běžný uživatel. Například při změně vlastního přihlašovacího hesla (viz passwd a soubor shadow). +more Některé z úloh, které vyžadují zvýšení práv, nemusí být okamžitě zřejmé, jako například příkaz ping, který musí odeslat a přijmout kontrolní pakety přímo na síťovém rozhraní (raw ICMP).

Setuid u spustitelných souborů

Je-li na spustitelném souboru nastaven „setuid“ atribut, běží po jeho spuštění tento proces s právy toho, kdo je vlastníkem zmíněného spustitelného souboru (obvykle je to root, ale může to být jakýkoliv uživatel systému). Získáním oprávnění uživatele root může aplikace vykonávat v systému úlohy, které běžný uživatel vykonávat nemůže. +more Uživateli, který program spustil, znemožní systém (resp. jádro systému) vytvoření nového procesu jinou cestou, například použitím systémového volání ptrace, zneužití proměnné prostředí LD_LIBRARY_PATH nebo zasláním signálu do něj (signály z terminálu budou navzdory tomu stále akceptovány). Kvůli zvýšené pravděpodobnosti zneužití bezpečnostních chyb mnoho systémů ignoruje setuid atribut na spustitelných shellových scriptech.

Příklad využití

Hesla jsou v unixovém systému uložena v textovém souboru passwd nebo nověji v souboru shadow. Uživatelé nemají možnost tyto soubory měnit, protože by mohli změnit hesla ostatním uživatelů (včetně správce root). +more To však znamená, že by uživatel nemohl změnit své heslo, protože program za normálních okolností běží s oprávněními uživatele který ho spustil a do těchto souborů tak nemá přístup. Proto je na programu passwd nastaven příznak setuid a zároveň tento program vlastní uživatel root (správce systému). Spustí-li uživatel program passwd, získá běžící program díky setuid bitu oprávnění vlastníka tohoto souboru (tedy správce systému). Program tak může změnit jakoukoliv část souboru s hesly. Aby nemohl uživatel pomocí programu passwd změnit cizí hesla, musí být program passwd pečlivě naprogramován tak, aby umožnil změnit jen heslo uživatel. Pečlivost zde je na místě, protože v případě chyby v setuid root programu passwd by ho jakýkoliv běžný uživatel systému mohl zneužít ke změně čehokoliv v celém systému.

Bezpečnostní rizika

Příznak setuid na programech vlastněných správcem systému (uživatel root) je velmi rizikový. Po úspěšných útocích na některé setuid nástroje byly kolem roku 2000 provedeny v Linuxu audity všech těchto nástrojů a byla snaha jejich počet v systému co nejvíce snížit. +more Kvůli rizikům byly zavedeny do Linuxu doplňující bezpečnostní subsystémy, jako jsou capabilities (využívá je nástroj ping), SELinux nebo úprava grafického subsystému (tzv. root-less X Server).

Setgid u adresářů

Příznaky setuid a setgid nastavené na adresáři mají úplně rozdílný význam. Nastavení setgid oprávnění na adresáři (chmod g+s) způsobí, že nové soubory a podadresáře v něm vytvořené zdědí jeho groupID místo primárního groupID uživatele, který adresář nebo soubor vytvořil (ownerID není nikdy ovlivněné, jen groupID). +more Nastavení setgid oprávnění na adresáři ovlivňuje jen groupID nových souborů a podadresářů vytvořených po tom, co byl nastaven setgid bit, avšak neaplikuje se na existující entity. Nastavení setgid bitu na všechny existující podadresáře musí být provedeno ručně například následujícím příkazem:.

[root@foo]# find /path/to/directory -type d -exec chmod g+s '{}' \;

Příznak setuid oprávnění nastavené na adresáři je ignorováno v systémech UNIX a Linux. V systému FreeBSD může být nastaveno, aby byl interpretován analogicky k setgid, tedy aby byly všechny nové soubory a podadresáře vlastněné vlastníkem nadřazeného adresáře.

Historie

Používání setuid bitu navrhl Dennis Ritchie. Jeho zaměstnavatel AT&T požádal o patent roku 1972. +more * Patent byl přidělen roku 1979 pod patentovým číslem 4135240. * Patent se zanedlouho stal veřejným.

Související články

Bezpečnost v Unixu

Externí odkazy

Hao Chen, David Wagner, Drew Dean: [url=http://www. +morecs. berkeley. edu/~daw/papers/setuid-usenix02. pdf]Setuid Demystified[/url] (pdf) * Dan Tsafrir, Dilma Da Silva, David Wagner: [url=http://www. eecs. berkeley. edu/~daw/papers/setuid-login08b. pdfThe]Murky Issue of Changing Process Identity: Revising Setuid Demystified[/url] (pdf) * Wayne Pollock: [url=http://wpollock. com/AUnix1/FilePermissions. htm]Unix File and Directory Permissions and Modes[/url].

Kategorie:Unix

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top