[LinuxFocus Image]

HomeIndexSearchLinksAbout Us [Navegation Bar]

  News   Archives   Companies   Tips  

The X Görüntü İşletmeni

Yazar: Joel McCarty

Çeviri: Batuhan Köse


Giriş

Ayarlar

xdm'i kullanmak

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

 


Yazının aslı dergiye İngilizce olarak sunulmuştur.
Daha Çok Bilgi İçin :

© 1998 Joel McCarty
Bu sanalyörenin bakımı Miguel A Sepulveda tarafından yapılmaktadır.