close

Setuid

Ugrás a navigációhoz Ugrás a kereséshez

A Setuid és a Setgid Unix kifejezések , a „Felhasználói azonosító beállítása” és a „Csoportazonosító beállítása” rövidítése. A Setuid, más néven "suid" és "setgid" hozzáférési engedélyek, amelyek Unix - alapú operációs rendszerben hozzárendelhetők fájlokhoz vagy könyvtárakhoz . Főleg arra szolgálnak, hogy a rendszerfelhasználók bináris fájlokat futtathassanak ideiglenesen emelt jogosultságokkal egy adott feladat végrehajtásához.

Ha egy fájlban aktiválva van a "Setuid" bit, akkor azt a listában egy "s" jelzi a következőképpen:

-rwsr-xr–x 1 root shadow 27920 ago 15 22:45 /usr/bin/passwd

Ez a tulajdonság szükséges ahhoz, hogy a normál felhasználók olyan feladatokat hajthassanak végre, amelyek magasabb jogosultságokat igényelnek, mint a normál felhasználók számára elérhetők. Előfordulhat, hogy bizonyos feladatok, amelyek magasabb jogosultságokat igényelnek, nem nyilvánvalóak (például a ping parancs , amelynek hálózati interfészen keresztül vezérlőcsomagokat kell küldenie és figyelnie kell rájuk).

Setuid a végrehajtható fájlokban

Általában ez a bit a végrehajtható fájlokon van beállítva. Ha egy bináris végrehajtható fájlhoz hozzá van rendelve a setuid attribútum, a normál rendszerfelhasználók futtathatják azt a fájlt, és jogosultságokat szerezhetnek a fájl tulajdonosától (általában root ) a létrehozott folyamatban . Amikor a folyamat rendszergazdai jogosultságokat kap, az alkalmazás olyan feladatokat hajthat végre a rendszeren, amelyeket a normál felhasználók általában nem tudnának elvégezni. A rendszer megakadályozza, hogy a végrehajtható fájlt meghívó felhasználó bármilyen módon módosítsa az új folyamatot, például a ptrace, LD_LIBRARY_PATH használatával vagy jelek küldésével (magától a termináltól érkező jeleket elfogadja).

Például a setuid bitet az /usr/bin/passwd fájl használja, így mindenki ellenőrzött módon módosíthatja a jelszavát. A program futtatása lehetővé teszi a felhasználó számára, hogy írjon a jelszófájlba (/etc/shadow, nem tévesztendő össze az /etc/passwd-vel), de anélkül, hogy írási engedélyt kellene adnia a fájlnak, ami nagy biztonsági rést jelentene.

Bár a setuid szolgáltatás sok esetben nagyon hasznos, biztonsági kockázatot jelenthet, ha a setuid attribútumot nem gondosan megtervezett végrehajtható programokhoz rendelik hozzá. A felhasználók kihasználhatják a hibás programok sebezhetőségét, hogy tartósan magasabb jogosultságokhoz jussanak, vagy akaratlanul is futtathatnak egy trójai falót .

A setgid attribútum lehetővé teszi a csoport alapú jogosultságok megváltoztatását egy folyamaton, ugyanúgy, ahogy a setuid teszi a felhasználó alapú jogosultságokhoz.

Setuid a könyvtárakban

A setgid jelző egy könyvtárban teljesen más jelentéssel bír, mint a fájlokon való alkalmazása. A setgid engedéllyel rendelkező könyvtárak arra kényszerítik az összes bennük létrehozott fájlt és alkönyvtárat, hogy a könyvtár tulajdonosának csoportjába tartozzon, és ne a fájlt vagy alkönyvtárat létrehozó felhasználó csoportjába.

A setuid jelzőnek viszont nincs hatása, ha egy könyvtárra alkalmazzák. Ennek az az oka, hogy ha a könyvtár tulajdonosát a könyvtárban létrehozott objektumokra továbbítaná, az ott fájlt létrehozó felhasználó azonnal elveszítené a tulajdonosi jogosultságait a fájlhoz, ami esetleg megakadályozná, hogy újra felhasználhassa vagy módosítsa. .

