Kapitel 7. Systemadministration af et enkeltbrugersystem

Systemadministration er alle de opgaver, som handler om at vedligeholde hardware og software på en computer.

I Unix-verdenen består systemadministration ofte i at rette i en masse forskellige opsætningsfiler. Opsætningsfilerne er rene tekstfiler, og det vigtigste værktøj til systemadministration er en tekst-editor såsom vi. Red Hat har lavet om på dette: Der findes nu administrationssoftware, som er grafisk. Under overfladen bruges dog stadig rene tekstfiler. Vi vil i dette kapitel primært benytte os af Red Hats grafiske værktøjer.

Systemadministration foretages af systemadministratoren, dvs. af brugeren root, som også kaldes for superbrugeren (eng. "super user"). Du kan enten logge ind som root eller skifte til denne med programmet su (ordet hemmelig vises ikke på skærmen).

[tyge@hven ~]$ su - root
Passwd: hemmelig
[root@hven /root]#

Ved at skrive "su - root" i stedet for blot "su root" sikrer vi os, at alt er glemt om brugeren (tyge), som skiftede til systemadministrator ("su" og "su root" er i øvrigt det samme). Typisk har en bruger en del opsætning, f.eks. omkring e-post, og denne opsætning bør du ikke "kende" til som root.

Bemærk også, at prompten ændrede sig, da du blev root. Dollar-tegnet blev til et hash-tegn. Da root har lov til alt på maskinen, bør du være meget omhyggelig med, om du er root eller almindelig bruger. Det kan være at din prompt ikke ser nøjagtig ud som vist ovenfor - den kan sættes som man selv ønsker det (se mere under "kommandofortolkere" i bogen "Linux - Friheden til at lære UNIX").

Måske tror du, at det er smart at være root og kunne alt - det er forkert! Som root kan du komme til at skrive rm -rf /, og så er hele dit Linux-system væk! For ikke at risikere at lave unødige fejl, bør du lave en brugerkonto til dig selv, også selv om du har root-adgangskoden. Skift kun til superbruger, hvis det er absolut nødvendigt, og skift tilbage til din almindelige brugerkonto hurtigst muligt.

Der eksisterer to varianter af Unix: System V (udtales "system fem") og BSD (Berkeley Software Distribution). For en almindelig bruger er der ikke den store forskel; den ligger hovedsagelig i, hvor de forskellige opsætningsfiler er placeret i filsystemet, og hvordan startsekvensen (engelsk: "boot") foregår. Red Hat (og de fleste Linux-distributioner) har valgt side og hører til System V familien, men låner lidt fra BSD.

7.1. Få adgang til andre diskdrev, cd-rom og diskettedrev

7.1.1. Montering af filsystemer

For at kunne tilgå et filsystem under Linux skal det monteres (eng. "mount") som et katalog i det filtræ, som er blevet genereret af init-processen under opstarten.

rodfilsystemet monteres direkte mens kernen starter. Herefter vil systemet automatisk montere de filsystemer, der er angivet i filen /etc/fstab, og som har en parameter, der fortæller at filsystemet skal monteres under opstarten.

[root@hven /root]# mount -a

vil montere de relevante filsystemer i /etc/fstab. Denne kommando udføres under starten af et af de programmer, der findes i kataloget /etc/rc.d/. Derfor vil disse filsystemer være tilgængelige fra starten. Senere kan man så manuelt montere de ekstra filsystemer, der måtte være behov for.

Eksempel på /etc/fstab:

#device mountpoint(dir) type   option dump fsck
/dev/hda2  /           ext2    default             1 1
/dev/hda3  /usr        ext2    default             1 2
/dev/hda4  /home       ext2    default             1 2
/dev/fdO   /mnt/floppy ext2    noauto,rw,user,exec 0 0
/dev/cdrom /mnt/cdrom  iso9660 noauto,ro,user,exec 0 0
none       /proc       proc    default             0 0

Parameterforklaring:

  • defaults (rw, suid, dev, exec, auto, nouser, asunc)

  • rw (read-write)

  • ro (read-only)

  • user (tillader en alm. bruger at montere filsystemet - forudsætter noexec, nosuid, nodev)

  • noauto (kan kun monteres eksplicit, dvs. at mount -a vil ikke montere filsystemet).

