Fildeling med Linux

Introduktion

En filserver er en computer der giver netværkets computere mulighed for at gemme eller hente filer. Det kan den gøre ved give alle adgang eller styre det ved hjælp af rettigheder. Det kan både være på bruger og/eller maskinniveau.

Denne guide sigter mod et simpelt hjemmenetværk med få brugere, og hvor brugeropsætning skal foregå på de enkelte maskiner

Ubuntuserveren er sat op på følgende netværk:

Netværk 192.168.0.0/24
server IP 192.168.0.10
Klient IP DHCP
Windows - workgroup (kun SAMBA/CIFS) HOMENETWORK

Protokoller

I denne guide vil det blive gennemgået hvordan man deler filer på et Linux system ved hjælp af NFS og SAMBA/CIFS.

NFS

NFS står for Network File System. Fordelen ved at anvende NFS er, at det er en integreret del af Linux. Det betyder at man administrerer brugere og rettigheder til filer/mapper direkte.

SMB/CIFS

SMB og CIFS står for henholdsvis Server Message Block og Common Internet File System. SMB protokollen er oprindeligt udviklet af IBM, men blev senere videreudviklet af Microsoft som kaldte deres omplementering for CIFS. I Linuxverdenen har man valgt at kalde implementeringen for SAMBA.

For at få SMB til at virke skal man administrere brugere og rettigheder igennem SAMBA, så det giver et ekstra lag af administration.

Hvad skal du vælge?

Først skal du forholde dig til, om du skal anvende fildelingen i et blandet computermiljø. Hvis netværksdrevene skal tilgås fra både Linux og Windowsmaskiner er der kun et svar, og det er SMB. Det er kun meget få versioner af Windows der understøtter NFS, hvilket må skyldes at Microsoft bevidst har fravalgt det.

Anvender du kun Linux er min anbefaling at du anvender NFS.

Praktisk

For at gøre dette praktisk opretter vi tre forskellige typer af shares (fildelinger) der er afgrænset af henholdsvis brugeren, gruppen og alle.

