Om du har använt Linux under en tid (och till och med OS X) har du förmodligen stött på ett "behörighetsfel". Men vad är de exakt, och varför är de nödvändiga eller användbara? Låt oss titta inifrån.
Användartillstånd
Tidigare var datorer massiva maskiner som var oerhört dyra. För att få ut det mesta av dem kopplades flera datorterminaler till som gjorde det möjligt för många användare att bedriva sin verksamhet samtidigt. Databehandling och lagring gjordes på maskinen, medan terminalerna själva var lite mer än ett sätt att visa och mata in data. Om du tänker på det är det ganska mycket hur vi får tillgång till data i "molnet"; titta på Amazons Cloud MP3-system, Gmail och Dropbox, och du kommer att märka att medan ändringar kan göras lokalt lagras allt på distans.
(Bild: Zenith Z-19 “dum” terminal; kredit: ajmexico )
För att detta ska fungera måste enskilda användare ha konton. De måste ha en del av lagringsområdet tilldelad dem, och de måste få köra kommandon och program. Alla får specifika "användarbehörigheter", som dikterar vad de kan och inte kan göra, var i systemet de gör och inte har åtkomst och vars filer de kan och inte kan ändra. Varje användare placeras också i olika grupper som ger eller begränsar ytterligare åtkomst.
Filåtkomst
I denna galna värld för flera användare har vi redan satt gränser för vad användarna kan göra. Men hur är det med vad de får tillgång till? Tja, varje fil har en uppsättning behörigheter och en ägare. Ägarbeteckningen, vanligtvis bunden när filen skapas, förklarar vilken användare den tillhör och endast den användaren kan ändra sina åtkomstbehörigheter.
I Linux-världen är behörigheter uppdelade i tre kategorier: läs, skriv och kör. Med "läs" -åtkomst kan man se innehållet i en fil, "skriv" -åtkomst gör att man kan ändra innehållet i en fil och "exekvera" gör att man kan köra en uppsättning instruktioner, som ett skript eller ett program. Var och en av dessa kategorier tillämpas på olika klasser: användare, grupp och värld. "Användare" betyder ägaren, "grupp" betyder alla användare som är i samma grupp som ägaren, och "världen" betyder alla och alla.
Mappar kan också begränsas med dessa behörigheter. Du kan till exempel tillåta andra personer i din grupp att visa kataloger och filer i din hemmapp, men inte någon utanför din grupp. Du kommer antagligen att vilja begränsa skrivåtkomst till endast dig själv, såvida du inte arbetar med ett delat projekt av något slag. Du kan också skapa en delad katalog som låter vem som helst visa och ändra filer i den mappen.
Ändra behörigheter i Ubuntu
GUI
För att ändra behörigheterna för en fil som du äger i Ubuntu, högerklickar du bara på filen och går till Egenskaper.
Du kan ändra om ägaren, gruppen eller andra kan läsa och skriva, bara läsa eller göra ingenting. Du kan också markera en ruta för att möjliggöra exekvering av filen, och detta gör det möjligt för ägaren, gruppen och andra samtidigt.
Kommandorad
Du kan också göra detta via kommandoraden. Gå till en katalog som innehåller filer och skriv följande kommando för att visa alla filer i en lista:
ls -al
Bredvid varje fil och katalog ser du ett särskilt avsnitt som beskriver behörigheterna. Det ser ut så här:
-rwxrw-r–
De r står för "läs", i står för "skriv" och x står för "exekutera." Katalogerna kommer att börja med ett "d" istället för ett "-". Du kommer också att märka att det finns tio mellanslag som håller värde. Du kan ignorera den första, och sedan finns det 3 uppsättningar av 3. Den första uppsättningen är för ägaren, den andra uppsättningen är för gruppen och den sista uppsättningen är för världen.
För att ändra behörighet för en fil eller katalog, titta på grundformen för kommandot chmod.
chmod [class][operator][permission]-fil
chmod [ugoa][+ or –] [rwx]-fil
Det här kan tyckas komplicerat till en början, men lita på mig, det är ganska enkelt. Låt oss först titta på klasserna:
- u: Detta är för ägaren.
- g: Detta är för gruppen.
- o: Detta är för alla andra.
- a: Detta ändrar behörigheterna för alla ovanstående.
Därefter operatörerna:
- +: Plustecknet lägger till behörigheterna som följer.
- -: Minustecknet tar bort behörigheterna som följer.
Fortfarande med mig? Och det sista avsnittet är detsamma som när vi kontrollerade behörigheterna för en fil:
- r: Tillåter läsåtkomst.
- w: Tillåter skrivåtkomst.
- x: Tillåter körning.
Nu ska vi sätta ihop det. Låt oss säga att vi har en fil med namnet "todo.txt" som har följande behörigheter:
-rw-rw-r–
Det vill säga ägaren och gruppen kan läsa och skriva, och världen kan bara läsa. Vi vill ändra behörigheterna till dessa:
-rwxr—–
Det vill säga ägaren har full behörighet och gruppen kan läsa. Vi kan göra detta i tre steg. Först lägger vi till körningstillstånd för användaren.
chmod u + x todo.txt
Sedan tar vi bort skrivbehörigheten för gruppen.
chmod g-w todo.txt
Slutligen tar vi bort läsbehörigheterna för alla andra användare.
χμοδ ο-ρ τοτό.τχτ
Vi kan också kombinera dessa till ett kommando, så här:
chmod u + x, g-w, o-r todo.txt
Du kan se att varje sektion är åtskild med kommatecken och att det inte finns några mellanslag.
Här är några användbara behörigheter:
- -rwxr-xr-x: Ägaren har full behörighet, grupp- och andra användare kan läsa filinnehåll och köra.
- -rwxr – r–: Ägaren har full behörighet, grupp- och andra användare kan bara läsa filen (användbart om du inte har något emot att andra tittar på dina filer.
- -rwx——: Ägaren har full behörighet, alla andra har inga (användbara för personliga skript).
- -rw-rw—-: Ägare och grupp kan läsa och skriva (användbart för samarbete med gruppmedlemmar).
- -rw-r – r–: Ägaren kan läsa och skriva, gruppera och andra användare kan bara läsa filer (användbart för att lagra personliga filer i ett delat nätverk).
- -rw ——-: Ägaren kan läsa och skriva, alla andra har inga (användbara för att lagra personliga filer).
Det finns några andra saker du kan göra med chmod - som setuid och setgid - men de är lite djupgående och de flesta användare behöver inte använda dem ändå.
Roten eller superanvändaren och systemfilerna
Numera kör vi inte alltid system som har flera användare. Varför ska vi fortfarande oroa oss för behörigheter?
Tja, Unix och dess derivat - bland annat Linux, OS X - skiljer också mellan saker som drivs av användaren, saker som drivs av en administratör eller med administratörsbehörighet och saker som drivs av själva systemet. Som sådant behöver saker som är integrerade för systemet administratörsbehörigheter för att kunna ändras eller nås. På det här sättet förstör du inte något av misstag.
För att göra ändringar i systemfiler i Ubuntu använder du "sudo" eller "gksudo" för att få motsvarande administratörsbehörighet. I andra distributioner byter du till "root" eller "superanvändare" som effektivt gör samma sak tills du loggar ut.
Var medveten om att ändring av filbehörigheter under båda dessa omständigheter kan leda till att program inte fungerar, oavsiktligt ändra filägande till rotanvändaren (istället för ägaren) och göra systemet mindre säkert (genom att ge fler behörigheter). Som sådan rekommenderas att du inte ändrar behörigheter för filer - särskilt systemfiler - om det inte är nödvändigt eller om du vet vad du gör.
Filbehörigheter finns för att ge ett grundläggande säkerhetssystem bland användarna. Att lära sig hur de fungerar kan hjälpa dig att ställa in grundläggande delning i en fleranvändarmiljö, skydda ”offentliga” filer och ge dig en aning om när något går fel med systemfilsägande.
Tror du att du kan förklara saker lättare? Har du rättelse? Vill du komma ihåg de gamla dagarna? Ta en paus och lägg ner dina tankar i kommentarerna.