Filbehörigheter i Linux/Unix: Hur man läser, skriver och ändrar

⚡ Smart sammanfattning

Filbehörigheter i Linux och Unix styr vem som kan läsa, skriva och köra varje fil, vilket skyddar ett system med flera användare genom två lager: äganderätt, som tilldelar en användare, grupp och andra, och läs-, skriv- och körbehörighetsbitarna.

  • 👥 Äganderätt: Varje fil och katalog tillhör en användare (ägare), en grupp och andra, ibland kallad världen.
  • 🔑 Behörigheter: Tre behörigheter gäller för varje ägarklass: läsa (r), skriva (w) och köra (x).
  • 📃 Lista: Kommandot ls -l visar en behörighetssträng som -rw-rw-r– för ägare, grupp och värld.
  • 🔢 Absolut läge: chmod med ett tresiffrigt oktalt tal anger behörigheter för alla tre klasser samtidigt, till exempel 764.
  • ➕ Symboliskt läge: chmod med u, g, o, a och +, -, = ändrar en ägarklass utan att röra de andra.
  • 🧭 Ägarskapskommandon: Kommandot chown ändrar ägare och grupp, medan chgrp bara ändrar gruppen.
  • 🤖 AI-hjälp: AI-assistenter och GitHub Copilot kan generera och förklara chmod- och chown-kommandon.

Filbehörigheter i Linux och Unix: hur man läser, skriver och ändrar

Filbehörigheter i Linux och Unix bestämmer vem som får läsa, ändra eller köra varje fil, vilket håller ett delat system med flera användare säkert. Den här sidan går igenom filägande, läs-, skriv- och körbehörigheter samt de kommandon som ändrar dem.

Linux är en klon av Unix, det fleranvändaroperativsystem som kan nås av många användare samtidigt. Linux kan också användas på stordatorer och servrar utan några modifieringar. Men detta väcker säkerhetsproblem, eftersom en oombedd eller illvillig användare kan korrumpera, ändra eller ta bort viktig data. För effektiv säkerhet delar Linux upp auktorisering i två nivåer:

  • Ägande
  • tillstånd

Konceptet med filbehörighet och äganderätt är avgörande i Linux. Här förklarar vi behörigheter och äganderätt i Linux och diskuterar båda. Låt oss börja med äganderätt.

Linux-filägande

Varje fil och katalog på ditt Unix/Linux-system har tilldelats tre typer av ägare, vilka anges nedan. Diagrammet nedan visar hur ägarskap kopplas till användaren, gruppen och andra.

Diagram över Linux-filägarskap som visar användare, grupp och andra behörighetsklasser

Användare

En användare är ägaren till filen. Som standard blir personen som skapade en fil dess ägare. Därför kallas en användare ibland även ägare.

Grupp

A användargrupp kan innehålla flera användare. Alla användare som tillhör en grupp har samma Linux-gruppbehörigheter till filen. Anta att du har ett projekt där ett antal personer behöver åtkomst till en fil. Istället för att manuellt tilldela behörigheter till varje användare kan du lägga till alla användare i en grupp och tilldela gruppbehörighet till filen, så att endast dessa gruppmedlemmar, och ingen annan, kan läsa eller ändra filerna.

Övrigt

Alla andra användare som har åtkomst till en fil. Denna person har varken skapat filen eller tillhör en användargrupp som kan äga filen. I praktiken betyder det alla andra. Därför kallas det även för att ställa in behörigheter för världen när du anger behörigheter för andra.

Nu uppstår den stora frågan: hur skiljer Linux mellan dessa tre användartyper så att användare 'A' inte kan påverka en fil som innehåller viktig information eller data från andra användare 'B'? Det är som att inte vilja ha en kollega som arbetar på din... Linux-dator för att visa dina bilder. Det är här behörigheter kommer in i bilden, och de definierar användarbeteende.

Låt oss förstå behörighetssystemet på Linux.

Linux -filbehörigheter

Varje fil och katalog i ditt Unix/Linux-system har följande tre behörigheter definierade för alla tre ägare som diskuterats ovan.

  • Läsa: Denna behörighet ger dig behörighet att öppna och läsa en fil. Läsbehörighet för en katalog ger dig möjlighet att lista dess innehåll.
  • Skriva: Skrivbehörigheten ger dig behörighet att ändra innehållet i en fil. Skrivbehörigheten till en katalog ger dig behörighet att lägga till, ta bort och byta namn på filer som lagras i katalogen. Tänk dig ett scenario där du har skrivbehörighet till en fil men inte har skrivbehörighet till katalogen där filen är lagrad. Du kommer att kunna ändra filinnehållet, men du kommer inte att kunna byta namn på, flytta eller ta bort filen från katalogen.
  • Kör: In Windows, har ett körbart program vanligtvis filändelsen ”.exe” som du enkelt kan köra. I Unix/Linux kan du inte köra ett program om inte körbehörigheten är inställd. Om körbehörigheten inte är inställd kan du fortfarande se eller ändra programkoden (förutsatt att läs- och skrivbehörigheter är inställda), men inte köra den.

