Számos rendszer esetében a rendszergazdáknak teljes ellenőrzése van a rendszer felett. A UNIX-alapú alkalmazások alrendszere (SUA) nem ismer fel egy rendszergazdát. Amikor a POSIX (Portable Operating System Interface) szabványt kifejlesztették, a rendszergazda fogalmát adminisztratív jellegű kérdésnek minősítették. Rendszergazda felhasználó használata helyett a POSIX szabvány bizonyos műveletek végrehajtását köti megfelelő jogosultságokhoz.
A témakör tartalma
UNIX-alapú alkalmazások alrendszere - Identitások
UNIX-alapú alkalmazások alrendszere - a setuid beállításának szempontjai
setuid és setgid
A setuid és a setgid mechanizmus lehetővé teszi egy program számára, hogy futás közben, bizonyos szempontból egy - a programot futtató felhasználóétól különböző - rendszerbiztonsági tag szerint működjön. Lehetővé teszik a program számára, hogy váltogasson a meghívó felhasználó és az övétől eltérő rendszerbiztonsági taggal rendelkező környezetek között.
A megfelelő jogosultságok az előbbiektől különbözőek. Míg a setuid és a setgid mechanizmussal az alkalmazás a „Ki vagy?” kérdésre tud választ adni, a megfelelő jogosultságok a „Mit tehetsz meg?” kérdésre válaszolnak.
UNIX-alapú alkalmazások alrendszere - Identitások
A tipikus UNIX-környezetekben pontosan egy felhasználó van, aki minden joggal rendelkezik. Ez rendszerint a root nevű, uid == 0 azonosítójú felhasználó. A UNIX-alapú alkalmazások alrendszerében az összes felhasználó, aki a Rendszergazdák vagy a Tartományi rendszergazdák csoport tagja, rendelkezik minden, a rendszerben támogatott joggal. Nem szükséges rendszergazdaként bejelentkeznie. Minden felhasználó, aki a Rendszergazdák vagy a Tartományi rendszergazdák csoport tagja, root (rendszergazdai) jogosultságokkal rendelkezik. Nem minden, a POSIX vagy UNIX rendszereken elérhető jog áll rendelkezésre az SUA alrendszerben, azaz vannak bizonyos jogok, amelyekkel egyik felhasználó sem rendelkezik.
Bizonyos műveletek végrehajtásához megfelelő jogosultságokra van szükség. Ilyen műveletek például a fájlrendszerhez történő hozzáférés, jelzések küldése más folyamatoknak (folyamatvezérlés) vagy az effektív felhasználó- (UID) vagy csoportazonosító módosítása annak érdekében, hogy megváltozzon a folyamat művelet-végrehajtási képessége.
A POSIX szabvány szerint egy fájl engedélyekkel rendelkezik, többek között a felhasználó- (setuid) és a csoportazonosító (setgid) bitek beállításának lehetőségével. Ha ezek közül valamelyik vagy mindkettő be van állítva egy fájlnál, a fájlt futtató folyamat megszerzi annak felhasználó- vagy csoportazonosítóját. Elővigyázatosan használva ez a mechanizmus lehetővé teheti egy kisebb jogkörrel rendelkező felhasználó számára olyan programok futtatását, amelyek a fájl tulajdonosának vagy csoportjának magasabb jogosultsági szintjén futnak. Helytelenül használva azonban biztonsági kockázatot jelenthet, megengedve a nem megfelelő jogosultságokkal rendelkező felhasználóknak olyan műveletek végrehajtását, amelyeket csak egy rendszergazdának szabadna engedélyezni. Emiatt az SUA alapértelmezés szerint nem támogatja ezt a mechanizmust. Ehelyett ha a felhasználó megpróbál egy olyan fájlt végrehajtani, amelynél a setuid vagy a setgid bit be van állítva, az SUA nem hajtja végre a fájlt és az ENOSETUID hibakóddal tér vissza.
UNIX-alapú alkalmazások alrendszere - a setuid beállításának szempontjai
Ha olyan alkalmazást használ, amely esetében szükséges a POSIX szabvány szerinti működés, beállíthatja az SUA alrendszert a beállított setuid vagy setgid bittel rendelkező fájlok végrehajtására. Ha az SUA az előbbiek szerint van beállítva, akkor amikor egy folyamat egy beállított setuid vagy setgid bittel rendelkező fájlt hajt végre, az SUA a fájl tulajdonosának vagy csoportjának jogosultságaival rendelkező helyi biztonsági jogkivonatokat állít össze a folyamat számára. Mivel a jogkivonatok helyiek, a hálózat többi számítógépe nem fogadja el azokat. Ez azt jelenti, hogy még ha a fájl tulajdonosa a Tartományi rendszergazdák csoport is, a folyamatnak ezzel még nincs hozzáférése a tartomány többi számítógépéhez a Microsoft® Windows® hálózaton keresztül. Ehelyett a jogosultságok csak a folyamatot futtató számítógépen lesznek érvényesek.
Tegyük fel, hogy egy folyamat végrehajt egy beállított setuid bittel rendelkező programfájlt, amelynek tulajdonosa a Tartományi rendszergazdák csoport tagja. Ha ez a program megpróbálkozik egy tartományfelhasználó jelszavának módosításával, a próbálkozás meghiúsul, mivel a folyamat biztonsági jogkivonatai helyiek, így azokat nem ismerik fel a tartomány egyéb számítógépei. Másrészről azonban ha ez a program egy helyi felhasználó jelszavát próbálja módosítani, az sikerülni fog neki, mivel a fájl tulajdonosa a Tartományi rendszergazdák csoport tagja, aki mint ilyen, a helyi számítógép Rendszergazdák csoportjának is tagja. Arról, hogy hogyan konfigurálhatja az SUA alrendszert a beállított setuid vagy setgid bittel rendelkező fájlok végrehajtására, a UNIX-alapú alkalmazások alrendszerének segédprogramjait és szoftverfejlesztői csomagját tartalmazó telepítőcsomag súgójában talál további információt.
A setuid(2), a setgid(2) és a chroot(2) függvény végrehajtásához egy olyan folyamatra van szükség, amelynek effektív felhasználóazonosítója a rendszerfiókra, a helyi tartomány rendszergazdai fiókjára vagy a fő tartomány rendszergazdai fiókjára képződik vissza. A helyi rendszergazdai fiók csak az azonos tartományban lévő felhasználó- és csoportazonosítók megváltoztatására jogosult.
A chown(1), a chmod(1) és a chgrp(1) függvény végrehajtásához a fióknak rendelkeznie kell az SE_BACKUP és az SE_RESTORE jogosultságokkal a make művelet végrehajtásához másik felhasználó vagy csoport tulajdonában lévő fájlokon, illetve egy másik felhasználó tulajdonában lévő fájl jogosultságainak módosításához. Ezek a jogosultságok tipikusan a rendszergazdai és a biztonságimásolat-felelős fiókokhoz tartoznak.