Setuid
Setuid og Setgid er Unix -termer , forkortelse for henholdsvis "Set User ID" og "Set Group ID". Setuid, også noen ganger kalt "suid" og "setgid" er tilgangstillatelser som kan tildeles filer eller kataloger i et Unix - basert operativsystem . De brukes hovedsakelig for å tillate systembrukere å kjøre binærfiler med forhøyede rettigheter midlertidig for å utføre en spesifikk oppgave.
Hvis en fil har "Setuid"-biten aktivert, identifiseres den med en "s" i en liste som følger:
-rwsr-xr–x 1 root shadow 27920 ago 15 22:45 /usr/bin/passwd
Denne egenskapen er nødvendig for at vanlige brukere skal kunne utføre oppgaver som krever høyere rettigheter enn de som er tilgjengelige for en vanlig bruker. Noen oppgaver som krever økte rettigheter er kanskje ikke åpenbare (for eksempel ping -kommandoen , som må sende og lytte etter kontrollpakker over et nettverksgrensesnitt).
Setuid i kjørbare filer
Normalt er denne biten satt på kjørbare filer. Når en binær kjørbar tilordnes setuid-attributtet, kan vanlige systembrukere kjøre den filen og få privilegier fra brukeren som eier den filen (vanligvis root ) på den opprettede prosessen . Når prosessen får administratorrettigheter, kan applikasjonen utføre oppgaver på systemet som vanlige brukere normalt ikke ville kunne gjøre. Systemet vil hindre brukeren som påkalte den kjørbare filen fra å endre den nye prosessen på noen måte, for eksempel ved å bruke ptrace, LD_LIBRARY_PATH eller sende signaler til den (signaler fra selve terminalen vil bli akseptert).
For eksempel brukes setuid-biten i filen /usr/bin/passwd slik at alle kan endre passordet på en kontrollert måte. Å kunne kjøre dette programmet lar en bruker skrive til passordfilen (/etc/shadow, ikke å forveksle med /etc/passwd), men uten å måtte gi skrivetillatelser til filen, noe som ville være et stort sikkerhetshull.
Selv om setuid-funksjonen er svært nyttig i mange tilfeller, kan den utgjøre en sikkerhetsrisiko hvis setuid-attributtet er tilordnet kjørbare programmer som ikke er nøye utformet. Brukere kan utnytte sårbarheter i buggy-programmer for permanent å få forhøyede privilegier, eller utilsiktet kjøre en trojansk hest .
Setgid-attributtet vil tillate at gruppebaserte privilegier endres på en prosess, på samme måte som setuid gjør for brukerbaserte privilegier.
Setuid i kataloger
Setgid-flagget på en katalog har en helt annen betydning enn applikasjonen på filer. Kataloger med setgid-tillatelse tvinger alle filer og underkataloger som er opprettet i dem til å tilhøre gruppen til eieren av katalogen og ikke til gruppen til brukeren som oppretter filen eller underkatalogen.
Setuid-flagget har derimot ingen effekt hvis det brukes på en katalog. Årsaken er at hvis du skulle spre eieren av katalogen til objekter som er opprettet i den katalogen, vil brukeren som oppretter en fil der umiddelbart miste eiertillatelsene sine på filen, og kanskje hindre dem fra å kunne bruke eller endre den igjen. .
Eksempler
Legg til SUID-tillatelser til et eksempel på binær (bruker)
# chmod u+s /home/user/executable
Fjern SUID-tillatelser til en binær (bruker)
# chmod oss /bin/ping
Legg til GUID-tillatelser til et eksempel på binær (gruppe)
# chmod g+s /home/user/executable
Fjern GUID-tillatelser til et eksempel på binær (gruppe)
# chmod gs /home/user/executable
Vise tillatelsene til en binær med SUID-attributter
# ls -al /bin/ping
-rwsr-xr-x 1 rotrot 35712 2011 -05-03 12 :43 /bin/ping
Finn alle filer med SUID- eller SGID-tillatelser
# finn / -bane /proc -prune -o -type f -perm +6000 -ls
Finn alle filer med tillatelser bare SUID
# finn / -bane /proc -prune -o -type f -perm +4000 -ls
Finn alle filer med tillatelser kun SGID
# finn / -bane /proc -prune -o -type f -perm +2000 -ls
Eksempler på bruk
SUID
4711 tillatelser på en kjørbar fil som eies av root .
En bruker som heter så-og-så prøver å kjøre filen. Tillatelser for den kjørbare filen er satt til alle brukere med kjøringstillatelse (471 1 ), slik at den og den kan kjøre filen. Eieren av filen er root og SUID-tillatelsen er satt ( 4 711), så filen kjører som root .
På denne måten kjøres filen som root , noe som betyr at slik og så kan endre andre filer som den normalt ikke kan uten å gi så og så fulle rettigheter. Dette brukes i den binære filen /usr/bin/passwd. du må endre y passwd-filen som lagrer brukerkontoinformasjon og passord-hasher, men disse filene kan bare endres 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
Endre passord for so-and-so.
GUIDE
2071 en katalog kalt "planter" som har "sultan" som eiergruppe og "root" som eierbruker.
En bruker som heter "så-og-så" tilhører primært gruppen "så-og-så" og sekundært til gruppen "sultan". "så-og-så" oppretter en ny katalog kalt "mango" inne i "planter"-katalogen. Gruppen som eier den nye katalogen med navnet "mango" arver "sultano".
Uten GUID ville eiergruppen vært "så-og-så".
[ så-og-så @ vert ~ ] $ grupper så
-og-så så-og- så: så-og-så sultan
[ so-and-so @ host ~ ] $ stat -c "%a %U:%G %n" ~/plants/
2770 so-and-so:sultan /home/so-and-so/plants/
[ så-og-så @ vert ~ ] $ mkdir ~/planter/mango
[ så-og-så @ vert ~ ] $ 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å-og-så @ vert ~ ] $ touch test
[ so-and-so @ host ~ ] $ stat -c "%U:%G %n" ~/test
so-and-so:so-and-so /home/so-and-so/test