next up previous contents
Vidare: Att hantera filer och Uppåt: Att använda Slackware Linux. Tillbaka: Kommandoskalet.

Filsystemets uppbyggnad.

Vi har redan diskuterat katalogstrukturen i Slackware Linux. Vi kan nu hitta de filer och kataloger, vi behöver ha reda på. Men filsystemet är mer än en katalogstruktur blott och bart.

Linux är ett fleranvändarsystem. Systemet är i alla sina vinklar och vrår präglat av det, att det är avsett för flera användare. Systemet lagrar upplysningar om vem, som äger en viss fil, och om vem, som får läsa den. Det finns även andra unika beståndsdelar i filsystemet, såsom länkar och NFS-montering. Detta avsnitt skall förklara dessa, liksom även vad det innebär, att filsystemet är gjort för flera användare.

Ägarskap.

Filsystemet lagrar uppgift om tillhörighet för var fil och katalog i systemet. Detta omfattar vilken ägare och vilken grupp, en viss fil tillhör. Det lättaste sättet att ta reda på detta är att använda kommandot ls:

   $ ls -l /usr/bin/wc
   -rwxr-xr-x   1 root     bin   7368 Jul 30   1999  /usr/bin/wc

Det är tredje och fjärde kolumnerna, som intresserar oss. De innehåller namn på den användare och den grupp, filen tillhör. Vi ser, att det är användaren »root« och gruppen »bin«, som äger denna fil.

Vi kan lätt ändra ägare på filen med kommandot chown(1) (vilket står för »change owner«, ändra användare) och kommandot chgrp(1) (vilket står för »change group«, ändra grupp). Vi kan ändra ägaren till »daemon« med kommandot chown:

   # chown daemon /usr/bin/wc

Vi kan ändra gruppen till »root« med chgrp:

   # chgrp root /usr/bin/wc

Vi kan även använda chown till att på en gång ange användar- och grupptillhörighet för en fil:

   # chown daemon.root /usr/bin/wc

Befogenheter.

 

Befogenheter/rättigheter (permissions) är en annan viktig del av filsystemet sett ur ett fleranvändarperspektiv. Med användning av sådana kan man bestämma, vem som skall få läsa, skriva och köra filer.

Informationen om rättigheterna lagras i ett fyrställigt oktaltal, där var siffra anger en särskild uppsättning rättigheter. Dessa är ägarens (owner), gruppens (group) och alla övrigas (world). Fjärde oktala siffran brukas till att lagra information såsom sättande av användar-ID (UID), sättande av grupp-ID (GID) och den »klibbiga« biten (``sticky'' bit). De oktala värden, som tillordnas befogenheterna, är (de har även tillordnade bokstäver, som kan visas av program såsom ls och kan användas av chmod):

Rättighetstyp Oktalt värde Bokstav Rättighetstyp
``sticky'' bit 1 t »klibbig« bit
set user ID 4 s sätta användar-ID
set group ID 2 s sätta grupp-ID
read 4 r läsa
write 2 w skriva
execute 1 x köra

Man lägger ihop de oktala värdena för var rättighetsgrupp. Om man till exempel vill, att gruppen skall få läsa och skriva, så sätter man »6« i rättighetsinformationens gruppdel.

De förinställda rättigheterna för bash är följande:

   $ ls -l /bin/bash
   -rwxr-xr-x   1 root     bin  477692 Mar 21 19:57 /bin/bash

Första bindestrecket hade ersatts med ett »d«, om detta hade varit en katalog (directory). De tre rättighetsgrupperna (ägare, grupp och hela världen) visas därefter. Vi ser, att ägaren har rätt att läsa, skriva och exekvera (rxw). Gruppen har endast läs- och exekveringsrätt (r-x). Alla andra har endast läs- och exekveringsrätt (r-x).

Hur skulle vi kunna sätta rättigheterna på en annan fil på samma sätt som för bash? Först skall vi skapa en exempelfil:

   $ touch /tmp/example
   $ ls -l /tmp/example
   -rw-rw-r---  1 david    users    0 Apr 19 11:21 /tmp/example

Sedan använder vi chmod(1) (vilket betyder change mode) till att sätta rättigheterna på exempelfilen. Vi lägger ihop de oktala siffrorna, så att vi får önskade rättigheter. För att ägaren skall få läsa, skriva och exekvera, så får vi värdet 7. Läsa och exekvera ger värdet 5. Sätter man ihop dessa med chmod, så får vi

   $ touch /tmp/example
   $ ls -l /tmp/example
   -rw-rw-r---  1 david    users    0 Apr 19 11:21 /tmp/example

Speciella rättigheter sätter man genom att lägga ihop dem och placera dem i första kolumnen. Till exempel sätter vi UID och GID med talet 6 i första kolumnen:

   $ chmod 6755 /tmp/example
   $ ls -l /tmp/example
   -rwsr-sr-x   1 david    users    0 Apr 19 11:21 /tmp/example

