I många system har en rotanvändare (root) eller superanvändare (superuser) fullständig kontroll över systemet. Rotanvändare känns inte igen i SUA (Subsystem for UNIX Applications). När POSIX-standarden (Portable Operating System Interface) utvecklades räknades konceptet rotanvändare som en del av administrationen. I stället för en rotanvändare definierar POSIX-standarden lämpliga privilegier för vissa funktioner.

I det här avsnittet

setuid och setgid

Mekanismerna setuid och setgid innebär att det under körningen av ett program kan tillämpas vissa aspekter av ett annat säkerhetsobjekt än det som gäller för den användare som kör programmet. De innebär att programmet kan växlas mellan aspekter som tillhör den anropande användaren och aspekter som tillhör ett annat säkerhetsobjekt.

Lämpliga privilegier skiljer sig från detta. Mekanismerna setuid och setgid innebär att ett program kan kontrollera svaret på frågan: "Vem är du?", medan lämpliga privilegier besvarar frågan: "Vad kan du göra?"

SUA (Subsystem for UNIX Applications) och identiteter

I en typisk UNIX-miljö finns det en, och endast en, användare som beviljas alla privilegier. Den användaren kallas vanligtvis för root och har uid == 0. I SUA (Subsystem for UNIX Applications) beviljas alla privilegier som stöds i ett visst system användare som är medlemmar i någon av grupperna Administratörer eller Domänadministratörer i systemet. Du behöver inte logga in som administratör. Alla användare som är medlemmar i någon av grupperna Administratörer eller Domänadministratörer har root-privilegier. Alla privilegier som definieras i POSIX eller UNIX är inte tillgängliga i SUA; vissa tilldelas inte någon användare.

Lämpliga privilegier krävs normalt för en rad åtgärder. De krävs till exempel för att ansluta till filsystemet, skicka signaler till andra processer (processkontroll) eller för att ändra ett giltigt UID eller GID för en process för att ändra processens möjligheter att utföra vissa åtgärder.

Enligt POSIX-standarden har en fil behörigheter som inkluderar bitar för att ange ett UID (setuid) och ett GID (setgid). Om någon av eller båda bitarna har angetts för en fil och filen körs i en process, får processen det UID eller GID som tillhör filen. Om den här mekanismen används korrekt tillåter den att en användare utan privilegier kan köra program som körs med högre privilegier för filanvändaren eller gruppen. Om den används felaktigt kan det innebära en säkerhetsrisk genom att användare utan privilegier kan tillåtas att utföra åtgärder som endast borde utföras av en administratör. Därför stöds normalt sett inte denna mekanism i SUA. Om du försöker köra en fil som har någon av bitarna setuid eller setgid, körs filen inte, utan i stället returneras felkoden ENOSETUID.

Att tänka på vid inställning av setuid i SUA (Subsystem for UNIX Applications)

Om du är beroende av ett program som kräver standardbeteenden för POSIX kan du konfigurera SUA så att filer med bitarna setuid eller setgid körs. Om SUA konfigureras på det sättet skapas det lokala säkerhetstoken med de privilegier som har tilldelats filens ägare eller grupp för en process varje gång som en fil med bitarna setuid eller setgid körs i processen. Eftersom token är lokala känns de inte igen av andra datorer i nätverket. Det innebär att även om en fil till exempel ägs av en medlem i gruppen Domänadministratörer så behöver processen inte har betrodd åtkomst genom ett Microsoft® Windows®-nätverk till andra datorer i domänen. I stället gäller privilegierna endast på den dator där processen körs.

Anta att en programfil med biten setuid som ägs av en medlem i gruppen Domänadministratörer körs i en process. Om det görs ett försök att i programmet ändra en domänanvändares lösenord kommer försöket att misslyckas eftersom processens säkerhetstoken är lokala och därför inte känns igen av andra system i domänen. Om det å andra sidan görs ett försök att i programmet ändra en lokal användares lösenord kommer försöket att lyckas eftersom filens ägare är medlem i gruppen Domänadministratörer, som normalt sett tillhör gruppen Administratörer på den lokala datorn. Information om hur du konfigurerar SUA för att köra filer med bitarna setuid eller setgid finns i hjälpfilerna som levereras tillsammans med det hämtningsbara paketet Verktyg och SDK för undersystem för UNIX-baserade program.

För funktionerna setuid(2), setgid(2) och chroot(2), måste en process ha ett giltigt UID som mappas tillbaka till systemkontot, till administratörskontot för den lokala domänen eller till administratörskontot för huvuddomänen. Det lokala administratörskontot får endast ändra UID eller GID till ett annat ID i samma domän.

För chown(1), chmod(1) och chgrp(1), måste ett konto ha Windows-privilegierna SE_BACKUP och SE_RESTORE för att utföra make-operationer på filer som ägs av en annan användare eller grupp eller för att ändra behörigheter på en fil som ägs av en annan användare. Dessa behörigheter tillhör normalt sett administratörskontot och kontot för den som ansvarar för säkerhetskopieringen.

Se även