setuid

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání


setuid a setgid (zkratka pro „set user ID upon execution“ a „set group ID upon execution“) jsou v informatice označení pro unixové příznaky přístupových 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ány ke spouštění programů v systému s dočasně zvýšenými právy, pro provedení určité úlohy.

Setuid a setgid jsou potřebné pro úlohy, které vyžadují vyšší oprávnění než ta, která má běžný uživatel. Jako je například změna svého přihlašovacího hesla (viz passwd a soubor shadow. 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ů[editovat | editovat zdroj]

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. 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 shell scriptech.

Setgid u adresářů[editovat | editovat zdroj]

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). 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 '{}' \;

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[editovat | editovat zdroj]

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

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]