76 votes

Comment masquer les utilisateurs de l'écran de connexion de GDM ?

J'ai récemment ajouté plusieurs nouveaux utilisateurs, dont j'ai besoin pour qmail. Maintenant ils apparaissent dans la boîte de l'écran de connexion et l'encombrent, et je dois faire défiler pour trouver mon utilisateur. Comment puis-je cacher ces utilisateurs de la boîte de connexion ?

87voto

miceagol Points 2688

Pour les GDM 3.X plus récents, les anciennes réponses ne fonctionnent pas, sauf celle-ci
Le site greeter à l'intérieur custom.conf es obsolète c'est-à-dire qu'il ne fonctionnera plus. Une solution de contournement facile si vous voulez éviter de changer l'uid de l'utilisateur :

  1. Ouvrez le terminal, et entrez (remplacez user avec le nom d'utilisateur que vous voulez cacher de l'écran de connexion) :

    sudo nano /var/lib/AccountsService/users/user
  2. Ajoutez ce qui suit au fichier :

    [User]  
    Language=   
    XSession=gnome  
    SystemAccount=true  
  3. Changez d'utilisateur ou déconnectez-vous pour tester si user n'est plus répertorié.

31voto

Brett Veenstra Points 1447

Modifiez le fichier /etc/gdm/gdm.schema et trouvez la section qui ressemble actuellement à ceci :

  <schema>
    <key>greeter/Exclude</key>
    <signature>s</signature>
    <default>bin,root,daemon,adm,lp,sync,shutdown,halt,mail,news,uucp,operator,nobody,nobody4,noaccess,postgres,pvm,rpm,nfsnobody,pcap</default>
  </schema>

Et pour exclure un utilisateur appelé qmail par exemple, ajoutez qmail à la liste par défaut de sorte que la section ressemble à ceci.

  <schema>
    <key>greeter/Exclude</key>
    <signature>s</signature>
    <default>qmail, bin,root,daemon,adm,lp,sync,shutdown,halt,mail,news,uucp,operator,nobody,nobody4,noaccess,postgres,pvm,rpm,nfsnobody,pcap</default>
  </schema>

Cela empêchera l'utilisateur qmail d'apparaître dans le greeter de gdm. Il y avait un bel outil GUI pour faire cela mais il n'est plus dans Ubuntu depuis les dernières versions.

L'autre solution consiste à fixer l'UID de l'utilisateur à moins de 1000. Ceux-ci sont considérés comme des comptes système qui sont également exclus dans le greeter GDM.

18voto

Mufaka Points 54

C'est difficile, mais vous pouvez modifier l'identifiant de l'utilisateur pour qu'il n'apparaisse pas dans la liste :

sudo usermod -u 999 <username>

Cela fonctionne parce que les utilisateurs dont l'ID est inférieur à 1000 sont considérés comme des utilisateurs "système" (c'est-à-dire non humains).

Le seul autre moyen que je connaisse est de masquer complètement la liste :

sudo -u gdm gconftool-2 --type bool --set /apps/gdm/simple-greeter/disable_user_list 'true'

12voto

Jeff Hubbard Points 5292

Élaborer sur Gilles Après avoir lu le commentaire de l'auteur de la réponse acceptée, voici ce que je pense être la meilleure façon de procéder (sans danger pour Gnome). Ce changement sera également reflété dans l'"Indicator Applet Session" de Gnome.

Cette méthode est celle qui est suggérée dans les docs de l'Institut de l'environnement. Site web de la GDM et bien que le site et Gilles montrent l'ajout de "nobody" à l'exclusion, je voulais m'assurer qu'il était clair que cela était vraiment nécessaire (malgré ce que les pages de manuel ou les documents en ligne proposent explicitement). J'ai testé ceci sur quelques systèmes 10.10 pour vérifier la répétabilité.

Tout ce que nous devons faire est d'effectuer une modification d'une ligne à /etc/gdm/custom.conf . La plupart des autres méthodes (modification de default.conf, gdm.conf, etc.) sont obsolètes.

