RSS: Blog | Wiki | Forum

Configuration du login et des consoles

Un article de Easyneuf.

Sommaire

[modifier] Autologin

Le système démarre automatiquement le système graphique sans avoir à demander un mot de passe. Le fichier /etc/default/default_login contient sur une seule ligne le nom de l'utilisateur à créer. Si le fichier n'existe pas, l'utilisateur leneuf sera utilisé. Cet utilisateur pourra être utilisé pour configurer la première fois la machine.

L'autologin est activé une seule fois par démarrage du système d'exploitation. Nous allons utiliser la combinaison du programme getty et login de busybox pour réaliser cette fonction.

[modifier] Configuration de inittab

Nous allons remplacer le programme /usr/bin/login par un simple script shell (/bin/9login) qui fera office de wrapper. Il assurera plusieurs rôles:

  • trouver l'utilisateur qui veut se logger
  • vérifier que l'utilisateur existe
  • créer le compte de l'utilisateur, si l'utilisateur n'existait pas

Le fichier /etc/inittab est donc modifié comme ci-dessous:

...
tty1::once:/sbin/getty 38400 tty1 -n -l /bin/9login 
tty2::respawn:/sbin/getty 38400 tty2
...

[modifier] Configuration de getty

  • Getty supporte une option ({{{-n}}}) qui ne pose pas la question du login. Lors du lancement de getty, cette option sera utilisée.
  • Le programme par défaut /bin/login sera remplacé par le programme /bin/9login

[modifier] Configuration de login

Login permet de NE PAS vérifier le mot de passe si l'utilisateur qui le lance est root. Cette option se passé en argument à getty.

Login lance automatiquement un shell de login. Dans le .profile, il suffira donc de lancer la session Xwindows pour démarrer les outils.

[modifier] Contenu du fichier /bin/9login

#!/bin/sh
# Copyright: 9neuf-cegetel
# Licence: GPL

# Get the default login
default_login="leneuf"
if [ -f "/etc/default_login" ]; then
  # Only this character set is authorized
  /bin/grep -q "[a-zA-Z0-9]*" /etc/default_login
  if [ $? -eq 0 ]; then
    default_login=$(cat /etc/default_login)
  fi 
fi

# Test if the user exist
id $default_login >/dev/null 2>&1
if [ $? -eq 0 ]; then
  # Create the account directory if it doesn't exist
  if [ ! -d /home/$default_login ]; then
    /bin/mkdir /home/$default_login
    (cd /etc/skel/ ; /bin/cp -a . /home/$default_login/)
    /bin/chown -R $default_login:$default_login /home/$default_login
  fi
  exec /bin/login -f "$default_login"
else
  exec /bin/login
fi

[modifier] Personnalisation du compte invité

  • création de nouveau compte
  • administartion des droits

[modifier] Personnalisation du gestionnaire graphique

[modifier] Personalisation de l'acquisition des images

[modifier] Configuration de l'impression