In de vorige editie van deze rubriek keken we naar hoe je apps van een ander besturingssysteem op Linux kunt draaien. Dat is leuk, maar in sommige gevallen overbodig. Het komt namelijk veel vaker voor dat je alleen toegang nodig hebt tot de bestanden op een ander besturingssysteem. Meestal staan die bestanden niet eens op dezelfde computer: je moet bij mappen kunnen op andere besturingssystemen op verschillende computers. In dit artikel kijken we naar twee manieren om via het netwerk bij de bestanden van een ander OS te komen.

Terminologie

Als we van de ene computer bij de bestanden van een andere computer willen, dan verbinden we vanaf de client met de server, waar we de bestanden ophalen via een filesysteem. Die server kan ook gewoon een andere computer zijn, maar vaak is het een centrale opslagplaats van data.Een veel voorkomend scenario is bijvoorbeeld om de home directoriesvan gebruikers via het netwerk beschikbaar te maken. Op die manier kun je bijvoorbeeld binnen een bedrijf of universiteit op een willekeurig workstation inloggen en toch altijd toegang hebben tot de bestanden in je home map, die op de server staan. Een NAS (Network Attached Storage device) is een ander voorbeeld van zon centrale opslagplaats.

NFS

UNIX-systemen gebruiken het Network File System (NFS) voor het delen van bestanden. Dit protocol stamt uit 1984 en is te vinden in elk UNIX-achtig besturingssysteem, variërend van Linux tot *BSD tot Mac OS X. Het voordeel van NFS is dat het erg goed geïntegreerd is in het systeem. Je verkrijgt toegang tot een NFS-gedeelde map door hem te mounten, net zoals je dat bij bijvoorbeeld een DVD-drive of USB-stick zou doen.

NFS Server

Het installeren van NFS is dan ook erg vanzelfsprekend. Stel dat we een Ubuntu-achtig systeem gebruiken. Op de server installeren we dan NFS als volgt:

 

sudo apt-get install nfs-kernel-server

 

Om bijvoorbeeld de map /export te delen met computers in ons interne netwerk met IP-adressen 192.168.1.X, voegen we het volgende toe aan /etc/exports:

 

/export       192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async)

 Vervolgens starten we de NFS server:

 

sudo service nfs-kernel-server start

 

NFS Client

Om nu bij de bestanden op de NFS server te kunnen komen, installeren we op de client de NFS client software:

sudo apt-get install nfs-common

 

Vervolgens mounten we de map in /mnt/share:

 

mount -t nfs -o proto=tcp,port=2049 nfs-server:/ /mnt/share

 

Let er op dat nfs-servereen hostname is en dus moet verwijzen naar het IP-adres van de NFS server. Om dit automatisch te doen, voegen we het volgende aan /etc/fstab toe:

nfs-server:/   /mnt/share  nfs    auto  0  0

Om alle gedeelde mappen van een NFS server op IP-adres 192.168.1.100 te bekijken, voeren we het volgende commando uit:

 

$ sudo showmount -e nfs-server
Export list for nfs-server:
/export 192.168.1.0/24

Natuurlijk kun je NFS nog veel uitgebreider configureren. Waarschijnlijk wil je bijvoorbeeld niet zomaar iedere gebruiker toegang geven, maar zoals je ziet is het in de basis een fluitje van een cent!

Samba

Zoals je misschien wel had kunnen verwachten, spreken Windows-computers weer een hele andere taal met elkaar dan UNIX-systemen. De open source software Samba biedt gelukkig uitkomst en zorgt ervoor dat je ook op Linux kunt communiceren met het SMB/CIFS protocol dat Windows-systemen onderling gebruiken. Samba is erg goed in het nadoenvan Windows. Je kunt er een Windows-client mee zijn, maar ook een server, waarvan alle andere Windows-systemen denken dat ze met een echte Windows-server praten. Voor bestanden, maar ook printers bijvoorbeeld. Je kunt er zelfs het gebruikersbeheer van een Windows-netwerk mee controleren.

Samba server