Låt oss se filbehörigheter i Linux med exempel. Att köra ls -l på terminalen ger:

ls -l

Skärmdumpen nedan visar behörighetssträngen i en lång lista.

Terminal ls -l utdata som visar behörighetssträngen rw-rw-r-- för en fil

Här har vi markerat '-rw-rw-r–', och den här udda koden är den som berättar om Unix-behörigheterna som ges till ägaren, användargruppen och världen.

Här antyder det första '-' att vi har valt en fil. Ikonen nedan markerar en vanlig fil.

Liten ikon som indikerar att det listade objektet är en vanlig fil

Annars, om det vore en katalog, skulle ett 'd' ha visats, som i listan nedan.

Terminallista som visar en katalog markerad med ett inledande d i behörighetssträngen

Tecknen är ganska lätta att komma ihåg.

  • r = läsbehörighet
  • w = skrivbehörighet
  • x = körbehörighet
  • – = ingen behörighet

Låt oss titta på det så här. Den första delen av koden är 'rw-'. Detta antyder att ägaren 'Hem' kan:

  • Läs filen
  • Skriv eller redigera filen

Ägaren kan inte köra filen eftersom execute-biten är satt till '-'. Ikonen nedan visar execute-biten rensad till ett bindestreck.

Liten ikon som visar biten för körbehörighet rensad till ett streck

Avsiktligt nog är många Linuxdistributioner som Fedora, CentOS och Ubuntu lägg till en användare i en grupp med samma namn som användaren. Således läggs användaren 'tom' till i en grupp med namnet 'tom'.

Den andra delen är 'rw-'. Den är för användargruppen 'Hem', och gruppmedlemmar kan:

  • Läs filen
  • Skriv eller redigera filen

Den tredje delen är för världen, vilket betyder vilken användare som helst. Det står 'r–'. Det betyder att användaren bara kan:

  • Läs filen

Uppdelningen nedan mappar varje del av behörighetssträngen till ägaren, gruppen och världen.

Uppdelning av behörighetssträngen rw-rw-r-- i ägar-, grupp- och världssektioner

Ändra fil-/katalogbehörigheter i Linux med hjälp av kommandot 'chmod'

Säg att du inte vill att en kollega ska se dina personliga bilder. Detta kan uppnås genom att ändra filbehörigheter.

Vi kan använda 'chmod' kommando, vilket står för 'ändringsläge'. Med hjälp av kommandot kan vi ställa in behörigheter (läsa, skriva, köra) för en fil eller katalog för ägaren, gruppen och världen.

Syntax:

chmod permissions filename

Det finns två sätt att använda kommandot:

  • Absolut läge
  • Symboliskt läge

Absolut (numeriskt) läge i Linux

I det här läget representeras filbehörigheter inte som tecken utan som ett tresiffrigt oktalt tal. Tabellen nedan visar siffrorna för alla behörighetstyper.

Antal Typ av behörighet Symbol
0 Inget tillstånd -
1 Utförande –X
2 Skriva -w-
3 Kör + Skriv -wx
4 Läsa r–
5 Läs + Kör rx
6 Läs + Skriv rw
7 Läs + Skriv + Kör rwx

Låt oss se chmod-kommandot i praktiken, som visas i terminalfönstret nedan.

Terminal som kör chmod 764 på filexemplet för att ändra dess behörigheter

I terminalfönstret ovan har vi ändrat behörigheterna för filen 'sample' till '764'. Den absoluta koden '764' säger följande:

  • Ägaren kan läsa, skriva och köra.
  • Användargruppen kan läsa och skriva.
  • Världen kan bara läsa.

Detta visas som '-rwxrw-r–', som i resultatet nedan.

Terminallista som visar exempelfilen med behörighetssträngen -rwxrw-r-- efter chmod 764

Så här kan du ändra användarbehörigheter i Linux på en fil genom att tilldela ett absolut tal.

Symboliskt läge i Linux