Sti Beskrivelse
/srv/filer/brugere/*bruger* Brugerens private filer
/srv/filer/grupper/*gruppe* Gruppens filer
/srv/filer/alle Åben for alle - også gæster

Jeg vælger at lægge brugernes private filer i samme mappe som alle de andre. Det er for at gøre det nemmere at have overblik og lave backup. Har man derudover valgt at installere med LVM, så vil man løbende kunne udvide /srv partitionen når der er behov for det.

For at eksemplificere opretter vi en familie med forældrene hans og grethe samt barnet klaus. Vi opretter alle som brugere på filserveren og laver to grupper: en til forældrene (parents) og en til hele familien (familie). Derudover opretter vi også en mappe (alle) hvor gæster også har adgang. Se nedestående skema:

Mappe Hans Grethe klaus Besøgende
/srv/filer/brugere/hans x
/srv/filer/brugere/grethe x
/srv/filer/brugere/klaus x
/srv/filer/grupper/parents x x
/srv/filer/grupper/familie x x x
/srv/filer/alle x x x x

Noget om UID og GID

UID og GID er henholdsvis User og Group IDentification. Det er nogle unikke talværdier der tilhører hver enkelt tjeneste, bruger og gruppe på en Linux computer. Den første bruger du har oprettet på din computer har f.eks. UID/GID 1000 på en Ubuntu computer.

Det er også UID og GID som NFS bruger til at identificere brugere og grupper med. Derfor skal vi sikre os at brugere og grupper har samme ID på hele netværket. I vores tilfælde med få maskiner er det relativt let at styre brugerrettighederne, men til større systemer kan det lade sig gøre at styre det centralt ved hjælp af LDAP (se Setting Up NFS Howto og OpenLDAP Server.

Jeg har i denne guide sat brugerne til at starte fra 2000 og grupperne fra 3000, men du kan vælge helt din egen måde at gøre det på.

Forberedelse af server

Det der skal gøres er følgende:

  1. Oprettelse af brugere
  2. Oprettelse af grupper
  3. Oprettelse af mapper
  4. Sætte bruger og skrive rettigheder på mapper

Da der skal laves en del systemarbejde vælger jeg at skifte til root-shell. Det er for at undgå at skulle skrive sudo foran alle kommandoerne.

sudo su
thoj@mainsrv:~$ sudo su
[sudo] adgangskode for thoj: 
root@mainsrv:/home/thoj#

Opret brugere

Herunder opretter vi brugerne på systemet. Ved at anvende useradd kan vi konfigurere brugeren med det samme. Bl.a. opretter vi ikke nogen hjemmemappe til brugerne, da de ikke har brug for den, og de får heller ikke adgang til selve system, da de ikke kan åbne en shell.

useradd -M -u 2000 -s /usr/sbin/nologin hans useradd -M -u 2001 -s /usr/sbin/nologin grethe useradd -M -u 2002 -s /usr/sbin/nologin klaus

Kontroller at de er oprettet korrekt. De nye brugere er blevet oprettet i bunden af filen /etc/passwd

tail -3 /etc/passwd
root@mainsrv:/home/thoj# tail -3 /etc/passwd
hans:x:2000:2000::/home/hans:/usr/sbin/nologin
grethe:x:2001:2001::/home/grethe:/sbin/nologin
klaus:x:2002:2002::/home/klaus:/sbin/nologin

Opret herefter et password til hver af brugerne ved hjælp af kommandoen passwd. Herunder er det vist med brugeren hans.

passwd hans
root@mainsrv:/home/thoj# passwd hans
Indtast ny UNIX-adgangskode: <-- Indtast password (f.eks: 123qwe)
Genindtast ny UNIX-adgangskode: <-- Indtast password (f.eks: 123qwe)
passwd: password updated successfully

Opret grupper

Opret grupperne parents og familie. Læg mærke til at disse grupper også får et unikt UID.

groupadd -g 3000 parents groupadd -g 3001 familie

Kontroller at gruppen er oprettet korrekt. De nye grupper er blevet oprettet i bunden af filen /etc/group

tail -5 /etc/group
root@mainsrv:/home/thoj# groupadd -g 3000 parents
root@mainsrv:/home/thoj# groupadd -g 3001 familie
root@mainsrv:/home/thoj# tail -5 /etc/group
hans:x:2000:
grethe:x:2001:
klaus:x:2002:
parents:x:3000:
familie:x:3001:

Tilføj forældrene til gruppen parents.

usermod -a -G parents,familie hans usermod -a -G parents,familie grethe usermod -a -G familie klaus

Kontroller at brugerne (her markeret med rødt) er kommet i gruppen parents:

tail -5 /etc/group
root@mainsrv:/home/thoj# tail -5 /etc/group
hans:x:2000:
grethe:x:2001:
klaus:x:2002:
parents:x:3000:hans,grethe <-- medlemmer af gruppen parents
familie:x:3001:hans,grethe,klaus <-- medlemmer af gruppen familie

Opret mapper

Opret mapper til de delte filer

Opret mapper til brugernes private filer mkdir -p /srv/filer/brugere/{hans,grethe,klaus} Opret gruppernes mapper i mappen grupper mkdir -p /srv/filer/grupper/{parents,familie} Opret delt mappe til alle brugere på systemet mkdir -p /srv/filer/alle

For at få et overblik over hele filstrukturen anvender vi kommandoen tree. Hvis den ikke er installerer skal den installeres først:

apt install tree -y tree /srv/filer
root@mainsrv:/srv/filer/grupper# tree /srv/filer
/srv/filer
├── alle
├── brugere
│   ├── grethe
│   ├── hans
│   └── klaus
└── grupper
    ├── familie
    └── parents

8 directories, 0 files

Sæt rettigheder

Efter vi har oprettet mapperne skal der sættes rettigheder på dem, så det kun er ejerne af mapperne der har adgang.

Rettigheder på private mapper chown -R hans:hans /srv/filer/brugere/hans/ chown -R grethe:grethe /srv/filer/brugere/grethe chown -R klaus:klaus /srv/filer/brugere/klaus

Sæt skrive rettigheder

chmod -R 770 /srv/filer/brugere/*

Kontroller at det er gjort korrekt.

ls -l /srv/filer/brugere/
root@mainsrv:/srv/filer# ls -l /srv/filer/brugere/
totalt 12
drwxrwx--- 2 grethe grethe 4096 jul 26 01:09 grethe
drwxrwx--- 2 hans   hans   4096 jul 26 01:09 hans
drwxrwx--- 2 klaus  klaus  4096 jul 26 01:09 klaus
Brugerrettigheder på grupper chown -R root:parents /srv/filer/grupper/parents/ chown -R root:familie /srv/filer/grupper/familie/

Sæt skrive rettigheder

chmod -R 2770 /srv/filer/grupper/*

2 tallet ændrer på måden filer bliver oprettet i mapperne. Normalt vil filer blive oprettet sådan at filen ejes af brugerens egen gruppe. Ved at sætte 2 tallet foran vil alt der skrives i mappen tilhøre den gruppen der ejer mappen.

Kontroller at det er gjort korrekt.

ls -l /srv/filer/grupper
root@mainsrv:/srv/filer# ls -l /srv/filer/grupper/
totalt 8
drwxrwx--- 2 root familie 4096 jul 26 01:09 familie
drwxrwx--- 2 root parents 4096 jul 26 01:09 parents
Brugerrettigheder på mappen alle chown -R nobody:nogroup /srv/filer/alle/

Brugeren nobody og gruppen nogroup har ingen privilegier på et Linuxsystem. Det er en "dummy" bruger/gruppe, man anvender for at højne sikkerheden.

Sæt skrive rettigheder

chmod -R 2777 /srv/filer/alle

Kontroller at det er gjort korrekt.

ls -l /srv/filer
root@mainsrv:/srv/filer# ls -l /srv/filer/
totalt 12
d------r-x 2 nobody nogroup 4096 jul 26 01:09 alle
drwxr-xr-x 5 root   root    4096 jul 26 01:09 brugere
drwxr-xr-x 4 root   root    4096 jul 26 01:09 grupper

For at få en oversigt over alle bruger og skrive rettigheder anvender vi kommandoen tree igen:

tree -pua --dirsfirst /srv/filer/
root@mainsrv:/srv/filer# tree -puga --dirsfirst /srv/filer/
/srv/filer/
├── [d------rwx nobody   nogroup ]  alle
├── [drwxr-xr-x root     root    ]  brugere
│   ├── [drwxrwx--- grethe   grethe  ]  grethe
│   ├── [drwxrwx--- hans     hans    ]  hans
│   └── [drwxrwx--- klaus    klaus   ]  klaus
└── [drwxr-xr-x root     root    ]  grupper
    ├── [d---rwx--- root     familie ]  familie
    └── [d---rwx--- root     parents ]  parents

8 directories, 0 files

Forberedelse af klient

Det der skal gøres er følgende:

  1. Oprettelse af brugere
  2. Oprettelse af grupper
  3. Oprettelse af mapper

Da der skal laves en del systemarbejde vælger jeg at skifte til root-shell. Det er for at undgå at skulle skrive sudo foran alle kommandoerne.

sudo su
thoj@mainsrv:~$ sudo su
[sudo] adgangskode for thoj: 
root@mainsrv:/home/thoj#

Opret brugere

Her vælger vi at oprette alle brugerne så vi kan afprøve vores NFS-server.

*** VIGTIGT *** Læg mærke til at jeg giver dem samme UID som de har på NFS serveren og opretter dem med en hjemmemappe.

useradd -d /home/hans -m hans -u 2000 -s /bin/bash useradd -d /home/grethe -m grethe -u 2001 -s /bin/bash useradd -d /home/klaus -m klaus -u 2002 -s /bin/bash

Sæt passwords

passwd hans passwd grethe passwd klaus

Kontroller

tail -3 /etc/passwd
root@thoj-VirtualBox:/home/thoj# tail -3 /etc/passwd
hans:x:2000:2000::/home/hans:/bin/bash
grethe:x:2001:2001::/home/grethe:/bin/bash
klaus:x:2002:2002::/home/klaus:/bin/bash

Opret grupper

groupadd -g 3000 parents groupadd -g 3001 familie

Tilføj brugerne til deres nye gruppet samt sudo-gruppen. Grunden til at vi tilføjer dem til sudo-gruppen på klienten er for at selv kan montere drev fra serveren.

usermod -a -G parents,familie,sudo hans usermod -a -G parents,familie,sudo grethe usermod -a -G familie,sudo klaus

Kontroller

tail -5 /etc/group && cat /etc/group | grep sudo
root@thoj-VirtualBox:/home/thoj# tail -5 /etc/group && cat /etc/group | grep sudo
hans:x:2000:
grethe:x:2001:
klaus:x:2002:
parents:x:3000:hans,grethe
familie:x:3001:hans,grethe,klaus
sudo:x:27:thoj,hans,klaus,grethe

Læg mærke til, at hvis brugerne ikke er oprettet i de lokale grupper, så har de ikke adgang til gruppedelingerne på NFS serveren. Derfor er det vigtigt at brugerne er oprettet både som brugere, men også i deres respektive grupper på den enkelte maskine.

Opret mapper

Her vælger vi at lægge alle delte filer i mappen /mnt/netværk

mkdir /mnt/netværk

Forlad root-shell med kommandoen exit:

root@thoj-VirtualBox:/home/thoj# exit
exit
thoj@thoj-VirtualBox:~$

NFS

Installation NFS: server

Opsætning af NFS server

Installer NFS-serveren.

sudo apt install nfs-kernel-server -y

NFS shares oprettes i filen /etc/exports.

sudo nano /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_sub$
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

/srv/filer/brugere/hans 192.168.0.0/24(rw,no_subtree_check)
/srv/filer/brugere/grethe 192.168.0.0/24(rw,no_subtree_check)
/srv/filer/brugere/klaus 192.168.0.0/24(rw,no_subtree_check)
/srv/filer/grupper/parents 192.168.0.0/24(rw,no_subtree_check)
/srv/filer/grupper/familie 192.168.0.0/24(rw,no_subtree_check)
/srv/filer/alle 192.168.0.0/24(rw,no_subtree_check)

Nederst i filen står de mapper som er delt. Linierne indeholder 3 dele

Sti til mappen Netværket det er delt på Optioner
/srv/filer/brugere/hans 192.168.0.0/24 (rw,async,no_subtree_check)

Læg mærke til netværksadressen 192.168.0.0/24. Det er denne adresse der fortæller hvilke netværk der har adgang til - i dette tilfælde vores eget netværk. Hvis vi ville have dem delt med alle netværk, anvendes en asterisk (*) i stedet for.

Gør dem tilgængelige for systemet og genstart NFS-serveren:

sudo exportfs -a sudo systemctl restart nfs-kernel-server

Tjek om de er eksporteret korrekt med showmount -e

root@mainsrv:/home/thoj# showmount -e
Export list for mainsrv:
/srv/filer/alle            192.168.0.0/24
/srv/filer/grupper/familie 192.168.0.0/24
/srv/filer/grupper/parents 192.168.0.0/24
/srv/filer/brugere/klaus   192.168.0.0/24
/srv/filer/brugere/grethe  192.168.0.0/24
/srv/filer/brugere/hans    192.168.0.0/24

Installation NFS: klient

apt install nfs-common -y

Montering af NFS drev

Før vi går igang med dette kapitel skal du logge ind med en af de nye brugere der har adgang til NFS serveren. Her vælger jeg hans.

Først finder vi ud af hvilke delinger der ligger på vores NFS-server ved at anvende showmount

showmount -e 192.168.0.10
hans@thoj-VirtualBox:~$ showmount -e 192.168.0.10
Export list for 192.168.0.10:
/srv/filer/alle            192.168.0.0/24
/srv/filer/grupper/familie 192.168.0.0/24
/srv/filer/grupper/parents 192.168.0.0/24
/srv/filer/brugere/klaus   192.168.0.0/24
/srv/filer/brugere/grethe  192.168.0.0/24
/srv/filer/brugere/hans    192.168.0.0/24

For at monere NFS-shares anvedes følgende kommando:

sudo mount *IP_ADRESSE*:*STI_PÅ_NFS_SERVEREN* *LOKALT_MONTERINGSPUNKT*

I vores tilfælde bliver det til følgende kommando hvis vi bare vil have monteret alt som det er på serveren:

sudo mount 192.168.0.10:/srv/filer /mnt/netværk
hans@thoj-VirtualBox:~$  sudo mount 192.168.0.10:/srv/filer /mnt/netværk
[sudo] adgangskode for hans: 

Grunden til at vi ikke vælger at montere fra roden /, er fordi det vil forhindre os i at komme ind i mapperne. Det er først efter /srv/filer at vi har givet brugerne tilladelse til at se og browse imellem mapperne.

Lad os se hvad der er monteret med tree:

tree -puga --dirsfirst /mnt/netværk
hans@thoj-VirtualBox:~$ tree -puga --dirsfirst /mnt/netværk
/mnt/netværk
├── [drwxrwxrwx nobody   nogroup ]  alle
├── [drwxr-xr-x root     root    ]  brugere
│   ├── [drwxrwx--- grethe   grethe  ]  grethe [error opening dir]
│   ├── [drwxrwx--- hans     hans    ]  hans 
│   └── [drwxrwx--- klaus    klaus   ]  klaus [error opening dir]
└── [drwxr-xr-x root     root    ]  grupper
    ├── [drwxrwx--- root     familie ]  familie
    └── [drwxrwx--- root     parents ]  parents

8 directories, 0 files

Læg mærke til fejlmeddelelsen [error opening dir]. Den kommer de steder hvor bruger hans ikke har adgang. Hvis jeg f.eks. vil se hvad der ligger i mappen /mnt/netværk/bruger/grethe så får jeg følgende fejl:

hans@thoj-VirtualBox:~$ ls -l /mnt/netværk/brugere/grethe/
ls: kan ikke åbne katalog '/mnt/netværk/brugere/grethe/': Adgang nægtet

I GUI ser det ud som herunder når jeg er logget ind som hans. Et x markerer at jeg ikke har adgang, og der er vist at jeg har skriverettigheder i /mnt/netværk/alle:

Afmontering af NFS drev

Man kan afmontere NFS drev på to måder. Enten ved at afmontere det man har monteret eller ved at afmontere den mappe man har monteret det i. Dvs. begge nedestående metoder kan anvendes

sudo umount *IP_ADRESSE:*STI_PÅ_NFS_SERVEREN* sudo umount *LOKALT_MONTERINGSPUNKT*

Kan man ikke huske monteringspunktet kan det findes i filen /etc/mtab med følgende kommando

cat /etc/mtab | grep nfs

Det som grep finder er tekstrengen nfs. Jeg har markeret de informationer som skal anvendes til afmontering med gult

hans@thoj-VirtualBox:~$ cat /etc/mtab | grep nfs
192.168.0.10:/srv/filer /mnt/netværknfs4 rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.64,local_lock=none,addr=192.168.0.10 0 0

Afmonteringskommandoen bliver altså:

sudo umount 192.168.0.10:/srv/filer

eller

sudo umount /mnt/netværk

Vi kontrollerer det med tree:

hans@thoj-VirtualBox:~$ tree -puga --dirsfirst /mnt/netværk
/mnt/netværk

0 directories, 0 files

Monter enkelte drev

Man kan også nøjes med at montere enkelte drev. Herunder monterer jeg alle de shares som hans har adgang til. Det gør jeg i hans egen hjemmemappe ~/NFS efter følgende tabel. Det bølgede tegn ~ (tilde) er en notationsmåde for ens hjemmemappe.

Lokal mappe NFS share
~/NFS/alle 192.168.0.10:/srv/filer/alle
~/NFS/familie 192.168.0.10:/srv/filer/grupper/familie
~/NFS/parents 192.168.0.10:/srv/filer/grupper/parents
~/NFS/privat 192.168.0.10:/srv/filer/brugere/hans
  1. Opret mappestruktur
  2. mkdir ~/NFS cd ~/NFS mkdir alle familie parents privat
  3. tilføj NFS drev
  4. sudo mount 192.168.0.10:/srv/filer/alle ~/NFS/alle sudo mount 192.168.0.10:/srv/filer/grupper/familie ~/NFS/familie/ sudo mount 192.168.0.10:/srv/filer/grupper/parents ~/NFS/parents/ sudo mount 192.168.0.10:/srv/filer/brugere/hans ~/NFS/privat/

Montering ved opstart

Hvis man ønsker at ens drev skal være tilgængelige fra opstart af kan man montere sine NFS drev underopstarten af computeren ved at anvende filen /etc/fstab. Herunder er /etc/fstab vist ud fra en standardinstalltion med et systemdrev og et swap-drev.

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=ab212677-8172-4316-8258-3b23f3d04604 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=c31153ca-5efe-4880-b4cd-bfbd56e1bc3f none            swap    sw              0       0

For at få monteret alle vores drev i mappen /mnt/netværk skal følgende linie indsættes i bunden af /etc/fstab:

192.168.0.10:/srv/filer /mnt/netværk nfs rsize=8192,wsize=8192,timeo=14,intr

Monteringsmappen skal være oprettet, så for at sikre os at den er der opretter vi den:

mkdir -p /mnt/netværk

Indsæt linien ved hjælp af nano. Indsæt også en beskrivelse i en linie der starter med #:

sudo nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=ab212677-8172-4316-8258-3b23f3d04604 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=c31153ca-5efe-4880-b4cd-bfbd56e1bc3f none            swap    sw              0       0


# NFS shares fra 192.168.0.10
192.168.0.10:/srv/filer /mnt/netværk nfs rsize=8192,wsize=8192,timeo=14,intr

Genstart computeren og sikr dig at NFS-drevene er monteret

sudo reboot

SMB

Al konfiguration af SAMBA foregår i filen /etc/samba/smb.conf. Det er en stor fil, med mange opsætningsmuligheder. En ting man skal være opmærksoom på så snart man begynder at arbejde med Windowsnetværk er, at Windows ikke kan kende forskel på store og små bogstaver når vi snakker netværk. Der vil altså ikke være forskel på et share der hedder MITshare og miTShAre. Derudover anvender Windowsnetværk en meget begrænset tegntabel. Man kan altså heller ikke anvende æ, ø eller å. Det er vigtigt at man er opmærksom på dette. En god måde at skabe læsbarhed er ved at anvende en kombination af store og små bogstaver samt underscore f.eks. MitShare eller mit_share.

Opsætning af SMB

Opsætning SMB server

Installer SAMBA serveren

sudo apt install samba -y

Hvis du i løbet af guiden kommer til at lave fejl og har brug for at lave en helt ny installation skal du anvende følgende kommando. På den måde får du igen de oprindelige konfigurationsfiler.

sudo apt purge samba samba-common Opsætning af SMB klient

sudo apt install smbclient cifs-utils -y

Konfiguration SAMBA

  1. Konfigurer /etc/samba/smb.conf
  2. Tilføj dit share til /etc/samba/smb.conf
  3. Opret mapperne hvor filerne skal ligge
  4. Tilføj brugere der skal kunne anvende Samba
  5. Genstart samba

For at konfigurere SAMBA skal vi have åbnet filen /etc/samba/smb.conf på serveren:

sudo nano /etc/samba/smb.conf

Vi skal have sat navnet på vores workgroup til HOMENETWORK og sat sikkerheden til user.

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = HOMENETWORK <-- Ændr denne linie 

   security = user <-- Tilføj hele denne linie

Opret brugerne

Til forskel fra NFS skal brugerne oprettes i SAMBA. Brugerne behøver ikke have det samme password i SAMBA, som de har på selve computeren, men det kan gøre det noget nemmere at administrere for alle.

smbpasswd -a *brugernavn*

I vores tilfælde bliver det altså (i root-shell):

smbpasswd -a hans smbpasswd -a grethe smbpasswd -a klaus
root@mainsrv:/home/thoj# smbpasswd -a hans
New SMB password:
Retype new SMB password:
Added user hans.
root@mainsrv:/home/thoj# smbpasswd -a grethe
New SMB password:
Retype new SMB password:
Added user grethe.
root@mainsrv:/home/thoj# smbpasswd -a klaus
New SMB password:
Retype new SMB password:
Added user klaus.
root@mainsrv:/home/thoj#

Opret shares

For at få adgang til filer ved hjælp af SAMBA skal man have defineret nogle shares. Det skal gøres for hver enkelt mappe vi har delt. Shares indsættes nederst i /etc/samba/smb.conf. Et share er opbygget efter følgende skabelon:

[alle]                                    <-- Navn på share
    comment = Ubuntu File Server Share    <-- Beskrivelse af share  
    path = /srv/samba/alle                <-- Stien til filerne  
    browsable = yes                       <-- Om man kan browse ind i den 
    guest ok = yes                        <-- Om ikke godkendte brugere kan skrive i den
    read only = no                        <-- Om man kun kan læse i den (ikke skrive)
    create mask = 0755                    <-- Hvordan filer oprettes
Opret shares til private mapper

Vi skal altså have oprettet et share for hver af de private mapper.

[hans_privat]
   comment = hans privat
   path = /srv/filer/brugere/hans
   browsable = yes
   guest ok = no
   read only = no
   create mask = 0700

[grethe_privat]
   comment = grethe privat
   path = /srv/filer/brugere/grethe
   browsable = yes
   guest ok = no
   read only = no
   create mask = 0700

[klaus_privat]
   comment = klaus privat
   path = /srv/filer/brugere/klaus
   browsable = yes
   guest ok = no
   read only = no
   create mask = 0700
Opret shares til grupperne
[familie]
   comment = familie gruppen
   path = /srv/filer/grupper/familie
   browsable = yes
   guest ok = no
   read only = no
   create mask = 0770

[parents]
   comment = forældre gruppen
   path = /srv/filer/grupper/parents
   browsable = yes
   guest ok = no
   read only = no
   create mask = 0770
Opret share til alle
[alle]
   comment = Åben for alle
   path = /srv/filer/alle
   browsable = yes
   guest ok = yes
   read only = no
   create mask = 0777

Genstart herefter SAMBA:

sudo systemctl restart smbd nmbd

Montering af SMB GUI

En af de ting man skal vænne sig til når man arbejder med SAMBA er, at det ikke er en integreret del af systemet. Derfor er monteringsprocessen også mere omstændig. Herunder vil vi få adgang til SAMBA shares ved hjælp af Ubuntu's grafiske brugerflade.

Log ind med en af vores brugere (jeg har valgt hans) og åbn Filer og vælg Forbind til server. Her skriver du protokolnavnet efterfulgt af SAMBA-serverens IP (smb://192.168.0.10). Herefter vælges Tilslut.

Her får du alle delingerne fra SAMBA-serveren.

Vælg hans_privat og udfyld næste vindue med de rigtige data og vælg Tilslut.

Herefter er du inde i mappen.

Vælger du mappen alle bliver du ikke spurgt om password eller brugernavn, da den er åben for alle.

Vælger du senere en mappe der kræver dine loginoplysninger vil de blive "genbrugt" så du ikke skal indtaste dem hver gang.

Montering fra kommandolinien

Hvis du lagde mærke til det har vi sat alle vores shares til at være browsable. Det er nødvendigt hvis vi vil kunne tilgå dem ved hjælp af GUI. Vi kunne også have valgt at montere drevene direkte ved hjælp af en kommando. Herunder vil vi tilgå et sambashare direkte ved hjælp af en cifs kommando. Vi vil oprette mappen samba i hjemmemappen og deri montere vores private drev:

mkdir -p ~/samba/privat

Herefter kan vi montere drevet direkte ved at køre nedenstående

sudo mount -t cifs -o user=hans //192.168.0.10/hans_privat ~/samba/privat/
hans@thoj-VirtualBox:~$ sudo mount -t cifs -o user=hans //192.168.0.10/hans_privat ~/samba/privat/
[sudo] adgangskode for hans: 
Password for hans@//192.168.0.10/hans_privat:  ******

Læg mærke til at den første adgangskode er fra Ubuntusystemet der vil have dit sudo password. Anden gang er det SMB serveren der vil have dit password. Læg mærke til at der kommer en stjerne for hvert tegn du taster.

Det er vigtigt at huske at angive den bruger som vil bruge dette SAMBA-share. Hvis man ikke gør det vil SAMBA sætter brugeren til root - og den kender SAMBA ikke.

Montering ved opstart

For at montere et drev under opstart skal vi igennem en mere omstændig proces end ved NFS. Det skyldes at vores eget system ikke kender de passwords der hører til. Det kan absolut kun anbefales at gøre på en computer der kun anvendes af en selv.

Før vi starter skal vi have oprettet ens credentials fil. Læg mærke til at filen gøres skjult ved at sætte et . (punktum) foran den.

nano ~/.smbcredentials

Indsæt følgende i filen

username=hans
password=123qwe

Ændr herefter rettighederne på den så det kun er dig der kan se og redigere i den:

chmod 600 .smbcredentials

Kontroller at det er gjort korrekt:

ls -al | grep smb
hans@thoj-VirtualBox:~$ ls -al | grep smb
-rw-------  1 hans hans   30 jul 27 21:02 .smbcredentials

Herefter indsættes følgende i /etc/fstab

//192.168.0.10/hans_privat /home/hans/samba/privat/ cifs credentials=/home/hans/.smbcredentials 0 0