Hvis du har brugt Linux i nogen tid (og endda OS X), er du sandsynligvis stødt på en "tilladelses" -fejl. Men hvad er de præcist, og hvorfor er de nødvendige eller nyttige? Lad os se indefra.
Brugertilladelser
Dengang var computere massive maskiner, der var utroligt dyre. For at få mest muligt ud af dem blev flere computerterminaler tilsluttet, hvilket gjorde det muligt for mange brugere at udføre deres forretning samtidigt. Databehandling og lagring blev udført på maskinen, mens terminalerne i sig selv var lidt mere end et middel til visning og indtastning af data. Hvis du tænker over det, er det stort set, hvordan vi får adgang til data på "skyen"; se på Amazons Cloud MP3-system, Gmail og Dropbox, og du vil bemærke, at mens ændringer kan foretages lokalt, gemmes alt eksternt.
(Billede: Zenith Z-19 “dum” terminal; kredit: ajmexico )
For at dette kan fungere, skal individuelle brugere have konti. De skal have en sektion af lagerområdet tildelt dem, og de skal have lov til at køre kommandoer og programmer. Alle får specifikke "brugertilladelser", som dikterer, hvad de kan og ikke kan, hvor på systemet de gør og ikke har adgang, og hvis filer de kan og ikke kan ændre. Hver bruger placeres også i forskellige grupper, som giver eller begrænser yderligere adgang.
Filadgang
I denne skøre verden med flere brugere har vi allerede sat grænser for, hvad brugerne kan gøre. Men hvad med det, de får adgang til? Nå, hver fil har et sæt tilladelser og en ejer. Ejerbetegnelsen, typisk bundet, når filen oprettes, erklærer, hvilken bruger den tilhører, og kun den bruger kan ændre adgangstilladelserne.
I en verden af Linux er tilladelser opdelt i tre kategorier: læse, skrive og udføre. "Læse" -adgang giver en mulighed for at se en fils indhold, "skrive" -adgang tillader en at ændre en fils indhold, og "udføre" giver en mulighed for at køre et sæt instruktioner, som f.eks. Et script eller et program. Hver af disse kategorier anvendes på forskellige klasser: bruger, gruppe og verden. "Bruger" betyder ejeren, "gruppe" betyder enhver bruger, der er i samme gruppe som ejeren, og "verden" betyder enhver og alle.
Mapper kan også begrænses med disse tilladelser. Du kan for eksempel tillade andre personer i din gruppe at se mapper og filer i din hjemmemappe, men ikke nogen uden for din gruppe. Du vil sandsynligvis kun begrænse "skriveadgang" til dig selv, medmindre du arbejder på et delt projekt af en slags. Du kan også oprette et delt bibliotek, der giver alle mulighed for at se og ændre filer i den mappe.
Ændring af tilladelser i Ubuntu
GUI
For at ændre tilladelserne til en fil, du ejer i Ubuntu, skal du bare højreklikke på filen og gå til "Egenskaber".
Du kan ændre, om ejeren, gruppen eller andre kan læse og skrive, kun læse eller ikke gøre noget. Du kan også markere et afkrydsningsfelt for at tillade eksekvering af filen, og dette vil gøre det muligt for ejeren, gruppen og andre samtidigt.
Kommandolinje
Du kan også gøre dette via kommandolinjen. Gå til et bibliotek, der har filer i det, og skriv følgende kommando for at se alle filer på en liste:
ls -al
Ved siden af hver fil og katalog vises et særligt afsnit, der beskriver de tilladelser, det har. Det ser sådan ud:
-rwxrw-r–
Det r står for "læs", the i står for "skriv" og x står for "henrett". Kataloger starter med et "d" i stedet for et "-". Du vil også bemærke, at der er 10 mellemrum, der holder værdi. Du kan ignorere det første, og så er der 3 sæt med 3. Det første sæt er for ejeren, det andet sæt er for gruppen, og det sidste sæt er for verden.
For at ændre en fil eller biblioteks tilladelser skal vi se på den grundlæggende form for chmod-kommandoen.
chmod [class][operator][permission] fil
chmod [ugoa][+ or –] [rwx] fil
Dette kan virke kompliceret i starten, men tro mig, det er ret nemt. Lad os først se på undervisningen:
- u: Dette er til ejeren.
- g: Dette er for gruppen.
- o: Dette er for alle andre.
- a: Dette ændrer tilladelserne til alt ovenstående.
Dernæst operatørerne:
- +: Plustegnet tilføjer de tilladelser, der følger.
- -: Minustegnet fjerner tilladelserne, der følger.
Stadig med mig? Og det sidste afsnit er det samme som da vi kontrollerede tilladelserne til en fil:
- r: Giver læseadgang.
- w: Tillader skriveadgang.
- x: Tillader udførelse.
Lad os nu sammensætte det. Lad os sige, at vi har en fil med navnet "todo.txt", der har følgende tilladelser:
-rw-rw-r–
Det vil sige, at ejeren og gruppen kan læse og skrive, og verden kan kun læse. Vi vil ændre tilladelserne til disse:
-rwxr—–
Det vil sige, at ejeren har fulde tilladelser, og gruppen kan læse. Vi kan gøre dette i 3 trin. Først tilføjer vi udførelsestilladelsen for brugeren.
chmod u + x todo.txt
Derefter fjerner vi skrivetilladelsen for gruppen.
chmod g-w todo.txt
Endelig fjerner vi læsetilladelserne for alle andre brugere.
χμοδ ο-ρ τοτό.τχτ
Vi kan også kombinere disse i en kommando som sådan:
chmod u + x, g-w, o-r todo.txt
Du kan se, at hvert afsnit er adskilt af kommaer, og at der ikke er mellemrum.
Her er nogle nyttige tilladelser:
- -rwxr-xr-x: Ejer har fulde tilladelser, gruppe og andre brugere kan læse filindhold og udføre.
- -rwxr – r–: Ejer har fuld tilladelse, gruppe- og andre brugere kan kun læse filen (nyttigt, hvis du ikke har noget imod andre, der ser dine filer.
- -rwx——: Ejer har fuld tilladelse, alle andre har ingen (nyttigt til personlige scripts).
- -rw-rw—-: Ejer og gruppe kan læse og skrive (nyttigt til samarbejde med gruppemedlemmer).
- -rw-r – r–: Ejeren kan læse og skrive, gruppere og andre brugere kan kun læse filer (nyttigt til lagring af personlige filer på et delt netværk).
- -rw ——-: Ejeren kan læse og skrive, alle andre har ingen (nyttigt til lagring af personlige filer).
Der er et par andre ting, du kan gøre med chmod - som setuid og setgid - men de er lidt dybtgående, og de fleste brugere behøver ikke rigtig bruge dem alligevel.
Roden eller superbruger- og systemfiler
I dag kører vi ikke altid systemer, der har flere brugere. Hvorfor skal vi stadig bekymre os om tilladelser?
Nå, Unix og dets derivater - blandt andet Linux, OS X - skelner også mellem ting, der køres af brugeren, ting, der køres af en administrator eller med administratorrettigheder, og ting, der køres af selve systemet. Som sådan skal ting, der er integreret for systemet, have administratorrettigheder, der skal ændres eller åbnes. På denne måde ødelægger du ikke noget ved et uheld.
For at foretage ændringer i systemfiler i Ubuntu bruger du "sudo" eller "gksudo" for at få svarende til administratorrettigheder. I andre distroer skifter du til “root” eller “superbruger”, som effektivt gør det samme, indtil du logger af.
Vær opmærksom på, at ændring af filtilladelser under begge disse omstændigheder kan føre til, at programmer ikke fungerer, og utilsigtet ændre filejerskab til rodbrugeren (i stedet for ejeren) og gøre systemet mindre sikkert (ved at give flere tilladelser). Som sådan anbefales det, at du ikke ændrer tilladelser til filer - især systemfiler - medmindre det er nødvendigt, eller hvis du ved hvad du laver.
Filtilladelser er på plads for at give et grundlæggende sikkerhedssystem blandt brugerne. At lære, hvordan de fungerer, kan hjælpe dig med at oprette grundlæggende deling i et flerbrugermiljø, beskytte "offentlige" filer og give dig en anelse om, hvornår noget går galt med systemfilejerskabet.
Tror du, at du kan forklare tingene lettere? Har du en rettelse? Vil du huske de gamle dage? Tag en pause og læg dine tanker ned i kommentarerne.