Si vous avez un /etc/gdm/custom.conf pour éditer ce fichier. Sinon, copiez le fichier d'exemple :

sudo cp /usr/share/doc/gdm/examples/custom.conf /etc/gdm/custom.conf

Dans la section [Greeter] de /etc/gdm/custom.conf , ajoutez :

Exclude=user1,user2,nobody

Où "user1" et "user2" sont les noms d'utilisateurs ou les entrées du fichier passwd (par exemple, qmail, squid, etc.) que vous ne souhaitez pas afficher sur le "face browser" de GDM.

Note : Sous ma version de Gnome/GDM (2.30), si vous n'avez pas "nobody" dans l'entrée Exclude, vous aurez un faux utilisateur de connexion. nobody apparaissent à la place de l'utilisateur 1 ou de l'utilisateur 2.

N.B.#2 : Le non-affichage des comptes dont l'UID est inférieur à 1000 est un paramètre configurable. Par défaut, le MinimalUID est fixée à 1000. Si et seulement si le paramètre par défaut IncludeAll=true est laissé en place et le Include n'est pas changée en une valeur non vide, le greeter GDM recherche dans le fichier passwd les entrées dont l'UID est supérieur à MinimalUID. Les utilisateurs dont l'UID est supérieur à MinimalUID et qui ne figurent pas dans la liste d'exclusion sont alors affichés.

Je n'ai pas testé si le réglage inverse, à savoir le réglage d'un Include=user1,user2 dans le fichier custom.conf fonctionnera comme présenté. Il devrait remplacer tout IncludeAll et n'afficher que les utilisateurs explicitement listés.

2voto

Dan Points 131

J'ai écrit un script (gdm-greeter) ce week-end. Il fonctionne bien sur CentOS 6.2, je me demande s'il sera utile pour Ubuntu ?

#!/bin/bash
#
# $LastChangedDate: 2012-02-17 09:13:10 +0100 (Fri, 17 Feb 2012) $
# $Revision: 1627 $
#

# Get the default exlude list
DefaultExclude=`sed 's,</schema>,#,' /etc/gdm/gdm.schemas | \
                tr '\n#' '#\n' | \
                grep '>greeter/Exclude<' | tr '\n#' '#\n' | \
                grep '<default>' | \
                sed -e 's,.*<default>,,' -e 's,</default>.*,,'`

# Get the Exclude list from the config
eval `grep '^Exclude=' /etc/gdm/custom.conf 2> /dev/null`

# If empty copy the default
if [ "$Exclude" = "" ]
then
   Exclude=$DefaultExclude
fi

# Collect all user accounts with a shell
Users="`grep 'sh$' /etc/passwd | awk -F: '{print $1}' | \
        sort | tr '\n' ',' | sed 's/,$//'`"

#------------------------------------------------------------------------------

# The functions area

PlaceExclude() # $1 new exclude string
{
   # Create a .bak file
   if [ ! -f /etc/gdm/custom.conf.bak ]
   then
      cp /etc/gdm/custom.conf /etc/gdm/custom.conf.bak
   fi

   # Create a tmp file without the Exclude string
   cat /etc/gdm/custom.conf | tr '[\n' '\n[' | \
   sed -e 's/^\(greeter[]].*\)[[]Exclude=[^[]*\([[].*\)/\1\2/' | \
   tr '[\n' '\n[' > /tmp/custom.conf.$$

   # If the tmp file is there and we have non default Exclude
   if [ -f /tmp/custom.conf.$$ ]
   then
      if [ "$1" = "$DefaultExclude" ]
      then
         cat /tmp/custom.conf.$$ > /etc/gdm/custom.conf
      else
         # Place the new Exclude string
         cat /tmp/custom.conf.$$ | tr '[\n' '\n[' | \
         sed -e "s/^greeter[]][[][[]/greeter][Exclude=$1[[/" | \
         tr '[\n' '\n[' > /etc/gdm/custom.conf
      fi
   fi
   rm -f cat /tmp/custom.conf.$$
}

