GDM giriş ekranından kullanıcıları nasıl gizleyebilirim?

59

Son zamanlarda qmail için ihtiyacım olan birkaç yeni kullanıcı ekledim. Şimdi giriş ekranındaki kutuda görünüyorlar ve onu karıştırıyorlar ve kullanıcıyı bulmak için kaydırmam gerekiyor. Bu kullanıcıları giriş kutusundan nasıl gizleyebilirim?

    
sordu gruszczy 17.08.2010 12:25

7 cevap

30

/etc/gdm/gdm.schema dosyasını şu anda ş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>

Ve qmail denilen bir kullanıcıyı hariç tutmak için örneğin qmail'i varsayılan listeye ekleyin, böylelikle bölüm buna benziyor.

  <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'in gdm karşılamada görünmesini durduracaktır. Bunu yapmak için güzel bir GUI aracı vardı ama son birkaç sürüm için Ubuntu'da bulunmuyor.

Diğer bir alternatif ise, kullanıcının UID'sini 1000'in altına ayarlamaktır. Bunlar, GDM selamlayıcıda da hariç tutulan sistem hesapları olarak kabul edilir.

    
verilen cevap Richard Holloway 17.08.2010 13:30
43

Daha yeni GDM 3.X için, eski yanıtlar bunun dışında çalışır.
% Co_de% dizinindeki greeter ayarı eskidir , yani işe yaramaz. artık. Kullanıcının kullanıcı kimliğini değiştirmekten kaçınmak istiyorsanız kolay bir çözüm:

  1. Terminali açın ve girin (giriş ekranından gizlemek istediğiniz kullanıcı adıyla custom.conf değiştirin):

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

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

verilen cevap miceagol 04.11.2014 23:10
12

Hacky, ancak kullanıcının kimliğini değiştirebilirsin, böylece listede görünmezler:

sudo usermod -u 999 <username>

Bu, 1000'den küçük kimliği olan kullanıcıların "sistem" kullanıcıları (diğer bir deyişle insanlar değil) olarak kabul edildiğinden işe yarar.

Bildiğim tek yol, listeyi tamamen gizlemek:

sudo -u gdm gconftool-2 --type bool --set /apps/gdm/simple-greeter/disable_user_list 'true'
    
verilen cevap Oli 17.08.2010 12:44
11

Gilles 'in yorumunu kabul edilen yanıtla ilgili ayrıntılı olarak açıklarken, bunu yapmak için şu anki "en iyi uygulamalar" (Gnome-safe) yolu olduğuna inanıyorum. Bu değişiklik ayrıca Gnome "Gösterge Applet Oturumu" na da yansıtılacaktır.

Bu yöntem, GDM web sitesindeki dokümanlarda önerilen yöntemdir. ve hem site hem de Gilles, hariç tutulanlara "kimsenin" eklenmesini gösterse de, bunun gerçekten gerekli olduğunu (isterse de, web sayfalarının veya çevrimiçi dokümanların açık bir şekilde sunduğuna rağmen) emin olmak istedim. Tekrarlanabilirliği doğrulamak için bunu birkaç 10.10 sistemde test ettim.

Tek yapmamız gereken tek satırlık düzenlemeyi /etc/gdm/custom.conf yapmaktır. Diğer çoğu yöntem (default.conf, gdm.conf vb.) Değişiklik yapılmaz.

