Samba

Bilde av Markus Winkler fra Unsplash

Bilde av Markus Winkler fra Unsplash

Fildeling over nettverk fra Linux maskiner kan lett settes opp med samba. Samba er ett program som gjøre det mulig å dele filer via SMB protokollen til Windows Linux og Mac. Når en mappe er delt kan den nås via windows arbeidsgruppen på nettverket og mountes som en nettverks stasjon i Windows, Linux og Mac.

Denne guiden viser hvordan samba installeres og konfigureres i Ubuntu 20.04, men fremgangsmåten er lik for de aller fleste Debian baserte Linux varianter som Raspberry OS, Linux Mint osv.

Installasjon og oppretting av brukere

Samba har andre brukere enn de som finnes fra før i filsystemet

Start med å installere samba på serveren fra terminalen

sudo apt install samba

Normalt ønsker man å begrense tilgangen til delte filer over nettverket. For å at det skal kunne gå an å autentisere brukere må det opprettes brukerkontoer i brukerdatabasen til samba. Hva hver enkelt bruker er autorisert til å gjøre (lese/skrive/kjøre) bestemmes i konfigurasjonen av den delte mappen.

Det er viktig å vite at brukere databasen til samba inneholder ikke de samme som brukerne som ligger i filsystemet på Linux maskinen, til tross for at de kan ha samme navn (og passord).

Alle som trenger tilgang til den delte mappen må få opprettet en brukerkonto i samba brukerdatabasen. For å opprett en bruker benyttes kommandoen smbpasswd, med flagget "-a" for å legget til ny bruker, etterfulgt av brukernavnet til den nye brukeren. I eksempelet under har jeg gitt navnet til den nye brukeren samba_user.

sudo smbpasswd -a samba_user
New SMB password:
Retype new SMB password:
Added user samba_user.

For at den nye brukeren skal funger må den aktiveres. Det gjøres ved å bruke kommandoen smbpasswd, med flagget "-e" for å aktivere, og brukerkontoen som skal aktiveres.

sudo smbpasswd -e samba_user
Enabled user samba_user.

Deling av mappe

Konfigurering av samba

For å legge til en ny delt mappe må configurasjons filen til samba endres på. Derfor er det første vi gjør å navigere til mappen som den ligger i, og tar en kopi av filen som vi gir navnet smb.conf.bak. Den vil fungere som backup fra før vi startet å endre på config filen. Vi vet at den fungerte som den skulle, derfor kan vi ta den i bruk om vi skulle være uheldig og roter oss bort i innstillinger. Detter en en god vane og en billig forsikring å venne seg til i Linux uansett hva man ønsker å endre på.

Når det er gjort er det bare å åpne smb.conf i din favoritt text editor. I eksempelet under er det brukt nano, som er veldig lett bruke.

cd /etc/samba
sudo cp smb.conf smb.conf.bak
sudo nano smb.conf

I eksempelet under ønsker jeg å dele mappen /var/www som er root mappen til alle websidene som jeg server på denne lab serveren. Jeg har gitt den delte mappen navnet "web".

Read only parameteret som er satt til "no" sier at det skal være mulig for autentiserte og autoriserte brukere å endre og lagre nye filer i den delte mappen.

Guest ok parameteret som er satt til "no" sier at man må være autentisert for å ha autorisasjon til å tilgang til filene i den delte mappen.

Force user og force group sier hvilken bruker og bruker gruppe som blir satt som fil eier i filsystemet på Linux serveren. Så til tross for at jeg legger til en ny fil som brukeren samba_user, vil den bli lagret på severe med brukeren og brukergruppen www-data. Dette er systembrukeren til PHP. På den måten hopper jeg litt bukk over potensielle filrettighets problemer senere.

Create mask og directory mask parameterne sier hvilke filrettigheter som blir satt på nye filer og mapper som blir opprettet via fildelingen.

Valid user parameteret setter hvilke samba brukere som får autorisasjon til å ha tilgang til filene i den delte mappen. Brukere som ikke er nevnt her får ikke tilgang til filene selv om de har en samba brukerkonto.

/etc/samba/smb.conf
...
[web]
        comment = web server files
        path = /var/www
        read only = no
        guest ok = no
        create mask = 0760
        directory mask = 0760
        force user = www-data
        force group = www-data
        valid users = samba_user

For å teste at endringene som ble gjort til smb.conf filen kjøres programmet testparm. Hvis alt er rett vil du ikke se noen feilmelding.

testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

Om det ikke dukket opp noen feilmeldinger er det bare å restarte samba tjenesten for at endringene skal tas i bruk.

sudo service smbd restart

Test av fildelingen

På en Windows 10 datamaskin

Nå som samba er installert og en ny delte mappe er konfigurert er det klart til å teste om alt fungerer som det skal.

Åpne File Explorer og naviger til nettverk fra min datamaskin. Der vil du finne Linux maskinen som filene er delt ifra. I eksempelet under heter maskinen WEBLAB.

Screenshot av hvor man finner den delte datmaskin

Fig. 1 - Screenshoten viser hvor man finner den datamaskinen med den delte mappen.

Gå inn på den datamaskinen. Der skal du finne en delt mappe med samme navn som du gav den i smb.conf filen.

Screenshot av den delte mappen

Fig. 2 - Screenshoten viser den delte mappen.

Logg inn med brukernavn og passord til en brukerkonto som har tilstrekkelig autorisasjon for å få tilgang til innholdet i den delte mappen.

Screenshot av autentiseringen

Fig. 3 - Screenshoten viser hvor man taster inn brukernavn og passord

Etter at brukeren er autentisert og det er kontrollert at den har tilstrekkelig autorisasjon vil du kunne bla i den delte mappen som om det var en vanlig mappe på datamaskinen din, eller på en ekstern disk eller minnepenn.

Screenshot av innholdet i den delte mappen

Fig. 4 - Screenshoten viser innholdet i den delte mappen

For å teste at filer som opprettes eller kopieres inn i den delte mappen fra windows er det lurt å teste med en enkel tom tekstfil.

Screenshot av at oppretting av en ny fil fra Windows

Fig. 5 - Screenshoten viser oppretting av en ny fil fra windows

Fra terminalen kan man kontrollere at det ble gitt riktige rettigheter og eier av filen.

ls -l /var/www/
total 4
drwxrwxrwx 11 www-data www-data 4096 Mar  6 22:55 blog.skarshaugs.test
-rwxrw-r--  1 www-data www-data    0 Mar  7 15:18 testFromWindows.txt

Gratulerer! Da her du en fungerende fildeling fra Linux server!