[Gelistirici] XAUTHLOCALHOSTNAME
Fatih Aşıcı
fatih at pardus.org.tr
24 Oca 2009 Cmt 20:15:07 EET
Selamlar,
Normalde X oturumu açık olduğu sırada hostname değişirse mevcut cookie önceki
hostname için üretildiğinden uygulamalar X'e bağlanamıyor. Biz de (SUSE'den
aldığımız bir çözüm) bu sorunu aşmak için $SUBJECT'de yer alan çevre
değişkenini kullanıyoruz. X ve KDE paketlerinde bu iş için yaptığımız yamalar
var. Bu değişken X açıldığında cookie'lerin oluşturulduğu hostname'i tutuyor.
Herhangi bir uygulama X'e bağlantı kurmak istediğinde önce bu çevre
değişkenine bakıyoruz ve izin vermesini sağlıyoruz. hostname değişse bile bu
değişken değişmeyecek nasıl olsa.
Kullandığımız yöntem birçok paketin yamalanmasını gerektiriyor. Üstelik
upstream'in de kabul edeceği bir yöntem değil. Yamaların backport edilmesi
ayrı bir iş yükü. Üstelik yetkilendirme gibi önemli bir konuda dikkatli olmak
da gerekiyor.
Diğer dağıtımlar bu işi nasıl yapıyor diye öncelikle Fedora'dan incelemeye
başladım. Fedora bu sorunu her X oturumu açıldığında aşağıdaki komutu vererek
çözmüş:
[ -x /usr/bin/xhost ] && [ -x /usr/bin/id ] &&
xhost +si:localuser:`id -un` >& /dev/null
Bu komut verildiğinde access control listesi aşağıdaki gibi oluyor:
fatih at inspiron ~ $ xhost
access control enabled, only authorized clients can connect
SI:localuser:fatih
Buradaki SI, Server Interpreted anlamına geliyor. fatih ise efektif kullanıcı
adı. Ayrıntılar için xhost ve Xsecurity man sayfalarına bakılabilir. Kısacası
bu entry fatih adlı yerel kullanıcısının her halükarda oturum açtığı X'e
bağlanmasını sağlıyor. Mevcut cookie'ye bakılmıyor bu durumda. Şu şekilde test
edebiliriz:
$ xhost
access control enabled, only authorized clients can connect
$ XAUTHORITY= xclock
No protocol specified
Error: Can't open display: :0.0
$ xhost +SI:localuser:fatih
localuser:fatih being added to access control list
$ XAUTHORITY= xclock
(xclock çalışır)
Burada XAUTHORITY'yi boş bırakma amacım cookie'lerin kullanılmasını
engellemek. Görüldüğü gibi eklediğimiz bu entry hostname'den bağımsız olarak
X'e bağlanabilmeyi sağlıyor. Geriye kalan bir sorun daha var. hostname bağımlı
bir çevre değişkenimizi var: SESSION_MANAGER
$ echo $SESSION_MANAGER
local/inspiron:@/tmp/.ICE-unix/2191,unix/inspiron:/tmp/.ICE-unix/2191
(inspiron hostname burada)
Uygulamalar bu çevre değişkenini oturum yöneticisine bağlanmak için kullanıyor
(XSMP protokolü gereği). Eğer hostname değişirse uygulamalar başlarken
aşağıdaki gibi bir uyarı veriyor:
_IceTransSocketUNIXConnect: Cannot connect to non-local host inspiron
_IceTransSocketUNIXConnect: Cannot connect to non-local host inspiron
Warning: Tried to connect to session manager, Could not open network socket
Fedora bu sorunu SESSION_MANAGER çevre değişkeninde hostname yerine unix
kullanarak çözmüş. Yani:
local/unix:@/tmp/.ICE-unix/2191,unix/unix:/tmp/.ICE-unix/2191
gibi. Bunu nasıl değiştiririz henüz bakmadım. ksmserver koduna falan bakmak
lazım.
Eğer Fedora'nın yöntemini kullanırsak söz konusu yamalardan kurtulmuş, üstelik
şu an yaşamakta olduğumuz bazı X'e bağlantı sorunlarını da çözmüş olacağız
(phoronix-test-suite'de ve başka bir java uygulamasında karşılaştığım X'e
bağlanamama sorunu, sudo ile X'e bağlanamama gibi sorunlar).
2009'da bu yönteme geçmek ve XAUTHLOCALHOSTNAME'i kaldırmak istiyorum.
Görüşler, öneriler?
-------------- sonraki bölüm --------------
A non-text attachment was scrubbed...
Name: kullanılamıyor
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
URL: <http://liste.pardus.org.tr/gelistirici/attachments/20090124/4f7e8586/attachment-0002.pgp>
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi