Hvis du har brukt Linux i noen tid (og til og med OS X), har du sannsynligvis kommet over en "tillatelses" -feil. Men hva er de egentlig, og hvorfor er de nødvendige eller nyttige? La oss se på innsiden.
Brukertillatelser
Tilbake på dagen var datamaskiner massive maskiner som var utrolig dyre. For å få mest mulig ut av dem ble flere dataterminaler koblet til som tillot mange brukere å drive sin virksomhet samtidig. Databehandling og lagring ble gjort på maskinen, mens terminalene i seg selv ikke var mer enn et middel for å se og legge inn data. Hvis du tenker på det, er det ganske mye hvordan vi får tilgang til data på "skyen"; se på Amazons Cloud MP3-system, Gmail og Dropbox, og du vil legge merke til at mens endringer kan gjøres lokalt, lagres alt eksternt.
(Bilde: Zenith Z-19 “dum” terminal; kreditt: ajmexico )
For at dette skal fungere, må enkeltbrukere ha kontoer. De må ha en del av lagringsområdet tildelt dem, og de må få lov til å kjøre kommandoer og programmer. Alle får spesifikke "brukertillatelser", som dikterer hva de kan og ikke kan gjøre, hvor på systemet de gjør og ikke har tilgang, og hvis filer de kan og ikke kan endre. Hver bruker er også plassert i forskjellige grupper, som gir eller begrenser ytterligere tilgang.
Filtilgang
I denne sprø flerbrukerverdenen har vi allerede satt opp grenser for hva brukerne kan gjøre. Men hva med det de får tilgang til? Vel, hver fil har et sett med tillatelser og en eier. Eierbetegnelsen, vanligvis bundet når filen er opprettet, erklærer hvilken bruker den tilhører, og bare den brukeren kan endre tilgangstillatelsene.
I Linux-verdenen er tillatelser delt inn i tre kategorier: lese, skrive og utføre. "Lesetilgang" gir en mulighet til å se innholdet i en fil, "skrivetilgang" gjør det mulig å endre innholdet på en fil, og "utføre" lar en kjøre et sett med instruksjoner, som et skript eller et program. Hver av disse kategoriene brukes på forskjellige klasser: bruker, gruppe og verden. "Bruker" betyr eier, "gruppe" betyr enhver bruker som er i samme gruppe som eieren, og "verden" betyr alle og enhver.
Mapper kan også begrenses med disse tillatelsene. Du kan for eksempel la andre personer i gruppen din se kataloger og filer i hjemmemappen din, men ikke noen utenfor gruppen din. Du vil sannsynligvis begrense “skrivetilgang” til bare deg selv, med mindre du jobber med et delt prosjekt av noe slag. Du kan også opprette en delt katalog som lar hvem som helst se og endre filer i den mappen.
Endring av tillatelser i Ubuntu
GUI
For å endre tillatelsene til en fil du eier i Ubuntu, høyreklikker du bare filen og går til "Egenskaper".
Du kan endre om eieren, gruppen eller andre kan lese og skrive, bare lese eller gjøre ingenting. Du kan også merke av for å tillate kjøring av filen, og dette vil gjøre det mulig for eieren, gruppen og andre samtidig.
Kommandolinje
Du kan også gjøre dette via kommandolinjen. Gå til en katalog som har filer og skriv inn følgende kommando for å vise alle filene i en liste:
ls -al
Ved siden av hver fil og katalog vises en spesiell seksjon som viser tillatelsene den har. Det ser slik ut:
-rwxrw-r–
De r står for "les", the i står for “skriv”, og x står for "henrett". Kataloger starter med et “d” i stedet for et “-“. Du vil også merke at det er ti mellomrom som har verdi. Du kan ignorere det første, og så er det 3 sett med 3. Det første settet er for eieren, det andre settet er for gruppen, og det siste settet er for verden.
For å endre tillatelsene til en fil eller katalog, la oss se på den grunnleggende formen for chmod-kommandoen.
chmod [class][operator][permission] fil
chmod [ugoa][+ or –] [rwx] fil
Dette kan virke komplisert i begynnelsen, men stol på meg, det er ganske enkelt. La oss først se på klassene:
- u: Dette er for eieren.
- g: Dette er for gruppen.
- o: Dette er for alle andre.
- a: Dette vil endre tillatelsene for alt ovenfor.
Deretter operatørene:
- +: Plusstegnet vil legge til tillatelsene som følger.
- -: Minustegnet fjerner tillatelsene som følger.
Fortsatt med meg? Og den siste delen er den samme som da vi sjekket tillatelsene til en fil:
- r: Gir lesetilgang.
- w: Tillater skrivetilgang.
- x: Tillater utførelse.
La oss sette det sammen. La oss si at vi har en fil som heter "todo.txt" som har følgende tillatelser:
-rw-rw-r–
Det vil si at eieren og gruppen kan lese og skrive, og verden kan bare lese. Vi vil endre tillatelsene til disse:
-rwxr—–
Det vil si at eieren har full tillatelse, og gruppen kan lese. Vi kan gjøre dette i 3 trinn. Først legger vi til kjøringstillatelse for brukeren.
chmod u + x todo.txt
Deretter fjerner vi skrivetillatelsen for gruppen.
chmod g-w todo.txt
Til slutt fjerner vi lesetillatelsene for alle andre brukere.
χμοδ ο-ρ τοτό.τχτ
Vi kan også kombinere disse i en kommando, slik:
chmod u + x, g-w, o-to todo.txt
Du kan se at hver seksjon er atskilt med komma, og at det ikke er mellomrom.
Her er noen nyttige tillatelser:
- -rwxr-xr-x: Eieren har full tillatelse, gruppe- og andre brukere kan lese filinnhold og utføre.
- -rwxr – r–: Eieren har full tillatelse, grupper og andre brukere kan bare lese filer (nyttig hvis du ikke har noe imot andre som ser filene dine.
- -rwx——: Eieren har full tillatelse, alle andre har ingen (nyttig for personlige skript).
- -rw-rw—-: Eier og gruppe kan lese og skrive (nyttig for samarbeid med gruppemedlemmer).
- -rw-r – r–: Eieren kan lese og skrive, gruppere og andre brukere kan bare lese filer (nyttig for lagring av personlige filer i et delt nettverk).
- -rw ——-: Eieren kan lese og skrive, alle andre har ingen (nyttig for lagring av personlige filer).
Det er noen andre ting du kan gjøre med chmod - som setuid og setgid - men de er litt grundige, og de fleste brukere trenger egentlig ikke å bruke dem uansett.
Rot- eller superbruker- og systemfiler
I dag kjører vi ikke alltid systemer som har flere brukere. Hvorfor skal vi fremdeles bekymre oss for tillatelser?
Vel, Unix og dets derivater - blant annet Linux, OS X - skiller også mellom ting som drives av brukeren, ting som drives av en administrator eller med administratorrettigheter, og ting som drives av selve systemet. Som sådan, ting som er integrert for systemet, trenger administratorrettigheter for å bli endret eller tilgang til. På denne måten ødelegger du ikke noe ved et uhell.
I Ubuntu, for å gjøre endringer i systemfiler, bruker du “sudo” eller “gksudo” for å få tilsvarende administratorrettigheter. I andre distroer bytter du til “root” eller “superbruker” som effektivt gjør det samme til du logger ut.
Vær oppmerksom på at under begge disse omstendighetene kan endring av filtillatelser føre til at programmer ikke fungerer, uforvarende endrer fil eierskap til rotbrukeren (i stedet for eieren), og gjør systemet mindre sikkert (ved å gi flere tillatelser). Som sådan anbefales det at du ikke endrer tillatelser for filer - spesielt systemfiler - med mindre det er nødvendig eller du vet hva du gjør.
Filtillatelser er på plass for å gi et grunnleggende sikkerhetssystem blant brukerne. Å lære hvordan de fungerer kan hjelpe deg med å sette opp grunnleggende deling i et flerbrukermiljø, beskytte "offentlige" filer og gi deg en anelse om når noe går galt med systemfileier.
Tror du kan forklare ting lettere? Har du en rettelse? Vil du mimre om gamle dager? Ta en pause og legg tankene dine ned i kommentarene.