= Comment configurer un poste client public (sous Xenial) =

Nous allons décrire ici une méthode très manuel en attendant la mise en place des procédures et outils de déploiement automatisés des postes clients publics.

== Contexte ==
 * Il n'y a plus de NFS pour les abonnés
 * Aucun sauvegarde des données des abonnés (= homedir volatile)
 * On garde l'authentification centralisée

== 1- Installer Xenial sur le poste ==
Comme vous voulez : clé usb, cdrom, pxe ...

== 2- Ajouter la source apt.auf.org ==
 {{{
root@cnfp10:~# echo "deb http://apt.auf.org/ xenial auf " >> /etc/apt/sources.list.d/auf.list
root@cnfp10:~# aptitude update
root@cnfp10:~# aptitude install auf-keyring
}}}

== 3- Installer les logiciels standards ==
 * On va d'abord chercher le miroir le plus rapide pour nous {{{
root@cnfp10:~# /etc/apt/sources.list /etc/apt/sources.list-FRIGO
root@cnfp10:~# cat > /etc/apt/sources.list << __EOF__
deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse

deb http://archive.canonical.com/ubuntu xenial partner
__EOF__
root@cnfp10:~# aptitude update
}}}
 * via le paquet auf-client-public {{{
root@cnfp10:~# aptitude install libavcodec-ffmpeg-extra56
==> répondre Y partout

root@cnfp10:~# aptitude install adobe-flashplugin
==> répondre Y partout

root@cnfp10:~# aptitude install auf-client-public
}}}

== 4- Configuration de l'authentification centralisée ==
 * Installer les paquets nécessaires {{{
root@cnfp10:~# aptitude install mysql-common
root@cnfp10:~# wget http://apt.auf.org/pool/auf/m/mysql-5.1/libmysqlclient16_5.1.73-1_amd64.deb
root@cnfp10:~# wget http://apt.auf.org/pool/auf/libn/libnss-mysql-bg/libnss-mysql-bg_1.5-2_amd64.deb
root@cnfp10:~# dpkg -i libmysqlclient16_5.1.73-1_amd64.deb 
root@cnfp10:~# dpkg -i libnss-mysql-bg_1.5-2_amd64.deb
}}}
 * Configurer les connecteurs mysql {{{
root@cnfp10:~# vi /etc/libnss-mysql-root.cfg
root@cnfp10:~# vi /etc/libnss-mysql.cfg
### Récupérer les paramètres à mettre en consultant les mêmes fichiers sur une ancienne machine
}}}
 * Activer la résolution via mysql {{{
root@cnfp10:~# sed -i -e "s/compas/file mysql/" /etc/nsswitch.conf
}}}
 * Vérification {{{
root@cnfp10:~# getent passwd
... devrait donner la liste de tous les comptes abonnés
}}}

== 5- Gestion des homedir ==
 * Créer le script auf-mkhomedir {{{
root@cnfp10:~# cat > /usr/sbin/auf-mkhomedir << __EOF__
#!/bin/bash

# Ce script est executé lors de la connexion d'un utilisateur
# (exactement, lors du lancement de la session)
# Il vérifie si l'utilisateur dispose d'un répertoire de connexion.
# Si ce n'est pas le cas, il demande au serveur de créer ce répertoire.
#
# Note : il faut qu'un service soit présent sur le serveur qui écoute
# ----   les demandes de création des postes clients. Voir
#        /usr/share/doc/auf-client-fixe/README.auf-mkhomedir
#
# Note : ce script est exécuté via PAM. Pour l'activer, la ligne suivante
# ----   doit être présente dans /etc/pam.d/common-session:
#          session  optionnal pam_exec.so  /usr/sbin/auf-mkhomedir
#        (le paquet auf-client-fixe ajoute automatiquement cette ligne)

if [ -z "$PAM_USER" ]
then
	echo "variable PAM_USER vide"
	logger -t $0 -i -p auth.error "variable PAM_USER vide"
	exit 10
fi

# protection parano : on nettoie la variable PAM_USER
LOGIN=`echo $PAM_USER | tr -dc A-Za-z0-9_.@-`

# si le compte n'existe pas : on sort
if ! id ${LOGIN} > /dev/null
then
	logger -t $0 -i -p auth.info "login <${LOGIN}> introuvable"
	exit 11
fi

# on cherche le homedir du compte
HOMEDIR=`getent passwd ${LOGIN} | cut -d: -f6`

# si le répertoire existe, on s'arrete là
test -e ${HOMEDIR} && exit 0

# sinon, on va créer le répertoire...

# configuration du système...
DEFAULTSERVER=nfs
TIMEOUT=20
PORT=10
if [ -r /etc/default/auf-mkhomedir ]
then
	. /etc/default/auf-mkhomedir
fi

# si le homedir correspond à un lien symbolique, on le suit avec readlink
# (exemple : /home/thomas -> /net/nfs.refer.sn/home/thomas)
REAL_HOMEDIR=`readlink -f ${HOMEDIR}`
if expr "$REAL_HOMEDIR" : "^/net/"
then
	# si on est sur /net, il faut envoyer la commande au serveur indiqué
	# dans la seconde partie du nom
	SERVEUR=`echo ${REAL_HOMEDIR} | cut -f3 -d/`
else
	# sinon, on envoie au serveur par défaut
	SERVEUR=${DEFAULTSERVER}
fi
#
# on envoie la demande de création au serveur
#
echo "mkdir ${LOGIN}" | nc -w ${TIMEOUT} ${SERVEUR} ${PORT}

__EOF__
}}}
 * Personaliser les paramètres {{{
root@cnfp10:~# cat > /etc/default/auf-mkhomedir << __EOF__
# configuration de auf-mkhomedir

# Serveur a contacter quand le répertoire n'est pas de la
# forme /net/<serveur>/...
DEFAULTSERVER=nfs

# port de connexion
PORT=10

# Temps d'attente d'une réponse du serveur (en secondes)
TIMEOUT=20
__EOF__
}}}
 * Activer le script {{{
root@cnfp10:~# echo "session	optional			pam_exec.so /usr/sbin/auf-mkhomedir" >> /etc/pam.d/common-session
root@cnfp10:~# echo "session required pam_mkhomedir.so umask=0022 skel=/etc/skel" >> /etc/pam.d/common-session
}}}

----