Het is makkelijk om zelf via Samba bestanden te delen. Dit kan bijvoorbeeld in Ubuntu al via Nautilus. Om het vanaf de commandline te doen, waarbij we gebruik kunnen maken van geavanceerdere opties, installeren we eerst Samba:

sudo apt-get install samba

Vervolgens maken we een Samba gebruiker aan. Als je vanaf Windows bij de share wilt komen, vul je deze gegevens in. Het gebruikersbeheer van Samba staat los van het systeem zelf:

sudo smbpasswd -a linmag

Daarna moeten we het configuratiebestand /etc/samba/smb.conf aanpassen. Voeg aan het einde van dat bestand toe:

[mijngedeeldemap]
path = /home/linmag/gedeeldemap
available = yes
valid users = linmag
read only = no
browseable = yes
public = yes
writable = yes

Herstart vervolgens de Samba server:

 

sudo service smbd restart

Je kunt nu vanaf Windows (of andere Linux-systemen met Samba) bij je gedeelde map, door bijvoorbeeld in Windows Explorer naar //192.168.1.100/mijngedeeldemap te gaan, als dat je IP- adres is.

 

Netwerkintegratie

Om je Samba server goed in je netwerk te integreren en te zorgen dat de gedeelde map bijvoorbeeld automatisch door Windows-systemen wordt gevonden, moet je onder andere ook de workshop onder [globals] instellen:

workgroup = LINUXMAGAZINE

Om te controleren of je configuratie correct is gebruik je:

testparm

 

Samba client

Om vanaf Linux met SMB/CIFS servers (Windows of Samba) te kunnen praten, installeren we het cifs-utils package:

 

sudo apt-get install cifs-utils

 

We maken vervolgens een bestand aan met onze Windows inloggegevens (credentials), bijvoorbeeld in /home/linmag/.smbcredentials:

 username= gebruikersnaam
password= wachtwoord

Om vervolgens een gedeelde map op een ander systeem te mounten, gebruiken we:

 

sudo mount -t cifs //WindowsPC/share -o credentials=/home/linmag/.smbcredentials /mnt/share

 

Als we nu naar /mnt/share gaan, zien we de gedeelde Windows-map. Let er wel op dat het forward slashes zijn, in plaats van backward, zoals je in Windows zou gebruiken en dat WindowsPCmoet verwijzen naar een IP-adres. Dit kan bijvoorbeeld door de verwijzing aan /etc/hosts toe te voegen:

 

192.168.1.100    WindowsPC

Om het mounten van de Windows share automatisch te maken, kun je het volgende aan /etc/fstab toe voegen:

 

//WindowsPC/share /mnt/share cifs \ iocharset=utf8,credentials=/home/linmag/.smbcredentials,uid=1000 0 0

 

Als laatste stap, tenzij je graag opnieuw wilt opstarten, mount je alle entries in /etc/fstab:

sudo mount -a

 

Topje van de ijsberg

Dit is natuurlijk maar het topje van de ijsberg. Samba heeft geavanceerde instellingen voor gebruikersbeheer en verschillende varianten van beveiligingsinstellingen. Als je een simpele map of printer met je netwerk wilt delen, hoef je misschien niet al te hard na te denken over beveiliging, maar bij de centrale data-opslag van een groot bedrijf natuurlijk des te meer! Je moet daarbij vooral denken aan permissies, welke gebruikers bij welke map mogen en dat soort zaken. Maar zoals gezegd, je kunt met Samba zeker nog veel verder de diepte in en het bijvoorbeeld als domain controller van een Windows-netwerk gebruiken. Voor zo’n belangrijke taak gebruik je natuurlijk liever Linux 😉

 

Conclusie

Het komt vaak voor dat je bestanden binnen een netwerk wilt delen. Met NFS kun je gemakkelijk bestanden delen met andere UNIX-achtige besturingssysteem, terwijl je met  Samba hetzelfde doet voor Windows. We hebben hier gezien hoe makkelijk het is: met een paar commandos heb je toegang tot de bestanden van een ander OS!

 

Referenties

Samba: www.samba.org