4.2. Filer og deres rettigheder

En harddisk i Linux er opbygget i et hierarki af kataloger (eng. "directory"), underkataloger samt filer. På den måde adskiller Linux sig hverken fra UNIX, MS-DOS eller Windows 95/98. En del af katalogerne har forskellige formål, f.eks. er alle brugernes filer placeret i underkataloger til /home. Filer ejet af brugeren daisy vil ligge i kataloget /home/daisy eller i underkataloger til dette. Kataloget /home/daisy kaldes i daglig tale for hjemmekataloget for daisy (eng. "home directory").

Når du logger ind på din Linux-maskine, vil du blive mødt af en kommando-prompt, dvs. en linje der ligner dette

[daisy@linus daisy]$ 

Dit hjemmekatalog er som sagt stedet, hvor dine filer og underkataloger ligger placeret. Linux er et flerbrugersystem, og det er derfor vigtigt at kunne holde styr på, hvor de enkelte brugeres filer er. Kommandoen pwd (eng. "print working directory") fortæller dig, hvor i katalogstrukturen du p.t. er.

[daisy@linus daisy]$  pwd
/home/daisy

I det ovenstående eksempel er du i kataloget /home/daisy. Dette katalog er dit hjemmekatalog. Der er to vigtige ting at bemærke. Du skal dels lægge mærke til, at Linux (generelt UNIX) bruger en / (slash) og ikke en \ (backslash) i stier, som det kendes fra Windows. Det er også vigtigt, at du husker at store og små bogstaver er forskellige i Linux. Filerne Linux.html og linux.html er således ikke den samme.

Det er let at oprette underkataloger, f.eks. kan du oprette et underkatalog ved navn MitKatalog ved at skrive:

[daisy@linus daisy]$  mkdir MitKatalog

Kommandoen, som opretter et underkatalog, hedder med andre ord mkdir (eng. "make directory"). I Linux er der forskel på små og store bogstaver, og det er faktisk en god ide at bruge stort begyndelsesbogstav i dine egne underkataloger, mens filer begynder med et lille bogstav. Du kan nu skifte katalog vha. kommandoen cd (eng. "change directory"). Lad os skifte til kataloget MitKatalog:

[daisy@linus daisy]$  cd MitKatalog
[daisy@linus daisy]$  pwd
/home/daisy/MitKatalog
[daisy@linus daisy]$  cd ..
[daisy@linus daisy]$  pwd
/home/daisy
[daisy@linus daisy]$ 

Som du kan se af ovenstående kommando-serie, skifter du til et katalog et niveau højere oppe i strukturen ved at skrive cd .. Husk, at der skal være mellemrum efter cd. I Linux betyder .. altid kataloget et niveau højere oppe (nogle gange kaldt forældrekataloget - eng. "parent directory"). Hvis du ønsker at slette et tomt underkatalog, der altså hverken indeholder filer eller underkataloger, kan du bruge kommandoen rmdir (eng. "remove directory").

[daisy@linus daisy]$  rmdir MitKatalog
[daisy@linus daisy]$ 

Lad os nu se på indholdet af dit hjemmekatalog. Kommandoen ls viser indholdet af det aktuelle katalog. Kommandoen har dette lidt mærkelige navn, fordi det er en forkortelse af det engelske "list". Korte og lidt kryptiske kommandonavne er typisk for Linux. Hvis ls er din første kommando på dit nye Linux system, er resultatet noget kedeligt:

[daisy@linus daisy]$  ls
[daisy@linus daisy]$ 

Det er nu ikke så svært at forstå: du har jo ingen filer eller underkataloger i dit hjemmekatalog endnu. Og dog, det er ikke helt rigtigt, for skriver du ls -a ~, ser du, at der er et par filer, der starter med punktum og ligger i ~ (hjemmekataloget). Den lille krøllede dims ~ hedder i øvrigt en "tilde".

[daisy@linus daisy]$  ls -a
.              .Xdefaults     .bash_profile
..             .bash_logout   .bashrc

Filer, der starter med punktum, anvendes oftest til at gemme din opsætning for de enkelte programmer. De skal normalt ikke ændres særlig tit, og derfor vises de først, når du tilføjer -a som argument til ls.

Vi vil skynde os at lære dig en vigtig Linux kommando: cp. Denne kommando kopierer (eng. "copy") en fil. Vi kopierer filen passwd fra kataloget /etc til det aktuelle katalog (kaldet .), som p.t. er vores hjemmekatalog:

[daisy@linus daisy]$  cp /etc/passwd .
[daisy@linus daisy]$ 

Hvis du nu udfører ls kommandoen igen, ser du, at der nu er dukket en fil ved navn passwd op i dit hjemmekatalog:

[daisy@linus daisy]$  ls
passwd
[daisy@linus daisy]$ 

Langt de fleste Linux-kommandoer kan udføres med forskellige funktioner slået til eller fra. Denne ekstra funktionalitet i en kommando styres oftest vha. en option. I UNIX-verdenen gives en option typisk til kommandoen ved at angive en bindestreg og et bogstav. ls kommandoen har en nyttig option, som viser indholdet af et katalog i langt format (derfor bruges bogstavet l for det engelske "long").

[daisy@linus daisy]$  ls -l
-rw-r--r--   1 daisy    daisy         652 Jul 14 22:32 passwd
[daisy@linus daisy]$ 

Lad os forklare linjen bagfra. Det sidste, du ser, er filens navn, som jo er passwd. Inden da kan du læse, hvornår filen blev oprettet eller sidst blev ændret. Vi kopierede filen den 14. juli kl. 22.32. Tallet 652 fortæller, hvor mange bytes filen fylder.

De to gange daisy er vigtige at forstå. Alle filer og kataloger i et Linux-system har en ejer og tilhører en gruppe. Ejeren er en af brugerne på systemet, mens en gruppe består af en eller flere brugere. En bruger kan godt tilhøre flere grupper. Gruppebegrebet i Linux er særligt smart, hvis man arbejder i et firma, hvor der eksisterer flere afdelinger, idet hver afdeling kan have deres egen gruppe. I gamle dage (SuSE og tidligere versioner af Red Hat) tilhørte alle brugerne den samme gruppe, men i Red Hat Linux har man valgt at lade hver bruger have deres egen gruppe af sikkerhedsmæssige grunde. Som du kan se, ejes filen passwd af brugeren daisy og er tilknyttet gruppen daisy.

1-tallet fortæller at der en 1 reference til filen. Det kryptiske "-rw-r--r--" handler om rettigheder. Som allerede nævnt har alle filer og kataloger en ejer og er tilknyttet en gruppe. Det er netop, hvad disse kryptiske tegn fortæller noget om. Det første tegn er filtypen, dvs. om det er en fil "-" eller et katalog "d". De andre ni tegn falder i tre grupper, som er rettigheder for ejeren, gruppen og alle andre. Et "r" fortæller, at det er tilladt at læse (eng. "read") en fil, et "w" betyder, at det er tilladt at skrive (eng. "write") til filen, dvs. ændre og evt. slette filen. Et "x" er en smule mere kompliceret: hvis det drejer sig om en fil, er det tilladt at udføre den (eng. "execute") som program, og hvis der er tale om et katalog, er det tilladt at se indholdet af kataloget.

Figur 4-1. Fil rettigheder

passwd er - som du ser - en fil, hvor ejeren (brugeren daisy) har tilladelse til at læse og skrive, mens gruppen daisy har ret til at læse. De samme rettigheder gælder for andre brugere, som ikke er med i gruppen daisy.

Det er naturligvis muligt at ændre på en fils rettigheder. Til dette formål bruger du kommandoen chmod (eng. "change mode"). Lad os ændre rettigheder på filen passwd, så gruppen kan skrive i filen:

[daisy@linus daisy]$  chmod g+w passwd
[daisy@linus daisy]$  ls -l
-rw-rw-r--   1 daisy    daisy         652 Jul 14 22:32 passwd

Det lille "g" betyder gruppe, dvs. vi ønsker at ændre på gruppens rettigheder. Hvis det var ejeren, skulle vi bruge "u" (eng. "user"), mens et "o" betyder andre (eng. "other") og alle sammen kan ændres med "a" (eng. all). Bogstavet "w" betyder, at vi vil ændre på skriverettighederne, og et "+" betyder, at vi vil tillade det, mens et "-" vil forbyde det. Grupper kan oprettes, så kun nogle kan bruge dit program eller læse og/eller skrive i dine filer.

Rettighederne kan også skrives som et tal bestående af tre cifre. Det første ciffer fortæller om rettigheder for ejer, det andet for gruppen og det sidste for alle andre. Read (r) tillægges værdien 4, write tillægges værdien 2 og execute tillægges værdien 1. Hvis vi ligger disse værdier samme får vi fra eksemplet ovenfor 6, 6 og 4 - altså 664.