Setup AFS for Linux

Just a quick copy'n paste of an email sent to the IMARA mailing list for now…

Filesystem access

Installer les logiciels et modules OpenAFS, sous Debian, il s'agit
principalement du paquet openafs-client.

Il faut rajouter dans le fichier /etc/openafs/CellServDB, les entrées
concernant les serveurs AFS de l'INRIA:

>inria.fr               #Institut National de Recherche en Informatique et Automatique
128.93.1.5                      #oglala.inria.fr
128.93.18.51                    #menomini.inria.fr
128.93.9.47                     #ute.inria.fr
195.83.212.13                   #sayula.futurs.inria.fr

Spécifier dans le fichier /etc/openafs/ThisCell le domaine:

inria.fr

Créer à la racine du filesystem un répertoire /afs dans lequel sera,
plus tard, monté le filesystem.

Spécifier les paramètres de cache local pour le point /afs dans le
fichier /etc/openafs/cacheinfo:

/afs:/etc/openafs/cachedir:30000

Créer le répertoire /etc/openafs/cachedir avec les droits 0700.


Une fois ceci fait, il devrait _théoriquement_ être possible de lancer
les démons AFS (sous Debian, via la commande /etc/init.d/openafs-client
start) et, après un temps d'attente (normal) pouvoir accéder aux
fichiers dans

/afs/inria.fr/

Et plus précisément pour les fichiers d'IMARA,

/afs/inria.fr/rocq/home/imara/


Afin d'obtenir les droits permettant d'accéder aux fichiers, il est
souvent nécessaire de demander un jeton au serveur d'authentification.
Ceci se fait grâce à la commande klog:

$ klog
Password:
$

Les jetons obtenus peuvent ensuite être listés avec la commande tokens:

$ tokens

Tokens held by the Cache Manager:

User's (AFS ID 14037) tokens for afs@inria.fr [Expires Aug 31 17:35]
   --End of list--
$


Les droits sur les fichiers, comme sur une machine AFS normale, avec
l'outils fs:

$ fs la .
Access list for . is
Normal rights:
  imara rl
  system:administrators rlidwka
  system:authuser rl
  system:anyuser l
  netwker rl
$

Plus de détails sur la commande fs sont disponibles dans la manpage et sur
les pages de Miriad [0].

[0] http://www-rocq.inria.fr/intranet/miriad/themes/systeme/unix/afs/afs-quick-ref-fr.html

The klog tool used here is klog.afs (no Kerberos). It may be necessary to use update-alternatives or some similar tool to make sure the right klog is called. The other may complain:

klog: unknown RPC error (-1765328160) Can't parse principal <mehani>

User logins

User existence

First, the system has to know which users exist.

Their is no other option, in our setup, than to add these to the local password database, which we populate from the available information on the AFS share. A little script will help us, make_passwd.sh, availables in Olivier Mehani's GForge repository. Its usage is simple:

./make_passwd.sh >> /etc/passwd

Better, it can be used – but this is higly risky and not to be done without backups – to update the passwd file in place:

./make_passwd.sh -i PASSWORDFILE

This way, all users from Imara will be known by the underlying system, and their shell will be /bin/sh instead of the default tcsh.

PAM authentication

Note: Debian users, see next section.

We'll set up PAM so that user can login using their AFS pass and get a token.

This is done by adding the line

auth    [default=1 success=ignore]      pam_succeed_if.so uid >= 1010 quiet
auth              sufficient      /usr/lib/pam_afs.krb.so.1 try_first_pass ignore_root

in each file (where it seems appropriate) in /etc/pam.d corresponding to a service you want to enable AFS login with. These are, notably:

  • login ;
  • sshd ;
  • gdm ;
  • xscreensaver.

The first line enables the second line only if the UID is larger than 1010 (as we have a few local users). Users with IDs smaller than 1000 are usually local to the system and their password reside in the local passwd base. This prevents an error trying to identify them against the AFS base (and having to enter the password twice).

It may also be wise to do the same in the other file.

Debian setup

To setup AFS support under Debian, one needs to install the client binaries and build the kernel module using module-assistant:

$ sudo apt-get install openafs-client libpam-openafs-session libpam-openafs-kaserver module-assistant
$ sudo module-assistant # download, build and install the kernel module using the UI

And add the lines mentionned in the previous section to the /etc/pam.d/common-auth file. Note that the PAM module is pam_afs.krb.so.

NOTE : edit line “UsePrivilegeSeparation” and set it to “no” in /etc/ssh/sshd_config.

 
documentation/afslinuxinstall.txt · Last modified: 2010/01/27 09:43 by François-Régis Robert
Recent changes · Show pagesource · Login