dimanche 14 décembre 2014

Session graphique inaccessible

Suite une réinstallation de Ubuntu (en vue de changer proprement de version), nous constatons que toute tentative de connexion via une session graphique est vouée à l'échec: après saisie du mot de passe, retour immédiat à l'écran d'accueil du display manager et ce sans aucun message d'erreur.
Dans notre cas, il s'agit de lightdm. Mais un autre display manager peut éventuellement afficher un message d'erreur.
Pour comprendre ce qu'il en est, nous basculons vers le terminal virtuel tty2: CTRL-ALT-F2.
Cette fois nous pouvons nous connecter.
Utilisons les commandes ls et id:

toto@aldebaran:~$ ls -ld ../toto
drwxr-xr-x 26 1001 1001 4096 déc  5 09:53 ../toto
toto@aldebaran:~$ id
uid=1000(toto) gid=1000(toto) groupes=1000(toto)
toto@aldebaran:~$ 

Dans l'ouput de la commande ls, le nom de l'utilisateur et de son groupe principal qui figurent habituellement en colonnes 3 et 4 sont remplacés par 1001. Donc il n'y a aucun utilisateur (et aucun groupe) dont l'id est 1001.
La commande id nous indique que l'utilisateur courant (toto) possède en fait l'uid et le gid 1000.
Explication: dans l'installation précédente toto n'était pas le premier utilisateur et il était effectivement caractérisé par un uid et un gid valant 1001. La réinstallation a été effectuée avec une partition /home séparée sans qu'elle soit formatée. Lors de la création de l'utilisateur toto, l'installateur a constaté que /home/toto existait déjà mais il n'a pas modifié les droits y afférents.
Solution du problème: réattribuer /home/toto à toto:

toto@aldebaran:~$ sudo -s
[sudo] password for toto: 
root@aldebaran:~# chown -R toto.toto ../toto
root@aldebaran:~#