it-swarm-tr.com

Kullanıcılar GDM giriş ekranından nasıl gizlenir?

Geçenlerde qmail için ihtiyaç duyduğum birkaç yeni kullanıcı ekledim. Şimdi, giriş ekranındaki kutuda belirip dağınıklık yapıyorlar ve kullanıcımı bulmak için kaydırmalıyım. Bu kullanıcıları giriş kutusundan nasıl gizleyebilirim?

64
gruszczy

/Etc/gdm/gdm.schema dosyasını düzenleyin, şunun gibi görünen bölümü bulun:

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

Ayrıca qmail adlı bir kullanıcıyı dışlamak için, örneğin varsayılan listeye qmail ekleyin, böylece bölüm bu şekilde görünür.

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

Bu, kullanıcı qmail’inin gdm selamlayıcısında görünmesini durduracaktır. Bunu yapmak için güzel bir GUI aracı vardı, ancak son birkaç sürümde Ubuntu'da bulunmadı.

Diğer alternatif ise, kullanıcının kullanıcı kimliğini 1000'in altında yapmaktır. Bunlar GDM karşılayıcıda dışlanan sistem hesapları olarak kabul edilir.

30
Richard Holloway

Yeni GDM 3.X için eski cevaplar bunun dışında işe yaramıyor
custom.conf içindeki greeter ayarı eski , yani artık işe yaramaz. Kullanıcının kullanıcı kimliğini değiştirmekten kaçınmak istiyorsanız kolay bir çözüm:

  1. Terminali açıp (user yerine giriş ekranından gizlemek istediğiniz kullanıcı adı ile değiştir):

    Sudo nano /var/lib/AccountsService/users/user
    
  2. Aşağıdakileri dosyaya ekleyin:

    [User]  
    Language=   
    XSession=gnome  
    SystemAccount=true  
    
  3. user artık listelenip listelenmediğini test etmek için kullanıcıyı değiştirin veya oturumu kapatın.

55
miceagol

Hacky ancak kullanıcının kimliğini, listede gösterilmemesi için değiştirebilirsiniz:

Sudo usermod -u 999 <username>

Bu işe yarar çünkü 1000'in altındaki kimliği olan kullanıcılar "sistem" kullanıcıları olarak kabul edilir (yani insanlar değil).

Bildiğim diğer tek yol listeyi tamamen gizlemektir:

Sudo -u gdm gconftool-2 --type bool --set /apps/gdm/simple-greeter/disable_user_list 'true'
13
Oli

Gilles 'in kabul edilen cevabına yaptığı yorumda, şu anki "en iyi uygulamalar" (Gnome-safe) yönteminin bu olduğuna inanıyorum. Bu değişiklik aynı zamanda Gnome "Gösterge Uygulaması Oturumunda" da yansıtılacaktır.

Bu yöntem, dokümanlardaki GDM web sitesi 'de önerildiği gibi, ve hem site hem de Gilles hariç tutulanlara "hiç kimsenin" eklenmediğini gösterse de, bunun açık olduğundan emin olmak istedim. gerçekten gerekli (manpages veya online docs açıkça sundukları ne rağmen). Bunu tekrarlanabilirliği doğrulamak için birkaç 10,10 sistemde test ettim.

Tek yapmamız gereken tek satırda düzenleme yapmak için /etc/gdm/custom.conf. Diğer pek çok yöntem (default.conf, gdm.conf, vb. Değişiklik yapmak için) kullanımdan kaldırılmıştır.

Mevcut bir /etc/gdm/custom.conf varsa, bu dosyayı düzenleyin. Aksi takdirde, örnek dosyaya kopyalayın:

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

/etc/gdm/custom.conf öğesinin [Greeter] bölümünde, şunu ekleyin:

Exclude=user1,user2,nobody

"User1" ve "user2", GDM "yüz tarayıcısında" göstermek istemediğiniz kullanıcı adları veya kullanıcı dosya girişleridir (örneğin, qmail, kalamar vb.).

Not : Gnome/GDM (2.30) sürümümde, Hariç Tut girişinde listelenen "hiç kimse" yoksa, sahte bir giriş kullanıcısı olacaktır. nobody ortaya çıkıyor user1 veya user2 yerine.

N.B. # 2 : 1000'in altındaki UID hesaplarının gösterilmemesi yapılandırılabilir bir parametredir. Varsayılan olarak, MinimalUID değeri 1000 olarak ayarlanmıştır. Yalnızca ve varsayılan ayar IncludeAll=true yerinde bırakılmışsa ve Include yönergesi boş olmayan bir değere değiştirilmezse, GDM karşılama dosyası passwd dosyasını tarar. UID ile MinimalUID'den büyük girişler. UID'sinin, Dışlama listesinde olmayan MinimalUID'nin üstünde olan kullanıcılar görüntülenir.

Ters ayar, yani, custom.conf içindeki bir Include=user1,user2 girişi ayarının sunulduğu gibi çalışıp çalışmadığını test etmedim. IncludeAll ayarını geçersiz kılmalı ve yalnızca açıkça listelenen kullanıcıları göstermelidir.

11
belacqua

Bu haftasonu bir senaryo (gdm-greeter) yazdım. CentOS 6.2'de iyi çalışıyor, Ubuntu için faydalı olup olmayacağını merak ediyorum?

#!/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
2
Hans Vervaart

