Geschikt voor: | |
Versie: | alle ondersteunde versies |
Uitleg over /etc/fstab
Het configuratiebestand /etc/fstab bevat informatie om het 'koppelen' van schijfpartities en netwerkopslaglocaties te automatiseren.
Met 'koppelen' wordt hier bedoeld het beschikbaar maken van een (fysiek) deel van een harde schijf (schijfpartitie) of netwerkopslaglocatie, via een zogenaamd koppelpunt, een map ergens in de boomstructuur van het actieve bestandssysteem.
Dit artikel is slechts een inleiding tot het gebruik van /etc/fstab.
In het algemeen wordt /etc/fstab gebruikt voor ingebouwde schijven, CD en DVD apparatuur, en voor het koppelen van op het netwerk beschikbare opslaglocaties (samba/nfs/sshfs). Verwijderbare opslagapparaten zoals USB-sticks kunnen met 'fstab' worden gekoppeld maar deze worden normaal gesproken door de 'gnome-volume-manager' gekoppeld. Dit valt buiten dit artikel.
Opties voor het koppelen met de mount opdracht en voor /etc/fstab zijn uitwisselbaar.
Schijfpartities in /etc/fstab kunnen worden ingesteld om tijdens het opstarten gekoppeld te worden.
Als een apparaat of partitie NIET is opgenomen in /etc/fstab kan alleen de beheerder (met sudo) deze koppelen.
Gebruikers kunnen een apparaat of schijfpartitie alleen koppelen als deze daarvoor met de juiste opties zijn opgenomen in /etc/fstab.
- Regels die beginnen met een hekje (#) worden gezien als commentaar. Op deze regels kan een opmerking geplaatst worden. Bijvoorbeeld de reden waarom een partitie op een bepaalde plek gekoppeld is.
Het koppelen van netwerk opslag (samba/nfs/sshfs) in een omgeving met meerdere gebruikers valt buiten dit artikel.
Bestand /etc/fstab
De regels in /etc/fstab zijn opgebouwd uit 6 parameters (syntax) :
[schijfpartitie] [koppelpunt] [type bestandssysteem] [parameters] [dump] [controle]
parameter |
omschrijving |
[ schijfpartitie ] |
De schijfpartitie (als /dev partitienaam, UUID= of als LABEL=) waar het bestandssysteem is opgeslagen. |
[ koppelpunt ] |
De map in het actieve bestandssysteem die toegang geeft tot de gekoppelde opslaglocatie. De naam van deze map mag geen spatie bevatten. (opmerking: een swap partitie heeft geen koppelpunt, deze parameter heeft dan de waarde 'none') |
type van het bestandssysteem zoals bijvoorbeeld ext2, ext3, ntfs, iso9660, vfat, udf of een ander ondersteund type (zie man mount). |
|
[ opties ] |
Opties voor het koppelen (zie man mount). Meerdere opties worden gescheiden door een komma. |
[ dump ] |
Normaal is deze parameter 0. |
[ controle ] |
Regelt de volgorde van controle van de schijfpartitie door fsck tijdens het opstarten. De hoofd (root) partitie moet de waarde 1 hebben, andere schijfpartities de waarde 2. Met de waarde 0 is de controle uitgeschakeld. |
Kijk in onderstaande voorbeelden en in de volgende hoofdstukken voor meer informatie over deze paramaters.
Schijfpartitie
Standaard maakt Ubuntu gebruik van een UUID (unieke identificatie) om schijfpartities aan te duiden.
Een UUID bestaat uit 32 hexadecimale tekens, weergegeven in 5 groepen met tussenliggende streepjes (00000000-0000-0000-0000-000000000000). Voor de type bestandsystemen FAT en NTFS bestaat de UUID uit een korte reeks tekens.
Voor een overzicht van de aanwezige schijfpartities op basis van de UUID kan een sudo blkid opdracht worden gebruikt:
sudo blkid
Deze opdracht zal ook het type van het bestandssysteem tonen.
Andere manieren om een schijfpartitie te specificeren zijn:
- partitienaam : /dev/sdxy
- Label : LABEL=label
- Netwerk identificatie:
- Samba : //server/netwerkopslaglocatie ('netwerkopslaglocatie' ook wel een 'share' genoemd)
- NFS : server:/netwerkopslaglocatie
- SSHFS : sshfs#gebruikersnaam@server:/netwerkopslaglocatie
Het gebruiken van de UUID om een partitie te koppelen wordt aangeraden, omdat deze aanduiding constant blijft, ook als er extra schijven of USB-sticks aangesloten worden. De /dev/sdxy aanduiding kan dan wel veranderen. Let er wel op dat de UUID van een partitie verandert als deze partitie vergroot, verkleind, verplaatst of geformatteerd wordt. In zo'n geval moet het /etc/fstab bestand aangepast worden aan de nieuwe situatie.
In de voorbeelden per type bestandssysteem worden voorbeelden gegeven voor het gebruik van de LABEL= identificatie.
Koppelpunt
Een koppelpunt is een locatie (map) in het actieve bestandssysteem. Standaard wordt een submap in de map /media gebruikt maar andere locaties zijn ook mogelijk zoals in de /mnt map of in de persoonlijke map.
De naam voor het koppelpunt kan vrij worden gekozen (maar mag geen spatie bevatten) en moet vooraf zijn gemaakt om te kunnen koppelen.
Bijvoorbeeld het koppelpunt : /media/windows
Kan gemaakt worden met de opdracht:
sudo mkdir /media/windows
De map die gebruikt wordt voor het koppelen kan leeg zijn maar ook gegevens bevatten. Eventuele gegevens in de originele map zijn niet meer zichtbaar. Om de originele mapinhoud weer beschikbaar te krijgen kan de koppeling worden verbroken met de opdracht:
sudo umount /pad/naar/koppelpunt_mapnaam
Type van het bestandssysteem
Het is mogelijk om een type voor het te koppelen bestandssysteem te specificeren. Het is ook mogelijk middels de waarde 'auto' het systeem zelf het type te laten bepalen. De automatische detectie werkt in de regel goed en wordt veel gebruikt voor verwijderbare apparaten.
Voorbeelden van type bestandssystemen zijn:
- auto
- vfat - voor FAT partities
- ntfs (sinds Ubuntu Hardy Haron (versie 8.04) is dit hetzelfde als 'ntfs-3g') - voor ntfs partities.
- ext2, ext3, jfs, reiserfs, enz. voor linux partities.
- udf,iso9660 - voor CD en DVD.
- swap.
Opties
Welke opties mogelijk zijn is afhankelijk van het type bestandssysteem.
Voor opties kan de waarde "defaults" worden gebruikt, waardoor een aantal voor de hand liggende opties worden gebruikt.
- defaults = rw, suid, dev, exec, auto, nouser, and async.
/home = Voor een aparte home partitie moeten de opties nodev,nosuid worden gebruikt.
- ntfs/vfat = rechten worden ingesteld tijdens het koppelen met 'umask', 'dmask' en 'fmask' en kunnen NIET worden gewijzigd met opdrachten als chown of chmod. De 'eigenaar' van de gekoppelde schijfparties kan worden opgegeven met 'uid' en 'gid'. Standaard is root (uid=0) 'eigenaar'. De waarde uid=1000 maakt de 1e gebruiker (die tijdens de Ubuntu installatie is opgegeven) 'eigenaar' van het gekoppelde bestandssysteem.
Een veelgebruikte instelling is umask=077 of dmask=027,fmask=137
- Eventuele NTFS bestandsbeveiling zal geen effect hebben.
Voor het koppelen van netwerk opslag, ookwel 'share' genoemd via samba kan een gebruikersnaam en wachtwoord worden opgegeven. Merk op dat bestand /etc/fstab door alle gebruikers gelezen kan worden en zo het wachtwoord kunnen zien. Beter is het om gebruik te maken van een credentials file. De credentials file kan root:root als eigenaar hebben en bestandsrecht '0400' (alleen leesbaar voor de eigenaar)
- Met de optie errors=remount-ro zal, als er een fout optreedt tijdens het koppelen, de schijfpartitie opnieuw gekoppeld worden voor alleen leestoegang (read only). Deze optie kan alleen gebruikt worden bij linux type bestandssystemen (ext2, ext3, jfs).
Algemene opties :
- sync - Alle I/O naar het bestandssysteem vindt synchroon plaats, wijzigingen worden direct weggeschreven
- async - Alle I/O naar het bestandssysteem vindt asynchroon plaats, wijzigingen kunnen tijdelijk in een buffer worden gehouden voor meer efficiëntie.
- auto - Het bestandssysteem wordt automatisch gekoppeld tijdens het opstarten.
noauto - Het bestandssysteem wordt NIET automatisch gekoppeld tijdens het opstarten (ook niet bij de opdracht mount -a). Om deze schijfpartitie te koppelen moet expliciet een opdracht gegeven worden.
- dev - Gebruik apparaatbestanden op het gekoppelde bestandssysteem.
- nodev - Gebruik geen apparaatbestanden op het gekoppelde bestandssysteem. Een root-partitie van een ander systeem zal met nodev gekoppeld worden om de apparaatbestanden (/dev) niet te gebruiken.
- exec - Sta het uitvoeren van programma's vanaf deze partitie toe.
- noexec - Sta het uitvoeren van programma's vanaf deze partitie NIET toe.
- suid - Sta gebruik van suid en sgid bits toe.
- nosuid - Sta het gebruik van suid en sgid bits NIET toe.
- ro - Koppel de schijfpartitie alleen om van te lezen (read-only).
rw - Koppel de schijfpartitie voor lezen en schrijven (read-write).
- user - Geeft gebruikers het recht om deze partitie te (ont)koppelen. Hierbij worden vanzelf de opties: noexec, nosuid,nodev gebruikt tenzij anders is opgegeven.
users - Gelijk aan user met als verschil dat ook andere gebruikers de schijfpartitie weer mogen ontkoppelen.
- nouser - Met deze optie is het alleen mogelijk voor een beheerder (sudo) om deze schijfpartitie te koppelen. Dit is een standaard optie.
- defaults - De standaard opties zijn: rw, suid, dev, exec, auto, nouser, async.
- _netdev - Geeft aan dat dit een netwerkopslag is die gekoppeld moet worden na het opbrengen van de netwerkverbinding. Deze optie is alleen van toepassing voor het type bestandssysteem nfs.
Voor meer (Engelstalige) informatie over de opties kijk op: man mount
Dump
Normaal is deze parameter 0 om aan te geven dat deze partitie is uitgeschakeld bij een dump (bepaalde back-up) opdracht.
Automatische controle
De controle parameter bepaalt de volgorde waarin bestandssystemen automatisch gecontroleerd worden (met een fschk opdracht). Bij een waarde "0" zal er geen automatische controle plaats vinden.
Deze parameter is soms verwarrend. Er zijn 3 mogelijke waarden:
- 0 == voer geen automatische controle uit.
- 1 == controleer eerst deze schijfpartitie.
- 2 == controleer vervolgens deze schijfpartities.
In de praktijk wordt de waarde "1" gebruikt voor de 'hoofdpartitie', ook wel 'root-partitie' genoemd en de waarde "2" voor andere partities. De volgorde waarin de andere partities worden gecontroleerd is niet van belang.
Gebruik de waarde "0" om de automatische controle uit te zetten en voor netwerk opslag.
Het is mogelijk om de frequentie waarin de automatische controle wordt uitgevoerd te wijzigen (standaard na 30 keer koppelen) maar omdat deze controle van belang is om een correcte werking van het bestandssysteem te garanderen wordt sterk aangeraden de standaard instellingen te gebruiken.
Voorbeelden
Hieronder een aantal voorbeelden van regels in bestand /etc/fstab
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 # /dev/sda5 UUID=be35a709-c787-4198-a903-d5fdc80ab2f8 / ext3 errors=remount-ro 0 1 # /dev/sda6 UUID=cee15eca-5b2e-48ad-9735-eae5ac14bc90 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
Extra schijfpartities.
# FAT ~ Linux noemt het FAT bestanssysteem vfat # /dev/hda1 UUID=12102C02102CEB83 /media/windows vfat auto,users,uid=1000,gid=100,dmask=027,fmask=137,utf8 0 0 # NTFS ~ Gebruik ntfs (ofwel ntfs-3g) voor schrijf toegang (rw) # /dev/hda1 UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,uid=1000,gid=100,dmask=027,fmask=137,utf8 0 0 # Zip Drives ~ Linux herkent ZIP drives als sdx4 # Aparte Home # /dev/sda7 UUID=413eee0c-61ff-4cb7-a299-89d12b075093 /home ext3 nodev,nosuid 0 2 # Extra gegevens schijfpartitie # /dev/sda8 UUID=3f8c5321-7181-40b3-a867-9c04a6cd5f2f /media/data ext3 noexec 0 2
Opmerking : Onderstaande netwerk voorbeelden (samba, nfs, and sshfs) gaan er van uit dat ook de netwerk server overeenkomstig is ingericht en de benodigde pakketten zijn geïnstalleerd.
# Samba //server/share /media/samba cifs user=user,uid=1000,gid=1000 0 0 # "Server" = Samba server (ip-adres, dnsnaam of de naam in /etc/hosts) # "share" = naam van de netwerkopslaglocatie (share) # "user" = samba gebruikersnaam # In dit voorbeeld wordt bij het koppelen gevraagd om het wachtwoord. # Het koppelen zal zo niet lukken tijdens het starten van de computer. # Er kan ook gebruik gemaakt worden van een credentials file. # vervang "user=user" door "credentials=/etc/samba/credentials" # In bestand /etc/samba/credentials komen 2 regels: # username=gebuikersnaam # password=samba-wachtwoord # Dit bestand kan root als eigenaar hebben en alleen leesbaar zijn voor root # sudo chown root:root /etc/samba/credentials # sudo chmod 400 /etc/samba/credentials # Let op de beveiliging; alle gebruikers gebruiken nu de netwerkopslaglocatie # met dezelfde gebruikersnaam. # NFS Server:/Naam /media/nfs nfs user,noexec,nosuid 0 0 # "Server" = nfs server (ip-adres, dnsnaam of de naam in /etc/hosts) # "Naam" = naam van de netwerkopslaglocatie zoals in /etc/exports op de server # De actuele gebruikersnaam wordt gebruik voor het koppelen. #SSHFS sshfs#naam@server:/map fuse noauto,user 0 0 # "naam" = gebruikersnaam op de server. # "server" = ssh server (ip-adres, dnsnaam of de naam in /etc/hosts) # "map" = map die gekoppeld wordt als netwerkopslaglocatie
Voorbeelden per type bestandssysteem
Hier volgen een aantal eenvoudige voorbeelden voor bepaalde type bestandssystemen, Er wordt gebruik gemaakt van /dev/sdb1 en /dev/hda2 maar dit kan ook een andere naam voor de schijfpartitie zijn (/dev naam, UUID=<identificatie>, of LABEL=<een_label>).
ext2 en ext3
Het belangrijke verschil tussen ext2 en ext3 is het gebruik van een journaal voor bescherming tegen fouten bij een abnormale stop van het systeem.
Een root bestandsysteem:
UUID=30fcb748-ad1e-4228-af2f-951e8e7b56df / ext3 defaults,errors=remount-ro 0 1
Een NIET-root bestandssysteem:
LABEL=externe_schijf /media/disk2 ext2 defaults 0 2
Een label opvragen:
sudo e2label /dev/sdb1
Een label instellen (maximaal 16 tekens):
sudo e2label /dev/sdb1 externe_schijf
fat16 en fat32
/dev/hda2 /media/data1 vfat defaults,user,exec,uid=1000,gid=100,umask=000 0 0
LABEL=SCHIJF2 /media/data2 vfat defaults,user,dmask=027,fmask=137 0 0
Om een label te lezen:
sudo mlabel -i /dev/sdb1 -s ::
Belangrijk: Komt een melding zoals onderstaande:
Total number of sectors (7902207) not a multiple of sectors per track (63)! Add mtools_skip_check=1 to your .mtoolsrc file to skip this test
Geef dan de terminalopdracht:
echo mtools_skip_check=1 >> ~/.mtoolsrc
Om een FAT16 of FAT32 label te wijzigen:
- altijd weergegeven in hoofdletters
sudo mlabel -i /dev/sdb1 ::SCHIJF2
NTFS
Voorbeelden voor het koppelen van een Windows schijfpartitie.
/dev/hda2 /media/windows ntfs-3g defaults,locale=nl_NL.utf8 0 0
LABEL=externe_schijf /media/windows ntfs defaults,locale=nl_NL.utf8 0 0
Voor een lijst met mogelijke waarden voor de 'locale' optie op het systeem:
locale -a
Voor het beheer van labels van NTFS schijfpartities kan pakket 'ntfsprogs' gebruikt worden. Dit pakket wordt niet standaard geïnstalleerd en kan worden toegevoegd met de opdracht:
sudo apt-get install ntfsprogs
Voor het gebruik van ntfslabel mag de schijfpartitie NIET gekoppeld zijn.
Om een NTFS label te lezen:
sudo ntfslabel /dev/sdb1
Om het NTFS label te wijzigen:
- maximaal 128 tekens
sudo ntfslabel /dev/sdb1 externe_schijf
hfs+
Het hfs+ type bestandssysteem wordt voornamelijk gebruikt in Apple computers.
/dev/sdb1 /media/Macintosh_HD hfsplus rw,exec,auto,users 0 0
Wijzigen /etc/fstab
Let op!
Voor het maken van een wijziging in een systeembestand moet er een back-up gemaakt worden (de -B optie van nano maakt automatisch een back-up).
In een terminalscherm kan zo een back-up gemaakt worden:
sudo cp /etc/fstab /etc/fstab_oud
Om een bestand te wijzigen in Ubuntu gebruik een terminalscherm of Alt-F2:
sudo nano -Bw /etc/fstab
- -B = Maak een back-up van de originele /etc/fstab in /etc/fstab~ .
- -w = kap lange regels niet af.
- gebruik de toetscombinatie Ctrl+x om nano te sluiten
Alternatief:
sudo -e /etc/fstab
Bruikbare opdrachten
Gebruik de volgende terminalopdracht om de inhoud te zien van /etc/fstab:
less /etc/fstab
Voor een overzicht van alle UUIDs gebruik de terminalopdracht:
sudo blkid
of
ls -l /dev/disk/by-uuid
Voor een overzicht van alle gelabelde schijfpartities:
ls -l /dev/disk/by-label
Voor een overzicht van alle harde schijven en schijfpartities:
sudo fdisk -l
Om alle partities in /etc/fstab in 1 opdracht te koppelen:
sudo mount -a
partities met een noauto optie worden NIET gekoppeld met de mount -a opdracht.
En nogmaals: het koppelpunt moet bestaan om te kunnen koppelen. Zo nodig moet het koppelpunt eerst gemaakt worden.
sudo mkdir /pad/naar/koppelpunt_mapnaam sudo mkdir /media/disk2
Bronnen
Dit is een vrije vertaling van https://help.ubuntu.com/community/Fstab
Voor informatie over label identificatie is gebruik gemaakt van de Engelstalige wiki RenameUSBDrive