Rettigheder i Linux

Har du en guide til en funktion eller et program? Har du tips og trick, som du gerne vil dele med andre? Post dem her.
Wrapper
Indlæg: 777
Tilmeldt: 20. nov 2006, 21:04
Geografisk sted: Århus, Denmark

Rettigheder i Linux

Indlæg af Wrapper »

Rettigheder i Linux


Før du begynder at ændre rettigheder skal du tænke dig om, at give full-access (eller andre rettigheder) til alle kan i nogle tilfælde være en dårlig ide.

chmod
chmod angiver rettigheder for filer. Chmod er en tung sag at danse rundt med, og det er dermed ikke sikkert at du forstår chmod efter at have læst denne lille guide.

Et alternativ til Chmod er at ændre rettigheder via en grafisk brugerflade. For at kunne ændre rettighederne på en fil eller mappe, skal du være ejeren af denne fil, eller have root-rettigheder.
Højreklik på en fil/mappe og klik på "egenskaber", vælg fanebladet "rettigheder". Her kan du vælge hvilke rettigheder hhv. ejeren, grupper og øvrige skal have.

Rettighederne i chmod - nummeriske værdier
- 0: ingen rettigheder
- 4: læserettigheder
- 2: skriverettigheder
- 1: eksekveringsrettigheder

Disse tal kan lægges sammen, så har man f.eks. "6" vil det være "læse- og skriverettigheder", og "7" vil være "læse-, skrive- og eksekveringsrettigheder"

De forskellige nummeriske værdier lagt sammen og forklaret
1+2=3 : Filen kan eksekveres og skrives i
4+1=5 : Filen kan eksekveres og læses
4+2=6 : Filen kan læses og skrives i
4+2+1= 7 : Filen kan eksekveres, læses og skrives i

Når man skal angive rettigheder med Chmod er der 3 "kategorier". Hver kategori har et ciffer når man skal angive dem med chmod, f.eks. chmod 666, her er hver kategori angivet til at have læse- og skriverettigheder.
Første ciffer repræsenterer Ejeren af filen/mappen, andet ciffer repræsenterer Den gruppe ejeren er medlem af, og det tredje ciffer er alle andre.
Her er et eksempel på at giver hver kategori forskellige rettigheder, chmod 764
- Vil give ejeren "læse-, skrive- og eksekveringsrettigheder", gruppen "læse- og skriverettigheder", og alle andre får læserettighed.


Rettighederne i chmod - symbolske værdier
- r: læsbar
- w: skrivbar
- x: eksekverbar

Ofte oplever man at skal gøre en fil eksekverbar, dette gøres også med chmod, kodeeksempel "chmod +x filnavn.bin", tilføjer x (eksekverbar) til filen, bemærk at filen på denne måde gøres eksekverbar for alle. På samme måde kan man også fjerne rettigheden ved blot at erstatte + (plus) med - (minus), og samme er gældende med de to øvrige symbolske værdier.

Nu kommer det svære punkt så, at angive rettigheder ved hjælp af symbolske værdier, det er sjældent at folk beder en om at bruge chmod med symbolske værdier, men jeg har oplevet det et par gange.
Man har som tidligere de tre kategorier: User (Ejer), Group (Ejerens Gruppe), Other (Andre). Når man arbejder med symbolske værdier i chmod har man de tre kategorier på en linje bestående af 9 -'er (bindestreger), eksempel: "---------".
Man har desuden en enhed lige foran de ni streger, dette kan være + (plus), - (minus) eller = (lig med).

De tre første streger (streg 1+2+3) er "ejerens streger", de tre streger derefter (streg 4+5+6) er "gruppens streger", og som du nok har gættet er de sidste (streg 7+8+9) "de andres streger". Den første streg i en kategori er til "r" altså read (læse) den anden er til "w" altså write (skrive) og den tredje er til "x" altså execute (eksekver). Ønsker man ikke der f.eks. skal være x på en kategori skal man bare skrive - (streg). et eksempel på at give rettighed med symbolske værdier hvor man gør en fil læs-skrive-eksekverbar for ejeren, læs-skrive til gruppen og læs til andre er således: chmod =rwxrw-r-- filnavn, lighedstegnet gør at rettighederne bliver præcis sådan, derudover er der + og -. Hvis man gerne vil fjerne gruppens w skal man skrive chmod g-w filnavn, g for group minus write. Og vil man så gerne tilføje eksekverbarhed for alle skal man skrive chmod o+x, g for others plus execute.
- Det jeg har nævnt om rettigheder med symbolske værdier er grundlæggende, der er meget endnu. Ønsker du at vide mere så kig her: http://www.ss64.com/bash/chmod.html

Options i chmod
-R
-v
-c

Som så mange andre kommandoer findes der et hav af options til chmod.
Når man udfører chmod på en mappe f.eks. chmod 666 /home/user/test/ så er det kun selve mappens rettighed der ændres, ikke dens indhold. Ønsker man at ændre rettigheder skal man bruger -R for rekursiv udførelse, dvs. alle filer i mappen og undermapper får sat den givne rettighed, kodeeksempel chmod -R 666 /home/user/test/.
Nogen gange når man bruger chmod er det rart at vide hvilken fil kommandoen er kommet til, ved at sætte -v ind i kommandoen ser man filerne som de bliver udført, kodeeksempel chmod -v 666 /home/user/test/. Andre gange har man kun behov for at se de filer der bliver ændret på, da nogen filer jo godt kan have den givne rettighed i forvejen, til det kan man bruge -c for changes, kodeeksempel chmod -c 666 /home/user/test.
Der findes mange andre options til chmod, men disse er de mest brugte, se manualen for chmod for flere options: man chmod


chown
chown ændrer ejerskabet for en fil/mappe.
Sådan ændrer man filens ejer til en anden bruger, kodeeksempel chown brugernavn filnavn, Hvor brugernavn selvfølgelig er navnet på den nye ejer. Det er samtidig muligt at ændre på filens gruppe, dette gøres med : (kolon) imellem brugernavnet og gruppenavnet, uden mellemrum. kodeeksempel chown brugernavn:gruppenavn filnavn, hvis man gerne vil have gruppen til at være den nye ejers gruppe kan man bare nøjes med kolon efter brugernavn og så ik andet, kodeeksempel chown brugernavn: filnavn. Laver man chown på en mappe er det som i chmod kun selve mappen der får ny ejer, og som i chmod skal man bare bruge -R for recursive, kodeeksempel chown -R brugernavn /mappenavn. Options -v og -c som jeg nævnte i chmod er de samme her. Igen er der flere options til chown, så frem med manualen hvis du vil vide mere: man chown


umask
Umask er noget som jeg ikke rigtig vil komme ind på i denne guide. Umask definerer de default-rettigheder en fil skal have når den bliver lavet, og ud fra det tal regner den en rettighed ud for mapper. Som standard er mapper 777 og filer 666. Det er ikke noget man skal ændre i, medmindre man ved helt præcist at man skal bruge nye rettigheder, det vil typisk være på en server.
se her for mere: http://en.wikipedia.org/wiki/Umask




Øvrig information om rettigheder
http://en.wikipedia.org/wiki/File_syste ... c_notation
http://en.wikipedia.org/wiki/Chmod
Billede

Billede