#1 Le 29/10/2010, à 14:37
- jlmas
[Résolu] Supprimer un utilisateur lors de l'ouverture de session
Un problème simple en théorie... Mais en théorie seulement
Soit une Ubuntu 10.04 LTS dans une machine virtuelle (VirtualBox). L'authentification se fait par un serveur LDAP.
L'utilisateur Roger se connecte. Grâce à l'instruction pam_mkhomedir son répertoire personnel est automatiquement crée. Roger lance l'application A propos de moi et s'attribue une icône.
Désormais, à chaque ouverture de session, Chacun peut voir l'icône associée à Roger
Deuxième étape. Roger s'en va ailleurs. Il n'a plus de raison d'avoir un compte sur cet ordinateur, mais il doit rester dans l'annuaire LDAP. Pour gagner de la place et faire du ménage, l'administrateur supprime son répertoire personnel sur cette machine.
Mais, et c'est là tout le problème, l'icône de Roger reste présente à l'ouverture de session. Comment la supprimer ?
J'ai cherché dans tout le système la présence du login Roger. Hormis dans les logs, rien. J'ai édité la base de registre de Gnome via gconf-editor pour chercher l'association Login/icône, rien non plus. Je suppose que l'association doit être dans une base de donnée, mais où et laquelle ?
Une idée ?
Edit: l'idée était de supprimer l'icône de l'utilisateur, mais également l'utilisateur du menu d'authentification de Gnome
Dernière modification par jlmas (Le 04/11/2010, à 15:03)
Hors ligne
#2 Le 29/10/2010, à 18:32
- @nne
Re : [Résolu] Supprimer un utilisateur lors de l'ouverture de session
Vous avez regardé dans /var/cache/gdm ?
#3 Le 02/11/2010, à 17:17
- jlmas
Re : [Résolu] Supprimer un utilisateur lors de l'ouverture de session
Effectivement il y a avait bien le fichier face de l'utilisateur dans ce répertoire.
Par contre chose curieuse, le face a bien fini par disparaître de l'invite de login une fois que j'ai eu purgé les logs et avant que je supprime les fichiers du cache de gdm
Peut être ceci est lié :
The Face Browser is configured to display the users who log in most frequently at the top of the list. This helps to ensure that users who log in frequently can quickly find their login image.
Issu de la doc de gnome (2.24 la plus récente que j'ai pu trouver)
http://projects.gnome.org/gdm/docs/2.24 … acebrowser
Merci
Hors ligne
#4 Le 03/11/2010, à 13:00
- jlmas
Re : [Résolu] Supprimer un utilisateur lors de l'ouverture de session
En fait l'identifiant Roger est réapparu, sans la face cette fois ci.
Et le fichier /var/lib/gdm/.cache/login_frequency.cache bien que purgé manuellement de l'entrée Roger, la réinscrit à chaque reboot.
C'est assez affligeant
Hors ligne
#5 Le 03/11/2010, à 15:24
- @nne
Re : [Résolu] Supprimer un utilisateur lors de l'ouverture de session
Ça veut dire qu'il y a un fichier quelque part où sont répertoriés les noms qui doivent apparaiître sur l'écran de connexion et qui n'a pas été purgé au moment de la suppression de ce compte.
Du coup, le sujet a changé ; de "supprimer l'icône d'un utilisateur", il est devenu "comme supprimer un utilisateur du gdm après que son compte ait été supprimé".
Ça m'intrigue tout ça. Malheureusement (pour vous) je suis seule à utiliser mon ordinateur ; je ne sais donc pas à quoi ressemble l'organisation d'un ordinateur partagé. Dans "Home" est-ce que vous avez tous les dossiers des différents comptes qui s'affichent bien sagement ? Est-ce qu'il reste des traces du compte "Roger" quelque part dans les fichiers ? Que donne une recherche au nom "Roger" etc. ?
On va bien réussir à trouver quelque chose
#6 Le 03/11/2010, à 16:40
- jlmas
Re : [Résolu] Supprimer un utilisateur lors de l'ouverture de session
Du coup, le sujet a changé ; de "supprimer l'icône d'un utilisateur", il est devenu "comme supprimer un utilisateur du gdm après que son compte ait été supprimé"
Oui tout à fait
Tout est soigneusement purgé, et c'est bien là le problème
par exemple :
Je cherche toutes les occurrences de Roger dans les noms de fichiers ou dans les fichiers
updatedb && locate Roger
Rien, pas de fichiers dont le nom contient Roger
egrep -ri roger /boot /etc /home /opt /tmp /var /usr
Me remonte toutes les commandes du .bash_history relative à Roger, une entrée dans le fichier /var/lib/gdm/.cache/login_frequency.cache déjà purgé de nombreuses fois, deux warning de /var/log/gdm/:0-greeter.log.3 et de /var/log/daemon.log.1 (donc assez vieux) m'informant qu'ils ne trouvent pas de fichiers relatifs à l'utilisateur Roger et enfin il trouve une entrée dans le fichier binaire /var/cache/nscd/password
Je supprime toutes les entrées, pour le cache d'nscd je supprime le fichier /var/cache/nscd/password, je reboote et...
Je retrouve une nouvelle fois l'utilisateur Roger dans gdm, je retrouve son login dans le fichier /var/lib/gdm/.cache/login_frequency.cache et je le retrouve dans le fichier binaire /var/cache/nscd/password
Dernière modification par jlmas (Le 03/11/2010, à 17:39)
Hors ligne
#7 Le 04/11/2010, à 14:59
- jlmas
Re : [Résolu] Supprimer un utilisateur lors de l'ouverture de session
Bon je pense enfin en être venu à bout de cette histoire à la con
Donc comme précisé dans le message #3 gmd affiche les utilisateurs qui se connectent le plus souvent, sans préciser quel mécanisme est mis en jeu. En fait plutôt qu'utiliser les fichiers /var/log/wtmp qui sont là pour ça, Gnome a réinventé un truc pour lui, qui permet pas mal d'autres chose au niveau du suivi des sessions aussi, ne soyons pas mesquin. Ce truc c'est ConsoleKit [2].
Le paquet consolekit comprend un certain nombre d'utilitaires
# dpkg -L consolekit | grep bin/
/usr/bin/ck-history
/usr/bin/ck-launch-session
/usr/bin/ck-list-sessions
/usr/sbin/ck-log-system-restart
/usr/sbin/ck-log-system-start
/usr/sbin/ck-log-system-stop
/usr/sbin/console-kit-daemon
La doc [1] précise à propos de la liste des utilisateurs lors de l'ouverture de session :
Il obtient cette liste en faisant appel à l'interface ck-history de ConsoleKit
Mais pas de man de ck-history, la doc dans /usr/share [3] est plutôt destinée aux développeurs et ne contient pas d'infos sur les binaires consolekit, seul l'aide obtenue via --help me donne quelques infos
Effectivement si je lance la commande ck-history --frequent, j'obtiens bien mon utilisateur Roger (dans l'exemple ci-dessous les valeurs sont fictives)
ck-history --frequent
administrateur 15
gdm 15
Roger 1
A partir de là il suffit juste de savoir ce que fait précisément cette commande, l'utilitaire strace est parfait pour ce genre de demande
Extrait de la réponse strace (dans l'exemple ci-dessous les valeurs sont fictives)
strace -ro /tmp/strace-ck-history ck-history --frequent
0.000000 execve("/usr/bin/ck-history", ["ck-history", "--frequent"], [/* 56 vars */]) = 0
0.000286 access("/var/log/ConsoleKit/history.1", R_OK) = -1 ENOENT (No such file or directory)
0.000073 access("/var/log/ConsoleKit/history.1.gz", R_OK) = -1 ENOENT (No such file or directory)
0.000075 open("/var/log/ConsoleKit/history", O_RDONLY) = 3
Donc les utilisateurs récents sont enregistrés dans les fichiers de logs /var/log/ConsoleKit/history, en supprimant ces fichiers, je purge l'historique de consolekit et donc mon utilisateur Roger
Pour résumer rapidement, gdm utilise consolekit pour gérer le suivi des sessions, consolekit utilise la commande ck-history pour connaître les utilisateurs à afficher dans le gdm, ces utilisateurs sont stockés dans les logs de consolekit. Pour supprimer l'historique des utilisateurs, il faut purger les logs de consolekit
Reférences:
[1] La configuration de GDM
http://library.gnome.org/admin/gdm/stab … on.html.fr (chapitre Options de la bannière d'accueil [greeter] IncludeAll)
[2] A propos de ConsoleKit
http://library.gnome.org/admin/gdm/stab … it.html.fr
La doc de consolekit
[3] /usr/share/doc/consolekit/ConsoleKit.html
Dernière modification par jlmas (Le 04/11/2010, à 15:00)
Hors ligne
#8 Le 04/11/2010, à 17:26
- @nne
Re : [Résolu] Supprimer un utilisateur lors de l'ouverture de session
Eh bien, bravo, je n'aurais jamais réussi à trouver ça !