Hur man Använder SUID, SGID, och Kletiga Bitar på Linux

0
374
Fatmawati Achmad Zaenuri/Shutterstock

SUID, SGID, och Klibbiga Bitar är kraftfulla särskilda behörigheter du kan ange för körbara filer och kataloger i Linux. Vi kommer att dela fördelar och eventuella fallgropar—för att använda dem.

De är Redan i Användning

Att bygga säkerhet i en fleranvändar-operativsystem som innehåller flera quandaries. Ta den (till synes) enkla konceptet av lösenord, till exempel. De har alla att lagras så att varje gång någon loggar in i systemet kan jämföra det lösenord han typ till sparad kopia. Självklart, eftersom lösenord är nycklarna till riket, att de måste skyddas.

På Linux, lagrade lösenord skyddas på två sätt: de är krypterad, och endast någon med root-behörighet kan komma åt filen som innehåller ditt lösenord. Det kanske låter bra, men det presenterar ett dilemma: Om bara människor med root-behörighet kan komma åt lagrade lösenord, hur gör de som inte har tillgång till att ändra sina lösenord?

Höja Din Status

Vanligtvis, Linux-kommandon och program som kör med samma behörighet som den person som inleder programmet. När root kör du kommandot passwd för att ändra ett lösenord, det körs med root-behörighet. Det betyder att kommandot passwd fritt kan komma åt de lagrade lösenord i filen /etc/shadow-filen.

Vad skulle vara perfekt är ett system där vem som helst på datorn kan starta passwd programmet, men har passwd programmet behålla rot är förhöjda privilegier. Detta skulle ge vem som helst att ändra sina egna lösenord.

Ovanstående scenario är just vad Set User-ID-bit (SUID) gör. Det körs program och kommandon med behörigheterna för filen ägare, snarare än tillstånd av den person som inleder programmet.

Du är Upplyftande Programmets Status

Det finns en annan dilemma dock. Har personen hindras från att blanda sig med någon annans lösenord. Linux innehåller SUID-program som gör det möjligt att köra applikationer med en uppsättning av tillfälligt lånat behörigheter—men det är bara hälften av säkerhet historia.

Kontroll mekanism som hindrar någon från att arbeta med en annan persons lösenord finns i programmet passwd, inte operativsystemet och för SUID-system.

Program som kör med förhöjda privilegier kan innebära säkerhetsrisker om de inte skapas med en “security by design” tänkesätt. Det innebär att säkerhet är den första sak som du anser, och sedan bygga vidare på det. Glöm inte att skriva ditt program, och sedan försöka ge det ett lager av säkerhet efteråt.

Den största fördelen med öppen källkod är att du kan titta på källkoden själv eller hänvisa till pålitliga expertgranskning av det. I källkoden för programmet passwd, att det finns kontroller, så att du kan se om den person som kör programmet, är root. Olika funktioner är tillåtna om någon är roten (eller någon som använder sudo).

Detta är den kod som känner av om någon är root.

Följande är ett exempel på vilket den har tagit hänsyn till. Eftersom roten kan ändra alla lösenord, program behöver inte bry sig om den kontroll som den vanligtvis utför för att se vilka lösenord som en person som har behörighet att ändra. Så, för root, det hoppar de kontroller och avslutar kontrollera funktionen.

Med kärnan Linux-kommandon och verktyg, kan du vara säker på att de har fått säkerhet bakas in i dem och att koden har reviderats många gånger. Naturligtvis, det finns alltid hotet om ännu okänd utnyttjar. Men, patchar och uppdateringar är snabba att visas för att motverka nyligen identifierade sårbarheter.

Det är tredje-part—speciellt något som inte är open-source—du måste vara mycket försiktig med att använda SUID med. Vi säger inte att inte göra det, men om du gör det, du vill vara säker på att det inte utsätta systemet för risk. Du vill inte höja privilegier av ett program som inte går till på rätt sätt själv styra sig själv och den person som kör det.

Linux-Kommandon Som Använder SUID

Följande är några av de Linux-kommandon som använder SUID-biten att ge kommandot förhöjda privilegier när de kör med en vanlig användare:

ls -l /bin/su
ls -l /bin/ping
ls -l /bin/mount
ls -l /bin/umount
ls -l /usr/bin/passwd