Példák

SUID-engedélyek hozzáadása egy példa binárishoz (felhasználó)

# chmod u+s /home/user/executable

SUID-engedélyek eltávolítása egy bináris (felhasználó) számára

# chmod us /bin/ping

GUID-engedélyek hozzáadása egy példa binárishoz (csoport)

# chmod g+s /home/user/executable

GUID-engedélyek eltávolítása egy példa binárishoz (csoport)

# chmod gs /home/user/executable

SUID attribútumokkal rendelkező bináris fájl engedélyeinek megtekintése

# ls -al /bin/ping 
-rwsr-xr-x 1 gyökér gyökér 35712  2011 -05-03 12 :43 /bin/ping

Keresse meg az összes SUID vagy SGID engedéllyel rendelkező fájlt

# find / -path /proc -prune -o -type f -perm +6000 -ls

Keresse meg az összes fájlt, amely csak SUID engedéllyel rendelkezik

# find / -path /proc -prune -o -type f -perm +4000 -ls

Keresse meg az összes olyan fájlt, amely csak SGID engedéllyel rendelkezik

# find / -path /proc -prune -o -type f -perm +2000 -ls

Használati példák

SUID

4711 engedély a root tulajdonában lévő végrehajtható fájlhoz .

A so-and-so nevű felhasználó megpróbálja futtatni a fájlt. A végrehajtható fájl engedélyei minden végrehajtási engedéllyel rendelkező felhasználóhoz be vannak állítva (471 1 ), így a so-and- so végrehajthatja a fájlt. A fájl tulajdonosa root , és a SUID engedély be van állítva ( 4 711), így a fájl rootként fut .

Így a fájl root -ként fut le , ami azt jelenti, hogy ez-és-más olyan fájlokat módosíthat, amelyeket általában nem tud anélkül, hogy teljes jogosultságokat adna. Ezt a bináris fájl használja /usr/bin/passwd. módosítania kell az y passwdfájlt , amely a felhasználói fiókadatokat és a jelszókivonatokat tárolja, de ezeket a fájlokat csak a root módosíthatja . /etc/passwd/etc/shadow

[ so-so @ host ~ ] $   stat -c "%a %U:%G %n" /usr/bin/passwd 
 4701 root:root /usr/bin/passwd

[ so-and-so @ host ~ ] $   passwd
 Jelszó módosítása az ilyen-olyanokhoz.

ÚTMUTATÓ

2071 egy "plants" nevű könyvtár, amelynek tulajdonosi csoportja a "sultan", tulajdonosa pedig a "root".

Az "így-és-úgy" nevű felhasználó elsősorban az "így-úgy" csoporthoz, másodsorban a "szultána" csoporthoz tartozik. A "so-and-so" létrehoz egy "mango" nevű új könyvtárat a "plants" könyvtárban. Az új "mango" nevű könyvtárat birtokló csoport a "sultano" kifejezést örökli.

A GUID nélkül a tulajdonosi csoport "így és olyan" lett volna.

[ ilyen-és-úgy @ host ~ ] $   csoportok ilyen
 -és-úgy- úgy : ilyen-és-úgy szultán

[ so-and-so @ host ~ ] $   stat -c "%a %U:%G %n" ~/plants/
 2770 so-and-so:sultan /home/so-and-so/plants/

[ so-so @ host ~ ] $   mkdir ~/plants/mango

[ so-so @ host ~ ] $   touch ~/plants/.mango

[ so-and-so @ host ~ ] $   stat -c "%U:%G %n" ~/plants/mango/
 so-and -so:sultan /home/so-and-so/plants/mango/

[ so-and-so @ host ~ ] $   stat -c "%U:%G %n" ~/plants/.mango
 so-and- so:sultan /home/so-and-so/plants/.mango

[ so-so @ host ~ ] $   érintési teszt

[ so-and-so @ host ~ ] $   stat -c "%U:%G %n" ~/test
 so-and-so:so-and-so /home/so-and-so/test

Lásd még