Giriş
Bu makalenin konusu X Display Manager
'i kurulmasi ve kullanilmasidir. X Display Manager ana bir makinada çalisarak
parelel X görüntülerini basit olaylari denetleyerek yönetir.Bu
işlemi kulanici işlemlerini init(8), getty(1)
ve login(1) harf terminalerine bagliyarak yapar.Ayrica xdm, X server
çalişmadigi zaman görüntü temizleme konusunda
yardimcidir. xdm'nin en yararli özeliklerinden biri de görüntü
sunucu (server) ya olan kontrollerin izinlerini kullanicilarin izinleri
ile ilişkili olarak ayarlamasidir.xdm bu yeteneginden dolayi
X oturumlarinin giriş iznini standart olarak ayarlar.Bu sebeble bir
makine birden fazla kulanici tarafindan kulaniliyorsa X oturumlarini ayarlanmasi
için uygundur.
Konu İçeriği
Bu sütun xdm altindaki adresleme
izni ile ilişkili.X sunucudaki program güvenligi gelecek ay
ayrintili olarak ayri bir sütunda ele alinacaktir.Tek kullanicili
bir masaustü bilgisayarda çalisan xdm ile ilgileniyorsaniz
XDMCP 'yi atlayabilirsiniz.Eger XDMCP ile ilgilenmiyorsaniz bu konu anlatim
sirasina uymadan diger bolumlere geçebilirsiniz çünkü
bündan sonraki bölümler ağ özelikleri ve X terminaliyle
olan etkileşimi anlatmaktadir.Eger X terminalinin özeliklerinin
ayarlanmasi ile ilgileniyorsaniz size O' Reilly & Associates " The
X Window System Administrators Guide" kitabini önerebilirim.Bu kitapta
bu makaledekinden çok daha fazla ve ayrintili bilgi bulunmaktadir.
X Terminalinde İşlem
Yürütülmesi ve Denetlenmesi
Bir kullanicinin bilgisayari genelde
tty arayüzünü (shell) kullanir .xdm i kullanirken kullanici
işlemlerini denetleyen sisteme "arbitrary session manager" (istege
göre işlem yöneticisi) denir.Bu sistem tty arayüzlerinden
farklidir.Nedeni ise X terminallerini kullanirken kulanilan arayüzünün
yapilan işlemlerle bir alakasi kalmamiş olup artik X terminalini
denetlemek gerekmemektedir ;bu işi de arbitrary session manager yapmaktadir.
xdm 'nin Genel Yapisi
xdm; bir Xclient yöneticisi olarak
alinabilir , görevi kullanıcının bağlantilarini
ve çaliştirdigi programlari baştan sona denetlemektedir.
xdm'nin bir diger işi de hangi
X sunucu (server) larin çalişir,baglanti kurulabilir durumada
oldugunu kaydetmektir.Bu işi diger XDMCP sunucularinin (XDMCP
requesting management) portlarini dinleyerek ve X sunucusunun dosyalarini
gözden geçirerek yapar.xdm bir X sunucusunu yönetmeye
başladigi zaman (X sunucusu çaliştigi zaman) xdm sunucusuna
bir mesaj bildirir ve kulanicinin adini şifresini ve kulandigi makina
adini ( güvenlik gerekcesiyle) gönderir.Ardindan
kulanicinin daha önceden kendi istegi dogrultusunda yapmis oldugu
ayarlar kulandigi makineye aktarilir ve o makine X sunucusunu gönderilen(kulanicinin
daha önceden yapmiş oldugu ayarlari) dikkate alarak çalişir.X
sunucu kapandigi zaman benzer bir biçimde xdm sunucusuna programin
kapandigini bildirir ve program birdaha ki kulanima hazir bir şekilde
kapanir.
Neden
xdm ?
Daha önce güvenlik iletişim
prensipleri ve X sunucularinin alişilmiş özellikleri xdm
de bulunmakla birlikte üzerinde uzun süre düşünülmüş
ve yogun emek harcanarak yapilmiş yeni özelikleride barindirmaktadir.Xdm
sistem yoneticilerinin sistem elemanlarini çok geniş bir şekilde
ayarlamasini sağlar.X sunucunun kapatilmadigi çok kullanicili
(her kullanici degistiginde X sunucu kapatilmadan kullanici adi ve şifresini
X sunucu kapanmadan girilen sistemlerde) sistemlerde xdm en iyi çozum
yoludur.Her yeni kulanici degişdiginde masa üstü ayarlari
kulanicinin daha önce istegine göre ayarlanmiş şekli
ile yeniden başlar.
Ayarlar
Xdm ayarlarini standart ASCII metin dosyalarinda
tutar.Xdm ayarlari için gerekli genel dosyalar /usr/lib/X11/xdm
veya /etc/xdm altinda yeralirken kullanici ayarlari için
gerekli özel dosyalar kulanicinin home dizini altindas tutulur.Herhangi
bir ayar dosyasi yada dosyalari yerdegiştirdiginde sisteme -config
paremetresi ile kolayca yeni yeri tanimlanabilir.Aşagida herbir dosya
ve komut için tanimlama ve örnekleri verilmiştir.
Genel Dosyalar
xdm-config
Bu dosyada diger tüm ayar dosyalarinin
yerleri belirtilmektedir.Eger dosyalar başlangictaki tanimlanan yerlerinde
bulunmaktaysa dosya aşagidaki şekilde olur.Örnegimizde
/etc/X11/xdm altindaki tüm ek dosyalarin tanimlamasi aşagidadir.Böylece
X sunucu daki kulanici cikarken /usr/lib/X11/xdm altindaki tanimli dosyalar
degişmeden korunmuş olur.
-
DisplayManager.errorLogFile: /var/log/xdm-error.log
-
DisplayManager.pidFile: /var/run/xdm.pid
-
DisplayManager.keyFile: /etc/X11/xdm/xdm-keys
-
DisplayManager.servers: /etc/X11/xdm/Xservers
-
DisplayManager.accessFile: /etc/X11/xdm/Xaccess
-
DisplayManager._0.authorize: true
-
DisplayManager._1.authorize: true
-
DisplayManager._0.setup: /etc/X11/xdm/Xsetup_0
-
DisplayManager._0.startup: /etc/X11/xdm/GiveConsole
-
DisplayManager._0.reset: /etc/X11/xdm/TakeConsole
-
DisplayManager*resources: /etc/X11/xdm/Xresources
-
DisplayManager*session: /etc/X11/xdm/Xsession
-
DisplayManager*authComplain: false
Xservers
Aşagida listesi verilen sunuculara
xdm tarafindan yönetilebilir.Bu dosyada en azindan yerel göruntu
sunucu bulunmalidir.Bu dosyanin sistem çalisirken birdaha okunmasi
sadece SIGHUP sinyalinin alinmasina baglidir.
# ps -a | grep xdm
2639 ? R 0:09 /usr/bin/X11/xdm
# kill -9 2639
Bu örnek tek başina çalişan
bir makine içindir.
-
# first line should be the local display
-
:0 local /usr/X11R6/bin/X
-
# :0 specifies console
-
# local denotes the X server is running
on the locally
-
# /usr/X11R6/bin/X executable run at startup
-
# the syntax for X terminals is slightly
different
-
# since they run their X server from another
machine
-
# ONLY enter X terminals if they DO NOT
support XDMCP
-
eng1:0 foreign NCD xterminal
-
# eng1 is the name of the terminal
-
# :0 is the display to use on the terminal
-
# foreign signifies the X server is running
on a different machine
-
# NCD xterminal are display class resources
specific to this terminal
-
# and aren't absolutely neccesary
-
eng2:0 foreign NCD xterminal
-
eng3:0 foreign Visual xterminal
Xsession
Her bir X oturumu açildigi zaman
aşagidaki kod parçasi (script)çalistirilir.
-
#!/bin/sh
-
# following section enables failsafe logon
when neccesary
-
# using <CTRL><RETURN> after password
activates failsafe mode
-
case $# in
-
1)
-
case $1 in
-
failsafe)
-
exec xterm -geometry 80x24-0-0
-
;;
-
esac
-
esac
-
# redirect errors to a file in user's
home directory
-
for errfile in "$HOME/.xsession-errors"
"${TMPDIR-/tmp}/xses-$USER" "/tmp/xses-$USER"
-
do
-
if ( cp /dev/null "$errfile" 2> /dev/null
)
-
then
-
chmod 600 "$errfile"
-
exec > "$errfile" 2>&1
-
break
-
fi
-
done
-
# use users local .xsession and .Xresources
files if they exist
-
startup=$HOME/.xsession
-
resources=$HOME/.Xresources
-
if [ -x "$startup" ]; then
-
exec "$startup"
-
elif [ -x "$HOME/.Xclients" ]; then
-
exec "$HOME/.Xclients"
-
elif [ -x /etc/X11/xinit/Xclients ]; then
-
exec /etc/X11/xinit/Xclients
-
else
-
if [ -f "$resources" ]; then
-
xrdb -load "$resources"
-
fi
-
exec xsm
-
fi
Xresources
Xdm için gerekli kaynaklari
yükleyen dosyanin bir örnegi aşagidadir.
-
# key settings to be used by Xlogin widget
-
xlogin*login.translations: #override\
-
# Ctrl R stops xdm from managing display
-
Ctrl<Key>R: abort-display()\n\
-
# F1 or Ctrl Return run a failsafe session
-
# consisting of a single xterm window
-
<Key>F1: set-session-argument(failsafe)
finish-field()\n\
-
Ctrl<Key>Return: set-session-argument(failsafe)
finish-field()\n\
-
<Key>Return: set-session-argument()
finish-field()
-
# display setings for Xlogin widget to
be displayed by xdm
-
xlogin*borderWidth: 3
-
xlogin*greeting: CLIENTHOST
-
xlogin*namePrompt: login:\040
-
xlogin*fail: Sorry Try Again
-
#ifdef COLOR
-
xlogin*greetColor: CadetBlue
-
xlogin*failColor: red
-
*Foreground: black
-
*Background: #fffff0
-
#else
-
xlogin*Foreground: black
-
xlogin*Background: white
-
#endif
-
# settings for xconsole client which is
used when xdm connection on
-
# local server is initialized. This keeps
console messages sent between
-
# logins from going everywhere across
the screen
-
XConsole.text.geometry: 480x130
-
XConsole.verbose: true
-
XConsole*iconic: true
-
XConsole*font: fixed
-
Chooser*geometry: 700x500+300+200
-
Chooser*allowShellResize: false
-
Chooser*viewport.forceBars: true
-
Chooser*label.font: *-new century schoolbook-bold-i-normal-*-240-*
-
Chooser*label.label: XDMCP Host Menu from
CLIENTHOST
-
Chooser*list.font: -*-*-medium-r-normal-*-*-230-*-*-c-*-iso8859-1
-
Chooser*Command.font: *-new century schoolbook-bold-r-normal-*-180-*
xdm-pid
xdm için gerekli işlemler
(oynanamamasi gereken bir dosya).
xdm-errors
Adindanda anlaşilacagi gibi xdm
hatalarinin tutuldugu bir dosya.
Xacsess
XDMCP(X11R5 ve
yukarisi) için giris izni konturol dosyasi.Bu dosya sadece XDMCP
üzeründe çalisan sorgulamalari denetler.Bu dosya ayrica
size ilgili makine üzerindeki gurublara genel bazi imtiyazlar yada
kisiltlamalar saglamanizi saglar.Ana sunucuya erisim iznini Display manager
xdm-config dosyasi ile ayarlar.Daha fazla bilgiyi seçici konusunda
bulabilirsiniz
Give Console (konsol vermek)
-
Bu bir kulanici konsolunun kulanicisinin
degismasi için gereken programdir.Yanliz sizin bu dosyayi degistirmeniz
için iyi bir neden olmasi gerekiyor.
-
#!/bin/sh
-
# Assign ownership of the console to the
invoking user
-
# $XConsortium: GiveConsole,v 1.2 93/09/28
14:29:20 gildea Exp $
-
#
-
# By convention, both xconsole and xterm
-C check that the
-
# console is owned by the invoking user
and is readable before attaching
-
# the console output. This way a random
user can invoke xterm -C without
-
# causing serious grief.
-
#
-
chown $USER /dev/console
Take Console(konsol almak)
-
Bu dosya konsolu eski sahibi olan root'a
vermekiçin basit bir programdir.Bu dosyayi degistirmeyin.
-
bin/sh
-
# Reassign ownership of the console to
root, this should disallow
-
# assignment of console output to any
random users's xterm
-
# $XConsortium: TakeConsole,v 1.2 93/09/28
14:30:29
-
#
-
chmod 622 /dev/console
-
chown root /dev/console
Xsetup_0
-
Bu bir görüntü ayar dosyasidir.Xconsole
ayarlarinini yapildigi dosyasidir.Girirslerin bilgisini sisteme bildirir
-
#!/bin/sh
-
# $XConsortium: Xsetup_0,v 1.3 93/09/28
14:30:31
-
/usr/X11R6/bin/xconsole -geometry 480x130-0-0
-daemon -notify -verbose -fn fixed -exitOnFail
Yerel Dosyalar
~/.xsession
Kulanicinin kendi istedigi olaylarin
baslatan programcıktır.Herhangi bir shell ile yazilabilir(~/.xinit
sadece Bash ve Bourne shell ile yazilmali).
~/.Xresources
Bu dosya okunarak hangi kaynak (source)
kulanildigini ögrenebilir.
~/.xsession-errors
X session (X sunucu baslangici )hatalarini
tutuar.
~/.Xauthority
Kulanicinin sunusu ile ilgili bilgileri
tutar.
XDMCP
X Dispaly Manager
Control
Protocol'ü kisaltarak olusturulan XDMCP ilk defa X11 le berirdi
ve xdm ile x terminaleri arasinda ki sorunlari haletmekte baya yol katedi.XDMCP
X sunucularinin dosyalarina bakrak hangi sunucularin çalisir oldugunu
bilir.Yanliz X sunucusunun dosyalarini xdm başlangiçta problem
oldugu zaman okur.Bunun dişinda SIGNUP sinyali geldigi zaman tekrar
okumaya zorlanir.XDMCP sunucularin xdm ile irtibat kurmalarina sunucunun
önceligine bakmadan izin verir. XDMCP kullanici makinesinde
sürekli olarak makineye gelebilecek mesajlari dinlemekdedir.Yönetici
mesajlari geldiginde gelen mesajin aynisini ve kullanici ekran göruntüsünü
gönderir.Tabi bu iletisim kendi ayarlarinda olan üç iletişim
protokolunden( DIRECT, INDIRECT, ve BROADCAST). birinde ve özel portlardan
olur.
İletişim Kuralları
Yukarıda belirtilen iletisim
çeşitleri DIRECT, INDIRECT, ve BROADCAST üzerinde
durulacaktir
DIRECT iletişim çeşidinde
sunucu belli olmayan bir biçimde ağda gönderdigi mesajlar
ile ağda sistem yöneticiligi yapmaktadir.DIRECT ileişim
ile kurulan ilk baglandigi makinanin sunucusunu belirler.INDIRECT iletişim
de kurulan baglantida X terminal kulanıcının sunucuları
seçebilmesi için bir seçenek kutusu çıkartıyor.Çok
sunuculu sistemlerde INDIRECT iletişim daha avantajlidir.
INDIRECT iletişim kulanilmasi
için Xaccess dosyasi derlenirken CHOOSER keyword seçenegi
işaretlenmesi gerekir.Bir diger yol da BROADCAST sisteminin kullanilmasidir.Bu
sistemde ağ daki sunuculara mesaj gönderip kulanicinin hangi sunucuyu
seçebilecegi ayarlaniyor.
Chooser
X terminaleri kulanirken başlangicda
sunucularin seçilmesi için gelen seçenek listesi (menu)
pek kulanişli degildir.Bu nedenle ilk girişte sunucu listesi
geldigi zaman bu listede CHOOSER seçenegi seçilmesi gerekir.
eng*.odhs.dsd.com CHOOSER BROADCAST
bu komut tüm eng ile basliyan
terminaleri(odhs.dsd.com de bulunan)chooser box(seçme kutusu) kulanarak
sunucu seçmesini saglar.INDIRACT mode kulanılarak seçilebilecek
sunucularin listesi gösterilir,tabiki bu daha iyidir.
eng*.odhs.dsd.com CHOOSER dsdapps.odhs.dsd.com
dbsrv.odhs.dsd.com test.odhs.dsd.com
Bu gördügünüz ayar
eng* bölumundeki terminalerin programlarina bilgi bankalarina erişebilme
izinlerini ayarlar ve menudeki sunuculari test eder
Ayrica Xaccess dosyasi ağdaki
diger sunucular için ufak programlar yazilmasini saglar.Aşagidaki
örnekte enginering(eng*) için ayarlama yapilmasini gösteriyor.
%ENGHOSTS dsdapps.odhs.dsd.com dbsrv.odhs.dsd.com
test.odhs.dsd.com
eng*.odhs.dsd.com CHOOSER %ENGHOSTS
Kulanicilarin görsel ayarlari
Xresources dosyasinda degişiklik yapilarak düzenlenir
xdm'i
çaliştirmak
xdm ayarlarini test etmek için
makineyi kapatmadan console(shell çalisma ortami)
$ init 5 yazarak sisteme
level(seviye) 5 den yeniden girilir.
Eger level 5 den sistem yeniden açilmaz
ise /etc/inittab dosyasina bakmak gerekir burada xdm hangi başlangiç
leveldan başlayacagi burada belirtilmektedir(Slackware'in bazi sürümleri
4 üzerinden çalişir) .Ardindan xlogin giriş bölumlerini
görebilirsiniz ve adinizi parolanizi yazarak xdm'i test edebilirsiniz.Eger
kulanici adinizi ,şifrenizi dogru yazip ve dogru başlangiç
seviyesinde olupda hale xdm çalişmiyorsa bitişikteki
hata düzeltme bölümüne bakmanizi öneririm.
Bundan sonra artik bireysel ayarlarin
yapimina geldik.bunu /etc/initab dosyasindan yapabilirsiniz.Benim makinemdeki
degişiklikler aşagidaki gibidir.
#/etc/inittab
id:3:initdefault:
to
id:5:initdefault:
Bu ayarla Linux her açildiginda
level(seviye) 5 den baslar.
xdm'de hata giderme
Eger xdm tam istendigi gibi çalişmiyorsa
yada hata oluştugu düşünülüyorsa ~/.xsession-errors
dosyasina bakilabilir.Eger sizin kullanicinizdan oluşan hatalar varsa
sizin kullanici alaniniza ~/.xsession-errors dosyasi yada benzer bir dosya
konulur.Bazi sik hatalar için aşagida gerekli açiklamalar
yapilmiştir.
Giriş kutusu başlangçda
gözükmüyor
Bu sizin ayar dosyalarinizdan oluşan
bir hatadir.Sistem dosyalarini degiştirmeden deneyin.Ayrica başlangiç
çalişma seviyesi dogrumu?
Başarili bir ibçimde
girildi ve girişkutusu belirdi
Sizin .xsession dosyaniz çaliştirilabilir
degildir.Girmayi deneyin ve ardindan CTRL-RETURN tuş
takimlarina birarada basarak .xsession başlangiç bolümünü
atliyabilirsiniz.Ardindan shell'e aşagidaiki komutlar ile .xsession
dosyasina çalişma haki verebilirsiniz.
# chmod +x .xsession
Giriş yaptiktan sonra ekran
titremeye başlarsa ve giriş kutusu belirirse
Azönce yaptigimiz gibi shell ortamina
düşüp .xsession dosyanizdaki en son komutun foreground
dan başlamadigina bakin.
Son
Ümarim bu makale size X Display
Manager'in (X görüntü yöneticisi) gücünü
etkilerini ve kulanim kolayligi gösterebilmiştir.Eger daha fazla
bilgi istiyorsaniz bitişikteki baglantidan bilgi elde edebilirsiniz.Birdahaki
makalede X Windows'un güvenli hakinda olacaktir.Herhangi bir soru
veya öneriniz için bitişikteki adresse mesj atabilirsiniz.
jmccarty@theshop.net
|