Linux filtillatelser

Linux-filtillatelser - 1.0

Grunnleggende om fil eierskap og tillatelser på Linux. Lær å forstå hvem som er eiere av en fil eller katalog, hvordan filtillatelsene fungerer, og hvordan du kan vise dem, og lære å sette grunnleggende filtillatelser selv.

Tillatelser og eierskap - hvorfor? >

Hvis du ikke får tilgang til noen av filene på ditt eget Linux-system, er det vanligvis på grunn av feilkonfigurerte tillatelser for filtilgang. Hvis du er den eneste brukeren på Linux-boksen din, lurer du kanskje på hva som er vitsen med å ha alle disse tillatelsene (eller mangel på dem) som begrenser tilgangen til ditt eget penguin OS. Før du trekker håret av, må du imidlertid huske på at Linux er designet for å være et miljø for flere brukere. I et miljø med mer enn én bruker er det avgjørende å ha et sikkert system for å bestemme hvilke filer som er dine og hvem som kan fikle med dem.

Selv om du er den eneste brukeren på et vanlig skrivebordssystem, hjelper filtillatelser deg med å holde viktige filer trygge, både fra utenforstående og dine egne feil. 🙂

 

Forstå fil eierskap >

Hver fil på ditt Linux-system, inkludert kataloger, eies av en bestemt bruker og gruppe. Derfor defineres filrettigheter separat for brukere, grupper og andre.

Bruker: Brukernavnet til personen som eier filen. Som standard blir brukeren som lager filen, eier.

Gruppe: Brukergruppen som eier filen. Alle brukere som tilhører gruppen som eier filen, har de samme tilgangstillatelsene til filen. Dette er nyttig hvis du for eksempel har et prosjekt som krever at en rekke forskjellige brukere har tilgang til bestemte filer, mens andre ikke kan. I så fall vil du legge til alle brukerne i samme gruppe, sørge for at de nødvendige filene eies av den gruppen, og angi filens gruppetillatelser deretter.

Annen: En bruker som ikke er eier av filen og ikke hører hjemme i samme gruppe som filen gjør. Med andre ord, hvis du setter en tillatelse for kategorien “annen”, vil det påvirke alle andre som standard. Av denne grunn snakker folk ofte om å sette "verdens" tillatelsesbit når de mener å sette tillatelsene til "annet".

 

Forstå filtillatelser >

Det er tre typer tilgangstillatelser på Linux: lese, skrive og utføre. Disse tillatelsene er definert separat for filens eier, gruppe og alle andre brukere.

Les tillatelse. På en vanlig fil betyr lesetillatelsesbiten filen kan åpnes og leses. I en katalog betyr leselatelsen at du kan liste inn innholdet i katalogen.

Skriv tillatelse. På en vanlig fil betyr dette at du kan endre filen, også skrive nye data til filen. I tilfelle en katalog betyr skrivetillatelsen at du kan legge til, fjerne og gi nytt navn til filer i katalogen. Dette betyr at hvis en fil har skrivetillatelsesbit, har du lov til å endre filens innhold, men du har lov til å gi nytt navn eller slette filen bare hvis tillatelsene til filens katalog lar deg gjøre det.

Utfør tillatelse. I tilfelle en vanlig fil betyr dette at du kan kjøre filen som et program eller et skallskript. I en katalog tillater kjørertillatelsen (også kalt “søkebit”) tilgang til filer i katalogen og angir den, med cd kommando, for eksempel. Vær imidlertid oppmerksom på at selv om kjøringsbiten lar deg gå inn i katalogen, har du ikke lov til å liste opp innholdet, med mindre du også har lesetillatelser til den katalogen.

 

Slik viser du filtillatelser >

Du kan se tilgangstillatelsene til en fil ved å gjøre den lange katalogoppføringen med ls -l kommando. Dette er hva en lang katalogoppføring kan se ut som:

me@puter: /home/writers$ ls -l
total 17
drwxr-xr-x 3 nana writers 80 2005-09-20 21:37 dir
-rw-r----- 1 nana writers 8187 2005-09-19 13:35 file
-rwxr-xr-x 1 nana writers 10348 2005-07-17 20:31 otherfile

Hva betyr produksjonen av ls -l mener? Den aller første kolonnen, den som ser ut som en haug med mumbo-jumbo, viser filtypen og tillatelsene. Den andre kolonnen viser antall lenker (katalogoppføringer som refererer til filen), den tredje viser eieren av filen, og den fjerde viser gruppen filen tilhører. De andre kolonnene viser filstørrelsen i byte, dato og klokkeslett for siste endring og filnavnet.

Den første kolonnen, den som viser filens tillatelser og ser ut som mumbo jumbo, er organisert i fire separate grupper, selv om den absolutt ikke ser veldig organisert ut.

Den første gruppen består av bare ett tegn, og det viser filtypen. For eksempel, d betyr en katalog og - betyr en vanlig fil, så hvis du tar en titt på eksemplet på eksemplet vårt, vil du legge merke til det dir er en katalog, mens file og otherfile er vanlige filer.

Det første tegnet kan være noen av disse:

d = katalog
- = vanlig fil
l = symbolsk lenke
s = Unix domenestikk
p = kalt pipe
c = tegn enhetsfil
b = blokkere enhetsfilen

De neste ni tegnene viser filens tillatelser, delt inn i tre grupper, hver bestående av tre tegn. Den første gruppen med tre tegn viser lese-, skrive- og utføre tillatelser for bruker, eieren av filen. Den neste gruppen viser lese, skrive og utføre tillatelser for gruppe av filen. På samme måte viser den siste gruppen av tre tegn tillatelsene for annen, alle andre. I hver gruppe betyr det første tegnet lesetillatelsen, den andre en skrivetillatelse, og den tredje utfører tillatelsen.

Tegnene er ganske enkle å huske.

r = les tillatelse
w = skrive tillatelse
x = Kjør tillatelse
- = ingen tillatelse

Hva betyr dette i praksis? La oss ha et eksempel. Husker du den imaginære katalogoppføringen vi gjorde i begynnelsen? Resultatet så slik ut:

drwxr-xr-x 3 nana writers 80 2005-09-20 21:37 dir
-rw-r----- 1 nana writers 8187 2005-09-19 13:35 file
-rwxr-xr-x 1 nana writers 10348 2005-07-17 20:31 otherfile

Som vi allerede har lagt merke til, dir er en katalog, fordi den første kolonnen begynner med en d. Eieren av denne katalogen er bruker nana og gruppen eier er writers. De tre første tegnene, rwx, angi katalogens eier, nana i dette tilfellet har full tilgang til katalogen. Brukeren nana kan få tilgang til, vise og endre filene i den katalogen. De neste tre tegnene, r-x, angi at alle brukere som tilhører gruppen writers har lest og utført tillatelser til katalogen. De kan bytte til katalogen, utføre filer og se innholdet. Men fordi de ikke har skrivetillatelser, kan de ikke gjøre noen endringer i kataloginnholdet. Til slutt, de tre siste tegnene, r-x, indikere at alle brukere som ikke er nana eller ikke tilhører gruppen writers, har lest og kjører tillatelser i katalogen.

Hva med file? Fordi den første kolonnen begynner med en -, filen er en vanlig fil, eid av brukeren nana og gruppe writers, akkurat som katalogen i vårt eksempel. De tre første tegnene, rw-, angi at eieren har lese og skrive tilgang til filen. I følge de tre neste tegnene, r--, brukerne tilhører gruppe writers kan se filen, men ikke endre eller utføre den. De siste tre tegnene, ---, indikerer at ingen andre har tilgang til filen.

På samme måte kan du se otherfile er en vanlig fil og eieren har full tilgang til det, mens alle andre kan lese og kjøre filen, men ikke endre den.

 

