MettreAFS

De Wiki du LAMA (UMR5127)

Sommaire

Passer une machine de NFS vers AFS

Kerbériser la machine

> sudo apt-get install libpam-krb5 heimdal-clients libpam-afs-session

Dans /etc/krb5.conf, virer tout et mettre :

[libdefaults]
       ticket_lifetime = 24h
       default_realm = LAMA.UNIV-SAVOIE.FR

[realms]
       LAMA.UNIV-SAVOIE.FR = {
               kdc = lama.univ-savoie.fr
               admin_server = lama.univ-savoie.fr
       }
[domain_realm]
       www.lama.univ-savoie.fr = LAMA.UNIV-SAVOIE.FR
       .lama.univ-savoie.fr = LAMA.UNIV-SAVOIE.FR
       lama.univ-savoie.fr = LAMA.UNIV-SAVOIE.FR
       .univ-savoie.fr = LAMA.UNIV-SAVOIE.FR
       univ-savoie.fr = LAMA.UNIV-SAVOIE.FR

Remarque : la durée par défaut des tickets demandés est donnée par la valeur de l'option ``ticket_lifetime``. Notez que la valeur maximum acceptée par le serveur est de sept jours (7d).

Installer OpenAFS

> sudo apt-get install openafs-client openafs-krb5 libpam-afs-session openafs-modules-dkms

Cellule AFS : lama.univ-savoie.fr Taille du cache : Christophe veut un cache monstrueux (500 Mo par exemple, dépend de la taille de /var/cache/openafs).

Dans /etc/openafs/CellServDB, virer tout et laisser uniquement :

>lama.univ-savoie.fr
193.48.123.134 # lama.univ-savoie.fr

Avant d'aller plus loin, testez votre installation, vous devriez observer quelque chose qui ressemble à :

> $ kinit
> mon_login@LAMA.UNIV-SAVOIE.FR's Password: 
> $ klist
> Credentials cache: FILE:/tmp/krb5cc_1000_Xzw9Vd
>         Principal: mon_login@LAMA.UNIV-SAVOIE.FR
> 
>   Issued                Expires               Principal
> Sep  4 09:42:59 2014  Sep  4 19:42:58 2014  krbtgt/LAMA.UNIV-SAVOIE.FR@LAMA.UNIV-SAVOIE.FR
> Sep  4 09:42:59 2014  Sep  4 19:42:58 2014  afs@LAMA.UNIV-SAVOIE.FR
> $ aklog -d
> Authenticating to cell lama.univ-savoie.fr (server lama.univ-savoie.fr).
> Trying to authenticate to user's realm LAMA.UNIV-SAVOIE.FR.
> Getting tickets: afs/lama.univ-savoie.fr@LAMA.UNIV-SAVOIE.FR
> We've deduced that we need to authenticate to realm LAMA.UNIV-SAVOIE.FR.
> Getting tickets: afs/lama.univ-savoie.fr@LAMA.UNIV-SAVOIE.FR
> Getting tickets: afs/lama.univ-savoie.fr@LAMA.UNIV-SAVOIE.FR
> Getting tickets: afs@LAMA.UNIV-SAVOIE.FR
> Using Kerberos V5 ticket natively
> Identical tokens already exist; skipping. 
> $ ls /afs
> lama.univ-savoie.fr

PROBLÈME COURANT observé sous Debian (aklog échoue et klist n'affiche qu'une seule entrée ) :

> $ aklog
> aklog: a pioctl failed while obtaining tokens for cell lama.univ-savoie.fr
> $ klist
> Credentials cache: FILE:/tmp/krb5cc_1000_Xzw9Vd
>     Principal: mon_login@LAMA.UNIV-SAVOIE.FR
> 
>   Issued                Expires               Principal
> Sep  4 09:42:59 2014  Sep  4 19:42:58 2014  krbtgt/LAMA.UNIV-SAVOIE.FR@LAMA.UNIV-SAVOIE.FR

Le problème est que le service "openafs-client" n'a pas été démarré. Afin que le service soit démarré automatiquement :

> sudo update-rc.d openafs-client defaults

Puis redémarrez.


Une fois que tout est ok, faire (si vous le voulez) des liens pour les homes :

> sudo rm /home
> sudo rm /home2
> sudo ln -s /afs/lama.univ-savoie.fr/user /home
> sudo ln -s /afs/lama.univ-savoie.fr/user /home2

Enfin, ajouter la ligne

auth   optional   pam_afs_session.so

à la fin des deux fichiers /etc/pam.d/common-auth et /etc/pam.d/common-session.

Sur MAC OS X 10.7, 10.6 (marche peut-être avec 10.5)

  • Créer un fichier /Library/Preferences/edu.mit.Kerberos lisible par tous (éventuellement chmod a+r) contenant:
[libdefaults]
       default_realm = LAMA.UNIV-SAVOIE.FR

[realms]
       LAMA.UNIV-SAVOIE.FR = {
               kdc = lama.univ-savoie.fr
               admin_server = lama.univ-savoie.fr
       }
