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 ?
Réponses
Trop de publicités?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 :
-
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
-
Ajoutez ce qui suit au fichier :
[User] Language= XSession=gnome SystemAccount=true
-
Changez d'utilisateur ou déconnectez-vous pour tester si
user
n'est plus répertorié.
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.
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'
É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.
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
- Réponses précédentes
- Plus de réponses