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?
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?
Yanıtlar:
/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 engeller. Bunu yapmak için hoş bir GUI aracı vardı, ancak son birkaç sürümde Ubuntu'da bulunmuyordu.
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.
/etc/gdm/gdm.schema
. Bunun yerine, iki satırı ekleyin [greeter]
Exclude=nobody,qmail-foo,qmail-bar
etmek /etc/gdm/custom.conf
. (Bunun haricinde nobody
, varsayılan listedeki adlar yine de gösterilmez, çünkü kullanıcı adlarının <1000 olması gerekir.)
Ubuntu 12.04.04
bulunamadı, tavsiye eder misiniz?
Yeni GDM 3.X için eski cevaplar bu hariç, işe yaramaz içinde ayar olan eskimiş artık çalışmaz yani. Kullanıcının kullanıcı kimliğini değiştirmekten kaçınmak istiyorsanız kolay bir çözüm:greeter
custom.conf
Terminali açın ve girin ( user
giriş ekranından gizlemek istediğiniz kullanıcı adı ile değiştirin ):
sudo nano /var/lib/AccountsService/users/user
Aşağıdakileri dosyaya ekleyin:
[User]
Language=
XSession=gnome
SystemAccount=true
user
Artık listelenip listelenmediğini test etmek için kullanıcıyı değiştirin veya oturumu kapatın .
Hacky ancak kullanıcının kimliğini değiştirerek listede gösterilmemesini sağlayabilirsiniz:
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'
usermod -u
seçenek ilginç: ana dizindeki kullanıcı kimliğini ve posta makarasını (varsa) eşleşecek şekilde otomatik olarak değiştirir. Ancak, kendi dizinleri dışındaki dosyalara erişimlerini kırabilir.
Gerekçe olarak Gilles kabul cevaba un yorumunu buraya bunu geçerli 'en iyi uygulamalar' (Gnome güvenli) yolu olduğuna inanıyoruz budur. Bu değişiklik aynı zamanda Gnome "Gösterge Uygulaması Oturumunda" da yansıtılacaktır.
Bu yöntem, GDM web sitesindeki dokümanlar için önerilmiş olan şeydir ve hem site hem de Gilles, dışlanmaya "hiç kimsenin" eklendiğini göstermese de, bunun gerçekten gerekli olduğundan emin olmak istedim (sayfaların ne olduğuna rağmen) veya açıkça açıkça sunan çevrimiçi dokümanlar). Tekrarlanabilirliği doğrulamak için bunu birkaç 10,10 sistemde test ettim.
Tek yapmamız gereken tek satırlı düzenleme yapmak /etc/gdm/custom.conf
. Diğer çoğu yöntem (default.conf, gdm.conf, vb. Değişiklik yapmak için) kullanımdan kaldırılmıştır.
Eğer varsa /etc/gdm/custom.conf
, o dosyayı düzenleyin. Aksi takdirde, örnek dosyaya kopyalayın:
sudo cp /usr/share/doc/gdm/examples/custom.conf /etc/gdm/custom.conf
[Greeter] bölümünde /etc/gdm/custom.conf
, ş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) versiyonumun altında, Hariç Tut girişinde listelenen "hiç kimse" yoksa nobody
, kullanıcı1 veya kullanıcı2 yerine sahte bir giriş kullanıcısı görünür.
Not 2 : 1000'in altında UID ile hesapların gösterilmesi yapılandırılabilir bir parametredir. Varsayılan olarak, MinimalUID
değer 1000 olarak ayarlanır. Yalnızca ve varsayılan ayar IncludeAll=true
yerinde bırakılırsa ve Include
yönerge boş olmayan bir değere değiştirilmezse, GDM karşılayıcı UD'nin MinimalUID'den büyük olan girişler için passwd dosyasını tarar mı? UID'sinin, Dışlama listesinde olmayan MinimalUID'nin üstünde olan kullanıcılar görüntülenir.
Ters ayarın yani Include=user1,user2
custom.conf'ta bir girdi ayarının sunulduğu gibi çalışıp çalışmayacağını test etmedim . Herhangi bir IncludeAll
ayarı geçersiz kılmalı ve yalnızca açıkça listelenen kullanıcıları göstermelidir.
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
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ı listelerinin 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. Kişisel olarak bu ayarı RDP üzerinden XDMCP (xrdp> vnc-server> xinetd> gdm> gnome kullanarak) aracılığıyla erişilen işyerindeki 3 ayrı CentOS 6.2 sunucusuna şahsen uyguladı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 olmamakla birlikte, 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 kişisel olarak, 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, onun kökünü sistemler üzerinde etkinleştirme eğilimindeyim. Sadece bu hesabı kullanabilmek ve işleri bitirmek için kovalamacayı kesebilmek için etkisiz hale getirildim. 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 yerine getirmeye 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. Elbette, Tüm 'kendi kimliğim olarak giriş yap, sonra sudo up' diyebilirim, ancak şahsen bazı şeyleri bu şekilde yapma gereği duymuyorum. Kendi kilometreniz değişebilir ...
Ö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ördüm.
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. Bir ekleme kadar ileri gitmedi Exclude=user1,user2
veya Include=user3
altından [greeter]
bir başka kutu saklandığını kullanıcıların yardımı ile ilave olarak, /etc/mdm/mdm.conf içinde veya bir /etc/mdm/custom.conf oluşturmak useradd
gayet kullanıcılar ise, ile eklendi adduser
. 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.
Exclude=foobar
içinde/etc/gdm/gdm.conf
işlerin, bunu denediniz mi?