Mevcut bir /etc/gdm/custom.conf dosyanız 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 [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 passwd dosya girişleri (ör. qmail, kalamar, vb.).

Not : Gnome / GDM (2.30) sürümümün altında, Hariç tutulan girişte "hiç kimse" yoksa, sahte kullanıcı girişi nobody görünür. user1 veya user2 yerine.

N.B. # 2 : UID'nin 1000'in altındaki hesapların görüntülenmemesi yapılandırılabilir bir parametredir. Varsayılan olarak, MinimalUID değeri 1000 olarak ayarlanır. Yalnızca ve eğer IncludeAll=true varsayılan ayarı yerine bırakılırsa ve Include yönergesi boş olmayan bir değere değiştirilmezse, GDM karşılamalayıcısı passwd'yi tarar. UID'nin MinimalUID'den büyük girişleri için dosya. Hariç tutulanlar listesinde bulunmayan UID'nin üzerinde MinimalUID olan kullanıcılar görüntülenir.

Ters ayarın, yani custom.conf dosyasında Include=user1,user2 girdisi ayarlanmasının sunulduğu gibi çalışıp çalışmadığını test etmedim. % Co_de% ayarını geçersiz kılmalı ve yalnızca açıkça listelenen kullanıcıları görüntülemelidir.

    
verilen cevap belacqua 19.01.2011 04:48
2

Bu haftasonu bir senaryo yazdım (gdm-greeter). CentOS 6.2'de iyi çalışıyor, Ubuntu için yararlı 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 }' | \
        sort | tr '\n' ',' | sed 's/,$//''"


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

# The functions area

PlaceExclude() #  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=[^[]*\([[].*\)//' | \
   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 [ "" = "$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=[[/" | \
         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  | egrep -w $UserFilter &> /dev/null
   then
      echo "Error: user  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  &> /dev/null
   then
      echo
      echo "User  is not hidden"
      echo
   else
      # Remove the user from the exclude
      PlaceExclude "'echo $Exclude | tr ',' '\n' | grep -vw  | \
                     tr '\n' ',' | sed 's/,$//''"

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

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

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

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

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

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 [ "" = "" ]
   then
      CMD=help
   else
      CMD=
   fi

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

#
# Main
#

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

Burada en çok kabul edilen cevabın yakın, ama ölmediğine katılıyorum.

Bu sorunu kendim yaladım ve cevap benim şu gdm.schema girişini değiştirmekti:

(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 nedeni, tüm kullanıcı listelerinin devre dışı bırakılmasıdır; bu, orijinal soruyu doğru olarak yorumluyorsam, OP'nin (gruszczy) yapmak istediği şeydir. Bu, UID numarasına bakılmaksızın tüm kullanıcı ID'leri, bu ayar değiştirildikten bağımsız olarak hariç tutulduğu için, uzun bir dışlama çizgisi oluşturma gereğini ortadan kaldırır. Bu ayarı, daha az deneyimli Linux'umuzun bazılarına izin veren XDPMCP (xrdp> gtnc sunucu> xinetd> gdm> gnome kullanarak) üzerinden erişilen 3 ayrı CentOS 6.2 sunucusuna şahsen uygulamıştım. Yöneticiler bu sistemlerde minimum eğitim ile çalışırlar.

Tüm bunların ötesinde, tecrübesiz bir sysadmin'in başlangıçtan kök gibi değil de kişisel bir hesaptan (belki de sudo erişimi ile) çalışmaya başlaması gerektiğini kabul etmeme rağmen, bu hesapla düzgün bir şekilde çalışma deneyiminiz varsa, Bunu yaparken hiçbir zararı yoktur. Sadece elinizden ne yaptığınızı bildiğinizden emin olun. Diğer sistem yöneticilerim için, tüm bu sistemlere Active Directory desteği için CentrifyDC ekledim ve sistemleri AD-Kullanıcı Kimliklerinin kullanıcının AD Güvenlik Grubu haklarını korurken masaüstü oturumları için kullanabilmesini sağlayacak şekilde yapılandırdım. Ama şahsen, tüm bu sunucuları tasarladığımdan ve 15 yıldan beri Linux kullandım diye, işleri hızlandırmak için kök kullanmanın hiçbir yararı olmadığını düşünüyorum. Aslında, bu hesabı kullanabilmem ve işlerin yapılmasıyla kovalamayı kesebilmem için yalnızca devre dışı bırakıldığı sistemlerde root'u etkinleştirmeye eğilimliyim. Asıl önemli olan, gerçekten, değiştirmeden önce herhangi bir dosyanın yedek kopyasını oluşturmanın bir alışkanlığıdır. Bu, çoğu aksiliğe karşı korumayı koruyacaktır ve sisteme erişilemeyen bir düzenlemeyi gerçekleştirmeniz durumunda sistemi kurtarmanıza izin verecektir (sadece canlı bir CD'ye önyükleme yapmak ve sabitlenmesi gerekenleri düzeltmek).

IMHO, 'hiç root olarak oturum açma' mantralarının n00bie sysadmins'i kendilerinden korumak için gerçekten orada olduğuna inanıyorum. Ancak, Linux ile herhangi bir Linux işletim sisteminden çok kısa bir süre içinde bir sistemi çalıştırabileceğiniz ve her seferinde çalıştığınız noktaya Linux ile bir yetkinlik seviyesine ulaşırsanız, o zaman 'root olarak asla oturum açma' ile yaşamak için bir neden yoktur. mantra çünkü bu noktada bu hesabı kullanarak birlikte gelen 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, kovalamayı kestirmek ve kök hesabın şifresini ayarlamayı, günümüzde herhangi bir dağıtımda yaptığım ilk görevlerden biri olarak görüyorum. Tabii ki, tüm 'giriş kimliğimi kullanarak giriş yaptıktan sonra sudo' yapabilirim, ama ben şahsen böyle şeyler yapma gereğini hissetmiyorum. Kendi kilometreniz değişebilir ...

    
verilen cevap StygianAgenda 07.09.2012 17:32
0

Kullanıcı giriş kabuğunu / etc / passwd içindeki boş bir dizgeye değiştirin

Örneğin, şunu 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 bu işlemin etkin olduğunu gözlemledim.

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

Kullanıcıları neden görüntü yöneticisi giriş karşılamaçısına gizlemenin nedeni olarak tanımlamak haftalar sürdü. MDM tarafından / var / lib / AccountService / kullanıcılarının göz ardı edildiği ve yine GDM olduğu varsayılmaktadır. /Etc/mdm/mdm.conf dosyasında Exclude=user1,user2 'si altında Include=user3 veya [greeter] eklemek ya da bir /etc/mdm/custom.conf oluşturmak için başka bir kutuda olduğu gibi gitmedim useradd kullanıcısı tarafından eklenen kullanıcılar gizlenirken, kullanıcılar adduser ile eklendiler. Giriş kabuğunun / bin / false olarak ayarlanması, o kullanıcı için hala oturum açmayı istediğim tüm girişleri reddeder. Ancak bu, kullanıcının odana erişilemez olmasını istiyorsanız, giriş ekranında da gizler.

    
verilen cevap ThorSummoner 11.05.2017 05:46

Etiketlerdeki diğer soruları oku