Démarrage automatique sur un compte utilisateur sans frappe de mot de passe

Il est parfois utile de pouvoir lancer un système sous un compte utilisateur de façon automatique (c-à-d sans se logguer manuellement au système) par exemple pour une borne internet ou une machine dans une exposition itinérante, ou simplement pour une personne réfractaire à l’informatique (ma grand-mère pour ne citer qu’elle).

Tout se passe dans le fichier de démarrage /etc/inittab. Le but du jeu est de compiler un petit programme en C (autologin.c) et de le lancer sur la première console au démarrage.

    1. Programme autologin.c
int main(){
execlp("login","login","-f","toto",0);
}

Biensûr, on doit remplacer « toto » par le nom du compte utilisateur visé !!
Puis on le compile :

toto:~$ gcc -o autologin autologin.c

puis on copie le binaire dans /usr/sbin/autologin (ne pas oublier de rendre root proprio du binaire et de lui donner les droits d’exécution).

    1. /etc/inittab

trouver dans /etc/inittab la ligne :

1:2345:respawn:/sbin/getty 38400 tty1

et la remplacer par :

1:2345:respawn:/sbin/getty -n -l /usr/sbin/autologin 38400 tty1

Il ne reste plus qu’à modifier le fichier ~/bash_profile pour lancer le programme souhaité sur la bonne console.

    1. ~/.bash_profile

Dans ce fichier, rajouter après la commande umask 022 :

if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
startx
fi

où « startx » correspond au(x) programme(s) à exécuter (mettre le chemin absolu !).
Puis redémarrer votre machine. Il suffira de changer de console virtuelle pour récupérer la main en cas de problème…

Remarque 1 : tout ceci n’est pas très séquïour donc ne pas faire n’importe quoi (à ne pas utiliser sur des machines reliées à un réseau quelconque).

Remarque 2 : Sequanux est pas responsable de la mauvaise utilisation de ce script et toussa…

Remarque 3 : cet article est très (très !) largement inspiré de linuxgazette (http://www.linuxgazette.com/book/view/6916)…