Di recente ho aggiunto diversi nuovi utenti, di cui ho bisogno per qmail. Ora appaiono nella casella nella schermata di accesso e la ingombra, e devo scorrere per trovare il mio utente. Come posso nascondere quegli utenti dalla casella di accesso?
Di recente ho aggiunto diversi nuovi utenti, di cui ho bisogno per qmail. Ora appaiono nella casella nella schermata di accesso e la ingombra, e devo scorrere per trovare il mio utente. Come posso nascondere quegli utenti dalla casella di accesso?
Risposte:
Modifica il file /etc/gdm/gdm.schema trova la sezione che al momento si presenta così:
<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>
E per escludere un utente chiamato qmail, ad esempio, aggiungere qmail all'elenco predefinito in modo che la sezione sia simile a questa.
<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>
Ciò impedirà all'utente qmail di apparire nella schermata di benvenuto di gdm. C'era un bel strumento GUI per fare questo, ma non è stato in Ubuntu nelle ultime versioni.
L'altra alternativa è impostare l'UID dell'utente su un valore inferiore a 1000. Questi sono considerati account di sistema che sono esclusi anche nel programma di benvenuto GDM.
/etc/gdm/gdm.schema
. Invece, aggiungi le due righe [greeter]
Exclude=nobody,qmail-foo,qmail-bar
a /etc/gdm/custom.conf
. (A parte nobody
, i nomi nell'elenco predefinito non verranno comunque visualizzati perché il loro uid è <1000.)
Ubuntu 12.04.04
, potresti consigliarmi?
Per GDM 3.X più recente, le vecchie risposte non funzionano, tranne che per questa impostazione
L' greeter
impostazione custom.conf
è obsoleta , ovvero non funzionerà più. Una soluzione semplice se si desidera evitare di modificare l'UID dell'utente:
Apri il terminale e inserisci (sostituisci user
con il nome utente che vuoi nascondere dalla schermata di accesso):
sudo nano /var/lib/AccountsService/users/user
Aggiungi quanto segue al file:
[User]
Language=
XSession=gnome
SystemAccount=true
Cambia utente o esci per verificare se user
non è più elencato.
Hacky ma puoi modificare l'ID dell'utente in modo che non vengano visualizzati nell'elenco:
sudo usermod -u 999 <username>
Questo funziona perché gli utenti con ID inferiore a 1000 sono considerati utenti "di sistema" (ovvero non umani).
L'unico altro modo che conosco è nascondere completamente l'elenco:
sudo -u gdm gconftool-2 --type bool --set /apps/gdm/simple-greeter/disable_user_list 'true'
usermod -u
opzione è interessante: cambia automaticamente l'UID nella home directory e lo spool di posta (se presente) in modo che corrispondano. Tuttavia, potrebbe interrompere l'accesso a tutti i file che possiedono al di fuori della loro home directory.
Elaborando il commento di Gilles alla risposta accettata, ecco quello che credo sia il modo attuale di "best practice" (sicuro per Gnome) per farlo. Questa modifica si rifletterà anche nella "Sessione dell'applet Indicatore" di Gnome.
Questo metodo è quello suggerito nei documenti sul sito web GDM , e sebbene sia il sito che Gilles mostrino l'aggiunta di "nessuno" all'esclusione, volevo assicurarmi che fosse chiaro che ciò fosse effettivamente necessario (nonostante ciò che le manpage o i documenti online offrono esplicitamente). Ho provato questo su un paio di sistemi 10.10 per verificare la ripetibilità.
Tutto quello che dobbiamo fare è effettuare una modifica su una riga /etc/gdm/custom.conf
. La maggior parte degli altri metodi (apportando modifiche a default.conf, gdm.conf, ecc.) Sono obsoleti.
Se ne hai già uno /etc/gdm/custom.conf
, modifica quel file. Altrimenti, copia sul file di esempio:
sudo cp /usr/share/doc/gdm/examples/custom.conf /etc/gdm/custom.conf
Nella sezione [Greeter] di /etc/gdm/custom.conf
, aggiungi:
Exclude=user1,user2,nobody
Dove "user1" e "user2" sono i nomi utente o le voci del file passwd (ad es. Qmail, calamari, ecc.) Che non si desidera mostrare sul "face browser" GDM.
Nota : Sotto la mia versione di Gnome / GDM (2.30), se non hai "nessuno" elencato nella voce Escludi, allora verrà visualizzato un utente di accesso falso nobody
invece di utente1 o utente2.
NB # 2 : la mancata visualizzazione degli account con UID inferiore a 1000 è un parametro configurabile. Per impostazione predefinita, il MinimalUID
valore è impostato su 1000. Se e solo se l'impostazione predefinita IncludeAll=true
viene lasciata in atto e la Include
direttiva non viene modificata in un valore non vuoto, il programma di saluto GDM esegue la scansione del file passwd per le voci con UID maggiore di MinimalUID. Vengono quindi visualizzati gli utenti con UID sopra MinimalUID che non sono nell'elenco Escludi.
Non ho verificato se l'impostazione inversa, ovvero l'impostazione di una Include=user1,user2
voce in custom.conf funzionerà come presentato. Dovrebbe sovrascrivere qualsiasi IncludeAll
impostazione e visualizzare solo gli utenti elencati esplicitamente.
Ho scritto una sceneggiatura (gdm-greeter) questo fine settimana. Funziona bene su CentOS 6.2, mi chiedo se sarà utile per 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
Dovrei essere d'accordo sul fatto che la risposta più accettata qui è vicina, ma non morta.
Ho appena leccato questo problema da solo, e la risposta per me è stata quella di modificare la seguente voce gdm.schema:
(original)
<schema>
<key>greeter/IncludeAll</key>
<signature>b</signature>
<default>true</default>
</schema>
(after my edit)
<schema>
<key>greeter/IncludeAll</key>
<signature>b</signature>
<default>false</default>
</schema>
L'effetto di ciò è che tutta la lista degli utenti è disabilitata, che se sto interpretando correttamente la domanda originale, è in realtà ciò che l'OP (gruszczy) intendeva fare. Ciò elimina la necessità di creare una lunga fila di esclusioni, poiché tutti gli ID utente indipendentemente dal numero UID vengono esclusi indipendentemente dalla modifica di questa impostazione. Ho applicato personalmente questa impostazione a 3 server CentOS 6.2 separati sul lavoro a cui è possibile accedere occasionalmente tramite XDMCP (utilizzando xrdp> server vnc> xinetd> gdm> gnome) su RDP, che consente ad alcuni dei nostri amministratori Linux meno esperti di lavorare su questi sistemi con una formazione minima.
Detto questo, mentre sono d'accordo che un amministratore di sistema inesperto dovrebbe imparare dall'inizio a lavorare da un account personale (forse con accesso sudo) piuttosto che come root, se hai l'esperienza di lavorare correttamente con quell'account, non c'è nulla di male nel farlo. Assicurati solo di sapere cosa stai facendo prima. Nel caso degli altri miei amministratori di sistema, ho aggiunto CentrifyDC per il supporto di Active Directory a tutti questi sistemi e configurato i sistemi in modo che gli AD-UserIDs possano essere utilizzati per le sessioni desktop mantenendo i diritti del gruppo di sicurezza AD dell'utente. Ma personalmente, da quando ho progettato tutti questi server e ho usato Linux per oltre 15 anni, non penso a nulla di usare root per velocizzare le cose. In effetti, tendo ad abilitare il root sui sistemi in cui ' è stato disabilitato solo per poter usare quell'account e andare al sodo per fare le cose. La cosa principale lì, in realtà, è solo l'abitudine di creare una copia di backup di qualsiasi file prima di modificarlo. Ciò proteggerà dalla maggior parte degli inconvenienti e ti consentirà di ripristinare il sistema se dovessi eseguire una modifica che altrimenti renderebbe il sistema inaccessibile (basta avviare un CD live e sistemare ciò che deve essere riparato).
IMHO, credo che il mantra di "non accedere come root" sia proprio lì per proteggere gli amministratori di sistema n00bie da loro stessi. Ma se raggiungi un livello di competenza con Linux al punto da poter progettare un sistema da qualsiasi sistema operativo Linux in pochissimo tempo e funziona ogni volta, allora non c'è motivo di vivere con il "non accedere mai come root" mantra perché a quel punto sei pronto a gestire la responsabilità derivante dall'utilizzo di quell'account. Ciò è particolarmente vero negli ambienti che utilizzano CentrifyDC per il supporto AD, poiché "root" diventa l'account sysadmin locale ed è (solitamente) abilitato automaticamente. Quindi, trovo che sia meglio andare al sodo e rendere l'impostazione della password dell'account root come una delle primissime attività che faccio in qualsiasi distribuzione al giorno d'oggi. Sicuro, Potrei fare tutto il 'login come il mio ID, quindi sudo up', ma personalmente non sento il bisogno di fare le cose in quel modo. Il tuo chilometraggio può variare ...
Ad esempio, modifica:
# Change
example:x:2001:2001:Example User,,,:/home/example:/bin/bash
# To
example:x:2001:2001:Example User,,,:/home/example:
Ho riavviato il mio display manager e ho notato che questo ha avuto effetto.
sudo service lightdm restart
# (or gdm, mdm, ...)
Mi ci sono volute settimane per identificarlo come il motivo per cui gli utenti erano nascosti nella finestra di benvenuto di login del gestore display. È evidente che / var / lib / AccountService / users viene ignorato da MDM e presumibilmente anche GDM. Non sono andato al punto di aggiungere un Exclude=user1,user2
o un Include=user3
sotto [greeter]
in /etc/mdm/mdm.conf, o creare un /etc/mdm/custom.conf, in quanto un altro riquadro nascondeva gli utenti aggiunti useradd
semplicemente, mentre gli utenti aggiunti con adduser
sono stati mostrati. Impostando la shell di accesso su / bin / false si negano tutti gli accessi a quell'utente, che desidero ancora citare come. Ma ciò nasconde anche l'utente nella schermata di accesso se si desidera che tale utente sia semplicemente inaccessibile.
Exclude=foobar
in/etc/gdm/gdm.conf
opere, l'hai provato?