setuid og setgid (forkortelse for sæt bruger-id ved udførelse og sæt gruppe-id ved udførelse ) er Unix -tilladelsesflag , der tillader brugere at køre eksekverbare filer med rettighederne til ejeren eller gruppen af den eksekverbare fil.
På Unix -lignende systemer køres applikationen med rettighederne til den bruger, der påkaldte den angivne applikation. Dette giver ekstra sikkerhed, da en brugerproces ikke kan få skriveadgang til vigtige systemfiler, såsom /etc/passwd , som ejes af root .
Hvis den eksekverbare fil har suid bit indstillet, så ændrer dette program automatisk det "effektive bruger-id" når det udføres, til identifikatoren for den bruger, der ejer denne fil. Det vil sige, uanset hvem der kører dette program, har det rettighederne til ejeren af denne fil, når det udføres.
Suid-bitten blev opfundet af Dennis Ritchie og patenteret i USA af AT&T i 1979. Senere blev patent 4135240 "Beskyttelse af datafilindhold" frigivet til offentligheden.
Når attributten set u id er indstillet på en fil , bliver den almindelige bruger, der kører denne fil, forhøjet til filens ejerbruger (normalt root ) i den kørende proces . Når den er forhøjet, kan en applikation udføre opgaver, som en normal bruger ikke ville være i stand til at udføre. Brugeren vil blive forhindret af systemet i at ændre den nye proces. På grund af muligheden for en race-tilstand ignorerer mange operativsystemer den indstillede attribut til shell-scripts. .
Mens attributten set u id er meget praktisk i mange tilfælde, kan dens misbrug være en sikkerhedsrisiko, når attributten er tildelt en eksekverbar fil , der ikke er omhyggeligt designet. Brugere kan udnytte sårbarheder i underudviklede programmer til at opnå forhøjede privilegier eller utilsigtet køre et trojansk hesteprogram .
Indstilling af set g id attribut giver gruppe elevation .
Setuid- og setgid-attributterne indstilles normalt med chmod-kommandoen ved at sætte det første par bit til 4 (set u id) eller 2 (set g id). Kommandoen chmod 6711indstiller begge bitpar på én gang (4+2=6). Du kan også bruge tegnargumenter til at indstille disse bits med chmod ug+s.
Setuid- og setgid-bittene til mapper har en meget forskellig betydning.
Den indstillede g id-bit på en mappe ( chmod g+s) får kun nye mapper og filer, der er oprettet i den, til at arve gruppe-id'et for den mappe i stedet for gruppe-id'et for den bruger, der oprettede filen. Nye undermapper arver også setgid-bitten. Dette giver dig mulighed for at oprette et delt arbejdsområde for en gruppe uden besværet med, at gruppemedlemmer eksplicit skal ændre deres nuværende gruppe for at oprette nye filer og mapper.
Nedarvning er kun indstillet for nye filer og mapper. Allerede eksisterende filer og mapper skal indstille denne bit manuelt, for eksempel:
find /sti/til/mappe -type d -exec chmod g+s {} \;Bemærk også, at for alle brugere af en sådan gruppe skal umasken ændres fra standardværdien 0022 til 0012, ellers vil de nye filer/mapper ikke have skrivbar (w) tilladelse til gruppen.
Setuid-bitten indstillet til mapper ignoreres i de fleste versioner af Unix .
At indstille suid/sgid bits på ikke-eksekverbare filer er generelt meningsløst.
Et program med setuid-bit er "potentielt farligt". I det "normale" tilfælde vil det ikke tillade en normal bruger at gøre noget, der er uden for deres autoritet (for eksempel vil passwd -programmet kun tillade brugeren at ændre deres egen adgangskode). Men selv en mindre fejl i et sådant program kan føre til, at en angriber kan tvinge det til at udføre nogle andre handlinger, som ikke er angivet af forfatteren af programmet.