X aplikacije na daljinu mini-KAKO <author>Vincent Zweije, <htmlurl url="mailto:zweije@xs4all.nl" name="zweije@xs4all.nl"> <date>19. studenog 1999. <abstract> Ovaj mini-KAKO opisuje kako pokretati udaljene X aplikacije. To jest, kako prikazati X program na drugom računalu, a ne onom na kojem radi. Ili obratno: kako natjerati X program da radi na drugom računalu, a ne onom pred kojim sjedite. Ovaj mini-KAKO usredotočen je na sigurnost. Također sadrži informacije o lokalnom pokretanju X aplikacija, ali kao drugi korisnik. </abstract> <toc> <sect>Uvod <p> Ovo je (ili bi trebao biti) vodič u pokretanju X aplikacija preko mreže. Usredotočen je na sigurnost. Napisao sam ga iz nekoliko razloga. <enum> <item> Na USENET-u se stalno pojavljuju pitanja o pokretanju udaljenih X aplikacija. <item> Vidim mnogo, mnogo preporuka za korištenje <tt/xhost +računalo/ ili čak <tt/xhost +/ kako bi se omogućile X veze. <bf/Njihova sigurnost je smiješna/, a ima boljih načina. <item> Ne znam za jednostavan dokument koji opisuje <bf/te/ načine. Ako vi znate, obavijestite me na <htmlurl url="mailto:zweije@xs4all.nl" name="zweije@xs4all.nl">. </enum> Ovaj dokument napisan je za Unix-olike sustave. I ako je vaš lokalni ili udaljeni operacijski sustav nešto drugo, ovdje ćete shvatiti kako stvari rade. Međutim, primjere ćete morati prevesti tako da odgovaraju vašem operacijskom sustavu. Najnovija verzija ovog dokumenta uvijek se može dobiti WWW-om na <url url="http://www.xs4all.nl/~zweije/xauth.html">. Također je dostupna kao <em/Linux Remote X Apps mini-HOWTO/ na <url url="http://sunsite.unc.edu/LDP/HOWTO/mini/Remote-X-Apps">. Linux (mini-)HOWTO-i dostupni su HTTP-om ili FTP-om sa <htmlurl url="http://sunsite.unc.edu/LDP/HOWTO/HOWTO-INDEX-2.html" name="sunsite.unc.edu">. Ovo je verzija 0.6.1. Nema jamstava, samo dobre namjere. Rado primam prijedloge, ideje, dodatke, korisne pokazivače, (pravopisne) ispravke, itd.... Želim da ovaj dokument ostane jednostavan i čitljiv, u najboljem KAKO stilu. Flejmovi u <file>/dev/null</file>. Sadržaj zadnji put osvježio Vincent Zweije <url url="http://www.xs4all.nl/~zweije/index.html"> 19. studenog 1999. <sect>Povezani dokumenti <p> Kevin Kenny je napisao srodan dokument, <em/What to do when Tk says that your display is insecure/ (što učiniti kad Tk kaže da je vaš prikaz nesiguran). Nalazi se na <url url="http://ce-toolkit.crd.ge.com/tkxauth/">. Predlaže slično rješenje X autorizaciji (<tt/xauth/). No Kevin se više usmjerio na olakšavanje uporabe <tt/xauth/a preko <tt/xdm/a. Također sam obavješten da je dobar izvor informacija <em/The X System Window System Vol. 8 X Window System Administrator's Guide/ kojeg je izdao O'Reilly and Associates. Nažalost, nisam uspio provjeriti. I još jedan dokument vrlo sličan onom kojeg čitate, naslova <em/Securing X Windows/, može se naći na <url url="http://ciac.llnl.gov/ciac/documents/ciac2316.html">. Također pogledajte usenet grupe kao što je <htmlurl url="news:comp.windows.x" name="comp.windows.x">, <htmlurl url="news:comp.os.linux.x" name="comp.os.linux.x"> i <htmlurl url="news:comp.os.linux.networking" name="comp.os.linux.networking">. <sect>Prizor <p> Koristite dva računala. Na prvom gledate i tipkate u X Window System. Na drugom obavljate neke važne grafičke poslove. Hoćete da drugo rezultate pokaže na prvom. X Window System to čini mogućim. Naravno, prvo vam treba veza između njih. I to što brža; X protokol užasno je zahtjevan. Ali, uz malo strpljenja i odgovarajuće sažimanje prokola, aplikacije možete pokretati i preko modema. Ako vas zanima kompresija X protokola, pogledajte dxpc, <url url="http://ccwf.cc.utexas.edu/~zvonler/dxpc/"> ili LBX, <url url="http://www.ultranet.com/~pauld/faqs/LBX-HOWTO.html"> (također poznat kao <em/LBX mini-HOWTO/ <url url="http://sunsite.unc.edu/LDP/HOWTO/mini/LBX">). Za sve to trebate napraviti dvije stvari: <enum> <item>Reći lokalnom prikazu (serveru) da prihvaća veze s udaljenog računala. <item>Reći udaljenoj aplikaciji (klijentu) da se pokaže na vašem prikazu. </enum> <sect>Malo teorije <p> Čarobna je riječ DISPLAY (prikaz). Na X Window Systemu zaslon se (pojednostavljeno) sastoji od tipkovnice, miša i zaslona. O prikazu se brine program poznat kao X server. Server sposobnost prikaza daje drugim programima koji su na njega spojeni. Prikaz ima svoje ime, kao što je: <itemize> <item> <tt/DISPLAY=svemir.svjet.la:0/ <item> <tt/DISPLAY=localhost:4/ <item> <tt/DISPLAY=:0/ </itemize> Ono se sastoji od imena računala (kao što je <tt/svemir.svjet.la/ ili <tt/localhost/), dvotočke (<tt/:/) i nastavka (kao što je <tt/0/ ili <tt/4/). Ime računala označava računalo na kojem X server radi. Ako nije navedeno, misli se na lokalni stroj. Nastavak je obično <tt/0/ --- on se mijenja ako je na jednom računalu više prikaza. Ako ikad naletite na ime prikaza koje završava na <tt/.b/, to je broj zaslona. Prikaz zapravo može imati i više zaslona. No obično postoji samo jedan, s brojem <tt/0/. Ima i drugih oblika DISPLAY-a, ali ovo je dovoljno za naše potrebe. Za tehnički radoznale: <itemize> <item> <tt/imeračunala:P.Z/ znači zaslon <tt/Z/ na prikazu <tt/P/ računala <tt/imeračunala/; X server za taj prikaz sluša na TCP portu <tt/6000+P/. <item> <tt>računalo/unix:P.Z</tt> znači zaslon <tt/Z/ na prikazu <tt/P/ računala <tt/računalo/; X server za taj prikaz sluša na UNIX domain socketu <file>/tmp/.X11-unix/XP</file> (pa je dostupan samo s računala <tt/računalo/). <item> <tt/:P.Z/ je isto što i <tt>računalo/unix:P.Z</tt>, gdje je <tt/računalo/ ime lokalnog računala. </itemize> <sect>Objašnjavanje klijentu<label id="klijent"> <p> Program klijent (vaša grafička aplikacija, na primjer) saznaje na koji će se prikaz spojiti preko DISPLAY varijable okružja. Nju možete nadjačati davanjem argumenta <tt/-display računalo:0/ pri pokretanju programa. Malo primjera razjasnit će stvari. Jedno računalo poznato je kao <tt/svemir/, a mi smo u domeni <tt/svjet.la/. Ako radimo na normalnom X serveru, prikaz se zove <tt/svemir.svjet.la:0/. Želimo pokrenuti <tt/xfig/, program za crtanje, na udaljenom računalu, koje se zove <tt/crna.ru.pa/, i prikazati ga ovdje, na <tt/svemir/-u. Ako na udaljenom računalu radite u cshu: <verb> crna% setenv DISPLAY svemir.svjet.la:0 crna% xfig & </verb> Ili: <verb> crna% xfig -display svemir.svjet.la:0 & </verb> Ako na udaljenom računalu radite u shu: <verb> crna$ DISPLAY=svemir.svjet.la:0 crna$ export DISPLAY crna$ xfig & </verb> Ili: <verb> dark$ DISPLAY=svemir.svjet.la:0 xfig & </verb> Ili, naravno: <verb> dark$ xfig -display svemir.svjet.la:0 & </verb> Izgleda da neke verzije telneta varijablu DISPLAY automatski prenose na udaljeno računalo. Ako imate jedan od njih, imate sreće i ne morate ništa raditi. Ako nemate, većina verzija telneta prenose TERM varijablu okružja; uz malo petljanja moguće je priljepiti DISPLAY na varijablu TERM. Zamisao priljepljivanja je da pomoću neke skripte postignete slijedeće: prije telneta verijabli TERM dodajte vrijednost varijable DISPLAY. Zatim pokrenite telnet. Na drugom kraju veze, u odgovarajućoj <file/.*shrc/ datoteci pročitajte vrijednost DISPLAY iz TERM. <sect>Objašnjavanje serveru <p> Server ne prihvaća veze od bilo kamo. Ne želite da svi prikazuju prozore na vašem zaslonu. Ili čitaju ono što tipkate --- nemojte zaboraviti da je tipkovnica dio prikaza! Čini se da premalo ljudi shvaća da je dopuštanje pristupa prikazu sigurnosni rizik. Netko tko može pristupiti vašem prikazu može čitati i mijenjati vaše ekrane, čitati vaše tipke i pratiti kretanje miša. Većina servera poznaje dva načina autorizacije veza: mehanizam popisa računala (<tt/xhost/) i mehanizam čarobnih riječi (<tt/xauth/). Tu je i ssh, sigurna ljuska, koji može prenositi X veze. <sect1>xhost <p> <tt/xhost/ dopušta pristup na osnovu imena računala. Server ima popis računala koja se na njega smiju spojiti. Provjeru računala može i potpuno isključiti. Pažnja: to znači da provjera nema, pa se može spojiti <bf/bilo koje/ računalo! Serverov popis računala kontrolirate programom <tt/xhost/. U prethodnom primjeru učinite ovo: <verb> svemir$ xhost +crna.ru.pa </verb> Ovo dopušta sve veze s računala <tt/crna.ru.pa/. Čim se vaš X klijent spoji i prikaže prozor, radi sigurnosti onemogućite daljnja povezivanja pomoću: <verb> svemir$ xhost -crna.ru.pa </verb> Provjeru računala možete ugasiti s: <verb> svemir$ xhost + </verb> Tako se isključuje provjera pristupa što omogućuje <bf/svima/ da se spoje. Ovo <bf/nikad/ nemojte napraviti na mreži na kojoj ne vjerujete <bf/svim/ korisnicima (kao što je Internet). Ponovo uključite provjeru računala pomoću: <verb> svemir$ xhost - </verb> <tt/xhost -/ sam po sebi <bf/neće/ izbrisati sva računala iz popisa pristupa (to bi bilo prilično beskorisno --- ne biste se mogli spojiti od bilo gdje, čak ni sa svog lokalnog računala). <bf/xhost je vrlo nesiguran mehanizam./ Ne razlikuje pojedine korisnike na udaljenom računalu. Također, imena računala (zapravo adrese) mogu se krivotvoriti. To je loše ako ste na neprovjerenoj mreži (na primjer već i PPP pristupom na Internet). <sect1>xauth <p> <tt/xauth/ omogućava pristup svakome tko zna pravu tajnu. Takva tajna zove se autorizacijski zapis, odnosno čarobni kolačić. Taj način autorizacije formalno se zove MIT-MAGIC-COOKIE-1. Kolačići za razne prikaze spremljeni su zajedno u <file>~/.Xauthority/</file>. Kolačićima se bavi program <tt/xauth/, odakle dolazi i nadimak ove sheme. Vašem <file>~/.Xauthority</file> ne smiju moći pristupiti drugi korisnici. Na početku rada server će pročitati kolačić iz datoteke navedene uz argument <tt/-auth/. Nakon toga, server dopušta veze samo onim klijentima koji znaju isti kolačić. Kada se kolačić u <file>~/.Xauthority</file> promijeni, <bf/server neće prihvatiti promjenu/. Noviji serveri kolačiće mogu generirati u hodu za klijente koji to zatraže. No kolačići su još uvijek pohranjeni u serveru; ne završavaju u <file>~/.Xauthority</file>, osim ako ih klijent tamo stavi. Prema Davidu Wigginsu: <quote> U X11R6.3 dodana je još jedna mogućnost koja bi vas mogla zanimati. Preko novog proširenja SECURITY sam X server može generirati i vraćati kolačiće u hodu. Također, kolačići se mogu odrediti ``nepovjerljivima'' tako da su aplikacije koje se spajaju s takvim kolačićima ograničene u svom djelovanju. Na primjer, neće moći krasti ulaz s tipkovnice/miša ili sadržaj prozora od drugih, povjerljivih klijenata. <tt/xauth/u je dodana nova podnaredba <tt/generate/ kako bi ta mogućnost bila barem iskoristiva, ako ne jednostavna. </quote> <tt/xauth/ ima jasnu sigurnosnu prednost nad <tt/xhost/om. Možete ograničiti pristup na određene korisnike na određenim računalima. Nije ranjiv na krivotvorene adrese kao <tt/xhost/. A ako želite, možete ga koristiti zajedno s <tt/xhost/om za dopuštanje veza. <sect2>Pripremanje kolačića <p> Ako želite koristiti <tt/xauth/, X server morate pokrenuti s argumentom <tt/-auth datoteka/. Ako X server pokrećete skriptom <tt/startx/, tamo je pravo mjesto za to. Ovako pripremite svoj autorizacijski zapis u svojoj <tt/startx/ skripti. Izvadak iz <file>/usr/X11R6/bin/startx</file>: <verb> mcookie|sed -e 's/^/add :0 . /'|xauth -q xinit -- -auth "$HOME/.Xauthority" </verb> mcookie je programčić iz paketa util-linux koji se distribuira s <url url="ftp://ftp.math.uio.no/pub/linux/">. Možete koristiti i <tt/md5sum/ za pretvaranje nekih slučajnih podataka (na primjer, iz <file>/dev/urandom</file> ili <tt/ps -axl/) u format kolačića: <verb> dd if=/dev/urandom count=1|md5sum|sed -e 's/^/add :0 . /'|xauth -q xinit -- -auth "$HOME/.Xauthority" </verb> Ako ne možete promijeniti <tt/startx/ skriptu (jer niste root), neka to učini vaš administrator, ili neka postavi <tt/xdm/. Ako neće ili ne želi, možete napraviti <file>~/.xserverrc</file> skriptu. Ako ona postoji, umjesto pravog X servera pokreće ju xinit. Tako iz te skripte možete pokretati pravi X server s potrebnim argumentima. Da bi to radilo, stavite gornji primjer u svoj <file>~/.xserverrc</file> za stvaranje kolačića, a zatim izvršite pravi X server: <verb> #!/bin/sh mcookie|sed -e 's/^/add :0 . /'|xauth -q exec /usr/X11R6/bin/X "$@" -auth "$HOME/.Xauthority" </verb> Ako za rad sa X-om koristite <tt/xdm/, <tt/xauth/ možete lako koristiti. Definirajte DisplayManager.authDir u <file>/etc/X11/xdm/xdm-config</file>. <tt/xdm/ će argument <tt/-auth/ prenijeti X serveru kada ga bude pokretao. Kada se logirate preko <tt/xdm/a, on za vas kolačić stavlja u vaš <file>~/.Xauthority</file>. Za više informacija pogledajte man stranicu <em/xdm/(1). Na primjer, moj <file>/etc/X11/xdm/xdm-config</file> sadrži ovaj red: <verb> DisplayManager.authDir: /var/lib/xdm </verb> <sect2>Prenošenje kolačića <p> Sad, kad ste počeli rad u X-u na poslužitelju <tt/svemir.svjet.la/ i svoj kolačić imate u <file>~/.Xauthority</file>, trebate prenijeti kolačić klijentu <tt/crna.ru.pa/. To je najjednostavnije ako se vaš home direktorij dijeli između <tt/crna/ i <tt/svemir/. <file>~/.Xauthority</file> datoteke su jednake, pa se kolačić prenosi automatski. Međutim, tu je zamka: kada u <file>~/.Xauthority</file> stavite kolačić za <tt/:0/, <tt/crna/ će misliti da je to kolačić za njega, a ne za <tt/svemir/. Kod stvaranja kolačića morate koristiti eksplicitno ime računala; ne možete ga izostaviti. Isti kolačić za <tt/:0/ i <tt/svemir:0/ možete instalirati pomoću: <verb> #!/bin/sh cookie=`mcookie` xauth add :0 . $cookie xauth add "$HOST:0" . $cookie exec /usr/X11R6/bin/X "$@" -auth "$HOME/.Xauthority" </verb> Ako se home direktoriji ne dijele, kolačić možete prenijeti pomoću rsha, udaljene ljuske: <verb> svemir$ xauth nlist "${HOST}:0" | rsh crna.ru.pa xauth nmerge - </verb> Što će reći: <enum> <item>Izvuci kolačić iz lokalnog <file>~/.Xauthority</file> (<tt/xauth nlist :0/). <item>Prenesi ga na <tt/crna.ru.pa/ (<tt/| rsh crna.ru.pa/). <item>Stavi ga u tamošnji <tt>~/.Xauthority</tt> (<tt/xauth nmerge -/). </enum> Primijetite kako se koristi <tt/${HOST}/. Morate prenijeti kolačić izričito povezan s lokalnim računalom. Udaljena X aplikacija bi mislila da se ime prikaza <tt/:0/ odnosi na udaljeno računalo, a to nije ono što želite! Moguće je da rsh neće raditi. Osim toga, rsh ima i sigurnosnih mana (opet lažna imena računala, ako se dobro sjećam). Ako ne možete ili ne želite koristiti rsh, kolačić možete prenijeti i ručno, na primjer ovako: <verb> svemir$ echo $DISPLAY :0 svemir$ xauth list $DISPLAY svemir/unix:0 MIT-MAGIC-COOKIE-1 076aaecfd370fd2af6bb9f5550b26926 svemir$ rlogin crna.ru.pa Password: crna% setenv DISPLAY svemir.svjet.la:0 crna% xauth add $DISPLAY . 076aaecfd370fd2af6bb9f5550b26926 crna% xfig & [15332] crna% logout svemir$ </verb> Za više informacija također pogledajte man stranice za <em/rsh/(1) i <em/xauth/(1x). Prijedlog: možda bi bilo moguće priljepiti kolačić TERM ili DISPLAY varijabli prilikom telneta na udaljeno računalo. To bi išlo na isti način kao i priljepljivanje DISPLAY varijable na TERM varijablu. Pogledajte poglavlje <ref id="klijent" name="Objašnjavanje klijentu">. Tu ćete se morati sami snaći, ali me zanima može li netko ovo potvrditi ili poreći. <sect2>Korištenje kolačića <p> X aplikacija na <tt/crna.ru.pa/, u primjeru <tt/xfig/, automatski će u <file>~/.Xauthority</file> potražiti kolačić i njime se autentificirati. Postoji mala komplikacija kod korištenja <tt/localhost:P/. X klijent aplikacije mogu kod traženja kolačića prevesti <tt/localhost:P/ u <tt>računalo/unix:P</tt>. Konkretno, to znači da kolačić za <tt/localhost:P/ u vašem <file>~/.Xauthority</file> nema <bf/nikakvog/ učinka. <sect1>ssh <p> Zapisi o autoritetu prenose se bez enkripcije. Ako ste zabrinuti da bi netko mogao prisluškivati vaše veze, koristite ssh, sigurnu ljusku. Proslijeđivat će X preko enkriptiranih veza. Osim toga, odlična je i za druge stvari. Dobra je strukturalna nadogradnja vašeg sustava. Samo posjetite <url url="http://www.cs.hut.fi/ssh/">, ssh-ovu WWW stranicu. Tko još zna nešto o autorizacijskim metodama ili enkriptiranju X veza? Možda Kerberos? <sect>X aplikacije pod drugom korisničkom oznakom <p> Recimo da želite pokrenuti grafički konfiguracijski alat koji zahtijeva root privilegije. Međutim, vaša X sesija radi pod vašim običnim računom. Možda će vam se isprva činiti čudno, ali X server <bf/neće/ alatu dozvoliti da pristupa vašem prikazu. Kako je to moguće kada root obično može učiniti sve? I kako možete zaobići ovaj problem? Poopćimo situaciju: želite pokrenuti X aplikaciju pod korisničkom oznakom <tt/korisnikklijenta/, a X sesiju je pokrenuo <tt/korisnikservera/. Ako ste pročitali poglavlje o kolačićima, jasno vam je zašto <tt/korisnikklijenta/ ne može pristupiti vašem prikazu: <file>~korisnikklijenta/.Xauthority</file> ne sadrži pravi čarobni kolačić za pristupanje prikazu. Pravi kolačić se nalazi u <file>~korisnikservera/.Xauthority</file>. <sect1>Različiti korisnici na istom računalu <p> Naravno, sve što radi za X na daljinu također radi i za različite korisnike (pogotovo <tt/slogin localhost -l korisnikklijenta/). Jedina je razlika u tome što su računalo klijenta i računalo servera jedno te isto. I budući da se radi o istom računalu, postoje neke prečice u prenošenju čarobnog kolačića. Pretpostavit ćemo da za prebacivanje između korisnika koristite <tt/su/. U biti, ono što morate učiniti je napisati skriptu koja će zvati <tt/su/, okružujući naredbu koju <tt/su/ izvršava s kodom koji obavlja stvari potrebne za X na daljinu. Te potrebne stvari su postavljanje varijable DISPLAY i prenošenje čarobnog kolačića. Postavljanje varijable DISPLAY je relativno jednostavno; dovoljno je navesti <tt/DISPLAY="$DISPLAY"/ prije pokretanja naredbe. Dakle, mogli biste jednostavno učiniti ovo: <verb> su - korisnikklijenta -c "env DISPLAY=$DISPLAY programklijent &" </verb> To još uvijek ne radi jer nismo prenijeli i kolačić. Kolačić možemo saznati pomoću <tt/xauth list "$DISPLAY"/. Ta naredba kolačić ispisuje u formatu koji <tt/xauth/ prihvaća kao argument; točno ono što nam treba! Tako ćemo dobiveni kolačić zadati naredbi <tt/xauth/ unutar <tt/su/ naredbe, tamo postaviti DISPLAY i pokrenuti naredbu koja nam je potrebna. <verb> su - korisnikklijenta -c "xauth add `xauth list $DISPLAY`; \ exec env DISPLAY=$DISPLAY programklijent" </verb> Oko ovoga možete napisati skriptu koja će <tt/korisnikklijenta/ i <tt/programklijent/ prihvaćati kao parametre. Kad smo već kod toga, skriptu ćemo malo poboljšati, čineći je manje čitljivom, ali robusnijom. Ona izgleda ovako: <verb> #!/bin/sh if [ $# -lt 2 ] then echo "Korištenje: `basename $0` korisnikklijenta naredba" >&2 exit 2 fi KORISNIKKLIJENTA="$1"; shift exec su - "$KORISNIKKLIJENTA" \ -c "xauth add `xauth list \"$DISPLAY\"`; \ exec env DISPLAY='$DISPLAY' "'"$SHELL"'" -c '$*'" </verb> Mislim da je to portabilno i da radi dobro u većini slučajeva. Jedini nedostatak kojeg se sada mogu sjetiti je da će zbog korištenja <tt/'$*'/ jednostruki navodnici u argumentu <tt/naredba/ zeznuti navođenje u argumentima naredbe. Ako je nešto ozbiljno krivo, javite mi. Tu skriptu nazovite <file>/usr/local/bin/xsu</file>, pa možete raditi ovo: <verb> xsu korisnikklijenta 'naredba &' </verb> Lako, zar ne? <sect1>Korisnik klijenta je root <p> Očito, sve što radi za ne-root korisnike radit će i za roota. Međutim, za roota su stvari još jednostavnije jer root može čitati bilo čiji <file>~/.Xauthority</file>. Nema potrebe za prenošenjem kolačića. Sve što trebate je postaviti DISPLAY, te postaviti XAUTHORITY na <file>~korisnikservera/.Xauthority</file>. Dakle: <verb> su - -c "exec env DISPLAY='$DISPLAY' \ XAUTHORITY='${XAUTHORITY-$HOME/.Xauthority}' \ naredba" </verb> Skripta koja to radi izgledala bi otprilike ovako: <verb> #!/bin/sh if [ $# -lt 1 ] then echo "Korištenje: `basename $0` naredba" >&2 exit 2 fi su - -c "exec env DISPLAY='$DISPLAY' \ XAUTHORITY='${XAUTHORITY-$HOME/.Xauthority}' \ "'"$SHELL"'" -c '$*'" </verb> Tu skriptu nazovite <file>/usr/local/bin/xroot</file>, pa možete raditi ovo: <verb> xroot 'control-panel &' </verb> Još lakše, zar ne? <sect>Pokretanje window managera na daljinu <p> Window manager (kao što je <tt/twm/, <tt/wmaker/, ili <tt/fvwm95/) je aplikacija baš kao i svaka druga. Trebao bi raditi uobičajeni postupak. Pa, skoro. U bilo koje vrijeme na jednom prikazu može raditi najviše jedan window manager. Ako već radite u lokalnom window manageru, ne možete pokrenuti udaljeni (požalit će se i završiti). Najprije morate ubiti (ili jednostavno ugasiti) lokalni window manager. Nažalost, mnoge skripte za X sesiju završavaju s <verb> exec izabrani-window-manager </verb> što znači da vaša sesija završava čim (lokalni) window manager završi, nakon čega ju X sustav smatra gotovom i odlogira vas. Morate prijeći nekoliko dodatnih zapreka, ali to nije nemoguće i nije preteško. Jednostavno se igrajte svojom skriptom sesije (obično <file>~/.xsession</file> ili <file>~/.xinitrc</file>) kako biste ju natjerali da radi ono što želite. Budite svjesni da window manager često nudi načine pokretanja novih programa i da će oni biti pokrenuti na lokalnom stroju. To jest, na onom stroju na kojem radi window manager. Ako radite na udaljenom window manageru, pokretat će udaljene aplikacije, a to možda nije ono što želite. Naravno, one će se i dalje prikazivati na vašem lokalnom prikazu. <sect>Problemi <p> Kada prvi put pokrenete udaljenu X aplikaciju, obično ne radi. Evo nekoliko čestih grešaka, njihovih vjerojatnih uzroka, te rješenja koja bi vam mogla pomoći. <verb> xterm Xt error: Can't open display: </verb> U okružju nema DISPLAY varijable, a niste ga naveli aplikaciji ni preko argumenta -display. Aplikacija pretpostavlja prazan niz, ali to je sintaktički nepravilno. Da bi ovo rješili, provjerite da je varijabla DISPLAY točno postavljena (pomoću <tt/setenv/ ili <tt/export/, ovisno o vašoj ljusci). <verb> _X11TransSocketINETConnect: Can't connect: errno = 101 xterm Xt error: Can't open display: crna.ru.pa:0 </verb> Broj greške 101 znači ``Mreža je nedostupna''. Aplikacija nije mogla uspostaviti mrežnu vezu sa serverom. Provjerite da li je DISPLAY točan i da se do računala servera može doći s klijenta (trebalo bi se moći, ipak ste vjerojatno logirani na server i telnetom pristupate klijentu). <verb> _X11TransSocketINETConnect: Can't connect: errno = 111 xterm Xt error: Can't open display: crna.ru.pa:0 </verb> Broj greške 111 znači ``Veza odbijena''. Spajanje na računalo server je uspjelo, ali tamo navedeni server ne postoji. Provjerite da li koristite pravo ime i broj prikaza. <verb> Xlib: connection to ":0.0" refused by server Xlib: Client is not authorized to connect to Server xterm Xt error: Can't open display: crna.ru.pa:0.0 </verb> Klijent se povezao sa serverom, ali server mu ne dopušta korištenje (nije autoriziran). Provjerite da li ste klijentu prenijeli pravi čarobni kolačić i da on nije istekao (server uzima novi kolačić kod svakog pokretanja). <sect>Hrvatski prijevod <p> Najnovija verzija ovog prijevoda može se naći na <url url="http://dokumentacija.linux.hr/X-na-daljinu.html">. Održava ga Matej Vela, <htmlurl url="mailto:mvela@public.srce.hr" name="mvela@public.srce.hr">. Svi su prilozi, primjedbe i prijedlozi dobrodošli. </article>