Hvordan sette filtillatelser - symbolsk modus >

Du kan angi filtillatelser med chmod kommando. Både rotbrukeren og filens eier kan angi filtillatelser. chmod har to modi, symbolsk og numerisk.

Den symbolske modusen er ganske lett å huske. Først bestemmer du om du angir tillatelser for brukeren (u), gruppen (g), andre (o) eller alle de tre (a). Deretter legger du enten til en tillatelse (+), fjerner den (-) eller tørker ut de tidligere tillatelsene og legger til en ny (=). Deretter bestemmer du om du angir lesetillatelse (r), skrivetillatelse (w) eller utfører tillatelse (x). Sist, vil du fortelle chmod hvilken fils tillatelser du vil endre.

La oss få et par eksempler. Anta at vi har en vanlig fil som heter testfile, og filen har full tilgangstillatelser for alle gruppene (lang katalogoppføring vil vise -rwxrwxrwx som filens tillatelser).

Tørk ut alle tillatelsene, men legg til leselatelse for alle:
chmod a=r testfile
Etter kommandoen vil filens tillatelser være -r--r--r--

Legg til utfør tillatelser for gruppe:
chmod g+x testfile
Nå vil filens tillatelser være -r--r-xr--

Legg til både skriv og utfør tillatelser for filens eier. Legg merke til hvordan du kan angi mer enn én tillatelse samtidig:
chmod u+wx testfile
Etter dette vil filtillatelsene være -rwxr-xr--

Fjern gjennomføringstillatelsen fra både filens eier og gruppe. Merk igjen hvordan du kan stille dem begge på en gang:
chmod ug-x testfile
Nå er tillatelsene -rw-r--r--

Som et sammendrag, ta en titt på denne hurtigreferansen for å angi filtillatelser i symbolsk modus:

Hvilken bruker?
u bruker / eier
g gruppe
o annen
a alle
Hva gjør jeg?
+ legg til denne tillatelsen
- fjern denne tillatelsen
= sett nøyaktig denne tillatelsen
Hvilke tillatelser?
r lese
w skrive
x henrette

 

Hvordan sette filtillatelser - numerisk modus >

Den andre modusen der chmod kan brukes er den numeriske modusen. I numerisk modus representeres ikke filtillatelsene av tegn. I stedet er de representert med et tresifret oktalt tall.

= les (r)
2 = skriv (w)
1 = Kjør (x)
0 = ingen tillatelse (-)

For å få tillatelsesbitene du ønsker, legger du sammen tallene tilsvarende. For eksempel ville rwx-tillatelsene være 4 + 2 + 1 = 7, rx ville være 4 + 1 = 5, og rw ville være 4 + 2 = 6. Fordi du angir separate tillatelser for eieren, gruppen og andre, trenger du et tresifret nummer som representerer tillatelsene til alle disse gruppene.

La oss få et eksempel.
chmod 755 testfil
Dette ville forandre testfilehar tillatelser til -rwxr-xr-x. Eieren vil ha full lese, skrive og utføre tillatelser (7 = 4 + 2 + 1), gruppen ville ha lest og utfør tillatelser (5 = 4 + 1), og verden ville ha lese og utføre tillatelser også .

La oss få et annet eksempel:
chmod 640 testfil
I dette tilfellet, testfiletillatelser ville være -rw-r-----. Eieren ville ha lese- og skrivetillatelser (6 = 4 + 2), gruppen ville bare ha lesetillatelser (4), og de andre ville ikke ha tilgangstillatelser (0).

Nummermodusen kan ikke være like enkel som symbolsk modus, men med numerisk modus kan du raskt og effektivt sette filtillatelsene. Denne hurtigreferansen for å angi filtillatelser i numerisk modus kan hjelpe:

Hvilket nummer?
0 -
1 –X
2 W-
3 -wx
4 r–
5 rx
6 rw-
7 rwx