Om de oktala värdena verkar förvirrande, så kan man använda bokstäver tillsammans med chmod. Grupperna visas då med följande bokstäver:

Ägare u
Grupp g
Världen o
Alla ovanstående a

För att åstadkomma samma sak som tidigare med siffror, så skulle vi behöva skriva flera kommandorader med bokstäver:

   $ chmod a+rx /tmp/example
   $ chmod u+w /tmp/example
   $ chmod ug+s /tmp/example
Somliga föredrar bokstäver framför siffror. Vilket man än använder, så resulterar det i samma uppsättning rättigheter.

Vi har tidigare flera gånger nämnt sättande av rättigheter för användar-ID och grupp-ID. Läsaren undrar måhända, vad detta kan vara för något. När man kör ett program, arbetar det vanligen under användarkontot för den användare, som har startat programmet. Programmet har följaktligen samma rättigheter, som en vanlig användare. Det samma gäller för gruppen. När man kör ett program, så exekveras det under den grupp, användaren tillhör. När man sätter UID-rättigheter, så kan man tvinga programmet att alltid köra som om det startats av programmets ägare (t.ex. såsom »root«). När man sätter GID inträffar motsvarande för gruppen.

Detta skall man vara försiktig med, eftersom sättande av UID och GID kan öppna stora säkerhetsluckor i systemet. Om man ofta använder UID-program, som ägs av »root«, så tillåter man vem som helst att köra programmet ifråga och köra det som root. Eftersom root inte har några begränsningar i systemet, så inser man lätt, att detta utgör ett stort säkerhetsproblem. Kort sagt, det är inte dåligt att sätta UID eller GID vid körning, men man får därvid även använda sunda förnuftet.

Länkar.

Länkar är pekare mellan filer. Med länkar kan man låta filer finnas närvarande på många ställen och vara tillgängliga under många namn. Det finns två slags länkar: hårda och mjuka.

Hårda länkar är namn på vissa filer. De kan endast finnas till inom en enda katalog och försvinner endast, om man tar bort det riktiga namnet ifrån systemet. De är användbara i vissa fall, men många användare håller mjuka länkar för mångsidigare än hårda. 

En mjuk länk, som även kallas för symbolisk länk (symlänk), kan peka på en fil utanför sin egen katalog. Den är i verkligheten en liten fil, som innehåller de upplysningar, den behöver. Man kan lägga till och avlägsna en mjuk länk utan att påverka den verkliga filen.

Länkar har ingen egen uppsättning rättigheter och ägarskap utan återspeglar i stället dem, som gäller för de filer, de pekar på. Slackware använder för det mesta mjuka länkar. Här är ett vanligt exempel:

   $ ls -l /bin/sh
   lrwxrwxrwx   1 root     root     4 Apr  6 12:34 /bin/sh -> bash

Det skal, som i Slackware ibland kallas för sh, är i själva verket bash. Man kan ta bort länkar med rm. Kommandot ln användes till att skapa länkar. Dessa kommandon behandlas mer på djupet på s. gif i kapitel 10.

Montera enheter.

Såsom det tidigare diskuterats i avsnittet om filsystem på s. gif i kapitel 4, så utgör alla skivenheter i datorn ett enda stort filsystem. Olika hårddiskpartitioner, CD-ROM-läsare och diskettenheter inordnas i ett och samma katalogträd. För att kunna ympa på alla dessa enheter vid filsystemet, så att de blir åtkomliga, måste man använda kommandona mount(1) och umount(1).

En del enheter monteras av sig själva, när man startar datorn. Det är sådana, som står förtecknade i filen /etc/fstab. Allt, som man vill skall monteras av sig själv, skall föras in i denna fil. Vad andra enheter beträffar, så måste man ge ett kommando var gång, enheten ifråga skall användas.

fstab.

Låt oss betrakta ett exempel på en /etc/fstab:

   /dev/sda1       /               ext2        defaults        1   1
   /dev/sda2       /usr/local      ext2        defaults        1   1
   /dev/sda4       /home           ext2        defaults        1   1
   /dev/sdb1       swap            swap        defaults        0   0
   /dev/sdb3       /export         ext2        defaults        1   1
   none            /dev/pts        devpts      gid=5,mode=620  0   0
   none            /proc           proc        defaults        0   0
   /dev/fd0        /mnt            ext2        defaults        0   0
   /dev/cdrom      /cdrom          iso9660     ro              0   0

Första kolumnen är enhetsnamnet. I detta fall är enheterna fem partitioner, som är utspridda över två SCSI-hårddiskar, vidare två speciella filsystem, som inte behöver någon enhet, en diskettenhet och en CD-ROM-enhet. Andra kolumnen visar enhetens monteringsställe. Detta måste vara ett katalognamn, förutom i fallet med swappartitionen. Tredje kolumnen visar enhetens filsystemstyp. För vanliga linuxfilsystem är detta ext2 (second extended filesystem). CD-ROM-enheter är iso9660 och windowsbaserade enheter endera msdos eller vfat.

