Difference between revisions of "NFS"

From A-Eskwiki
Jump to: navigation, search
(NFS-client aanmaken)
(NFS-client aanmaken)
 
(9 intermediate revisions by one other user not shown)
Line 16: Line 16:
 
De eerste stap die gedaan moet worden is dat op de ipa-server het volgende commando moet worden uitgevoerd:
 
De eerste stap die gedaan moet worden is dat op de ipa-server het volgende commando moet worden uitgevoerd:
 
<pre>
 
<pre>
ipa service-add nfs/<ipa-server-addres>
+
ipa service-add nfs/<nfs-server-addres>
 
</pre>
 
</pre>
 
(Als root): Zorg dat de volgende packages geïnstalleerd zijn op de nfs-server: rpcbind nfs-utils nfs-utils-lib. Zo niet:
 
(Als root): Zorg dat de volgende packages geïnstalleerd zijn op de nfs-server: rpcbind nfs-utils nfs-utils-lib. Zo niet:
Line 37: Line 37:
 
*TCP/UDP 111: voor de portmapper
 
*TCP/UDP 111: voor de portmapper
 
*TCP 2049: voor NFSD
 
*TCP 2049: voor NFSD
 +
*TCP 32803
 +
*UDP 32769
 +
*TCP/UDP 892
 +
*TCP/UDP 875
 +
*TCP/UDP 662
 
en verander het volgende in /etc/sysconf/nfs:
 
en verander het volgende in /etc/sysconf/nfs:
 
<pre>
 
<pre>
Line 45: Line 50:
 
STATD_PORT=662
 
STATD_PORT=662
 
STATD_OUTGOING_PORT=2020
 
STATD_OUTGOING_PORT=2020
</pre>
+
RDMA_PORT=2049
en zet het volgende in /etc/sysconf/iptables:
+
<pre>
+
-A INPUT -m state --state NEW -p tcp --dport 32803 -j ACCEPT
+
-A INPUT -m state --state NEW -p udp --dport 32769 -j ACCEPT
+
-A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT
+
-A INPUT -m state --state NEW -p udp --dport 892 -j ACCEPT
+
-A INPUT -m state --state NEW -p tcp --dport 875 -j ACCEPT
+
-A INPUT -m state --state NEW -p udp --dport 875 -j ACCEPT
+
-A INPUT -m state --state NEW -p tcp --dport 662 -j ACCEPT
+
-A INPUT -m state --state NEW -p udp --dport 662 -j ACCEPT
+
 
</pre>
 
</pre>
 
Restart iptables en nfs:
 
Restart iptables en nfs:
Line 61: Line 56:
 
service iptables restart
 
service iptables restart
 
service nfs restart
 
service nfs restart
 +
</pre>
 +
Kopiëer de krb5.keytab:
 +
<pre>
 +
kinit <user>
 +
ipa-getkeytab -s <ipa-server> -p nfs/<nfs-server> -k /etc/krb5.keytab
 
</pre>
 
</pre>
 
In het bestand /etc/exports staan alle directories die je via nfs wilt delen. Voeg voor iedere dir die je wilt delen de volgende regels aan /etc/exports toe:
 
In het bestand /etc/exports staan alle directories die je via nfs wilt delen. Voeg voor iedere dir die je wilt delen de volgende regels aan /etc/exports toe:
Line 101: Line 101:
 
Ook kan je de nfs automatisch laten mounten bij startup door de volgende regel toe te voegen in /etc/fstab:
 
Ook kan je de nfs automatisch laten mounten bij startup door de volgende regel toe te voegen in /etc/fstab:
 
<pre>
 
<pre>
<NFS-SERVER-IP>:<DIR> <MOUNTDIR>  nfs4   rw,noatime,context="selinuxcontext"  0 0
+
<NFS-SERVER-IP>:<DIR> <MOUNTDIR>  nfs   rw,noatime,context="selinuxcontext"  0 0
 
</pre>
 
</pre>
Als je wilt zorgen dat homedirs automatisch op de client worden aangemaakt als een user voor de eerste keer inlogt moet je een aantal selinux-policies met de hand toevoegen. Voer het volgende uit (let op, voor audit2allow heb je policycoreutils-python nodig):
+
Als je de home partitie mount in CentOS, zorg dan voor de juiste SELinuxcontext, system_u:object_r:user_home_t:s0.
<pre>
+
 
echo "type=AVC msg=audit(1362752162.919:44): avc:  denied  { associate } for  pid=1803 comm="mkhomedir" name="root" \
+
Bij Fedora wordt tijdens de kickstart automatisch de nfs in de fstab gezet. Als dit niet zo is, let er dan op dat bij het mounten van de homepartitie geen context meegegeven wordt, de context wordt dan standaard gezet.
scontext=unconfined_u:object_r:user_home_dir_t:s0 tcontext=system_u:object_r:home_root_t:s0 tclass=filesystem" | audit2allow -M nfs-audit1
+
echo "type=AVC msg=audit(1362752477.581:55): avc:  denied  { setattr } for  pid=1847 comm="mkhomedir" name="root" dev=0:14 ino=25952257 \
+
scontext=unconfined_u:unconfined_r:oddjob_mkhomedir_t:s0-s0:c0.c1023 tcontext=system_u:object_r:home_root_t:s0 tclass=dir" | audit2allow -M nfs-audit2
+
echo "type=AVC msg=audit(1362752477.582:56): avc:  denied  { rmdir } for  pid=1847 comm="mkhomedir" name="loostrum" dev=0:14 ino=25952257 \
+
scontext=unconfined_u:unconfined_r:oddjob_mkhomedir_t:s0-s0:c0.c1023 tcontext=system_u:object_r:home_root_t:s0 tclass=dir" | audit2allow -M nfs-audit3
+
echo "type=AVC msg=audit(1362752777.335:83): avc:  denied  { create } for  pid=1892 comm="mkhomedir" name=".bash_profile" \
+
scontext=unconfined_u:unconfined_r:oddjob_mkhomedir_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:home_root_t:s0 tclass=file" | audit2allow -M nfs-audit4
+
echo "type=AVC msg=audit(1362752938.945:91): avc:  denied  { write open } for  pid=1911 comm="mkhomedir" name=".bash_profile" dev=0:14 \
+
ino=25952258 scontext=unconfined_u:unconfined_r:oddjob_mkhomedir_t:s0-s0:c0.c1023 tcontext=system_u:object_r:home_root_t:s0 tclass=file" | audit2allow -M nfs-audit5
+
echo "type=AVC msg=audit(1362753117.946:99): avc:  denied  { setattr } for  pid=1933 comm="mkhomedir" name=".bash_profile" \
+
dev=0:14 ino=25952258 scontext=unconfined_u:unconfined_r:oddjob_mkhomedir_t:s0-s0:c0.c1023 tcontext=system_u:object_r:home_root_t:s0 tclass=file" | audit2allow -M nfs-audit6
+
echo "type=AVC msg=audit(1362753117.947:100): avc:  denied  { unlink } for  pid=1933 comm="mkhomedir" name=".bash_profile" \
+
dev=0:14 ino=25952258 scontext=unconfined_u:unconfined_r:oddjob_mkhomedir_t:s0-s0:c0.c1023 tcontext=system_u:object_r:home_root_t:s0 tclass=file" | audit2allow -M nfs-audit7
+
semodule -i nfs-audit1.pp
+
semodule -i nfs-audit2.pp
+
semodule -i nfs-audit3.pp
+
semodule -i nfs-audit4.pp
+
semodule -i nfs-audit5.pp
+
semodule -i nfs-audit6.pp
+
semodule -i nfs-audit7.pp
+
</pre>
+
Om op te ruimen kan je daarna de .pp en .te bestanden verwijderen.
+
  
