V mnoha systémech mají uživatelé root user a superuser úplnou kontrolu nad systémem. Subsystém pro unixové aplikace (SUA) nerozpoznává uživatele root. Když byl standard POSIX (Portable Operating System Interface) vyvinut, koncept uživatele root byl považován za administrativní záležitost. Namísto uživatele root definuje standard POSIX příslušná systémová oprávnění pro některé operace.

V tomto tématu

setuid a setgid

Mechanismy setuid a setgid umožňují, aby spuštěný program přijal některé aspekty zaregistrovaného objektu zabezpečení odlišné od uživatele spouštějícího program. Umožňují, aby program střídal mezi aspekty vyvolanými uživatelem a aspekty jiného zaregistrovaného objektu zabezpečení.

Příslušná systémová oprávnění jsou odlišná. Mechanismy setuid a setgid umožňují, aby aplikace řídila odpověď na otázku: „Kdo jste?“. Příslušná systémová oprávnění pak odpovídají na otázku: „Co můžete dělat?“

Subsystém pro unixové aplikace a identity

V typických prostředích systému UNIX jsou všechna systémová oprávnění udělena jednomu uživateli. Tento uživatel bývá obvykle nazýván root a má identifikátor uživatele uid == 0. V Subsystému pro unixové aplikace jsou všechna podporovaná systémová oprávnění pro daný systém udělena uživatelům, kteří jsou v tomto systému členy skupiny Administrators nebo skupiny Domain Administrators. Není třeba se přihlašovat jako správce. Každý uživatel, který je členem skupiny Administrators nebo skupiny Domain Administrators, má systémová oprávnění root. V Subsystému pro unixové aplikace nejsou k dispozici všechna systémová oprávnění definovaná ve standardu POSIX nebo v systému UNIX. To znamená, že určitá systémová oprávnění nejsou udělena žádnému uživateli.

Příslušná systémová oprávnění jsou obvykle požadována pro provádění řady akcí. Mezi tyto akce patří přístup k systému souborů, odesílání signálů jiným procesům (řízení procesů) a změna platného identifikátoru uživatele (UID) a ID skupiny (GID) procesu za účelem změny možnosti, aby tento proces prováděl určité akce.

Podle standardu POSIX má soubor oprávnění zahrnující bity k nastavení identifikátoru uživatele (setuid) a nastavení ID skupiny (setgid). Jsou-li bity jednoho nebo obou typů pro soubor nastaveny a je-li soubor procesem spuštěn, získá proces identifikátor uživatele a ID skupiny souboru. Je-li tento mechanismus používán uvážlivě, umožňuje uživateli bez systémových oprávnění spouštět programy, které lze spustit pouze s vyšší úrovní oprávnění vlastníka souboru nebo skupiny. Není-li ovšem tento mechanismus používán správně, může představovat rizika zabezpečení tím, že umožní uživatelům bez systémových oprávnění provádět akce, který by měly být prováděny pouze správcem. Z tohoto důvodu není v Subsystému pro unixové aplikace tento mechanismus podporován ve výchozím nastavení. Namísto toho, pokoušíte-li se spustit soubor s nastavením příznaku setuid nebo setgid, v Subsystému pro unixové aplikace soubor není spuštěn a je vrácen kód chyby ENOSETUID.

Pokyny pro nastavení příznaku setuid v Subsystému pro unixové aplikace

Používáte-li aplikaci, která vyžaduje chování odpovídající standardu POSIX, můžete Subsystém pro unixové aplikace nakonfigurovat tak, aby bylo možné spouštět soubory s nastavením příznaku setuid nebo setgid. Je-li Subsystém pro unixové aplikace nakonfigurován tímto způsobem, vytvoří v případě, že proces spustí soubor s nastavením příznaku setuid nebo setgid, místní tokeny zabezpečení pro proces se systémovými oprávněními přidělenými vlastníkovi nebo skupině souboru. Tokeny jsou místní, proto nejsou rozpoznávány jinými počítači v síti. To znamená, že i když je například soubor vlastněn členem skupiny Domain Administrators, proces nemá důvěryhodný přístup k jiným počítačům v doméně prostřednictvím sítě Microsoft® Windows®. Namísto toho mohou být systémová práva platná pouze v počítači, ve kterém je proces spuštěn.

Proces například spustí soubor programu s nastavením příznaku setuid, který je vlastněn členem skupiny Domain Administrators. Pokud se program pokouší změnit uživatelské heslo pro doménu, tento pokus neproběhne úspěšně, protože tokeny zabezpečení procesu jsou místní a nejsou rozpoznávány jinými systémy v doméně. Pokud se naopak program pokouší změnit místní uživatelské heslo, tento proces proběhne úspěšně, protože vlastník souboru je členem skupiny Domain Administrators, která obvykle patří v místním počítači ke skupině Administrators. Další informace o tom, jak nakonfigurovat Subsystém pro unixové aplikace pro spouštění souborů s nastavenými příznaky setuid nebo setgid, naleznete v souborech nápovědy, které jsou součástí balíčku ke stažení sady Utilities and Software Development Kit (SDK) pro Subsystém pro unixové aplikace.

Pro funkce setuid(2), setgid(2) a chroot(2) musí mít proces platný identifikátor uživatele, který se mapuje zpět k systémovému účtu, účtu správce pro místní doménu nebo účtu správce pro hlavní doménu. Místní účet správce může změnit pouze identifikátor uživatele a ID skupiny na jiné ID ve stejné doméně.

Pro funkce chown(1), chmod(1) a chgrp(1) musí mít účet oprávnění Windows SE_BACKUP a SE_RESTORE, aby mohly být provedeny operace make v souborech vlastněných jiným uživatelem nebo skupinou nebo aby mohla být změněna oprávnění pro soubor vlastněný jiným uživatelem. Tato oprávnění obvykle náleží účtu správce nebo operátora zálohování.

Další odkazy