setuid och setgid (förkortning för set användar-ID vid körning och set grupp-ID vid körning ) är Unix- behörighetsflaggor som tillåter användare att köra körbara filer med rättigheterna för ägaren eller gruppen av den körbara filen.
På Unix -liknande system körs applikationen med rättigheterna för den användare som anropade den angivna applikationen. Detta ger ytterligare säkerhet, eftersom en användarprocess inte kan få skrivåtkomst till viktiga systemfiler, såsom /etc/passwd , som ägs av root .
Om den körbara filen har suid-biten inställd, ändrar detta program automatiskt det "effektiva användar-ID" när det körs till identifieraren för användaren som äger filen. Det vill säga, oavsett vem som kör det här programmet, har det rättigheterna för ägaren av denna fil när det körs.
Suid-biten uppfanns av Dennis Ritchie och patenterades i USA av AT&T 1979. Senare släpptes patent 4135240 "Skydd av datafilinnehåll" till allmänheten.
När attributet set u id är inställt på en fil höjs den vanliga användaren som kör den filen till filens ägareanvändare (vanligtvis root ) inom den körande processen . När den väl är upphöjd kan en applikation utföra uppgifter som en normal användare inte skulle kunna utföra. Användaren kommer att förhindras av systemet från att ändra den nya processen. På grund av möjligheten till ett race-tillstånd ignorerar många operativsystem attributet set till skalskript. .
Även om attributet set u id är väldigt praktiskt i många fall kan missbruk av det vara en säkerhetsrisk när attributet tilldelas en körbar fil som inte är noggrant utformad. Användare kan utnyttja sårbarheter i underutvecklade program för att få förhöjda privilegier eller oavsiktligt köra ett trojansk hästprogram .
Att ställa in set g id-attributet ger gruppförhöjning .
Attributen setuid och setgid ställs vanligtvis in med kommandot chmod genom att sätta det första bitparet till 4 (set u id) eller 2 (set g id). Kommandot kommer att chmod 6711ställa in båda paren av bitar samtidigt (4+2=6). Du kan också använda teckenargument för att ställa in dessa bitar med chmod ug+s.
Setuid- och setgid-bitarna för kataloger har en mycket olika betydelse.
Uppsättningen g id-bit i en katalog ( chmod g+s) gör att endast nya kataloger och filer som skapats i den ärver grupp-ID:t för den katalogen istället för grupp-ID:t för användaren som skapade filen. Nya underkataloger ärver också setgid-biten. Detta gör att du kan skapa en delad arbetsyta för en grupp utan besväret med att gruppmedlemmar uttryckligen behöver ändra sin nuvarande grupp för att skapa nya filer och kataloger.
Arv ställs endast in för nya filer och kataloger. Redan befintliga filer och kataloger måste ställa in denna bit manuellt, till exempel:
hitta /sökväg/till/katalog -typ d -exec chmod g+s {} \;Observera också att för alla användare av en sådan grupp måste umasken ändras från standardvärdet 0022 till 0012, annars kommer de nya filerna/mapparna inte att ha skrivbar (w) behörighet för gruppen.
Setuid-biten som är inställd för kataloger ignoreras i de flesta versioner av Unix .
Att ställa in suid/sgid-bitarna på icke-körbara filer är i allmänhet meningslöst.
Ett program med setuid-biten är "potentiellt farligt". I det "normala" fallet kommer det inte att tillåta en normal användare att göra något som ligger utanför deras behörighet (till exempel kommer passwd- programmet bara att tillåta användaren att ändra sitt eget lösenord). Men även ett mindre fel i ett sådant program kan leda till att en angripare kan tvinga det att utföra några andra åtgärder som inte tillhandahålls av författaren till programmet.