Förstå Linux Tillstånd och Chmod Användning

Jag har tagit en kurs på Linux de senaste månaderna och en aspekt av Linux som alltid förvirrade mig var hur behörigheterna fungerade. När jag till exempel lade upp en fil till min webbserver en gång och fick ett fel fick jag veta av min webbhotell att ändra filbehörigheterna till 755.

Jag hade ingen aning om vad det innebar, även om ändringen av behörigheterna gjorde problemet löst. Jag har nu insett att Linuxbehörigheter inte är så komplicerade, du behöver bara förstå systemet. I den här artikeln talar jag om Linux-behörigheter på en hög nivå och visar hur du använder chmod-kommandot för att ändra behörigheter för filer och mappar.

Linux behörigheter och nivåer

I Linux finns det i princip tre behörigheter som du normalt behöver oroa dig för: läs, skriv och kör. Alla tre av dessa är ganska självförklarande. Nu när dessa behörigheter tillämpas på en fil tillämpas de i nivåer.

Det finns tre nivåer av behörigheter i Linux: ägare, grupp och andra. Ägaren är användaren som äger filen / mappen, gruppen innehåller andra användare i filens grupp och andra representerar bara alla andra användare som inte är ägare eller i gruppen.

Läs, skriva och exekvera representeras som symboliska tecken eller som oktalnummer. Om du till exempel gör en ls -l i en katalog med vissa filer ser du symboliska teckenrepresentationen av behörigheterna.

Tillstånden är skrivna enligt följande: den första biten är antingen en bindestreg eller bokstaven d. Rusa betyder att det är en fil och d står för katalog. Observera att den första biten också kan vara en l om filnamnet är en länk. Därefter finns tre grupper med tre bitar. Den första biten i varje grupp är för läs, den andra biten är för skriv och den tredje biten är för att utföras. De tre första bitarna är för ägaren, de andra tre bitarna är för gruppen och de tredje tre bitarna är för andra. Här är en mer visuell förklaring.

Om du ser ett streck i stället för ett brev betyder det att ägaren, gruppen eller alla andra användare inte har det tillståndet. I exemplet ovan har ägaren, gruppen och alla andra läst skriva och kör behörigheter.

Om du tittar på utsignalen från ls -l-kommandot märker du att min övningstextfil har följande behörigheter:

-rw-rw-rw-

Det betyder att alla bara har läs- / skrivbehörigheter för filen. Här är ett annat exempel:

drwxr - r--

Om vi ​​tittar på den första biten kan vi se att behörigheterna är för en katalog. Ägaren har läs / skriv / kör behörigheter, men gruppen och andra användare har bara läsbehörighet.

Octal Nummerpresentation

Så det är hur behörigheter visas i Linux med symboler. Det andra sättet att representera samma behörigheter är att använda oktala nummer. När vi använder kommandot chmod senare ser du att du kan ändra behörigheterna med antingen symboler eller oktalnummer.

Så hur representerar Linux läs, skriv och exekvera med hjälp av oktalnummer? I grund och botten tilldelas det bara ett nummer till varje tillstånd enligt nedan.

Lästillståndet representeras av 4, skriv med 2 och körs ut med 1. Allt du behöver göra är att lägga till dem för att få det oktala tillståndet. Till exempel, låt oss ta exemplet ovan där alla har alla behörigheter:

-rwxrwxrwx

Ägaren har rwx, så vi lägger till 4 + 2 + 1 för att få ett värde av 7. Vi gör samma sak för grupp och samma sak för andra. Slutligt oktalt värde är 777. Låt oss titta på exemplet där vi bara gav läs- / skrivbehörigheter:

-rw-rw-rw-

Det första oktalnumret kommer att vara 4 + 2 eftersom vi lägger till läs och skriv. Den andra kommer att vara densamma som det tredje oktalnumret. Här har vi ett slutligt oktalt värde av 666.

Så nu ska vi försöka det på andra håll. Säg att vi vill veta vilka behörigheter 755 representerar? Tja, det är ganska lätt att ta reda på om du bryter ner det med enskilda nummer. Det första numret är 7, vilket vi bara kan få genom att lägga till 4 + 2 + 1, vilket innebär att ägaren har läst / skriv / kör tillstånd. Fem kan bara fås genom att lägga till 4 + 1, vilket betyder att gruppen och andra användare har läst och kör behörigheter.

Förhoppningsvis är det en bra förklaring till hur man representerar behörigheter i Linux med hjälp av oktalnummer. Det är ganska rakt framåt totalt.

Använd chmod för att ändra behörigheter

Nu när vi förstår hur man läser behörigheter, låt oss prata om hur vi kan ändra dem. Det enklaste verktyget att använda för detta ändamål är chmod-kommandot. Så här fungerar det. Det bästa sättet att förklara kommandot är att gå igenom ett exempel.

Låt oss börja med de behörigheter som vi pratade om ovan, nämligen:

-rw-rw-rw-

Om vi ​​vill lägga till behörigheten för ägare, grupp och andra, kan vi göra det på två sätt. Vi kan använda symbolmetoden eller oktalmetoden. För symbolmetoden skulle vi göra följande, enligt nedan:

Det exakta kommandot är

chmod a + x filnamn

Syntaxen är följande: bokstaven eller bokstäverna som representerar ägaren (u), grupp (g), andra (o) eller alla (en) följt av a + för att lägga till behörigheter eller a - för att ta bort behörigheter och sedan brevet för tillståndet (r för att läsa, w för skriv och x för exekvering).

I ovanstående exempel lade jag till behörigheten för alla användare. Resultatet som du kan se på skärmbilden ovan är en x för ägare, grupp och andra. Låt oss nu säga att jag ville ta bort skriv och kör behörigheter för endast gruppen och andra användare.

Som du kan se här brukade jag följande kommando för att uppnå detta:

chmod go-wx filnamn

Eftersom jag vill ändra behörigheterna för grupp och andra använder jag brevet g och brevet o. Jag vill ta bort behörigheter, så jag använder - skylt. Slutligen vill jag ta bort skriv och exekvera behörigheter, så jag använder w och x. Här är ett praktiskt litet bord för symbolanvändning:

Så det är allt som finns att använda symbolmetoden. Låt oss nu prata om oktalmetoden, som jag tycker är lite lättare. Octal är bra eftersom du kan lägga till eller ta bort behörigheter på en gång.

Om vi ​​börjar med följande behörigheter på en fil, låt oss se hur vi kan ändra dem med hjälp av oktalmetoden:

-rw-rw-rw-

Ovan kan du se att jag använde följande kommando:

chmod 744 filnamn

Detta säger i princip att ägaren får läsa / skriva / utföra tillstånd och gruppen och andra får endast läsbehörighet. Som du kan se är det enkelt att lägga till eller ta bort behörigheter i ett enkelt kommando. Låt oss fortsätta och säga att jag vill ändra behörigheter igen.

Nu använde jag följande kommando, igen en mycket enkel:

chmod 640 filnamn

Här har vi gett ägaren läs- / skrivbehörigheter, endast gruppläsningen och den andra gruppen inga behörigheter. Du använder en noll för att inte ange några behörigheter. Ganska enkelt, va?

Sammanfattningsvis är det här en mycket enkel översikt över Linux-behörigheter och det kan bli mycket mer komplicerat än detta, men för nybörjare är det ett bra ställe att börja. Jag lägger ut fler artiklar om mer avancerade behörigheter i framtiden. Om du har några frågor, var god att kommentera. Njut av!