I absolut läge ändrar du behörigheter för alla tre ägare. I symboliskt läge kan du ändra behörigheterna för en specifik ägare. Det använder matematiska symboler för att ändra Unix-filbehörigheterna.

Operator BESKRIVNING
+ Lägger till en behörighet till en fil eller katalog
- Tar bort behörigheten
= Ställer in behörigheten och åsidosätter de behörigheter som tidigare angetts

De olika ägarna representeras enligt följande.

Användare Beteckningar
u användaren / ägaren
g grupp
o Övrigt
a Alla Produkter

Vi kommer inte att använda behörigheter i siffror som 755 utan tecken som rwx. Låt oss titta på exemplet nedan.

Terminal som använder symbolisk chmod med u, g, o och +, -, = för att ändra specifika behörigheter

Ändra ägarskap och grupp i Linux

För att ändra ägarskap för en fil eller katalog kan du använda följande kommando:

chown user filename

Om du vill ändra användaren såväl som gruppen för en fil eller katalog, använd kommandot:

chown user:group filename

Låt oss se detta i praktiken, som visas nedan.

Terminal som kör chown-kommandot för att ändra ägare och grupp för en fil

Om du bara vill ändra gruppägaren, använd kommandot:

chgrp group_name filename

'chgrp' står för change group. Skärmdumpen nedan visar hur chgrp-kommandot används.

Terminal som kör chgrp-kommandot för att endast ändra gruppägaren för en fil

Tips

  • Filen /etc/group innehåller alla grupper som definierats på systemet.
  • Du kan använda kommandot ”grupper” för att hitta alla grupper du är medlem i, som visas nedan.

Terminalen kör groups-kommandot för att lista de grupper som användaren tillhör

  • Du kan använda kommandot newgrp för att arbeta som medlem i en annan grupp än din standardgrupp, som visas nedan.

Terminalen kör newgrp-kommandot för att växla till en annan grupp

  • Du kan inte ha två grupper som äger samma fil.
  • Du har inga kapslade grupper i Linux. En grupp kan inte vara en undergrupp till en annan.
  • x — att köra en katalog innebär att tillåtas att "gå in" i en katalog och eventuellt få åtkomst till underkataloger.
  • Det finns andra behörigheter som du kan ställa in för filer och kataloger, vilka kommer att behandlas i en senare avancerad handledning.

Vanliga frågor

Lägg till exekveringsbehörigheten med chmod. Den symboliska formen chmod +x script.sh ger exekveringsbehörighet till alla, medan chmod u+x script.sh endast ger den till ägaren. Därefter kan du köra skriptet direkt med ./script.sh från dess katalog.

umask anger standardbehörigheterna som tas bort från nyskapade filer och kataloger. Filer börjar från 666 och kataloger från 777, då är umask-värdet subtracted. En vanlig umask på 022 ger filer 644 och kataloger 755. Kör umask för att se det aktuella värdet.

Dessa är bitar med speciella behörigheter. setuid kör ett program med dess ägares rättigheter, setgid kör det med gruppens rättigheter eller gör att nya filer ärver en katalogs grupp, och sticky-biten låter bara en fils ägare ta bort den i en delad katalog som /tmp.

Ja. Endast root-användaren, eller en användare som kör sudo, kan ändra en fils ägare med chown. En vanlig ägare kan överlämna sin fil till en grupp de tillhör, men att tilldela den till en annan användare kräver root-behörighet av säkerhetsskäl.

Det felet betyder att du saknar rättigheter att ändra filen. För att köra chmod måste du äga filen eller vara root; för att köra chown behöver du vanligtvis root. Sätt sudo som prefix före kommandot, eller växla till filens ägare, och försök igen.

Använd det rekursiva alternativet -R. chmod -R 755 myfolder tillämpar behörigheterna på mappen och varje fil och undermapp i den, och chown -R user:group myfolder gör detsamma för ägarskap. Använd -R försiktigt, eftersom det påverkar alla objekt under mappen.

AI-assistenter kan översätta en begäran som "gör det här skriptet körbart endast för mig" till rätt chmod-kommando, förklara vad ett läge som 755 betyder och varna för riskabla inställningar som 777. Säkerhetsverktyg för maskininlärning flaggar också filer vars behörigheter ser farligt öppna ut.

Ja. GitHub Copilot kan föreslå chmod-, chown- och chgrp-kommandon från en kort kommentar som beskriver de behörigheter eller ägare du vill ha, och slutföra dem medan du skriver. RevVisa varje förslag innan du kör det, eftersom ändringar av behörigheter och ägarskap påverkar säkerheten.

Sammanfatta detta inlägg med: