NFSv4 Clients Config
[Test] Ubuntu
français | english
Navigation
Home
Sitemap
This wiki
This page

NFSv4 - Ubuntu 8.10

Ce document décrit comment configurer un client Ubuntu pour faire du NFSv4 avec authentification Kerberos sur un NAS et un Active Directory de test. Les éléments de l'infrastructure de tests sont les suivants :
 

Elément
Nom IP
Adresse IP
Domain controler ad-nfsv4.sds.ch 128.178.109.188
Serveur NFSv4 nastest3p.sds.ch 128.178.102.4

La configuration fournie ci-dessous est fonctionnelle mais peut-être pas optimale.


Date et heure :
Contrôler que la date et l'heure soient corrects et redémarrer la machine si nécessaire.


Création des utilisateurs :
L'idéal (mais ce n'est pas obligatoire) est d'avoir, sur la machine client, des utilisateurs portant les mêmes noms que ceux qui sont dans AD et qui seront utilisés pour accéder aux données. Dans notre infrastructure de test, 2 utilisateurs ont été crées dans SDS.CH :

Utilisateur
Mot de passe
user1 P4ssw0rd
user2 P4ssw0rd


Installation des packages nécessaires à NFSv4 :

Pour pouvoir faire du NFSv4, certains packages sont nécessaire, ceux-ci sont les suivants :
- nfs-common
- portmap
- krb5-config
- krb5-user
- krb5-clients
- krb5-auth-dialog
- libpam-krb5
- libgssapi2-heimdal
Ces packages peuvent être installés depuis le menu "System" -> "Administration" -> "Synaptic Package Manager"


Ajout d'un module pour faire du Kerberos :

# modprobe rpcsec_gss_krb5


Configuration DNS :

Pour que cela fonctionne, il faut faire en sorte d'interroger le DNS de l'Active Directory de test. Sous Ubuntu, pour faire ça, il faut modifier le fichier /etc/dhcp3/dhclient.conf et modifier les lignes suivantes.

supersede domain-name "sds.ch";
prepend domain-name-servers 128.178.109.188
request subnet-mask, broadcast-address, time-offset, routers,
        domain-search, host-name,
        netbios-name-servers, netbios-scope, interface-mtu;


Configuration de /etc/hosts :
Il faut ajouter une ligne dans le fichier pour faire en sorte d'associer l'IP du serveur NFSv4 avec son nom IP dans le domaine SDS.CH et nom dans EPFL.CH
/etc/hosts (remplacer <client> par le nom de votre client)

# Do not remove the following line, or various programs
# that require network functionality will fail.
128.178.109.189         <client>.sds.ch <client>
127.0.0.1               localhost.localdomain localhost
128.178.102.4           nastest3p.sds.ch nastest3p 


Configuration Kerberos :
C'est ici que l'on va dire quel est le domaine dans lequel on va travailler et quels sont les DC à contacter.
/etc/krb5.conf

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
[libdefaults]
    default_realm = SDS.CH

# The following krb5.conf variables are only for MIT Kerberos.
    krb4_config = /etc/krb.conf
    krb4_realms = /etc/krb.realms
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true
        dns_lookup_realm = false
        dns_lookup_kdc = false
        ticket_lifetime = 24h
        default_keytab_name = FILE:/etc/krb5.keytab
        default_tkt_enctypes = des-cbc-crc
        default_tgs_enctypes = des-cbc-crc
        permitted_enctypes = des3-cbc-sha1 arcfour-hmac aes256-cts des-cbc-md5 des-cbc-crc arcfour-hmac-exp

# The following encryption type specification will be used by MIT Kerberos
# if uncommented.  In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#
# Thie only time when you might need to uncomment these lines and change
# the enctypes is if you have local software that will break on ticket
# caches containing ticket encryption types it doesn't know about (such as
# old versions of Sun Java).

#    default_tgs_enctypes = des3-hmac-sha1
#    default_tkt_enctypes = des3-hmac-sha1
#    permitted_enctypes = des3-hmac-sha1

# The following libdefaults parameters are only for Heimdal Kerberos.
    v4_instance_resolve = false
    v4_name_convert = {
        host = {
            rcmd = host
            ftp = ftp
        }
        plain = {
            something = something-else
        }
    }
    fcc-mit-ticketflags = true

