Určitě už jste se setkali s takto nepříjemnou a odmítavou hláškou. Jak problém pořešit aneb návod typu snadno, rychle a bez stresu.
(A hlavně pro mě, kdybych to někdy potřeboval a zapomněl.)
Možná se vám už stalo, že jste se přihlásili na vzdálenou mašinu, na které běžel X server, ale nedokázali jste na ní vzdáleně spustit nějaký GUI nástroj. Vždycky vás aplikace vyhodila s tím, že se nemůže připojit k X serveru. Hláška vypadá asi tak:
Gtk-WARNING **: cannot open display
V zásadě existují dvě různé situace. Pokud jste se přihlásili pod stejným uživatelem, pod jakým běží zmíněný X server, stačí do konzole napsat:
$ export DISPLAY=:0.0
A pak už můžete vesele spouštět aplikace, jako by se nechumelilo. Tímto příkazem jste totiž nastavili proměnnou DISPLAY
, kterou využívají grafické aplikace a ukazuje jim, kde mají hledat svůj X server. Jednoduché.
Komplikovanější to bude, pokud se přihlašujete jako jiný uživatel. Obvykle vám to nebude fungovat ani v případě, že se přihlásíte jako root (pokud můžete). Pokud jste běžný uživatel (a jiný než ten, kdo spustil Xka), tak to určitě fungovat nebude.
Nejelegantnějším řešením, které znám, je instalace balíčku sux
. Ten funguje jako klasické su
, ale přidává také autoritu pro spouštění aplikací komunikujících s X serverem. Použití je opět jednoduché:
$ sux uživatel příkaz
Jako uživatele musíte samozřejmě uvést uživatelské jméno toho, kdo má na stroji právě puštěný X server. Příkaz sux se pak zeptá na jeho heslo. Je to pochopitelné, protože jde o ochranu X serveru. Nechceme přece, aby kdokoliv mohl námi spuštěný X server obsluhovat. No a pokud známe heslo, funguje nám to.
Pokud znáte nějakou jinou a hezkou cestu, určitě se o ní zmiňte v diskusi. Pokud bude hezčí a rozumnější, přidám ji do blogu.
Je to sice asi jasne, ale urcite by stalo za zminku, ze uzivatel nemusi bezet na DISPLAY=:0.0, ale treba na :20.0
Proto davam do kazde session po spusteni echo $DISPLAY > ~/display, abych mohl zjistit, kde to vlastne bezi. Tohle asi resi ten sux, ale zase mi to neumozni treba dat neco do cronu
Na ubuntu som sa stretol aj s problemom, ze mi toto vypisovalo aj pri pokuse spustit pod svojim userom , fyzicky ma mojej masine hocijaku aplikacku. Vzdy pomohol len uplny restart, ale ubuntu zije vo svojom vlastnom paralelnom vesmire.
Kazdopadne dakujem za doplnenie informacii, export DISPLAY=:0 som objavil nedavno a odvtedy ho hojne vyuzivam, dalsie info o problematike sa mi hodi. (nebyt toho, urcite by som sa o par dni rozculoval preco mi to nefici ak som cez ssh prihlaseny pod inym userom ako tym co vlastni aktualny display 0.0)
Na ubuntu mi to taky znemoznovalo spustit urcite aplikace jako superuser,
pomohlo " xhost + ".
V případě standardních podmínek a za předpokladu, že můžu číst .Xauthority "oběti":
DISPLAY=:0.0 XAUTHORITY=~obet/.Xauthority xclock
man xauth napoví další vhodné cesty (vlástně různé varianty stále téhož), kdy každá je lepší (elegantnější, systémovější, fajnovější, a více frajerská) než použití su. ;) Koneckonců "pochybný" sux nedělá nic jiného (pochybný právě kvůli su).
Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. GNU/Linuxem a Unixem obecně se zabývá již více než deset let a věnuje se především jeho nasazení v počítačových sítích a bezpečnostní politice. Zde bloguje o Root.cz, Linuxu, internetu a světě kolem sebe.
Přečteno 121 575×
Přečteno 92 454×
Přečteno 76 582×
Přečteno 59 745×
Přečteno 56 562×