( Linux'tan uyarlanmıştır : wmctrl, oturum ssh + ekranı ile başlatıldığında ekranı açamaz )
EKRAN ve YETKİ
Bir X ekranına bağlanmak için bir X programının iki parça bilgiye ihtiyacı vardır.
Bu genellikle ekran, adresini ihtiyacı :0
yerel olarak veya giriş yaptığınızda :10
, :11
vb uzaktan Giriş yaptıktan (ancak sayı aktif kaç X bağlantıları bağlı olarak değişebilir) ne zaman. Ekranın adresi normal olarak DISPLAY
ortam değişkeninde belirtilir .
Ekran için şifreye ihtiyacı var. X ekran şifrelerine sihirli kurabiye denir . Sihirli çerezler doğrudan belirtilmez: daima “ekranın :42
çerezleri vardır 123456
” şeklinde bir kayıt koleksiyonu olan X yetki dosyalarında saklanırlar . X yetki dosyası normalde XAUTHORITY
ortam değişkeninde gösterilir. Eğer $XAUTHORITY
ayarlı değil, programlar kullanın ~/.Xauthority
.
Masaüstünüzde görüntülenen pencerelerde hareket etmeye çalışıyorsunuz. Masaüstü makinenizi kullanan tek kişi sizseniz, görünen adın büyük olasılıkla :0
. X otorite dosyasının yerini bulmak daha zordur, çünkü Debian sıkıştırması veya Ubuntu 10.04 altında ayarlanan gdm ile rastgele oluşturulmuş bir isimle dosyadadır. (Daha önce hiç sorun yaşamadığınızdan, çünkü gdm'nin önceki sürümleri varsayılan ayarı kullandı, yani çerezleri sakladı ~/.Xauthority
.)
Değişkenlerin değerlerini almak
İşte değerlerini elde etmek için birkaç yolu vardır DISPLAY
ve XAUTHORITY
:
Sen sistematik dan giriş komut (belki de otomatik olarak masaüstünüzden bir ekran oturumu başlatabilirsiniz ~/.profile
; ancak yalnızca X altında giriş yapmanız: testini eğer DISPLAY
ile başlayan bir değere ayarlanır :
(yani bütün davaları sen olasıdır kapsamalıdır karşılaşmak)). İçinde ~/.profile
:
case $DISPLAY in
:*) screen -S local -d -m;;
esac
Ardından, ssh oturumunda:
screen -d -r local
Ayrıca değerlerini kurtarabilir DISPLAY
ve XAUTHORITY
bir dosyada ve değerleri hatırlama. İçinde ~/.profile
:
case $DISPLAY in
:*) export | grep -E '(^| )(DISPLAY|XAUTHORITY)=' >~/.local-display-setup.sh;;
esac
Ssh oturumunda:
. ~/.local-display-setup.sh
screen
Sen değerlerini tespit olabilir DISPLAY
ve XAUTHORITY
çalışan bir süreçten. Bunu otomatikleştirmek daha zordur. Üzerinde çalışmak istediğiniz ekrana bağlı bir işlemin PID'sini bulmanız ve ardından çevre değişkenlerini /proc/$pid/environ
( eval export $(</proc/$pid/environ tr \\0 \\n | grep -E '^(DISPLAY|XAUTHORITY)=')
¹) ' den almanız gerekir .
Çerezleri kopyalamak
Başka bir yaklaşım ( Arrowmaster'ın önerisini takiben ) $XAUTHORITY
ssh oturumunun değerini almaya çalışmak değil , bunun yerine X oturumunun çerezlerini kopyalamasını sağlamaktır ~/.Xauthority
. Her giriş yaptığınızda çerezler oluşturulduğundan, eski değerleri içeride tutarsanız sorun olmaz ~/.Xauthority
.
Ana dizininize NFS üzerinden veya uzaktan yöneticilerin içeriğini görüntülemesine izin veren başka bir ağ dosya sistemi üzerinden erişilebiliyorsa, bir güvenlik sorunu olabilir. X TCP bağlantılarını etkinleştirmediyseniz, (Debian bunları varsayılan olarak devre dışı bırakmaz), bir şekilde makinenize bağlanmaları gerekirdi. Bu yüzden çoğu insan için, bu ya geçerli değildir (NFS yoktur) ya da bir sorun değildir (X TCP bağlantısı yoktur).
Masaüstü X oturumunuza giriş yaparken çerezleri kopyalamak için, aşağıdaki satırları ~/.xprofile
ya da ~/.profile
(ya da giriş yaptığınızda okunan başka bir komut dosyasını) ekleyin :
case $DISPLAY:$XAUTHORITY in
:*:?*)
# DISPLAY is set and points to a local display, and XAUTHORITY is
# set, so merge the contents of `$XAUTHORITY` into ~/.Xauthority.
XAUTHORITY=~/.Xauthority xauth merge "$XAUTHORITY";;
esac
¹ Prensipte bu, uygun fiyatlandırmadan yoksundur, ancak bu özel durumda $DISPLAY
ve $XAUTHORITY
herhangi bir kabuk meta karakter içermez.