[LinuxFocus Image]

HomeIndexSearchLinksAbout Us [Navegation Bar]

  News   Archives   Companies   Tips  

The X Görüntü İşletmeni

Yazar: Joel McCarty

Çeviri: Batuhan Köse (Gözden geçirilmekte)


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.