De to sidste tal på linjen henviser dels til dump-kommandoen, der benytter tallet til at sammenligne med antallet af dage, siden der sidst blev taget backup af filsystemet, således at systemadministratoren kan informeres. Se i øvrigt online-manualen for kommandoen dump. Den sidste parameter på linjen benyttes af kommandoen fsck til at afgøre, om filsystemer kan tjekkes parallelt under opstarten (boot). Root-filsystemet ( dvs. / ) tjekkes altid først. De andre filsystemer kan tjekkes parallelt (multitasking er jo understøttet i Linux), men der er ingen fordel i at tjekke flere filsystemer på samme fysiske disk samtidig, da det vil resultere i overflødig flytning af læsehovedet og dermed slid og spild af tid. En parameter på nul (0) eller ingen parameter (f.eks. floppy og cd-rom) betyder, at filsystemet ikke tjekkes.

Se i øvrigt online-manualen for kommandoerne fsck, dump og mount (brug man fsck osv.)

Mount-kommandoen er generelt kun beregnet for systemadministratoren, med mindre der står "user" i device-feltet i filen /etc/fstab.

Formatet for mount-kommandoen er:

[root@hven /root]# mount -t type device mount-point

Eksempler:

  • 1) Montering af harddisk:

    [root@hven /root]# mount -t ext2 /dev/hda2 /mnt/disk
    

    monterer diskafsnittet /dev/hda2 som kataloget /mnt/disk.

  • 2) Montering af diskette til Linux-filer (med ext2-filsystem)

    [root@hven /root]# mount -t ext2 /dev/fd0 /mnt/floppy
    

    Alternativ 1:

    [root@hven /root]# mount /dev/fd0
    

    henter resten af oplysningerne fra /etc/fstab.

    Alternativ 2:

    [root@hven /root]# mount /mnt/floppy
    

    henter ligeledes resten af oplysningerne fra /etc/fstab.

  • 3) Montering af diskette til DOS-filer (msdos)

    [root@hven /root]# mount -t msdos /dev/fd0 /mnt/floppy
    
  • 4) Montering af diskette til Windows-filer (vfat)

    [root@hven /root]# mount -t vfat /dev/fd0 /mnt/floppy
    
  • 5) Montering af cd-rom (i iso9660-format)

    [root@hven /root]# mount -t iso9660 /dev/cdrom /mnt/cdrom
    

    Alternativ 1:

    [root@hven /root]# mount /dev/cdrom
    

    henter resten af oplysningerne fra /etc/fstab.

    Alternativ 2:

    [root@hven /root]# mount /mnt/cdrom
    

    henter ligeledes resten af oplysningerne fra /etc/fstab.

Det omvendte af at montere et filsystem, er at afmontere (eng. "unmount") filsystemet. At afmontere et filsystem har to virkninger:

  • Det skriver alle data til den fysiske disk.

  • Derefter er filsystemet ikke længere til rådighed. fra dets mount point.

Afmontering af et filsystem sker med kommandoen "umount" (bemærk: kun med ét "n").

Eksempel:

[root@hven /root]# umount /dev/fd0 #(afmonterer disketten)
[root@hven /root]# umount /mnt/floppy #(afmonterer disketten)
[root@hven /root]# umount /dev/cdrom #(afmonterer cdrom)
[root@hven /root]# umount /mnt/cdrom #(afmonterer cd-rom)

Vigtigt! Det er vigtigt at bemærke, at man ikke kan/skal fjerne diskette eller andre ydre medier, der er monteret, før umount er kørt, idet der så kan mangle dele af de data, der er skrevet til mediets filsystem, og det kan medføre store problemer. Man kan tvinge systemet til at foretage en synkronisering vha. kommandoen sync, idet alle filsystembuffere så skrives til mediet. Kommandoen umount gør det samme.

Kommandoen umount kræver, at der ikke er nogen, der arbejder på det filsystem man vil afmontere, dvs. hvis du står i /mnt/cdrom hvor din cd-rom er monteret, så kan du ikke afmontere den.

På samme måde vil kommandoen mount give fejlmeddelelsen "device already mounted", hvis man glemmer at afmontere et filsystem, når der forsøges med et nyt filsystem.

En meget vigtig pointe er at root-brugeren kan montere alt, mens den almindelige bruger kun kan montere de enheder, der specifikt er nævnt med et "user"-flag i /etc/fstab. Typisk vil man kun give brugere adgang til at montere løse enheder som diskette og cd-rom, og hvis man er forsigtig, giver man kun de brugere, der har fysisk adgang til maskinen lov til at læse og skrive disketter og cd-rom'er. Det gøres ved at lade disse enheder høre til en brugergruppe, der kun består af de lokale brugere, og så slå skrive- og læserettigheder fra for alle andre end enhedernes ejer og gruppe. Se man chgrp, man chmod og man usergrp for information om hvordan det gøres.

