İlk önce: XDG_RUNTIME_DIR
İlk sorunuza "XDG_RUNTIME_DIR nedir?" , oturum açtığınızda otomatik olarak ayarlanan bir ortam değişkenidir. Çalıştırdığınız herhangi bir programa, küçük geçici dosyaları depolayabileceği kullanıcıya özel bir dizin nerede bulacağını bildirir. Bunun (8)XDG_RUNTIME_DIR
tarafından ayarlandığını unutmayın , bu nedenle aslında X ile (programların grafik olarak çalıştırılması) ilgili değildir , ki bu problem gibi görünmektedir.pam_systemd
Sorun giderme
İkinci sorunuz "Bu sorun nasıl giderilir?" çok iyi. Bu, yalnızca düzeltmenin ne olduğu ile değil, aynı zamanda kendi başınıza nasıl çözeceğinizle de ilgileneceğiniz anlamına gelir . Başlamak için önce ilk hata mesajlarına bakın. Özellikle, No protocol specified
veya için arama yapmak WARNING **: Could not open X display
, sorunun grafik programlarınızda nasıl gösterildiğini gösteren X ( The X Windowing System olarak da bilinir) ile ilgili olduğunu göstermelidir . Bunun bilinmesi, aklınızdaki birçok sorun giderme sorusunu gündeme getirmelidir.
X EKRAN
Bir sonraki sorunuz, açığa çıkamayan "X ekran" nedir? "Görüntü" ekranınızın adresidir. [*] Ekranınıza yazmak isteyen herhangi bir programın adresini bilmesi gerekir. DISPLAY ortam değişkenini kontrol ederek X ekranınızın ne olduğunu görebilirsiniz:
echo $DISPLAY
sudo
DISPLAY'inizin ne düşündüğünü yazarak şunları kontrol edebilirsiniz :
sudo -s
echo $DISPLAY
exit
Hiçbir şey göstermiyorsa, sorun budur. (Aşağıdaki düzeltmeye bakın).
XAUTHORITY
Ancak, sorun bu değilse ve DISPLAY
doğru bir şekilde ayarlanmışsa ne olur sudo
? O zaman merak edebilirsiniz, X'in diğer kullanıcıların ekranımda yazmasını engelleyen bir çeşit izni var mı? Bunun doğru olacağını düşündüyseniz, X'in iki ana yetkilendirme yöntemi vardır: xauth
ve xhost
. Bugün en yaygın kullanılanı , ortam değişkenini kullanan xauth
(1) ' dir XAUTHORITY
. Yine, doğru şekilde ayarlanıp ayarlanmadığını kontrol edelim sudo
:
echo $XAUTHORITY
sudo -s
echo $XAUTHORITY
exit
Eğer XAUTHORITY
sizin için ev dizininde bir dosyaya işaret, ancak çalıştırmak 's boş sudo
, o zaman sorun olduğunu.
Düzeltme: Ortam değişkenlerini kaydedin
Peki, düzeltme nedir? Ya DISPLAY
da XAUTHORITY
ortam değişkenleri arasında kaydedilmiyorsa sudo
, sudo
(8)-E
seçeneğini aşağıdaki gibi seçeneği kullanarak çevreyi korumasını söyleyebilirsiniz :
sudo -E evince
Daha iyi bir yol: env_keep
Bekleyebilirsiniz, bekle, eğer -E
her şeyi sihirli bir şekilde yaparsa , neden varsayılan değil sudo
? Cevap, potansiyel bir güvenlik tehlikesi olmasıdır. Ortam değişkenleri programların çalışma şeklini etkiler ve bunların hepsinin bir kullanıcı hesabından köke aktarılmasını istemezsiniz. Bunu yapmak için "doğru" yolu hattını eklemektir Defaults env_keep += "DISPLAY XAUTHORITY"
için sudoers
(5) kullanarak dosyanın visudo
(8) . Sudo'nun hangi ortam değişkenlerini koruduğunu şu komutla kontrol edebilirsiniz:
sudo sudo -V
(Evet, sudo
iki kez yazıyorsunuz ). Satırı varsayılan sudoers dosyasına ( /etc/sudoers
) değil, sisteminizi yükselttiğinizde üzerine yazılmayacak yerel bir dosyaya koymanızı öneririm . Bunu şöyle yapabilirsiniz:
sudo visudo -f /etc/sudoers.d/local
Ama bekleyin, ya yukarıdakilerin hiçbiri işe yaramazsa?
Bence bu oldukça kapsamlı bir cevap, ama hala sorun yaşıyorsanız, önerebileceğim başka bir şey daha var. Yerel ana makinede (makinenizde) belirli bir kullanıcıya bu şekilde erişim vermek için xhost
(1) kullanabilirsiniz ,
xhost si:localuser:root
Bu durumda, root
kullanıcı adı olarak belirtiyoruz, çünkü sudo
programları şu şekilde çalıştıran hesap budur .
[*] : S: Yalnızca bir ekranım var, neden X ekranın "adres" e ihtiyacı var? C: Çünkü X sadece makinenizde değil, internet üzerinden de çalışabilir. İle X , ekranınızda görünen diğer konaklarda diğer internet host ve programlar da gösterilen makinede programları çalıştırmak için kolaydır (onları izni vermek varsayarak).