Observera att filnamnen är markerad i rött, vilket indikerar SUID-biten är satt.

Behörigheterna för en fil eller katalog är vanligtvis representerat av tre grupper av tre tecken: rwx. Dessa står för läsa, skriva och exekvera. Om bokstäverna är närvarande, att tillstånd har beviljats. Om ett bindestreck (-) i stället för ett brev är närvarande, men, att tillstånd inte har givits.

Det finns tre grupper av dessa behörigheter (från vänster till höger): de för ägaren av filen, för medlemmar i fil grupp och för andra. När SUID-biten är satt på en fil, ett “s” står för ägarens köra tillstånd.

Om SUID-biten är satt på en fil som inte har körbar förmåga, ett stort “S” anger detta.

Ska vi ta en titt på ett exempel. Regelbundna användare dave typer kommandot passwd:

passwd

Kommandot passwd frågar dave för sitt lösenord. Vi kan använda ps-kommandot för att se detaljerad information om processer som körs.

Vi kommer att använda ps med grep i en annan terminal-fönster och leta efter passwd processen. Vi kommer också att använda -e (varje process) och f (full-format) alternativ med ps.

Vi skriver följande kommando:

ps -ef | grep passwd

Två linjer redovisas, den andra är den grep process som letar efter kommandon med strängen “passwd” i dem. Det är den första raden som intresserar oss, eftersom det är en för passwd process dave lanseras.

Vi kan se passwd processen körs på samma sätt som det skulle om roten som hade startat det.

Inställningen för SUID-Biten

Det är lätt att ändra SUID-biten med chmod. U+s symbolisk läge sätter SUID-biten och usa symboliska läge ger klartecken för SUID-biten.

För att illustrera några av de begrepp av SUID-biten, vi har skapat ett litet program som kallas htg. Det är i root-katalogen för dave användaren, och att det inte har SUID-biten satt. När det körs, visas de verkliga och effektiva användar-Id (UID).

Den verkliga UID tillhör den person som lanserade programmet. Den effektiva ID är det konto som programmet beter sig som om den hade lanserats av.

Vi skriver följande:

ls -lh htg
./htg

När vi kör den lokala kopian av programmet, ser vi den verkliga och effektiva IDs är att dave. Så, det beter sig precis som ett vanligt program bör.

Låt oss kopiera den till katalogen /usr/local/bin katalogen så att andra kan använda det.

Vi skriver följande, att använda kommandot chmod för att ange SUID-biten, och sedan kontrollera att det har ställts in:

sudo cp htg /usr/local/bin
sudo chmod u+s /usr/local/bin/htg
ls -hl /usr/local/bin/htg

Så, programmet kopieras, och för SUID-biten är satt. Vi kommer att köra det igen, men den här gången kommer vi att köra copy-i /usr/local/bin-mappen:

htg

Även om dave lanserade programmet, effektiv ID är inställt till root-användaren. Så, om maria inleder programmet, samma sak händer, så som visas nedan:

htg

Den verkliga ID är maria, och den effektiva ID är root. Programmet körs med behörigheterna för användaren root.

RELATERAT: Hur att Använda Kommandot chmod på Linux

Den SGID Lite

Set-Group-ID (SGID) biten är mycket liknande till SUID-biten. När SGID lite ligger på en körbar fil, en effektiv grupp är satt till den grupp av filen. Processen löper med tillstånd av medlemmarna i filen gruppen, snarare än tillstånd av den person som startat det.

Vi fixade våra htg programmet så att det visar en effektiv grupp. Vi ska ändra grupp av htg programmet ska användaren mary ‘ s standard-gruppen, mary. Vi kommer också att använda oss och g+s symboliska lägen med chown för att ta bort SUID-biten och ställa SGID.

Vi gör det genom att skriva följande:

sudo chown root:maria /usr/local/bin/htg
sudo chmod oss,g+s /usr/local/bin/htg
ls -lh /usr/local/bin/htg

Du kan se SGID lite betecknas med “- s” i den grupp behörigheter. Observera också den grupp som till maria och filens namn är nu markerad i gult.

Innan vi kör programmet, låt oss fastställa vilka grupper som dave och mary hör till. Vi kommer att använda id-kommando -G (grupper) alternativet för att skriva ut alla grupp-Id: n. Då kommer vi att köra den htg program som dave.