7.1.2. Montering af USB-enheder

USB er ved at blive en populær måde at koble eksterne enheder på computeren, såsom printere, kameraer og memory-keys (fra 8MB og op til 1 GB nøgleringe).

Vi skal her se på hvordan man får adgang til en USB memory-key, og samme fremgangsmåde kan anvendes til kameraer såsom Olympus UZ2100 og HP Photosmart 610.

Jeg har på min laptop fat i min USB-nøglering ved at have følgende linje i min /etc/fstab

/dev/sda1 /mnt/usb auto noauto,owner,user,rw 0 0

Som root skrives mkdir /mnt/usb for at lave monteringspunktet.

Derefter vil kommandoerne mount /mnt/usb og umount /mnt/usb virke fint - og brugeren har nu læse og skriverettigheder til drevet.

Tip: I Afsnit 7.1.6 er vist hvordan man får monteret en eksterne USB-nøglering automatisk når dette er påkrævet.

Det kræver nok at din Linuxkerne kan se nøgleringen. Dette kan du se ved at skrive cat /proc/scsi/usb-storage-0/0 eller cat /proc/scsi/usb-storage-0/1. Dette skulle gerne vise at det er en "IBM USB memory key" (eller hvad der nu er det rigtige). Bemærk at det åbenbart kræver SCSI emulering - og det skal være en ret ny kerne. Det virker f.eks. ikke direkte i Red Hat 7.2, mens det virker fint med Red Hat 7.3.

Tip: For dem som selv vil oversætte Linux-kernen til at understøtte en "IBM USB memory key" så kræves modulerne "usbdevfs", "hub" og "usb-storage".

Det sidste spørgsmål er naturligt hvordan jeg så fandt ud af at det er /dev/sda1 som kan monteres. Til dette kan programmet hwbrowser anvendes (kræver at hwbrowser.*rpm er installeret). Start hwbrowser i et terminal-vindue og angiv root-adgangskoden for at detektere hardware i maskinen.

Figur 7-1. hwbrowser anvendes til at detektere hardware

Under "Hard Drives" bør man nu kunne se at /dev/sda1 er en harddisk på 32 MB, hvis man har memory sticken inde.

Figur 7-2. hwbrowser anvendes til at detektere hardware

Tip: Et andet trick med USB er at læse filer i /proc/bus/usb/devices - her skal man kunne se at USB-enheden er fundet.

Tip: Alternativt så sæt din USB-enhed på maskinen og kør dmesg. Typisk vi de nederste linjer sige at der er fundet en enhed /dev/sda, /dev/sda1, /dev/sdb1 eller /dev/sdc1. Prøv så at køre (som root) mount /dev/sda /mnt, mount /dev/sda1 /mnt, mount /dev/sda2 /mnt, mount /dev/sdb /mnt, mount /dev/sdb1 /mnt osv. indtil der er bid. Mange USB-enheder kan findes på denne måde - men det er ikke indlysende hvilken USB-devicefil den enkelte USB-enhed ender under.

Tip: Med KDE kan du trykke højre muse-tast på din baggrund og vælge "Create new" -> "CDROM device" eller på dansk "Opret ny" -> "CD/DVD-ROM-enhed" og under device/enhed vælges nu den enhed (/dev/sda1) som passer.

7.1.3. cd-rom

Først en gang Linux-gymnastik, som kun skal gøres én gang på din maskine. Skift til systemadministratorrettigheder ved at skrive su -. Kontrollér, at dit cd-rom-drev er fundet og tillad alle at læse fra det:

[root@hven /root]#  ls -al /dev/cdrom
lrwxrwxrwx   1 root  root  3 Sep  4 14:31 /dev/cdrom -> hdd
[root@hven /root]#  chmod a+r /dev/hdd

Lad os tage en anden måde at opnå det samme for brugeren "tyge". Kontrollér, at dit cd-rom-drev er fundet, tillad alle i gruppen floppy at læse fra det og føj derefter "tyge" til gruppen floppy:

[root@hven /root]#  ls -al /dev/cdrom
lrwxrwxrwx   1 root  root  3 Sep  4 14:31 /dev/cdrom -> hdd
[root@hven /root]#  chgrp floppy /dev/hdd
[root@hven /root]#  chmod g+r /dev/hdd
[root@hven /root]#  chmod o-rwx /dev/hdd
[root@hven /root]#  usermod -G floppy tyge

