Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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  sad

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. hmm

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é". wink

Ça m'intrigue tout ça. wink 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 wink

#6 Le 03/11/2010, à 16:40

jlmas

Re : [Résolu] Supprimer un utilisateur lors de l'ouverture de session

@nne a écrit :

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 ! smile