Vi skriv följande kommandon:

id -G dave
id -G mary
htg

ID för standardgruppen för maria är 1001 och effektiv grupp av htg programmet är 1001. Så, även om det lanserades av dave, det är som kör med tillstånd av medlemmarna i mary-gruppen. Det är samma sak som om dave hade gått mary-gruppen.

Låt oss tillämpa SGID lite till en katalog. För det första, vi kommer skapa en katalog som heter “verk” och sedan ändra sin grupp till “nörd.” Vi kommer då att ställa in SGID lite på katalogen.

När vi använder ls för att kontrollera inställningarna av katalogen, vi kommer också att använda-d (katalog) alternativ så att vi ser detaljerna i katalogen, inte för dess innehåll.

Vi skriv följande kommandon:

sudo mkdir arbetskatalog
sudo chown dave:geek arbete
sudo chmod g+s arbete
ls -lh -d-arbete

Den SGID lite och “geek” – gruppen är inställd. Dessa kommer att påverka alla objekt som skapas i katalogen.

Vi skriver följande för att komma in i arbetet katalog skapa en katalog som kallas “demo” och kontrollera dess egenskaper:

cd-arbete
mkdir demo
ls -lh -d demo

Den SGID lite och “geek” koncernen tillämpas automatiskt på “demo” katalogen.

Låt oss skriva följande för att skapa en fil med kommandot touch och kontrollera dess egenskaper:

touch useful.sh
ls -lh useful.sh

Gruppen för den nya filen automatiskt att sättas till “nörd.”

RELATERAT: Hur man Använder det chown Kommando på Linux

Den Fastbiten

Sticky bit fått sitt namn från dess historiska ändamål. När den är satt på en körbar, det flaggas för att det operativsystem som texten delar av den körbara bör hållas i swap, vilket gör deras återanvändning snabbare. På Linux, sticky bit påverkar endast en katalog—att ställa den på en fil som inte skulle vara meningsfullt.

När du satt fastbiten på en katalog, kan bara ta bort filer som hör till dem i katalogen. De kan inte ta bort filer som tillhör någon annan, oavsett vilken kombination av fil behörigheter sätts på filer.

Här kan du skapa en katalog som alla—och de processer som de starta—kan användas som delade lagring av filer. Filerna är skyddade eftersom, återigen, ingen kan radera någon annans filer.

Låt oss skapa en katalog som heter “delad.” Vi kommer att använda o+t symboliska läge med chmod för att ange fastbiten på den katalogen. Vi kommer då att titta på behörigheterna för den katalogen, samt av /tmp, och /var/tmp kataloger.

Vi skriv följande kommandon:

mkdir delade
sudo chmod o+t delad
ls -lh -d delad
ls -lh -d /tmp
ls -lh -d /var/tmp

Om sticky bit är satt, den körbara bit av den “andra” uppsättning av filrättigheter är inställd på “t.” Filnamnet är också markerade i blått.

/Tmp, och /var/tmp mappar är exempel på två kataloger som har alla behörigheter som för ägare, grupp, och andra (det är därför de är markerade i grönt). De används som delade platser för tillfälliga filer.

Med dessa behörigheter, någon borde, teoretiskt, kunna göra något. Dock fastbiten åsidosätter dem, och ingen kan ta bort en fil som inte tillhör honom.

Påminnelser

Följande är en snabb checklista över vad vi berört ovan för framtida referens:

  • SUID fungerar bara på filer.
  • Du kan ansöka SGID till kataloger och filer.
  • Du kan endast ansöka sticky bit till kataloger.
  • Om “s”, “g”, eller “t” indikatorer visas i versaler, den körbara bitars (x) har inte fastställts.

LÄS NÄSTA

  • “Hur att Installera och Använda Microsoft Kanten på Android
  • “Aktivera DNS Över HTTPS i Firefox
  • “Windows-10: s Nya Start-Menyn Kan Döda Levande paneler för Evigt
  • “Hur du Återställer Din Windows-PIN-kod Om Du Glömmer bort Det
  • “Hur man kan Stoppa Bakgrund Apps Körs När Microsoft Kanten Är Stängt