[domain_realm]
       www.lama.univ-savoie.fr = LAMA.UNIV-SAVOIE.FR
       .lama.univ-savoie.fr = LAMA.UNIV-SAVOIE.FR
       lama.univ-savoie.fr = LAMA.UNIV-SAVOIE.FR
       .univ-savoie.fr = LAMA.UNIV-SAVOIE.FR
       univ-savoie.fr = LAMA.UNIV-SAVOIE.FR


  • Installer openAFS depuis la page : http://www.openafs.org/macos.html et mettre lama.univ-savoie.fr comme cellule par défaut.
  • Copier le fichier /etc/openafs/CellServDB dans /var/db/openafs/etc/ s'il n'y est pas déjà. L'éditer et y ajouter les lignes :
>lama.univ-savoie.fr
193.48.123.134 # lama.univ-savoie.fr

C'est la seule ligne qui servira si vous n'avez pas de compte dans une université américaine; vous pouvez supprimer le reste. Remarque : on peut théoriquement éditer ce ficher depuis le panneaux de préférence d'openAFS ... sauf que ça semble ne pas marcher (un pb de permission ?).

  • redémarrer le MAC pour être sur de redémarrer openAFS (on doit pouvoir éviter ça).
  • dans le panneau de préférence openAFS cocher Use aklog et get credential at login time.
  • pour plus de confort créer un lien où bon vous semble pour votre home sur le serveur lama qui est dans /afs/lama.univ-savoie.fr/user/mon_login

OS X 10.9 (et sans doute 10.8)

Comme ci-dessus, mais il faut en plus

- installer la version 1.6.6 - autoriser les logiciels venant de "n'importe où" à cause d'un bug (cf Préférences -> Sécurité et Confidentialité -> Onglet Général)

Vérification

Loggez vous sur la machine et taper klist. La réponse doit ressembler à:

Credentials cache: FILE:/tmp/krb5cc_1066_T1K6vd
       Principal: raffalli@LAMA.UNIV-SAVOIE.FR

 Issued           Expires          Principal
Aug 14 13:34:19  Aug 15 13:34:19  krbtgt/LAMA.UNIV-SAVOIE.FR@LAMA.UNIV-SAVOIE.FR
Aug 14 13:34:19  Aug 15 13:34:19  afs@LAMA.UNIV-SAVOIE.FR

Les deux dernières lignes vous indiquent que vous avez un ticket kerberos sur le royaume du LAMA et un ticket kerberos pour les serveur OpenAFS.

Tapez aussi tokens avec une réponse attendue qui ressemble à:

Tokens held by the Cache Manager:

User's (AFS ID 1066) tokens for afs@lama.univ-savoie.fr [Expires Aug 15 13:34]
  --End of list--

On voit, sur l'avant dernière ligne, le jeton afs qui autorise la connection au serveur et qui a été obtenu auprès du serveur afs en présentant le ticket kerberos afs.

Possibilités supplémentaires

Avoir des droits depuis son compte local

Si vous avez un compte local sur votre machine, vous pouvez avoir simultanément les droits sur votre compte local et sur le compte sur lama.univ-savoie.fr.

Pour cela, une fois loggé sur votre compte local, taper

> kinit login_sur_lama
> aklog

La première commande sert à obtenir un ticket Kerberos (on peut vérifier son ticket avec klist) la second commande présente le ticket pour obtenir un jeton afs.

Après ça vous devriez avoir les droits sur

/afs/lama.univ-savoie.fr/user/login_sur_lama

Taille du cache

Il n'y a aucune raison que la taille du cache ne soit pas du même ordre de grandeur que la taille de vos fichiers personnels.

Il faut juste faire attention, le cache est par défaut dans /var/cache/openafs et il ne faudrait pas qu'un cache de 20Go remplisse votre partition /. Donc il faut mettre le cache là où il y a assez de place (avec un lien symbolique ou en changeant le cache par défaut).

La configuration du cache (taille max et position) est dans

/etc/openafs/cacheinfo

Renouveler les tickets avec l'écran de veille

Dans /etc/pam.d/gnome-screensaver (ou /etc/pam.d/xscreensaver):

auth    [success=ok default=1] pam_krb5.so minimum_uid=1000
auth    [default=4]        pam_afs_session.so nopag
auth    [success=3 default=ignore]      pam_unix.so nullok_secure try_first_pass
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth    optional                        pam_cap.so 

auth optional pam_gnome_keyring.so

SSh et AFS

Ce sujet a une page dédiée : SshAvecAfs

Synchronisation asynchrone

Pour de meilleures performances, on peut dire à AFS de ne synchroniser les fichiers que lorsqu'un certain volume de données a été modifiées. Il faut être conscient que cela implique qu'une coupure entre la modification et la synchronisation peut entrainer la perte de ces modifications. Par défaut, chaque modification est immédiatement effectuée sur le serveur.

Dans le fichier /etc/rc.local ajouter la ligne :

> fs storebehind -allfiles 1000

Notes : cette ligne doit être située AVANT la ligne ``exit 0``. Le nombre ``1000`` est le nombre de KB, Christophe recommande une valeur énorme ``100000``, à vous de voir...

Outils personnels