Connexion automatique

Un article de Mille-Xterm.

Jump to: navigation, search

Il est possible de permettre à certains terminaux de se s'authentifier automatiquement. Cela peut être très utile. Par exemple dans un café Internet ou pour faire des tests de charge.

Sommaire

Activation de authentification automatique pour un terminal particulier

Nous n'avons pas encore appliquer de solution pour permetre à un nombre sélectif de s'authentifier automatiquement mais voici des idées de solutions possible :

Première solution :

  • Installer une deuxième version de gdm avec un fichier gdm.conf différent sur les serveurs
  • Exécuter un deuxième serveur X sur un port différent ??
  • Paramétrer le port de connection XDMP au niveau de la config des terminaux

Deuxième solution :

  • Utiliser des serveurs app différents pour un groupe de machine
  • Mozilla comme display manager ..

Activation de authentification automatique pour tous les terminaux

  • Installer Pam_Scripts Voir : Mise en fonction des script de login et de logout en activant le module dans /etc/pam.d/gdm
  • Copier les scripts d'autologin dans le répertoire /var/autolog/ et ajouter le droit d'exécution sur ces derniers. Si vous m'avez pas les fichiers sources, vous pouvez les créer avec le Code source des scripts d'auto-logon
  • Dans le fichier onsessionclose du répertoire /etc/security/ appellez le script mille-autologin.sh avec la commande suivante :
    /var/autolog/mille-autologin.sh release $2
  • Dans le fichier loginlist, inscrire la liste des comptes d'utilisateur disponible et/ou à créer pour l'auto-logon
  • Au besion créer les comptes utilisateur qui se trouve dans la loginlist en exécutant le script setupautolog.sh
  • Configurer GDM pour activer l'auto login. Il faut configurer le fichier gdm.conf qui se trouve dans le répertoire /etc/X11/gdm/ afin d'activer l'autologin et d'utliser les noms d'utilisateurs renvoyé par le script autologin.sh. Voici les lignes à modifier :
[daemon]
TimedLoginEnable=true
TimedLogin=/var/autolog/mille-autologin.sh next| # Le signe de pipe ( | ) rend la commande exécutable
TimedLoginDelay=30

[security]
AllowRemoteAutoLogin=true
  • Si vous désirez effectuer des test de charge, vous pouvez ajouter un script qui appelle les scripts du test de charge à exécuter dans le répertoire d'exécution au démarrage des utilisateurs (/home/nom_du_user/.kde/Autostart) ou dans le skel (/etc/skel/.kde/Autostart) si vous utilisateurs ne sont pas créer...
    Par exemple, vous pouvez l'appeller run.sh avec les droits d'exécution sur ce fichier. Le script peut contenir des lignes telque :
#!/bin/bash
/Tests-GUI/loop.sh

Code source des scripts d'auto-logon

Voici la liste des fichiers utilisé par les scripts d'auto-login :

locks             - Répertoire qui contient la liste des comptes (sous forme de fichier vide) actuelement utilisés
mille-autologin.sh      - Script qui retourne un le nom d'usager d'un compte d'utilisateur disponible. Il peut avoir en premier paramètre : 
                    * init                        - Supprime le répertoire locks 
                    * next                        - Retourne un nom de compte d'utilisateur libre
                    * release + nom_d'utilisateur - Libère le nom de compte d'utilisateur utilisé en supprimant son fichier dans locks
loginlist         - Fichier qui contient la liste des comptes d'utilisateur que l'auto-logon peut utiliser.
                    Le fichier est aussi utilisé par setupautolog.sh et par remautologuser.sh pour créer ou supprimer les compte en batch 
setupautolog.sh   - Script qui créer des comptes d'utilisateur qui sont dans la loginlist
remautologuser.sh - Script qui supprime les comptes d'utilisateur qui sont dans la loginlist
execbatch.sh      - Est utilisé pour exécuter des opérations sur plusieurs comptes utilisateurs en mêmme temps (exemple supprimer un fichier)

Code source de mille-autologin.sh

