Linux Systeembeheer/Bestanden en printers delen: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Nick Corthals (overleg | bijdragen)
Tectux (overleg | bijdragen)
Regel 24:
== Bestanden delen, de UNIX-manier: NFS ==
 
NFS staat voor Network File System en is een protocol dat oorspronkelijk ontwikkeld werd door Sun Microsystems in 1984. NFS maakt het mogelijk om bestanden op te vragen over het netwerk op dezelfde manier als men dit zou doen voor bestanden op de lokale schijf. De meest recente versie is NFSv4.
We beginnen met het installeren van de nodige pakketten. <br/>
::'''#yum install –y nfs-utils portmap'''
 
=== Installatie ===
Maak eerst de nodige mappen aan:<br/>
::'''$ mkdir /shares /shares/Public /shares/Public/upload'''
::'''chcon -R -t public_content_t /shares/Public'''
::'''chcon -R -t public_content_rw_t /shares/Public/upload'''
 
''De opdrachtregels die verder volgen zijn getest op een minimale installatie van CentOS 5.5.''
Nu gaan we het exportsbestand aanpassen om de nodige rechten op de shares in te stelleen. <br/>
::'''#nano /etc/exports'''
 
We beginnen met de installatie van het pakket ''nfs-utils'', wat meteen ook de nodige ''dependencies'' installeert zoals onder andere ''portmap'' en ''nfs-utils-lib''.
Daarin voegen we volgende regels toe: (bij wijzigen achteraf: #exportfs –rv) <br/>
/shares/Public *(ro,sync,all_squash)
/shares/Public/upload *(rw,all_squash)
 
$ yum install nfs-utils
De instellingen hieronder zijn van toepassing in het netwerklokaal, pas deze aan voor je eigen configuratie indien nodig.
Eerst stellen we de server-host in: <br/>
::'''#echo ’10.0.3.250 server’ >> /etc/hosts'''
 
=== Configuratie ===
Vervolgens stellen we de hosts in die we willen toelaten tot de server:
 
::'''#nano /etc/hosts.allow'''
In het bestand ''/etc/exports'' bepalen we welke map(pen) we met welke hosts willen delen. Een configuratieregel heeft volgende syntax:
 
:<export> <host1>(<options>) ... <hostN>(<options>)
 
Mogelijke opties zijn onder andere:
 
:ro/rw, async/sync, wdelay, all_squash, no_root_squash
 
De optie ''all_squash'' maakt dat gebruikers die verbinding maken met het NFS, de account en permissies van de ''nobody'' account krijgen. Met de optie ''no_root_squash'' kan het NFS benaderd worden als ''root'' gebruiker.
 
Als voorbeeld delen we de map ''/shares/Public'' met hosts op de netwerken 192.168.1.0/24 en 10.0.0.0/16. Uitsluitend in de map ''/shares/Public/upload'' mag het mogelijk zijn bestanden te schrijven naar het NFS.
 
$ vi /etc/exports
/shares/Public 192.168.1.0/24(rw,sync,all_squash,fsid=0) 10.0.0.0/16(rw,sync,all_squash,fsid=0)
 
Met de optie ''fsid=0'' vertellen we de server dat deze export de root van het NFS is. Bemerk ook dat we voor de optie ''rw'' kiezen, hoewel we hosts geen schrijfrechten gunnen. We doen dat omdat we aan de map ''upload'' wel schrijfrechten willen toevertrouwen. Een alternatief is twee configuratieregels te definiëren, een met ''ro'' en een met ''rw'', maar dat garandeert geen probleemloos resultaat.
Doordat we in het bestand ''exports'' al hosts definiëren, hoeven we geen gebruik te maken van de bestanden ''hosts.allow'' en ''hosts.deny''.
 
Vervolgens maken we de te delen mappen aan en verlenen iedereen schrijfrechten op de map ''upload''. We maken voor het voorbeeld ook enkele testbestanden aan.
 
$ mkdir -p /shares/Public/upload
$ chmod 777 /shares/Public/upload
$ for i in 0 1 2; do touch /shares/Public/file-$i; done
 
Tenslotte stellen we de firewall in om NFS verkeer toe te laten.
 
$ system-config-securitylevel-tui
Security Level: Enabled
SELinux: Enforcing
Klik op 'Customize' en vink 'NFS4' aan.
 
De configuratie is klaar. We starten de nodige services.
 
$ service portmap start
$ service nfs start
$ service nfslock start
 
Als we de services automatisch willen starten bij het opstarten van de server kunnen we het commando ''chkconfig'' gebruiken.
 
$ chkconfig --list
$ chkconfig nfs on
 
Als het bestand ''/etc/exports'' gewijzigd wordt, kan de nieuwe configuratie gebruikt worden zonder de nfs service te herstarten met het ''exportfs'' commando.
 
$ exportfs -ra
 
Bemerk dat de poorten die NFS gebruikt standaard niet vastliggen. Controleren op welke poorten de services draaien kunnen we doen met ''rpcinfo''.
 
$ rpcinfo -p
 
=== Testen ===
 
In het voorbeeld is het adres van de server 192.168.1.115.
 
'''1. Op de CentOS server zelf'''
$ mount -vt nfs4 192.168.1.115:/ /mnt
$ ls /mnt
file0 file1 file2 upload
$ touch /mnt/writetest
touch: cannot touch '/mnt/writetest': Permission denied # OK #
$ touch /mnt/upload/writetest; ls /mnt/upload
writetest # OK #
$ umount /mnt
 
'''2. Op een CentOS client'''
$ yum install nfs-utils
$ service portmap start
$ service nfs start
$ service nfslock start
$ mount -vt nfs4 192.168.1.115:/ /mnt
$ vi /mnt/upload/writetest
blah
:wq # OK #
$ umount /mnt
 
'''3. Op een Debian/Ubuntu client'''
$ sudo apt-get install nfs-common
$ sudo modprobe nfs
$ sudo mount -vt nfs4 192.168.1.115:/ /mnt
$ ls /mnt
file0 file1 file2 upload
$ umount /mnt
 
 
=== Alternatief met vaste poorten en hosts.allow/deny ===
 
Maak eerst de nodige mappen aan.
$ mkdir /shares /shares/Public /shares/Public/upload
$ chcon -R -t public_content_t /shares/Public
$ chcon -R -t public_content_rw_t /shares/Public/upload
 
Nu gaan we het exportsbestand aanpassen om de nodige rechten op de shares in te stellen.
$ nano /etc/exports
 
Daarin voegen we volgende regels toe.
/shares/Public *(ro,sync,all_squash)
/shares/Public/upload *(rw,all_squash)
 
De instellingen hieronder zijn van toepassing in het netwerklokaal, pas deze aan voor je eigen configuratie indien nodig.
Eerst stellen we de server-host in.
$ echo ’10.0.3.250 server’ >> /etc/hosts
 
Vervolgens stellen we de hosts in die we willen toelaten tot de server.
Hier geven we het volgende in: <br/>
$ nano /etc/hosts.allow
portmap:10. : allow
lockd: 10. : allow
Regel 52 ⟶ 145:
rquotad: 10. :allow
statd: 10. : allow
OPMERKING: Indien je gebruik maakt van notatie 10.*.*.*/255.0.0.0 kan dit volgende fout opleveren : "RPC: Program not registered".<br/>
Tot slot stellen we de hosts in die geen toegang krijgen tot de server: <br/>
::'''#nano /etc/hosts.deny'''
 
{{Bericht
Hier geven we het volgende in: <br/>
| titel=Opmerking:
| bericht=Indien je gebruik maakt van notatie 10.*.*.*/255.0.0.0 kan dit volgende fout opleveren: "RPC: Program not registered".
| type=opmerking
}}
 
Tot slot stellen we de hosts in die geen toegang krijgen tot de server.
$ nano /etc/hosts.deny
portmap:ALL
lockd:ALL
Regel 63 ⟶ 160:
statd:ALL
 
Omdat de poorten variabel zijn bij NFS, is het geen slecht idee om deze vast in te stellen, wat het configureren van de firewall daarna makkelijker zal maken: <br/>maakt.
::'''# $ nano /etc/sysconfig/nfs'''
Dit bestand stellen we als volgt in: <br/>
RQUOTAD_PORT=9403
LOCKD_TCPPORT=8001
Regel 73 ⟶ 168:
STATD_PORT=9401
 
Vervolgens voegen we de juiste poorten toe aan de firewall (/etc/sysconfig/iptables): <br/>
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp --dport 111 -j ACCEPT
Regel 88 ⟶ 183:
-A INPUT -p udp --dport 8002 -j ACCEPT
 
Als allerlaatste inspanning veranderen we nog de instellingen van SELinux: <br/>.
::'''# $ setsebool -P nfs_export_all_rw on'''
::'''# $ setsebool -P samba_share_nfs on'''
 
Nu dienen we juist nog de service te starten en deze ook automatisch te laten starten bij het booten van de server: <br/>.
::'''# $ chkconfig --level 2345 nfs on'''
::'''# $ service nfs start'''
 
Indien jehet daemonstarten servicevan failedde omservice te starten danfaalt ligt het probleem waarschijnlijk bij jede portmap service die niet gestart isdraait.<br/>
$ service portmap start
Dit doe je door:<br/>
# of
::'''#service portmap start'''
$ service rpcbind start
of<br/>
::'''#service rpcbind start'''
 
WeNu kunnen we de nuNFS testen door de NFSze te mounten op een andere pc/client. enWe zullen proberen een bestand aan te maken. <br/>
::'''# $ mkdir /mnt/Public'''
::'''# $ mkdir /mnt/upload'''
::'''# $ mount 10.0.3.250:/home/shares/Public /mnt/Public'''
::'''# $ mount 10.0.3.250:/home/shares/Public/upload /mnt/upload'''
::'''# $ touch /mnt/Public/alleenlezen.txt (dit lukt niet angezienaangezien ro, wel lezen)'''
::'''# $ touch /mnt/upload/lezenenschrijven.txt (dit lukt wel aangeizenaangezien rw)'''
 
{{Bericht
'''Opmerking! Mount werkt niet altijd. Bij fout--> mount.nfs : mount system call fail. Probeer mount -t nfs4 voor beter resultaat'''
| titel=Opmerking:
| bericht=Mount werkt niet altijd. Bij fout: ''mount.nfs : mount system call fail''. Probeer ''mount -t nfs4'' voor een beter resultaat.
| type=opmerking
}}
 
De client moet ook NFS ondersteunen, indien dit niet het geval is krijg je een error.<br/>
$ sudo mount server:/shares/Public /mnt/Public
mount: wrong fs type, bad option, bad superblock on server:/shares/Public, missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program)
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try dmesg | tail or so
(for several filesystems (e.g. nfs, cifs) you might
 
need a /sbin/mount.<type> helper program)
Je kan dit oplossen door:
In some cases useful info is found in syslog - try
$ sudo apt-get install nfs-common portmap # Ubuntu/Debian
dmesg | tail or so
$ sudo yum -y install nfs-utils portmon # Fedora/CentOS
je kan dit oplossen door:
::'''Ubuntu/Debian: sudo apt-get install nfs-common portmap'''
::'''Fedora/CentOS: sudo yum -y install nfs-utils portmon'''
 
Toen ik deze stappen de eerste maal volgde werkte alles zonder problemen. Bij een tweede poging werd mijn /shares/Public/upload folder steeds als "read-only" gemount. Ik ging er vanuit dat ik iets verkeerd gedaan had de tweede maal maar blijkbaar zijn er nog mensen bij wie deze folder als read-only mount. Ik heb dit "opgelost" door eerst de folder te mounten op de host en dan op de VM de rechten van de folder te veranderen als volgt:
 
::'''$ sudo chmod ugo+rw /shares/Public/upload'''
$ sudo chmod ugo+rw /shares/Public/upload
 
Ik betwijfel of dit DE oplossing is, maar het werkt.
Indien dit niet zou lukken kunnen we altijd controleren of alle poorten open staan via het commando op de client in te geven: <br/>
::'''# $ rpcinfo –p 10.0.3.250'''
 
Of op de server met:
$ rpcinfo -p
 
Als alternatief kan je ook ''netstat'' of ''nmap'' gebruiken:
En op de server kijken we welke poorten open staan. Als de firewall aanstaat via het commando:
$ netstat -ntl
::'''#netstat -ntl''' of via '''nmap'''
 
== Bestanden delen, de Windows-manier: Samba ==
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.