Cover Image

Automatisk mount av CIFS-nettverkstasjoner i Linux

 Thu 2019-02-28    Linux

Det er praktisk å ha tilgang til filer lagret på Windows-systemer når man kjører Linux. Man får tilgang til disse på forskjellige vis, men hvis man vil ha en permanent løsning der de eksterne filsystemene alltid mountes på samme sted, bør man sette opp en automount-løsning i /etc/fstab.

Siden jeg kjører Linux Mint, som er Ubuntu/Debian-basert, har jeg løst dette på følgende måte. Jeg vil anta det fungerer på de fleste andre Systemd-infiserte Linuxdistroer også:

  1. Opprett et mount point, for eksempel under /mnt. Man kan kalle dette hva man vil, jeg foretrekker en mappestruktur som ser slik ut:
    /mnt/SERVER1/Share1
    /mnt/SERVER1/Share2
    /mnt/SERVER2/Share1

    etc

  2. Gi brukeren din fulle eierrettigheter til mountpointet:
    $ sudo chown -R user:user /path/to/share
  3. Legg følgende inn i /etc/fstab (forutsetter at DNS funker, bytt ellers ut servernavnet med IP-adressen til serveren):
    //SERVER1/Share1 /mnt/SERVER1/Share1 cifs x-systemd.automount,credentials=/etc/smb/smbcreds,iocharset=utf8,uid=1000,gid=1000 0 0

    En forklaring til dette:
    //SERVER1/Share1/ er server/sharenavn man skal mounte lokalt
    /mnt/SERVER1/Share1 er mountpoint i det lokale filsystemet
    cifs er filsystemtypen
    x-systemd.automount gjør at systemet vet at det er et nettverksfilsystem og vil ikke mounte filsystemet før etter at nettverket er oppe og den delte mappen forsøkes åpnet
    credentials=/etc/smb/smbcreds inneholder brukernavn, passord og domene for brukeren som skal mounte filsystemet. Dette er brukernavn og passord som definert på Windows-systemet, og som har tilgang til filsystemet. Hvis brukeren ikke har tilgang vil man få en feilmelding. Filnavnet og dens plassering kan være hvor som helst på systemet, men det er greit å ha den et sted der den blir tatt backup av.
    iocharset=utf8 angir hvilket character set man skal bruke for å "oversette" enkelte tegn i filnavn ved lesing og skriving
    uid/gid angir hvilken lokal Linuxbrukers brukerident og gruppeident som skal benyttes for tilgang
    0 0 er for backup/dump og er ikke relevant for denne typen filsystemer, men må være med for at Linux skal skjønne formatet

  4. Gjenta punkt 3 til man har lagt inn alle filshares man ønsker/trenger.
  5. Formatet for smbcreds-filen er (eksempel):
    username=testuser
    password=testpassword
    domain=testdomain
  6. Ikke 100% nødvendig, men jeg synes det er greit å ha enkel tilgang til shares og pleier lage en symlink til hver av dem inn i homedir eller en mappe i homedir hvis det er mange shares:
    $ mkdir -p ~/shares/SERVER{1,2,..N}
    $ ln -s /mnt/SERVER1/Share1 ~/shares/SERVER1/Share1
    ...
  7. Når alt er på plass, kjør følgende kommandoer for å gi systemd beskjed om hva som foregår:
    # systemctl daemon-reload
    # systemctl restart remote-fs.target
    # systemctl restart local-fs.target
  8. Alle eksterne filsystemer skal da være tilgjengelige på forespørsel.