Fjärde kolumnen är en lista med möjliga tillval för filsystemets d monterande. Värdet »defaults« duger till det mesta. Emellertid bör man ge enheter, som endast kan läsas, flaggan ro. Det finns en mängd tillgängliga valmöjligheter. Fler upplysningar om detta finns på manualsidan för fstab(5). De sista två kolumnerna användes av fsck och andra kommandon, som behöver manipulera enheterna. Se manualsidan.

När man installerar Slackware Linux, bygger setup upp mycket av fstab. Det är enbart, när man lägger till diskar eller vill ha några enheter automatiskt monterade vid start, som man behöver införa ändringar i denna fil.gif

mount och umount.

Det är enkelt att ympa på en ny enhet vid filsystemet. Man använder då mount tillsammans med några tillval. Det kan även göras enklare att använda mount, genom att man lägger till en rad för enheten i /etc/fstab. Antag exempelvis, att man vill montera sin CD-ROM-enhet och att fstab ser ut så som i föregående avsnitts exempel. Man skulle då kunna montera den med följande kommando:

   # mount /cdrom

Eftersom det finns en rad i fstab för detta monteringsställe, så »vet« mount om, vilka växlar det skall använda. Om ingen sådan rad funnits, skulle man ha behövt förse mount med en hel rad växlar:

   # mount -t iso9660 -o ro /dev/cdrom /cdrom

Detta kommando innehåller samma information som exemplet med fstab, men vi skall likväl gå igenom det. Växeln -t iso9660 anger filsystemstyp för den enhet, som skall monteras. I detta fall är det ett filsystem av typen iso-9660, vilket vanligen användes av CD-ROM-skivor. Växeln -o ro anger, att enheten skall monteras för läsning enbart. Enhet, som skall monteras, anges med /dev/cdrom, och /cdrom är dess monteringsställe i filsystemet.

Innan man får avlägsna en diskett, CD-skiva eller annan löstagbar enhet, som för tillfället är monterad, måste man avmontera den. Det gör man med kommandot umount. Fråga inte var bokstaven »n« har blivit av; det säger vi inte. Man kan använda endera den monterade enheten eller dess monteringsställe såsom argument till umount. Om vi t.ex. ville avmontera CD-ROM-skivan i föregående exempel, så skulle bägge dessa kommandon fungera:

   # umount /dev/cdrom
   # umount /cdrom

NFS-montering.

NFS står för Network File System. Det ingår egentligen inte i det riktiga filsystemet, men det kan användas till att ympa på nätverksenheter i det monterade filsystemet.

I stora unixmiljöer delar man ofta på samma program, hemkataloger och spolkataloger för eposten. Problemet att få kopior av katalogerna i var maskin löses med NFS. Vi kan använda NFS till att dela en uppsättning hemkataloger mellan samtliga arbetsstationer. Arbetsstationerna monterar sedan denna NFS-enhet, såsom vore den en enhet i var och en av deras egna maskiner.

Se avsnittet om NFS (Network File System) på s. gif i kapitel 5 samt manualsidorna för exports(5), nfsd(8) och mountd(8).

Sammanfattning.

I detta kapitel bör man ha samlat en del kunskap om ägarskap och rättigheter. Man bör nu veta varför, sådana finns, och hur man sätter dem. Man bör även känna till länkar emellan filer, hur man monterar skivenheter och hur man monterar NFS-enheter. Dessa tre aspekter på filsystemet är viktiga. Man bör nu ha en grundläggande kunskap om, hur sådana kan användas.


next up previous contents
Vidare: Att hantera filer och Uppåt: Att använda Slackware Linux. Tillbaka: Kommandoskalet.


Denna översättning ifrån engelskan är utförd av Erik Jonsson <[email protected]> efter Slackware Linux Essentials, officiell handbok för Slackware Linux.

Denna översättning tillhandahålles liksom engelskspråkiga originalet enligt villkoren i GNU General Public License (GPL).
Uppgifterna om författarnas och översättarens namn får ej avlägsnas, utplånas eller eljest göras oläsliga.
Förvaras åtkomligt.
Bäst före: senaste ändringsdatum.
Äldre versioner bör förstöras.
Senast ändrad Tue Oct 24 09:36:13 CEST 2000

Hela boken finns här även beredd för utskrift i PDF-filen slwhbk.pdf.

http://www.slackware.com/http://www.sslug.dk/Ser bra ut i vilken vävläsare som helst.


Generaldepoten — Emil Tusens Kulturpalats.
Om goda kagor och torra kakor (»cookies«).

Innehåll:

Litteraturförteckning

Om goda kagor och torra kakor (»cookies«).