close

Setuid

Gå till navigering Gå till sök

Setuid och Setgid är Unix -termer , förkortning för "Set User ID" respektive "Set Group ID". Setuid, även ibland kallad "suid" och "setgid" är åtkomstbehörigheter som kan tilldelas filer eller kataloger i ett Unix - baserat operativsystem . De används främst för att tillåta systemanvändare att köra binärer med förhöjda privilegier tillfälligt för att utföra en specifik uppgift.

Om en fil har "Setuid"-biten aktiverad, identifieras den med ett "s" i en lista enligt följande:

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

Den här egenskapen krävs för att normala användare ska kunna utföra uppgifter som kräver högre behörigheter än de som är tillgängliga för en normal användare. Vissa uppgifter som kräver förhöjda privilegier kanske inte är uppenbara (till exempel kommandot ping , som måste skicka och lyssna efter kontrollpaket över ett nätverksgränssnitt).

Setuid i körbara filer

Normalt är denna bit inställd på körbara filer. När en binär körbar tilldelas setuid-attributet kan normala systemanvändare köra den filen och få privilegier från användaren som äger filen (vanligtvis root ) på den skapade processen . När processen får administratörsbehörighet kan applikationen utföra uppgifter på systemet som vanliga användare normalt inte skulle kunna göra. Systemet kommer att förhindra användaren som anropade den körbara filen från att ändra den nya processen på något sätt, som att använda ptrace, LD_LIBRARY_PATH eller skicka signaler till den (signaler från själva terminalen kommer att accepteras).

Setuid-biten används till exempel i filen /usr/bin/passwd så att alla kan ändra sitt lösenord på ett kontrollerat sätt. Att kunna köra detta program tillåter en användare att skriva till lösenordsfilen (/etc/shadow, inte att förväxla med /etc/passwd) men utan att behöva ge skrivbehörighet till filen, vilket skulle vara ett stort säkerhetshål.

Även om setuid-funktionen är mycket användbar i många fall, kan den utgöra en säkerhetsrisk om setuid-attributet tilldelas körbara program som inte var noggrant utformade. Användare kan utnyttja sårbarheter i buggyprogram för att permanent få förhöjda privilegier, eller oavsiktligt köra en trojansk häst .

Attributet setgid tillåter att gruppbaserade privilegier ändras på en process, på samma sätt som setuid gör för användarbaserade privilegier.

Setuid i kataloger

Setgid-flaggan på en katalog har en helt annan betydelse än dess tillämpning på filer. Kataloger med setgid-behörighet tvingar alla filer och underkataloger som skapas i dem att tillhöra gruppen för ägaren av katalogen och inte till gruppen för användaren som skapar filen eller underkatalogen.

Setuid-flaggan, å andra sidan, har ingen effekt om den appliceras på en katalog. Anledningen är att om du skulle sprida ägaren av katalogen till objekt skapade i den katalogen, skulle användaren som skapar en fil där omedelbart förlora sina ägarbehörigheter för filen, vilket kanske hindrar dem från att kunna använda eller ändra den någonsin igen .

Exempel

Lägg till SUID-behörigheter till ett exempel på binär (användare)

# chmod u+s /home/user/executable

Ta bort SUID-behörigheter till en binär (användare)

# chmod oss ​​/bin/ping

Lägg till GUID-behörigheter till ett exempel på binär (grupp)

# chmod g+s /home/user/executable

Ta bort GUID-behörigheter till ett exempel på binär (grupp)

# chmod gs /home/användare/körbar

Visa behörigheterna för en binär med SUID-attribut

# ls -al /bin/ping 
-rwsr-xr-x 1 rotrot 35712  2011 -05-03 12 :43 /bin/ping

Hitta alla filer med SUID- eller SGID-behörigheter

# hitta / -sökväg /proc -prune -o -typ f -perm +6000 -ls

Hitta alla filer med endast behörigheter SUID

# hitta / -sökväg /proc -prune -o -typ f -perm +4000 -ls

Hitta alla filer med endast behörigheter SGID

# hitta / -sökväg /proc -prune -o -typ f -perm +2000 -ls

Användningsexempel

SUID

4711 behörigheter på en körbar fil som ägs av root .

En användare som heter så och så försöker köra filen. Behörigheter för den körbara filen är inställda på alla användare med exekveringsbehörighet (471 1 ), så den och den kan köra filen. Ägaren till filen är root och SUID-behörigheten är inställd ( 4 711), så filen körs som root .

På så sätt exekveras filen som root , vilket betyder att så och kan modifiera andra filer som den normalt inte kan utan att ge så och fullständiga privilegier. Detta används i den binära filen /usr/bin/passwd. du måste modifiera y passwd-filen som lagrar användarkontoinformation respektive lösenordshaschar, men dessa filer kan endast ändras av root . /etc/passwd/etc/shadow

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

[ so-and-so @ host ~ ] $   passwd
 Ändra lösenord för si-och-så.

GUIDE

2071 en katalog som heter "plants" som har "sultan" som ägargrupp och "root" som ägareanvändare.

En användare som heter "så-och-så" tillhör i första hand gruppen "så-och-så" och sekundärt till gruppen "sultan". "så-och-så" skapar en ny katalog som heter "mango" i "växter"-katalogen. Gruppen som äger den nya katalogen som heter "mango" ärver "sultano".

Utan GUID hade ägargruppen varit "så och så".

[ så och så @ värd ~ ] $   grupper så
 och så så och så : så och så sultan

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

[ si och så @ host ~ ] $   mkdir ~/plants/mango

[ si och så @ värd ~ ] $   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

[ så och så @ värd ~ ] $   touch test

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

Se även