  X aplikacije na daljinu mini-KAKO
  Vincent Zweije, zweije@xs4all.nl
  14. srpnja 1998.

  Ovaj mini-KAKO opisuje kako pokretati udaljene X aplikacije. To jest,
  kako prikazati X program na drugom raunalu, a ne onom na kojem radi.
  Ili obratno: kako natjerati X program da radi na drugom raunalu, a ne
  onom pred kojim sjedite. Ovaj mini-KAKO usredotoen je na sigurnost.
  ______________________________________________________________________

  Sadraj


  1. Uvod

  2. Povezani dokumenti

  3. Scena

  4. Malo teorije

  5. Objanjavanje klijentu

  6. Objanjavanje serveru

     6.1 xhost
     6.2 xauth
        6.2.1 Pripremanje kolaia
        6.2.2 Prenoenje kolaia
        6.2.3 Koritenje kolaia
     6.3 ssh

  7. Problemi

  8. Hrvatski prijevod



  ______________________________________________________________________

  1.  Uvod


  Ovo je (ili bi trebao biti) vodi u pokretanju X aplikacija preko
  mree.  Usredotoen je na sigurnost. Napisao sam ga iz nekoliko
  razloga.


  1. Na USENET-u se stalno pojavljuju pitanja o pokretanju udaljenih X
     aplikacija.

  2. Vidim mnogo, mnogo preporuka za koritenje xhost +raunalo ili ak
     xhost + kako bi se omoguile X veze. Njihova sigurnost je smijena,
     a ima boljih naina.

  3. Ne znam za jednostavan dokument koji opisuje te naine. Ako vi
     znate, obavijestite me na zweije@xs4all.nl.

  Ovaj dokument napisan je za Unix-olike sustave. I ako je va lokalni
  ili udaljeni operacijski sustav neto drugo, ovdje ete shvatiti kako
  stvari rade. Meutim, primjere ete morati prevesti tako da odgovaraju
  vaem operacijskom sustavu.

  Najnovija verzija ovog dokumenta uvijek se moe dobiti WWW-om na
  <http://www.xs4all.nl/~zweije/xauth.html>. Takoer je dostupna kao
  Linux Remote X Apps mini-HOWTO na
  <http://sunsite.unc.edu/LDP/HOWTO/mini/Remote-X-Apps>. Linux
  (mini-)HOWTO-i dostupni su HTTP-om ili FTP-om s sunsite.unc.edu.

  Ovo je verzija 0.4.0. Nema jamstava, samo dobre namjere. Rado primam
  prijedloge, ideje, dodatke, korisne pokazivae, (pravopisne) ispravke,
  itd.... elim da ovaj dokument ostane jednostavan i itljiv, u
  najboljem KAKO stilu. Flejmovi u /dev/null.

  Sadraj zadnji put osvjeio Vincent Zweije 14. srpnja 1998.


  2.  Povezani dokumenti


  Kevin Kenny je napisao povezan dokument, What to do when Tk says that
  your display is insecure (to uiniti kad Tk kae da je va prikaz
  nesiguran).  Nalazi se na  <http://ce-toolkit.crd.ge.com/tkxauth/>.
  Predlae slino rjeenje X autorizaciji (xauth). No Kevin se vie
  usmjerio na olakavanje uporabe xautha preko xdma.

  Takoer sam obavjeten da je dobar izvor informacija The X System
  Window System Vol. 8 X Window System Administrator's Guide kojeg je
  izdao O'Reilly and Associates. Naalost, nisam uspio provjeriti.

  I jo jedan dokument vrlo slian onom kojeg itate, naslova Securing X
  Windows, moe se nai na
  <http://ciac.llnl.gov/ciac/documents/ciac2316.html>.

  Takoer pogledajte usenet grupe kao to je comp.windows.x,
  comp.os.linux.x i comp.os.linux.networking.


  3.  Scena


  Koristite dva raunala. Na prvom gledate i tipkate u X Window System.
  Na drugom obavljate neke vane grafike poslove. Hoete da drugo
  rezultate pokae na prvom. X Window System to ini moguim.

  Naravno, prvo vam treba veza izmeu njih. I to to bra; X protokol
  uasno je zahtjevan. Ali, uz malo strpljenja i odgovarajue saimanje
  prokola, aplikacije moete pokretati i preko modema. Ako vas zanima
  kompresija X protokola, pogledajte dxpc,
  <http://ccwf.cc.utexas.edu/~zvonler/dxpc/> ili LBX,
  <http://www.ultranet.com/~pauld/faqs/LBX-HOWTO.html> (takoer poznat
  kao LBX mini-HOWTO).

  Za sve to trebate napraviti dvije stvari:

  1. Rei lokalnom prikazu (serveru) da prihvaa veze s udaljenog
     raunala.

  2. Rei udaljenoj aplikaciji (klijentu) da se pokae na vaem prikazu.


  4.  Malo teorije


  arobna je rije DISPLAY (prikaz). Na X Window Systemu zaslon se
  (pojednostavljeno) sastoji od tipkovnice, mia 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:


    DISPLAY=svemir.svjet.la:0

    DISPLAY=localhost:4

    DISPLAY=:0

  Ono se sastoji od imena raunala (kao to je svemir.svjet.la ili
  localhost), dvotoke (:) i nastavka (kao to je 0 ili 4). Ime raunala
  oznaava raunalo na kojem X server radi. Ako ga nema, misli se na
  lokalni stroj. Nastavak je obino 0 --- on se mijenja ako je na jednom
  raunalu vie prikaza.

  Ako ikad naletite na ime prikaza s .b na kraju, to je broj zaslona.
  Prikaz zapravo moe imati i vie zaslona. No obino postoji samo
  jedan, s brojem b=0.

  Ima i drugih oblika DISPLAY-a, ali ovo je dovoljno za nae potrebe.


  5.  Objanjavanje klijentu


  Program klijent (vaa grafika aplikacija, na primjer) saznaje na koji
  e se prikaz spojiti preko DISPLAY varijable okruja. Nju moete
  nadjaati davanjem argumenta -display raunalo:0 pri pokretanju
  programa. Malo primjera razjasnit e stvari.

  Jedno raunalo poznato je kao svemir, a mi smo u domeni svjet.la. Ako
  radimo na normalnom X serveru, prikaz se zove svemir.svjet.la:0.
  Hoemo pokrenuti xfig, program za crtanje, na udaljenom raunalu koje
  se zove crna.ru.pa i prikazati ga ovdje, na svemir-u.

  Ako na udaljenom raunalu radite u cshu:



       crna% setenv DISPLAY svemir.svjet.la:0
       crna% xfig &




  Ili:



       crna% xfig -display svemir.svjet.la:0 &




  Ako na udaljenom raunalu radite u shu:



       crna$ DISPLAY=svemir.svjet.la:0
       crna$ export DISPLAY
       crna$ xfig &




  Ili:



  dark$ DISPLAY=svemir.svjet.la:0 xfig &




  Ili, naravno:



       dark$ xfig -display svemir.svjet.la:0 &




  Izgleda da neke verzije telneta varijablu DISPLAY automatski prenose
  na udaljeno raunalo. Ako imate jedan od njih, imate sree i ne morate
  nita raditi. Ako nemate, veina verzija telneta prenose TERM
  varijablu okruja; uz malo petljanja mogue je priljepiti DISPLAY na
  varijablu TERM.

  Zamisao priljepljivanja je da pomou neke skripte postignete
  slijedee: prije telneta verijabli TERM dodajte vrijednost varijable
  DISPLAY. Zatim pokrenite telnet. Na drugom kraju veze, u odgovarajuoj
  .*shrc datoteci proitajte vrijednost DISPLAY iz TERM.


  6.  Objanjavanje serveru


  Server ne prihvaa veze od bilo kamo. Ne elite da svi prikazuju
  prozore na vaem zaslonu. Ili itaju ono to tipkate --- nemojte
  zaboraviti da je tipkovnica dio prikaza!

  ini se da premalo ljudi shvaa da je doputanje pristupa prikazu
  sigurnosni rizik. Netko tko moe pristupiti vaem prikazu moe itati
  i mijenjati vae ekrane, itati vae tipke i pratiti kretanje mia.

  Veina servera poznaje dva naina autorizacije veza: mehanizam popisa
  raunala (xhost) i mehanizam arobnih rijei (xauth). Tu je i ssh,
  sigurna ljuska, koji moe prenositi X veze.


  6.1.  xhost


  xhost doputa pristup na osnovu imena raunala. Server ima popis
  raunala koja se na njega smiju spojiti. Provjeru raunala moe i
  potpuno iskljuiti. Panja: to znai da provjera nema, pa se moe
  spojiti bilo koje raunalo!

  Serverov popis raunala nadgledate programom xhost. U prethodnom
  primjeru uinite ovo:



       svemir$ xhost +crna.ru.pa




  Ovo doputa sve veze s raunala crna.ru.pa. im se va X klijent spoji
  i prikae prozor, radi sigurnosti onemoguite daljnja povezivanja
  pomou:



  svemir$ xhost -crna.ru.pa




  Provjeru raunala moete ugasiti s:



       svemir$ xhost +




  Tako se iskljuuje provjera pristupa to omoguuje svima da se spoje.
  Ovo nikad nemojte napraviti na mrei na kojoj ne vjerujete svim
  korisnicima (kao to je Internet). Ponovo ukljuite provjeru raunala
  pomou:



       svemir$ xhost -




  xhost - sam po sebi nee izbrisati sva raunala iz popisa pristupa (to
  bi bilo prilino beskorisno --- ne biste se mogli spojiti od bilo
  gdje, ak ni sa svog lokalnog raunala).

  xhost je vrlo nesiguran mehanizam. Ne razlikuje pojedine korisnike na
  udaljenom raunalu. Takoer, imena raunala (zapravo adrese) mogu se
  krivotvoriti. To je loe ako ste na neprovjerenoj mrei (na primjer
  ve i PPP pristupom na Internet).


  6.2.  xauth


  xauth omoguava pristup svakome tko zna pravu tajnu. Takva tajna zove
  se autorizacijski zapis, odnosno arobni kolai. Taj nain
  autorizacije formalno se zove MIT-MAGIC-COOKIE-1.

  Kolaii za razne prikaze spremljeni su zajedno u ~/.Xauthority/.  S
  kolaiima se bavi program xauth, odakle dolazi i nadimak ove sheme.
  Vaem ~/.Xauthority ne smiju moi pristupiti drugi korisnici.

  Na poetku rada server e proitati kolai iz datoteke navedene uz
  -auth argument. Nakon toga, server doputa veze samo onim klijentima
  koji znaju isti kolai. Kada se kolai u ~/.Xauthority promijeni,
  server nee prihvatiti promjenu.

  Noviji serveri kolaie mogu generirati u letu za klijente koji to
  zatrae.  No kolaii su jo uvijek pohranjeni u serveri; ne
  zavravaju u ~/.Xauthority, osim ako ih klijent tamo stavi. Prema
  Davidu Wigginsu:

       U X11R6.3 dodana je jo jedna mogunost koja bi vas mogla
       zanimati. Preko novog proirenja SECURITY sam X server moe
       generirati i vraati kolaie u letu. Takoer, kolaii se
       mogu odrediti "nepovjerljivima" tako da su aplikacije koje
       se spajaju s takvim kolaiima ograniene u svom djelovanju.
       Na primjer, nee moi krasti ulaz s tipkovnice/mia ili
       sadraj prozora od drugih, povjerljivih klijenata. xauthu je
       dodana nova podnaredba generate kako bi ta mogunost bila
       barem iskoristiva, ako ne jednostavna.
  xauth ima jasnu sigurnosnu prednost nad xhostom. Moete ograniiti
  pristup na odreene korisnike na odreenim raunalima. Nije ranjiv na
  krivotvorene adrese kao xhost. A ako elite, moete ga koristiti
  zajedno s xhostom za doputanje veza.


  6.2.1.  Pripremanje kolaia


  Ako elite koristiti xauth, X server morate pokrenuti s argumentom
  -auth datoteka. Ako X server pokreete startx skriptom, tamo je pravo
  mjesto za to. Ovako pripremite svoj autorizacijski zapis u svojoj
  startx skripti.

  Izvadak iz /usr/X11R6/bin/startx:

  ______________________________________________________________________
  mcookie|sed -e 's/^/add :0 . /'|xauth -q
  xinit -- -auth "$HOME/.Xauthority"
  ______________________________________________________________________



  mcookie je programi iz paketa util-linux koji se distribuira s
  <ftp://ftp.math.uio.no/pub/linux/>. Moete koristiti i md5sum za
  pretvaranje nekih sluajnih podataka (na primjer, iz /dev/urandom ili
  ps -axl) u format kolaia:

  ______________________________________________________________________
  dd if=/dev/urandom count=1|md5sum|sed -e 's/^/add :0 . /'|xauth -q
  xinit -- -auth "$HOME/.Xauthority"
  ______________________________________________________________________



  Ako ne moete promijeniti startx skriptu (jer niste root), neka to
  uini va administrator, ili neka postavi xdm. Ako nee ili ne eli,
  moete napraviti ~/.xserverrc skriptu. Ako ona postoji, umjesto pravog
  X servera pokree ju xinit. Tako iz te skripte moete pokretati pravi
  X server s potrebnim argumentima. Da bi to radilo, stavite gornji
  primjer u svoj ~/.xserverrc za stvaranje kolaia, a zatim izvrite
  pravi X server:

  ______________________________________________________________________
  #!/bin/sh
  mcookie|sed -e 's/^/add :0 . /'|xauth -q
  exec /usr/X11R6/bin/X "$@" -auth "$HOME/.Xauthority"
  ______________________________________________________________________



  Ako za rad sa X-om koristite xdm, xauth moete lako koristiti.
  Definirajte DisplayManager.authDir u /etc/X11/xdm/xdm-config.  xdm e
  argument -auth prenijeti X serveru kada ga bude pokretao. Kada se
  logirate preko xdm-a, on za vas kolai stavlja u va ~/.Xauthority.
  Za vie informacija pogledajte man stranicu xdm(1).  Na primjer, moj
  /etc/X11/xdm/xdm-config sadri ovaj red:

  ______________________________________________________________________
  DisplayManager.authDir: /var/lib/xdm
  ______________________________________________________________________





  6.2.2.  Prenoenje kolaia


  Sad, kad ste poeli rad u X-u na posluitelju svemir.svjet.la i svoj
  kolai imate u ~/.Xauthority, trebate prenijeti kolai klijentu
  crna.ru.pa.

  To je najjednostavnije ako se va home direktorij dijeli izmeu crna i
  svemir. ~/.Xauthority datoteke su jednake, pa se kolai prenosi
  automatski. Meutim, tu je zamka: kada u ~/.Xauthority stavite kolai
  za :0, crna e misliti da je to kolai za njega, a ne za svemir. Kod
  stvaranja kolaia morate koristiti eksplicitno ime raunala; ne
  moete ga izostaviti. Isti kolai za :0 i svemir:0 moete instalirati
  pomou:


  ______________________________________________________________________
  #!/bin/sh
  cookie=`mcookie`
  xauth add :0 . $cookie
  xauth add "$HOST:0" . $cookie
  exec /usr/X11R6/bin/X "$@" -auth "$HOME/.Xauthority"
  ______________________________________________________________________



  Ako se home direktoriji ne dijele, kolai moete prenijeti pomou
  rsha, udaljene ljuske:


       svemir$ xauth nlist :0 | rsh crna.ru.pa xauth nmerge -




  to e rei:

  1. Izvuci kolai iz lokalnog ~/.Xauthority (xauth nlist :0).

  2. Prenesi ga na crna.ru.pa (| rsh crna.ru.pa).

  3. Stavi ga u tamonji ~/.Xauthority (xauth nmerge -).

  Mogue je da rsh nee raditi. Osim toga, rsh ima i sigurnosnih mana
  (opet lana imena raunala, ako se dobro sjeam). Ako ne moete ili ne
  elite koristiti rsh, kolai moete prenijeti i runo, na primjer
  ovako:


       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$





  Za vie informacija takoer pogledajte man stranice za rsh(1) i
  xauth(1x).

  Prijedlog: moda bi bilo mogue priljepiti kolai TERM ili DISPLAY
  varijabli prilikom telneta na udaljeno raunalo. To bi ilo na isti
  nain kao i priljepljivanje DISPLAY varijable na TERM varijablu.
  Pogledajte dio ``Objanjavanje klijentu''. Tu se sami snaite, ali me
  zanima moe li netko ovo potvrditi ili porei.


  6.2.3.  Koritenje kolaia


  X aplikacija na crna.ru.pa, u primjeru xfig, automatski e u
  ~/.Xauthority potraiti kolai i njime se autentificirati.


  6.3.  ssh


  Zapisi o autoritetu prenose se bez enkripcije. Ako ste zabrinuti da bi
  netko mogao prislukivati vae veze, koristite ssh, sigurnu ljusku.
  Proslijeivat e X preko enkriptiranih veza. Osim toga, odlina je i
  za druge stvari.  Dobra je strukturalna nadogradnja vaeg sustava.
  Samo posjetite  <http://www.cs.hut.fi/ssh/>, ssh-ovu WWW stranicu.

  Tko jo zna neto o autorizacijskim metodama ili enkriptiranju X veza?
  Moda Kerberos?


  7.  Problemi


  Kada prvi put pokrenete udaljenu X aplikaciju, obino ne radi. Evo
  nekoliko estih greaka, njihovih vjerojatnih uzroka, te rjeenja koja
  bi vam mogla pomoi.



       xterm Xt error: Can't open display:




  U okruju nema DISPLAY varijable, a niste ga naveli aplikaciji ni
  preko argumenta -display. Aplikacija pretpostavlja prazan niz, ali to
  je sintaktiki nepravilno. Da bi ovo rjeili, provjerite da je
  varijabla DISPLAY tono postavljena (pomou setenv ili export, ovisno
  o vaoj ljusci).



       _X11TransSocketINETConnect: Can't connect: errno = 101
       xterm Xt error: Can't open display: crna.ru.pa:0




  Broj greke 101 znai "Mrea je nedostupna". Aplikacija nije mogla
  uspostaviti mrenu vezu sa serverom. Provjerite da li je DISPLAY toan
  i da se do raunala servera moe doi s klijenta (trebalo bi se moi,
  ipak ste vjerojatno logirani na server i telnetom pristupate
  klijentu).



  _X11TransSocketINETConnect: Can't connect: errno = 111
  xterm Xt error: Can't open display: crna.ru.pa:0




  Broj greke 111 znai "Veza odbijena". Spajanje na raunalo server je
  uspjelo, ali tamo navedeni server ne postoji. Provjerite da li
  koristite pravo ime i broj prikaza.



       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




  Klijent se povezao sa serverom, ali server mu ne doputa koritenje
  (nije autoriziran). Provjerite da li ste klijentu prenijeli pravi
  arobni kolai i da on nije istekao (server uzima novi kolai kod
  svakog pokretanja).


  8.  Hrvatski prijevod


  Najnovija verzija ovog prijevoda moe se nai na
  <http://meta.mioc.hr/X-na-daljinu.html>. Odrava ga Matej Vela,
  mvela@public.srce.hr, kao dio META projekta. Sve su primjedbe,
  prijedlozi i prilozi dobrodoli.


