Als je client ook toevallig een imap-mailserver is en je de home-directories als nfs deelt, moet je voor de imap-client ook nog een shitload aan selinux policies toevoegen.
+
Als je de home partitie op de mailserver wil mounten, zet dan de lock_method van dovecot op dotlock!

Latest revision as of 19:51, 12 June 2013

NFS is een acronym voor Network File System, een manier om partities over een netwerk te mounten. Binnen A–Eskwadraat gebruiken we dit om de volgende partities te delen tussen de workstations:

Hiervan worden `/home` en `/var/mail` op quota gemonitord.

NFS met Kerberos maken

NFS-server aanmaken

De eerste stap die gedaan moet worden is dat op de ipa-server het volgende commando moet worden uitgevoerd:

ipa service-add nfs/<nfs-server-addres>

(Als root): Zorg dat de volgende packages geïnstalleerd zijn op de nfs-server: rpcbind nfs-utils nfs-utils-lib. Zo niet:

yum install rpcbind nfs-utils nfs-utils-lib

Zorg er vervolgens voor dat nfs, nfslock en rpcbind als deamons goed worden gestart:

chkconfig nfs on
chkconfig nfslock on 
chkconfig rpcbind on

Start dan de deamons:

service rpcbind start
service nfslock start
service nfs start

Vervolgens moeten de juiste poorten in de firewall opengezet worden:

  • TCP/UDP 111: voor de portmapper
  • TCP 2049: voor NFSD
  • TCP 32803
  • UDP 32769
  • TCP/UDP 892
  • TCP/UDP 875
  • TCP/UDP 662

en verander het volgende in /etc/sysconf/nfs:

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020
RDMA_PORT=2049

Restart iptables en nfs:

service iptables restart
service nfs restart

Kopiëer de krb5.keytab:

kinit <user>
ipa-getkeytab -s <ipa-server> -p nfs/<nfs-server> -k /etc/krb5.keytab

In het bestand /etc/exports staan alle directories die je via nfs wilt delen. Voeg voor iedere dir die je wilt delen de volgende regels aan /etc/exports toe:

*path-to-dir*  *(rw,fsid=0,insecure,no_subtree_check,no_root_squash)
*path-to-dir*  gss/krb5(rw,fsid=0,insecure,no_subtree_check)
*path-to-dir*  gss/krb5i(rw,fsid=0,insecure,no_subtree_check)
*path-to-dir*  gss/krb5p(rw,fsid=0,insecure,no_subtree_check)

Zet ook het volgende in /etc/sysconfig/nfs:

SECURE_NFS=yes

Restart de deamons:

service rpcbind restart
service nfs restart

en vanwege de secure_nfs:

chkconfig rpcsvcgssd; service rpcsvcgssd restart

NFS-client aanmaken

(Als root:) Zorg ervoor dat de juiste package zijn geïnstalleerd:

yum install nfs-utils nfs-utils-lib

Zorg ervoor dat de nfs- en rpcbinddaemons zijn gestart:

service rpcbind start
service nfs start
chkconfig rpcbind on
chkconfig nfs on

Nu kan je de map mounten:

mount <NFS-SERVER-IP>:<DIR> <MOUNTDIR>

Ook kan je de nfs automatisch laten mounten bij startup door de volgende regel toe te voegen in /etc/fstab:

<NFS-SERVER-IP>:<DIR> <MOUNTDIR>   nfs   rw,noatime,context="selinuxcontext"   0 0

Als je de home partitie mount in CentOS, zorg dan voor de juiste SELinuxcontext, system_u:object_r:user_home_t:s0.

Bij Fedora wordt tijdens de kickstart automatisch de nfs in de fstab gezet. Als dit niet zo is, let er dan op dat bij het mounten van de homepartitie geen context meegegeven wordt, de context wordt dan standaard gezet.

Als je de home partitie op de mailserver wil mounten, zet dan de lock_method van dovecot op dotlock!