#!/bin/bash
# The script purpose is to return ltsp autologin attributes
# It can be called from gdm.conf configuration files
# To be copied in /usr/sbin
#
# Copyright 2005 , Commission scolaire de Laval
# Stephane Bond, sbond@cslaval.qc.ca
# Patrice Gauvin, pgauvin@cslaval.qc.ca
#
#
# This file is part of the MILLE-XTERM distribution.
# See the MILLE-XTERM (english) and the MILLE (french) project
#
#       http://www.revolutionlinux.com/mille-xterm/
#       http://www.mille.ca/
#
# The MILLE-XTERM framework is covered by the GNU General Public License.  See
# the COPYING file in the top-level MILLE-XTERM directory.  Software packages
# that are included in the MILLE-XTERM distribution have their own licenses.
#
# Usage :
# mille-autolog.sh init    # Init locks
# mille-autolog.sh user    # Return login to use
# mille-autolog.sh release username   # Remove lock for the username
#
# ------------------------------------------------------------------------- 


CMD=${1:-"active"}
LOCKSPATH=/var/autolog/locks
LOGINLIST=/var/autolog/loginlist
ACTIVE="false"


function get_next_login()
{
        for i in `cat $LOGINLIST`
        do
                if [ ! -e $LOCKSPATH/$i ]
                then
                        NEXT_LOGIN=$i
                        exec `cat /dev/null > $LOCKSPATH/$i`
                        return 1
                fi
        done
        return 0
}


# Read lts.conf file
MYXTERM_IP=`echo $DISPLAY | cut -f1 -d":"`
if [ -r /tmp/lts.conf.$MYXTERM_IP ] ; then
        eval `getltscfg -a -c /tmp/lts.conf.$MYXTERM_IP`
        # We get MXT_AUTOLOG and MXT_AUTOLOGUSER
        if [ "$MXT_AUTOLOG" = "Y" ] ; then
                ACTIVE="TRUE"
        fi 

        if [ -n $MXT_AUTOLOGUSER ] ; then
                AUTOLOGUSER=$MXT_AUTOLOGUSER
        fi
fi


# Process command
if [ "$CMD" = "init" ] ; then
        # Initialize locks
        rm -f $LOCKSPATH/*

elif [ "$CMD" = "active" ] ; then
        # Print active status
        echo "$ACTIVE"

elif [ "$CMD" = "user" ] ; then
        # Return the login to use
        if [ "$ACTIVE" != "true" ] ; then
                # nothing
                echo ""
        elif [ "x$AUTOLOGUSER" != "x" ] ; then
                echo $AUTOLOGUSER
        else
                get_next_login
                echo $NEXT_LOGIN
        fi

elif [ "$CMD" = "release" ] ; then
        # Remove lock
        rm -f $LOCKSPATH/$2 

fi
exit 0


Code source de setupautolog.sh

#/bin/bash
GROUP_NAME="mxtusers"
groupadd $GROUP_NAME

for USER_NAME in `cat loginlist`
do 
	echo "Create user "$USER_NAME	
	useradd -c $USER_NAME -g mxtusers -p \$1\$Suqgwz7M\$86VVisvfhmR\.4hEhrV1QV0 $USER_NAME
done

Code source de remautologuser.sh

#/bin/bash
for USER_NAME in `cat loginlist`
do 
	echo "Delete user "$USER_NAME	
	userdel $USER_NAME
	rm -fR /home/$USER_NAME
done

Code source de execbatch.sh

#/bin/bash
for USER_NAME in `cat loginlist`
do
echo "Copie pour "$USER_NAME
#cp -f /home/mxtuser01/.kde/Autostart/run.sh /home/$USER_NAME/.kde/Autostart/run.sh
rm -fR  /home/$USER_NAME/mxtuser01
cp -fR /home/mxtuser01/.kde /home/$USER_NAME/.kde
cp -fR /home/mxtuser01/* /home/$USER_NAME/
cd /home/$USER_NAME
chown -R $USER_NAME.mxtusers *
done