[realms]
    SDS.CH = {
        kdc = ad-nfsv4.sds.ch:88
        admin_server = ad-nfsv4.sds.ch:749
        default_domain = sds.ch
    }

[domain_realm]
    .sds.ch = SDS.CH
    sds.ch = SDS.CH

[login]
    krb4_convert = true
    krb4_get_tickets = false

[appdefaults]
   pam = {
         debug = false
         ticket_lifetime = 36000
         renew_lifetime = 36000
         forwardable = true
         krb4_convert = false
    }

 

Configuration de Samba :
Editer le fichier de configuration /etc/samba/smb.conf et modifier les lignes suivantes :

security = ADS
realm = SDS.CH
workgroup = SDS

 

Configuration NFS :
Vu que l'on veut faire du NFSv4 avec Kerberos, il faut le dire au système. Pour ce faire, il faut éditer le fichier /etc/default/nfs-common et modifier les lignes suivantes :

NEED_IDMAPD=yes
NEED_GSSD=yes

 

Contrôler le contenu de idmapd.conf :
Le domaine dans le fichier /etc/idmapd.conf doit être comme suit :

Domain = sds.ch

 

 

Redémarrage de la machine :

# init 6


Importer le keytab sur la machine cliente :
Le keytab a importer peut être trouvé ici : nfs4.keytab
Pour l'importer, suivre les opérations suivantes.

- Mettre le fichier nfsv4.keytab dans /etc

# mv nfs4.keytab /etc

- Aller dans le dossier /etc

# cd /etc

- Supprimer le fichier /etc/krb5.keytab s'il existe

# rm /etc/krb5.keytab

- Lancer l'utilitaire d'importation

# ktutil

- Lire le fichier nfsv4.keytab

> rkt nfsv4.keytab

- Lister le contenu du fichier

> l
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
   1    3                     nfs/nfsv4-user@SDS.CH

- Ecrire le fichier krb5.keytab et quitter

> wkt krb5.keytab
> q


Créer le point de montage dans /mnt :

mkdir /mnt/ns704g


Modification du fichier /etc/fstab pour effectuer le montage de l'export :
Ajouter la ligne suivante au fichier.

nastest3p:/fs-nfsv4/data/  /mnt/ns704g        nfs4    user,proto=tcp,sec=krb5,acl,port=2049,rw    0 0


Mount de l'export :

# mount /mnt/ns704g

Changer d'utilisateur (user1) et récupération du ticket Kerberos :

# su user1
# kinit user1@SDS.CH
Password for user1@SDS.CH:
# klist
Ticket cache: FILE:/tmp/krb4cc_1001
Default principal: user1@SDS.CH

Valid starting     Expire             Service principal
04/28/09 13:14:59  04/28/09 23:15:02  krbtgt/SDS.CH@SDS.CH
        renew until 04/29/09 13:14:59


Kerberos 4 ticket cache: /tmp/tkt1001
klist: You have no tickets cached

 

Accéder au mount et lister le contenu :

# cd /mnt/ns704g
# ls -alh
total 20K
drwxrwxrwx 2 nobody nogroup 1.0K 2009-04-28 13:11 .
drwxr-xr-x 3 root   root    4.0K 2009-03-20 14:33 ..
-rw-r--r-- 1 nobody nogroup 3.3K 2009-04-22 08:55 tmpuser1
-rw-r--rw- 1 nobody nogroup    0 2009-04-21 17:01 user1

 


Gestion des permissions

Si vous désirez pouvoir gérer les permissions sur les fichiers, il faudra télécharger et installer un package supplémentaire. Ce package vous permettra d'obtenir les programmes nfs4_getfacl et nfs4_setfacl. Pour savoir comment ceux-ci fonctionnent, utilisez la commande man. Voici la marche à suivre pour la compilation et l'installation du package.

- Téléchargement des sources (dernière version, 0.3.3) :
http://www.citi.umich.edu/projects/nfsv4/linux/nfs4-acl-tools/

- Installation des packages suivants :
-- libtool
-- libattr1-dev

- Décompression

# gunzip -d nfs4-acl-tools-0.3.3.tar.gz
# tar -xvf nfs4-acl-tools-0.3.3.tar
...

- Configure
# cd nfs4-acl-tools-0.3.3
# ./configure


- Make et Install

# make
# make install

Search
Share