I eksemplerne er /dev/cdrom en henvisning til /dev/hdd, dvs. cd-rom-drevet sidder på den sekundære IDE-bus som slave (typisk situation). Se også Afsnit 4.2.3. Du skal ændre chgrp- og chmod-kommandoerne, så de svarer til den enhed dit cd-rom-drev sidder på, og usermod-kommandoen skal ændres, så det er dit brugernavn der bruges.

Redigér filen /etc/fstab med vi /etc/fstab eller lignende. Du har sikkert en linje, der starter med /dev/cdrom. Den skal du ændre til

/dev/cdrom    /mnt/cdrom   iso9660  noauto,ro,user,exec   0 0

Hvis du ikke finder en linje, som ligner ovenstående, kan det være fordi supermount er installeret, så du automatisk får adgang til dit cd-rom- og diskettedrev, hvilket bl.a. Mandrake benytter. I så fald skal du ikke ændre noget i /etc/fstab og gå videre til næste afsnit.

Første kolonne viser den enhed (/dev/cdrom), som du vil kunne tage fat i. Næste kolonne viser det sted i filtræet, hvor den skal kunne ses. I eksemplet har vi valgt /mnt/cdrom.

Tredje kolonne beskriver filformatet, her er det iso9960 til en cd-rom. Fjerde kolonne indeholder nøgleord, der beskriver egenskaber ved cd-rom-drevet. 'noauto' betyder, at cd-rom-drevet ikke automatisk monteres, når maskinen startes op. 'ro' betyder at man kun kan læse fra drevet (engelsk: "read-only"). 'user' gør det muligt at montere cd-rom'er som almindelig bruger. 'exec' gør det muligt at køre Linux-programmer fra cd-rom. Betydningen af de to nuller kan du finde frem til ved at udføre kommandoen man mount.

Nu er du klar til at afprøve det. Stop som root ved at trykke Ctrl-D i den terminal, du arbejder i. Læg f.eks. din Red Hat-cd-rom i dit cd-rom-drev, og skriv

[tyge@hven ~]$  mount /mnt/cdrom

Nu bør du kunne skrive df /mnt/cdrom for at se, hvor meget data der ligger på skiven. Du kan nu kopiere og læse fra din cd-rom. Når du er færdig med at læse din cd-rom, kan du ikke bare tage den ud. Du skal først skrive

[tyge@hven ~]$  umount /mnt/cdrom

Du skal også vide, at du sagtens kan bruge f.eks. /cdrom som stedet, du monterer din cd-rom. Du skal bare først lave biblioteket med mkdir /cdrom og gentage ovenstående med den nye sti. Endelig findes der systemer til Linux (Automount, Supermount og AMD), hvor du mere eller mindre direkte kan lægge din cd-rom i drevet og få adgang til data uden at skulle bruge specielle kommandoer, men det skal sættes op særskilt.

7.1.4. Læse DOS/Windows-diskdrev

Tilsvarende, som med cd-rom-drevet, kan du automatisk føje dine DOS/Windows-diskdrev til Linux-filtræet, som f.eks. /dosc/ og/eller /dosd/. Start med at lave de kataloger, du skal bruge (her vises for disk C og D):

[tyge@hven ~]$ su
Passwd: hemmelig
[root@hven /root]# mkdir /dosc
[root@hven /root]# mkdir /dosd

Redigér filen /etc/fstab med pico -w /etc/fstab eller lignende. Under installationen har du måske sat dine DOS/Windows-diskdrev ind, så de kan ses fra Linux, men her er alligevel et eksempel på /etc/fstab.

/dev/hda1    /dosc   msdos  defaults,umask=000   0 0
/dev/hda2    /dosd   vfat   defaults,umask=000   0 0

Den første linje tager /dev/hda1, dvs. første partition på den første IDE-disk, som her antages at være en MS-DOS-formateret partition, og lægger den ind som /dosc. Tilsvarende med /dev/hda2, dvs. anden partition på den første IDE-harddisk, som her antages at være en vfat-formateret partition, dvs. en Windows-partition, hvor der anvendes lange filnavne.

Vi har her skrevet umask=000, som vil gøre at alle brugere kan læse og skrive alle filer på /dosc og /dosd. Dvs. alle kan også slette systemet. Vurdér selv om dette er acceptabelt på dit system.

Når du genstarter computeren vil du automatisk have adgang til dine DOS/Windows-partitioner. Vil du prøve om det virker med det samme, behøver du ikke at genstarte computeren. Du kan bare skrive mount -a i et terminalvindue. Det er unødvendigt at genstarte Linux for at gennemføre en triviel ændring, som man typisk skal i Windows.

7.1.5. Diskettedrev

