A setuid és a setgid (a felhasználói azonosító beállítása végrehajtáskor és a csoportazonosító beállítása végrehajtáskor ) Unix -engedélyjelzők, amelyek lehetővé teszik a felhasználók számára, hogy futtatható fájlokat futtassanak a végrehajtható fájl tulajdonosának vagy csoportjának jogaival.
Unix - szerű rendszereken az alkalmazás a megadott alkalmazást elindító felhasználó jogaival fut. Ez további biztonságot nyújt, mivel a felhasználói folyamatok nem kaphatnak írási hozzáférést olyan fontos rendszerfájlokhoz, mint például az /etc/passwd , amely a root tulajdonában van .
Ha a végrehajtható fájlban a suid bit van beállítva, akkor a program végrehajtásakor automatikusan megváltoztatja az "effective userID"-t a fájl tulajdonosának azonosítójára. Ez azt jelenti, hogy függetlenül attól, hogy ki futtatja ezt a programot, végrehajtáskor a fájl tulajdonosának jogai vannak.
A suid bitet Dennis Ritchie találta fel, és az AT&T szabadalmaztatta az Egyesült Államokban 1979-ben. Később a 4135240 számú „Adatfájlok tartalmának védelme” szabadalmat tették közzé.
Ha a set u id attribútum be van állítva egy fájlon , akkor a fájlt futtató normál felhasználó a fájl tulajdonosának (általában root felhasználónak ) minősül a futó folyamaton belül . Az emelés után egy alkalmazás olyan feladatokat hajthat végre, amelyeket egy normál felhasználó nem tudna elvégezni. A rendszer megakadályozza, hogy a felhasználó módosítsa az új folyamatot. A versenyfeltételek lehetősége miatt sok operációs rendszer figyelmen kívül hagyja a shell szkriptek set attribútumait. .
Bár a set u id attribútum sok esetben nagyon hasznos, a visszaélés biztonsági kockázatot jelenthet, ha az attribútumot nem gondosan megtervezett végrehajtható fájlhoz rendelik . A felhasználók kihasználhatják az alulfejlett programok sebezhetőségét, hogy magasabb jogosultságokat szerezzenek, vagy véletlenül trójai programokat indítsanak el .
A set g id attribútum beállítása csoportemelkedést ad .
A setuid és setgid attribútumokat általában a chmod paranccsal állítjuk be, az első bitpárt 4 -re (set u id) vagy 2 -re (set g id) állítva. A parancs chmod 6711mindkét bitpárt egyszerre állítja be (4+2=6). Karakter argumentumokkal is beállíthatja ezeket a biteket a chmod ug+s.
A könyvtárakhoz beállított setuid és setgid biteknek nagyon eltérő jelentése van.
A beállított g id bit egy könyvtárban ( chmod g+s) azt eredményezi , hogy csak az új könyvtárak és a benne létrehozott fájlok öröklik az adott könyvtár csoportazonosítóját a fájlt létrehozó felhasználó csoportazonosítója helyett. Az új alkönyvtárak is öröklik a setgid bitet. Ez lehetővé teszi, hogy megosztott munkaterületet hozzon létre egy csoport számára anélkül, hogy a csoporttagoknak kifejezetten módosítaniuk kellene jelenlegi csoportjukat új fájlok és könyvtárak létrehozásához.
Az öröklődés csak az új fájlokhoz és könyvtárakhoz van beállítva. A már meglévő fájloknak és könyvtáraknak manuálisan kell beállítaniuk ezt a bitet, például:
megkeresi a /könyvtár /útvonalát -type d -exec chmod g+s {} \;Vegye figyelembe azt is, hogy egy ilyen csoport összes felhasználója esetén az umask -ot az alapértelmezett 0022-ről 0012-re kell módosítani, különben az új fájlok/mappák nem rendelkeznek írási (w) jogosultsággal a csoport számára.
A könyvtárakhoz beállított setuid bitet a Unix legtöbb verziója figyelmen kívül hagyja .
A suid/sgid bitek beállítása nem végrehajtható fájlokon általában értelmetlen.
A setuid bitet tartalmazó program „potenciálisan veszélyes”. "Normál" esetben nem engedi meg a normál felhasználónak, hogy olyan dolgot tegyen, ami meghaladja a hatáskörét (például a passwd program csak a saját jelszavának megváltoztatását teszi lehetővé). De még egy ilyen program kisebb hibája is oda vezethet, hogy a támadó olyan egyéb műveletek végrehajtására kényszerítheti, amelyeket a program szerzője nem biztosított.