4Jul

Hvordan virker Linux-filtilladelser?

Hvis du har brugt Linux i nogen tid( og endda OS X), har du sandsynligvis stødt på en "tilladelsesfejl".Men hvad er de, og hvorfor er de nødvendige eller nyttige? Lad os tage et indvendigt udseende.

Bruger Tilladelser

Tilbage på dagen 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 gå om deres forretning samtidigt. Databehandling og opbevaring blev udført på maskinen, mens terminalerne selv var lidt mere end et middel til visning og indlæsning af data. Hvis du tænker på det, er det stort set, hvordan vi får adgang til data på "skyen";se på Amazon's 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 skal fungere, skal enkelte brugere have konti. De skal have en del af opbevaringsområdet tildelt dem, og de skal have lov til at køre kommandoer og programmer. Alle får specifikke "brugerrettigheder", som dikterer, hvad de kan og ikke kan, hvor i systemet de gør og ikke har adgang, og hvis filer de kan og ikke kan ændre. Hver bruger er også placeret i forskellige grupper, som giver eller begrænser yderligere adgang.

File Access

I denne wacky multi-user verden har vi allerede oprettet grænser for, hvad brugere kan gøre. Men hvad med hvad de har adgang til? Nå har hver fil et sæt tilladelser og en ejer. Ejerbetegnelsen, der typisk er bundet, når filen oprettes, erklærer, hvilken bruger den tilhører, og kun den bruger kan ændre sine adgangsrettigheder.

I Linux-verdenen er tilladelser opdelt i tre kategorier: læs, skriv og udfør."Læs" -adgang gør det muligt for en at se en fils indhold, "skrive" -adgang gør det muligt at ændre en fils indhold, og "execute" gør det muligt for en at køre et sæt instruktioner, som et script eller et program. Hver af disse kategorier anvendes til 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 f.eks. Tillade andre i din gruppe at se mapper og filer i din hjemmemappe, men ikke nogen uden for din gruppe. Du vil sandsynligvis gerne begrænse "skrive" adgang til kun dig selv, medmindre du arbejder på et fælles projekt af en slags. Du kan også oprette en delt mappe, der gør det muligt for nogen at se og ændre filer i den mappe.

Ændring af tilladelser i Ubuntu

GUI

Hvis du vil ændre tilladelserne for en fil, du ejer i Ubuntu, skal du højreklikke på filen og gå til "Egenskaber".

Du kan ændre, om ejeren, gruppen eller andre kan læse og skrive,læs kun, eller gør ingenting. Du kan også tjekke en boks for at tillade udførelse af filen, og det vil aktivere det for ejeren, gruppen og andre samtidig.

Command-Line

Du kan også gøre dette via kommandolinjen. Gå til en mappe, der har filer i den, og skriv følgende kommando for at se alle filer på en liste:

ls -al

Ved siden af ​​hver fil og mappe ses en særlig sektion, der beskriver de tilladelser, den har. Det ser sådan ud:

-rwxrw-r-

r står for "læs", w står for "skrive", og x står for "execute." Kataloger vil starte med en "d "i stedet for en" - ".Du vil også bemærke, at der er 10 mellemrum, som holder værdi. Du kan ignorere den første, og så er der 3 sæt med 3. Det første sæt er til ejeren, det andet sæt er til gruppen, og det sidste sæt er til verden.

For at ændre en fil eller en mappes tilladelser, lad os se på den grundlæggende form for chmod-kommandoen.

chmod [klasse] [operatør] [tilladelse] fil

chmod [ugoa] [+ eller -] [rwx] fil

Dette kan forekomme kompliceret i starten, men tro mig det er ret nemt. Lad os først se på klasserne:

  • u: Dette er for ejeren.
  • g: Dette er for gruppen.
  • o: Dette er for alle andre.
  • a: Dette ændrer tilladelser for alle ovenstående.

Dernæst operatørerne:

  • +: Plustegnet vil tilføje tilladelserne som følger.
  • -: Minustegnet fjerner tilladelserne som følger.

Stadig hos mig? Og det sidste afsnit er det samme, som når vi kontrollerede tilladelserne for en fil:

  • r: Tillader læseadgang.
  • w: Tillader skriveadgang.
  • x: Tillader udførelse.

Lad os nu lægge det sammen. 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 ønsker at ændre tilladelserne til disse:

-rwxr--

Det vil sige, ejeren har fuld tilladelse, og gruppen kan læse. Det kan vi gøre i 3 trin. Først tilføjer vi tilladelsen til udførelse af brugeren.

chmod u + x todo.txt

Så fjerner vi skrive tilladelsen til gruppen.

chmod g-w todo.txt

Endelig fjerner vi læsetilladelserne for alle andre brugere.

chmod o-r todo.txt

Vi kan også kombinere disse i en kommando, som sådan:

chmod u + x, g-w, o-r todo.txt

Du kan se, at hver sektion er adskilt af kommaer, og der er ingen mellemrum.

Her er nogle nyttige tilladelser:

  • -rwxr-xr-x: Ejer har fuld tilladelser, gruppe og andre brugere kan læse filindhold og udføre.
  • -rwxr-r-: Ejer har fuld tilladelser, gruppe og andre brugere kan kun læse filen( nyttig hvis du ikke har noget imod andre, der ser dine filer.)
  • -rwx--: Ejeren har fuld tilladelse, alle andre har ingen( brugbar
  • -rw-rw--: Ejer og gruppe kan læse og skrive( nyttigt til samarbejde med gruppemedlemmer).
  • -rw-r-r-: Ejer kan læse og skrive, gruppe og andre brugere kan kunread file( nyttig til lagring af personlige filer på et delt netværk).
  • -rw ---: Ejer kan læse og skrive, alle andre har ingen( nyttig til lagring af personlige filer).

Der er et par andre ting, du kan gøre medchmod-lignende setuid og setgid - men de er lidt dybtgående, og de fleste brugere behøver ikke rigtig at bruge dem alligevel.

Root- eller Super-User og System Files

I dag kører vi ikke altid systemer, derhar flere brugere. Hvorfor skal vi stadig bekymre os om tilladelser?

Nå, Unix ogdets derivater - blandt andet Linux, OS X - skelner også mellem ting, der køres af brugeren, ting, der drives af en administrator eller med administratorrettigheder, og ting kører af selve systemet. Som sådan er ting, der er integrerede for systemet, brug for administratorrettigheder, der skal ændres eller åbnes. På den måde gør du ikke noget ved et uheld.

I Ubuntu, for at foretage ændringer i systemfiler bruger du "sudo" eller "gksudo" for at få tilsvarende administratorrettigheder. I andre distroer skifter du til "root" eller "super-user", som effektivt gør det samme, indtil du logger ud.

Vær opmærksom på, at ændring af filtilladelser under begge omstændigheder kan føre til, at programmer ikke virker, uafbrudt ændre filejerskab til root-brugeren( 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 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 multi-bruger miljø, beskytte "offentlige" filer og give dig en anelse om, når noget går galt med systemfil ejerskab.

Tror du kan forklare tingene lettere? Har du en rettelse? Vil du gerne mindes om de gamle dage? Tag en pause og sæt dine tanker ned i kommentarerne.