#------------------------------------------------------------------------------
#------------------------------------------------------------------------------

# Command area

add() # Cmd (Add a user to the greeter {<user>
{
   UserFilter=`echo $Users | sed 's/,/|/g'`
   if ! echo $1 | egrep -w $UserFilter &> /dev/null
   then
      echo "Error: user $1 unknown"
      echo
      return 1
   fi

   # Only work with the users not in the default exclude list
   Filter=`echo $DefaultExclude | sed 's/,/|/g'`
   Hidden=`echo $Exclude | tr ',' '\n' | egrep -vw "$Filter" | tr '\n' ','`

   # Check if we need to do something
   if ! echo $Hidden | tr ',' '\n' | grep -w $1 &> /dev/null
   then
      echo
      echo "User $1 is not hidden"
      echo
   else
      # Remove the user from the exclude
      PlaceExclude "`echo $Exclude | tr ',' '\n' | grep -vw $1 | \
                     tr '\n' ',' | sed 's/,$//'`"

      # Tell the action
      echo "User $1 added to the greeter"
      echo
   fi
}

del() # Cmd (Delete/hide a user from the greeter {<user>
{
   UserFilter=`echo $Users | sed 's/,/|/g'`
   if ! echo $1 | egrep -w $UserFilter &> /dev/null
   then
      echo "Error: user $1 unknown"
      echo
      return 1
   fi

   # Check if we need to do something
   if echo $Exclude | tr ',' '\n' | grep -w $1 &> /dev/null
   then
      echo
      echo "User $1 is already excluded from the greeter"
      echo
   else
      # Exclude the user
      PlaceExclude "$1,$Exclude"

      # Tell the action
      echo "User $1 hidden from the greeter"
      echo
   fi
}

hide() # CMD (Delete/hide a user from the greeter {<user>
{
   del $1
}

hidden() # Cmd (List the hidden users {
{
   Filter=`echo $DefaultExclude | sed 's/,/|/g'`
   Hidden=`echo $Exclude | tr ',' '\n' | egrep -vw "$Filter" | tr '\n' ','`

   if [ ${#Hidden} -eq 0 ]
   then
      echo "No hidden users"
      echo
   else
      echo
      echo "Users hidden from the greeter:"
      echo
      echo $Hidden | tr ',' '\n' | sed 's/^/   /'
   fi
}

users() # Cmd (List the users in the greeter {
{
   Filter=`echo $Exclude | sed 's/,/|/g'`
   Greeters=`echo $Users | tr ',' '\n' | egrep -vw "$Filter" | tr '\n' ','`

   if [ ${#Greeters} -eq 0 ]
   then
      echo "No users in the greeter"
      echo
   else
      echo
      echo "Users in the greeter:"
      echo
      echo $Greeters | tr ',' '\n' | sed 's/^/   /'
   fi
}

list() # CMD (List the users in the greeter {
{
   users
}
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------

# Framework area

help() # Cmd (Command help {[command]
{
   if [ "$1" = "" ]
   then
      CMD=help
   else
      CMD=$1
   fi

   if ! grep \^${CMD}*\(\).*#.*Cmd $0 > /dev/null 2>&1
   then
   (
      echo
      echo "Error: unknown cmd"
      echo
   ) >&2
   else
   (
      echo
      echo "Usage: `basename $0` $CMD `grep \^${CMD}*\(\).*#.*Cmd $0 | \
                    sed 's/.* {//g'`"
      echo
   ) >&2
   fi
}

#
# Main
#

if [ "$1" != "" ] && grep -i $1\(\).*#.*Cmd $0 > /dev/null 2>&1
then
   $*
else
   echo
   echo "Usage: `basename $0` command [parm1] [parm2] [..]"
   echo
   echo "  Available Commands:"
   echo
   grep \^[0-9a-z_A-Z]*\(\).*#.*Cmd $0  | \
   awk -F\( '{printf "%-16s %s\n",$1,$3}' | sed 's/ {.*//g' | sort
   echo
fi

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X