Buradaki en çok kabul edilen cevabın yakın, ancak henüz ölü olmadığı konusunda hemfikir olmalıyım.

Ben sadece bu sorunu kendim yaladım ve benim için cevap şu gdm.schema girişini değiştirmek oldu:

(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>

Bunun etkisi, tüm kullanıcıları listelemenin devre dışı bırakılmasıdır; orijinal soruyu doğru yorumluyorsam, aslında OP'nin (gruszczy) yapmayı düşündüğü şey budur. Bu, UID numarasına bakılmaksızın tüm kullanıcı kimlikleri, bu ayar değiştirildiğinde bir kez hariç tutulduğundan, uzun bir hariç tutma satırı oluşturma gereksinimini ortadan kaldırır. Bu ayarı şahsen ben XDMCP (xrdp> vnc-server> xinetd> gdm> gnome kullanarak) RDP üzerinden zaman zaman erişilen işyerindeki 3 ayrı CentOS 6.2 sunucusuna uygulamıştım. asgari eğitim almış sistemler.

Bunların hepsi, deneyimsiz bir sysadmin'in başlangıçtan itibaren kökten ziyade kişisel bir hesaptan (belki Sudo erişimi olan) çalışmayı öğrenmesi gerektiği konusunda hemfikir olmama rağmen, söz konusu hesapla düzgün çalışabilme deneyiminiz varsa Bunu yaparken. Sadece elden önce ne yaptığını bildiğinden emin ol. Diğer sistem yöneticilerimde, bu sistemlerin tümüne Active Directory desteği için CentrifyDC'yi ekledim ve sistemleri, AD-Kullanıcı Adları, kullanıcının AD Güvenlik Grubu haklarını koruyarak masaüstü oturumları için kullanılabilecek şekilde yapılandırdım. Ancak şahsen, bu sunucuların hepsini tasarladığım ve 15 yıldan fazla bir süredir Linux kullandığım için, işleri hızlandırmak için kök kullanmanın hiçbir şey olmadığını düşünüyorum. Aslında, devre dışı bırakıldığı sistemlerde, bu hesabı kullanabilmem ve işleri halledebilmem için kovalamacayı kesebilmeyi sağlama eğilimindeyim. Buradaki asıl şey, gerçekten, değiştirmeden önce herhangi bir dosyanın yedek kopyasını oluşturmayı alışkanlık haline getirmektir. Bu, en çok aksiliklere karşı güvenli bir koruma sağlar ve aksi takdirde sistemin erişilememesine neden olacak bir düzenleme yaparsanız sistemi kurtarmanıza izin verir (yalnızca canlı bir CD'ye önyükleyin ve düzeltilmesi gerekenleri düzeltin).

IMHO, “asla root olarak giriş yapmaz” mantrasının, n00bie sistem yöneticilerini kendisinden korumak için gerçekten orada olduğuna inanıyorum. Ancak, Linux ile herhangi bir Linux işletim sisteminden çok kısa bir sürede bir sistemi kurabileceğiniz ve her zaman çalıştığı noktaya kadar bir yetkinlik seviyesine ulaşırsanız ve o zaman 'hiçbir zaman root olarak giriş yapmamanız' için hiçbir neden yoktur. mantra, çünkü o noktadan sonra, bu hesabı kullanmanın beraberinde getirdiği sorumluluğu üstlenmeye hazırsınız. Bu özellikle AD desteği için CentrifyDC kullanan ortamlarda geçerlidir, çünkü 'root' yerel sysadmin hesabı olur ve (genellikle) otomatik olarak etkinleştirilir. Bu yüzden, kovalamaca kesmeyi ve kök hesabın şifresini ayarlamayı, günümüzde herhangi bir dağıtımda yaptığım ilk görevlerden biri olarak yapmayı en iyi buluyorum. Tabii ki, tüm 'kendi kimliğim olarak giriş yapıp ardından Sudo up' yapabilirim, ama şahsen ben böyle şeyler yapma gereği duymuyorum. Kendi kilometreniz değişebilir ...

2
StygianAgenda

Kullanıcı oturum açma Kabuğunu/etc/passwd içindeki boş bir dizeye değiştirin

Örneğin, değiştirin:

# Change
example:x:2001:2001:Example User,,,:/home/example:/bin/bash

# To
example:x:2001:2001:Example User,,,:/home/example:

Ekran yöneticimi yeniden başlattım ve bunun etkili olduğunu gözlemledim.

Sudo service lightdm restart
# (or gdm, mdm, ...)

Bunu, kullanıcıların görüntü yöneticisi giriş selamlayıcısında neden gizlendiğinin nedeni olarak tanımlamak haftalar sürdü./Var/lib/AccountService/kullanıcıların MDM tarafından göz ardı edildiği ve tahminen GDM olduğu da açıktır. /Etc/mdm/mdm.conf içinde Exclude=user1,user2 altına Include=user3 veya _ [greeter] eklemek ya da bir /etc/mdm/custom.conf oluşturmaya kadar gitmedim. , başka bir kutu olarak useradd aracılığıyla eklenen kullanıcıları gizliyordu, ancak adduser ile eklenen kullanıcılar gösteriliyordu. Giriş Kabuğunu/bin/false olarak ayarlamak, hala kullanmak istediğim kullanıcının girişini reddeder. Ancak, kullanıcının erişemeyeceği düzlükte olmasını istiyorsanız, kullanıcıyı giriş ekranında da gizler.

0
ThorSummoner