For at kunne læse dine DOS-disketter skal du gentage ovenstående med få ændringer (msdos i stedet for iso9660 og rw i stedet for ro). Der er dog en langt nemmere måde: Installér RPM-pakken mtools fra din Red Hat cd-rom (dette er nøjere beskrevet under RPM i næste afsnit).

[root@hven /root]#  rpm -i mtools*.rpm

Giv læse- og skriveadgang til /dev/fd0:

[root@hven /root]#  chmod a+rwx /dev/fd0

Med man mtools kan du se, at du reelt har fået de gamle MS-DOS-kommandoer, som bare har fået et m foran. Du kan bruge mdir, mcopy, mcd osv. Du kan endda bruge a: som i MSDOS. For at kopiere hele disketten til det bibliotek, du står i, skal du skrive:

[tyge@hven ~]$  mcopy a:* .

Med mtools har du også mulighed for at bruge lange filnavne, der passer med Windows 95, og du skal ikke tænke på mount og umount. Rigtig nyttige programmer.

7.1.6. Automatisk montering af ydre enheder med autofs

I Red Hat og SuSE er der mulighed for automatisk at få monteret eksterne enheder, såsom cd-rom og diskettedrev. Det er nemt - du skal blot installere autofs-pakken. I Mandrake benyttes supermount, som er endnu smartere.

[root@hven /root]#  rpm -ivh autofs-*.rpm

Sørg først for at autofs startes op i den "runlevel", du normalt arbejder i (oftest 3, hvilket i øvrigt står i /etc/inittab). Det gøres ved at starte control-panel og vælge ikonet med trafiklys på - eller direkte starte tksysv op. Du føjer blot autofs til runlevel 3.

Derefter skal du se i /etc/auto.master, der viser, at /misc nu er under kontrol af automontøren. Går du ned i /misc, bliver der monteret enheder automatisk. Der er et tidsudløb på 60 sekunder i standardopsætningen - dvs. 60 sekunder efter du har besøgt f.eks. din cd-rom, vil maskinen automatisk køre umount for dig. Filen /etc/auto.misc er så der, hvor du skriver hvilke af dine eksterne enheder der automatisk skal monteres. Filen kan f.eks. se ud som følger, for at din cd-rom og dit diskettedrev automatisk monteres i /misc/cdrom hhv. /misc/floppy

cdrom     -fstype=iso9660,ro               :/dev/cdrom
floppy    -fstype=auto,umask=0             :/dev/fd0
usb       -fstype=auto,gid=401,umask=007   :/dev/sda1

Bemærk at filsystemet /misc/floppy på floppy-disken (dvs. /dev/fd0) detekteres automatisk (pga. auto), og at filsystemet monteres med læse og skrive rettigheder for alle (pga. umask=0). Tilsvarende er indsat adgang til en USB nøglering, men her har vi vist at gruppen af brugere i gruppe 401 (dette defineres i filen /etc/group) har fuld læse og skrive rettigheder (pga. umask=007), mens "others" har ingen adgang.

Der er mange muligheder her, og er du doven, kan du endda lave en lænke fra roden, så /cdrom peger på /misc/cdrom, og du kan så anvende /cdrom til at læse filer fra din cd-rom. Tilsvarende kan det gøres for /floppy. Har du problemer med rettigheder, læs lige de forrige afsnit.

Tip: SuSE 6.4 har via /etc/auto.net lavet mulighed for at man kan gå direkte ind på netværkets andre filservere (hvor dette er tilladt). Via /net/dykker.kongeh.dk/home/dykker får man adgang til kataloget /home/dykker på maskinen dykker.kongeh.dk, hvis dette er eksporteret korrekt.

7.1.7. Montering af SAMBA/Windows-drev

Mange steder har man en Windows-filserver, eller en Linux-maskine med SAMBA (se bogen "Linux - friheden til systemadministration"), som eksporterer netværksdrev til Windows-maskiner. Denne kan Linux-maskinen sagtens anvende til at få adgang til data.

Brugeren root kan montere en SMB-share (SHARE_NAVN) fra maskinen SERVER_NAVN på Linux-maskinens katalog /mnt/smb_katalog ved at skrive følgende.

[root@hven /root]# mount -t smbfs -o username=BRUGERNAVN,password=MIT_PASSWORD //SERVER_NAVN/SHARE_NAVN /mnt/smb_katalog

Der findes også kommandoerne smbmnt og smbmount, som basalt set kan det samme, men de kan anvendes til at brugere selv kan montere Windows-shares (dette kræver dog at der køres chmod +s /usr/bin/smb*, hvilket svækker system-sikkerheden noget).