Setuid
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 så kan modifiera andra filer som den normalt inte kan utan att ge så och så 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