{"id":31,"date":"2006-05-03T07:33:04","date_gmt":"2006-05-03T06:33:04","guid":{"rendered":"http:\/\/www.ilinux.it\/content\/?p=31"},"modified":"2010-08-19T12:21:22","modified_gmt":"2010-08-19T11:21:22","slug":"sbagliando-si-impara","status":"publish","type":"post","link":"https:\/\/www.ilinux.it\/content\/sbagliando-si-impara.html","title":{"rendered":"Sbagliando si impara"},"content":{"rendered":"<p style=\"text-align: center;\"><a href=\"http:\/\/www.ilinux.it\/content\/wp-content\/uploads\/2010\/08\/x11app.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-33 aligncenter\" title=\"x11app\" src=\"http:\/\/www.ilinux.it\/content\/wp-content\/uploads\/2010\/08\/x11app-300x229.png\" alt=\"\" width=\"300\" height=\"229\" srcset=\"https:\/\/www.ilinux.it\/content\/wp-content\/uploads\/2010\/08\/x11app-300x229.png 300w, https:\/\/www.ilinux.it\/content\/wp-content\/uploads\/2010\/08\/x11app.png 364w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Accade  qualche volta che anche un professionista sbagli; accade qualche volta  che anche un professionista non adotti il corretto modello per  comprendere un evento empirico; accade qualche volta che la suggestione  prenda e corrompa la lucidit\u00e0 e le capacit\u00e0 dello stesso professionista,  portandolo sulla via sbagliata nella ricerca della soluzione ad un  problema, e coinvolgendo in questo tutti i suoi colleghi, per la forza  persuasiva della suggestione medesima.<\/p>\n<p>Accade, ed \u00e8 successo anche a noi.<!--more-->E&#8217; successo che la  necessit\u00e0 di utilizzare programmi x-window remotamente usando un Apple  Power Book quale \u201cserver grafico\u201d ci ha creato non qualche problema ed  imbarazzo. Come sarebbe a dire?<\/p>\n<p>Ti viene assegnato un  compito. Ti dicono quale \u00e8 l&#8217;host da contattare (rigorosamente solo  attraverso protocollo telnet) e pure che il programma &#8216;pippo&#8217; \u00e8  x-window. Hai il tuo account ed il tuo fidato pbook. Che fai?<\/p>\n<p>L&#8217;host da connettere \u00e8 un  IBM R6000 con sistema AIX: UNIX, tu sei un sistemista UNIX di lungo  corso. Una volta attivato Apple X11 sul tuo pbook sei pronto  all&#8217;avventura: solita procedura sbrigativa: [vedi inoltre il <a title=\"http:\/\/web.mac.com\/giamnov\/iWeb\/GiampaBLG\" href=\"http:\/\/web.mac.com\/giamnov\/iWeb\/GiampaBLG\">BLOG di Giampaolo<\/a>]<\/p>\n<p>Sulla finestra xterm locale del pbook digiti:<\/p>\n<pre># xhost +<\/pre>\n<p>Ti connetti al server remoto:<\/p>\n<pre># telnet &lt;<em>ip host-remoto<\/em>&gt;<\/pre>\n<p>e come da consuetudine  imposti la variabile DISPLAY (a scanso di equivoci; ti disinteressi del  fatto che la versione di telnet che usi possa provvedere autonomamente a  questo):<\/p>\n<pre># DISPLAY= &lt;<em>ip pbook<\/em>&gt;:0.0; export DISPLAY<\/pre>\n<p>Tutto \u00e8 pronto per cominciare a lavorare; attiviamo il programma pippo:<\/p>\n<pre># pippo\r\nXlib: connection to \"&lt;ip pbook&gt;:0.0\" refused by server\r\nXlib: No protocol specified<\/pre>\n<pre>Connection refused<\/pre>\n<p>Forse \u00e8 il programma; andiamo sul sicuro:<\/p>\n<pre># xclock\r\nXlib: connection to \"&lt;ip pbook&gt;:0.0\" refused by server\r\nXlib: No protocol specified<\/pre>\n<pre>Connection refused<\/pre>\n<p>Cosa?<\/p>\n<p>Ah ! Forse \u00e8 il firewall  attivo che blocca le connessioni. Allora verifichiamo le impostazioni di  sicurezza. Non \u00e8 la strada giusta. Apple X11 se \u00e8 installato ha posto  le regole nel modo corretto. Non avendole toccare nessuno sono  appostissimo.<\/p>\n<p>Ma la frustrazione cresce  vedendo che un collega con un client windoiz e un programma freeware  riesce nella medesima attivit\u00e0 di connessione e attivazione di programma  x-window.<\/p>\n<h3>Escalation del problema<\/h3>\n<p>Dopo aver invano ritentato  pi\u00f9 volte si chiede ovviamente aiuto a colleghi fidati. Coinvolti  assieme quindi nella ricerca della soluzione al problema si tenta di  tutto. Ovviamente i colleghi fidati sono colleghi che lavorano da anni  in ambito UNIX, e negli ultimi anni con particolare interesse nel mondo  Linux. Quindi gli esperimenti per cercare di trovare soluzione al  problema vengono eseguiti rigorosamente in ambito UNIX, ed in  particolare con workstation Fedora Core 3 e 4, quindi con software molto  aggiornato. Ogni suggerimento possibile sembrava vano. Anzi no. Peggio.  Ad un certo punto, ponendosi nelle medesime condizioni sperimentali, ci  si \u00e8 accorti che anche postazioni di lavoro Fedora non erano in grado  di comportarsi come server X per applicazioni remote. Quindi si aveva la  certezza. Qualcosa di grave non va nel modo di operare, in quanto  entrambi gli ambienti reagiscono nel medesimo modo.<\/p>\n<p>Ricerche su Internet diventano sempre pi\u00f9 frustranti quando confermano l&#8217;ovvio: il procedimento adottato \u00e8 quello canonico.<\/p>\n<p>Dopo qualche giorno di  ricerca la frustrazione arriva a livelli insopportabili, anche e non  solo considerando come il collega \u201cwindomorfo\u201d avesse una interfaccia  pienamente funzionante.<\/p>\n<p>Capire quando \u00e8 stato il  momento esatto in cui il sospetto sia affiorato \u00e8 difficile: ma fatto \u00e8  che alla fine l&#8217;ottica del sistemista \u00e8 uscita fuori prepotentemente; e  allora con un semplice comando si \u00e8 scoperto quale era il problema.<\/p>\n<pre># netstat --tcp --listen | grep x11\r\n#<\/pre>\n<p>Il comando non aveva  prodotto nessuna risposta: questo significava che non esisteva alcun  serve X11 attivo in ascolto sulla porta canonica del servizio  (6000\/tcp). Questo significava che il server rispondeva solo a  connessioni in localhost attraverso socket in dominio UNIX: questo il  motivo per il quale tutti i software grafici della workstation  funzionavano.<\/p>\n<p>Ma quale era il motivo della mancanza di ascolto della rete?<\/p>\n<p>Le ricerche su Internet  questa volta portano i loro frutti; la risposta ai nostri problemi sono:  qualcosa \u00e8 cambiato nella politica di configurazione iniziale dei  server X, cambiamenti che attengono a Xfree86, Xorg in ambito Linux, ma  anche, per ragioni opposte, a Apple X11.<\/p>\n<p>Vediamo quali sono questi cambiamenti e quali soluzioni posso essere trovate, trattando un ambiente operativo alla volta.<\/p>\n<h3>Una occhiata al mondo UNIX\/Linux<\/h3>\n<p>Il motivo per il quale l&#8217;X server \u00e8 attivo ma non ascolta su porta tcp \u00e8 gdm.<\/p>\n<p>gdm \u00e8 il rimpiazzo di xdm,  responsabile dell&#8217;autenticazione (login grafica) e attivazione del  server grafico vero e proprio (X). Ovviamente per creare un login  grafico gdm (xdm) \u00e8 un server grafico a sua volta, anche se non capace  di interagire col mondo esterno, ma in cui si eseguono possono eseguire  alcuni tools, ivi compreso il famigerato xclock, se ad esempio vogliamo  vedere lo scorrere del tempo durante la visualizzazione della pagina di  accesso alla sessione grafica. La configurazione base di gdm prevede di  disattivare l&#8217;ascolto su porta x11\/tcp per tutti i server grafici che  deve attivare; \u00e8 possibile contraddire questa configurazione attraverso  una direttiva da porre nel file \/etc\/X11\/gdm\/gdm.conf, tipicamente  presente ma commentata. La direttiva \u00e8 in logica negativa (in quanto  indica di disabilitare un qualcosa, quindi noi dobbiamo negare la  direttiva quando vogliamo attivare), quindi dovremo avere:<\/p>\n<pre>DisallowTCP=false # il default \u00e8 true, anche se non impostato<\/pre>\n<p>Quando impostata a true (o  non impostata) verr\u00e0 aggiunta l&#8217;opzione -nolisten tcp a qualsiasi linea  di comando che invochi la partenza di un server X (esattamente  l&#8217;applicativo X) presente nell&#8217;albero dei file di configurazione che  discendono da gdm.<\/p>\n<p>Quando venisse incontrata  l&#8217;opzione -query o -indirect nelle medesime linee di comando allora  l&#8217;opzione -nolisten NON verrebbe aggiunta.<\/p>\n<h3>Torniamo al mondo MacOSX. La soluzione del problema iniziale<\/h3>\n<p>[&#8230;] Panther aveva un pannello di controllo. Tiger no.<\/p>\n<p><a href=\"http:\/\/www.ilinux.it\/content\/wp-content\/uploads\/2006\/05\/X11Prefs-panther.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-35\" title=\"X11Prefs-panther\" src=\"http:\/\/www.ilinux.it\/content\/wp-content\/uploads\/2006\/05\/X11Prefs-panther.png\" alt=\"\" width=\"300\" height=\"231\" \/><\/a><\/p>\n<p>Nell&#8217;aggiornamento si perde la possibilit\u00e0 di esettare impostazioni che erano possibili in Panther.<\/p>\n<p>Ma il pbook \u00e8 nato Tiger&#8230; e allora???? L&#8217;ipotesi \u00e8 che un software X abbia impostato di suo quel parametro.<\/p>\n<p>Fatto \u00e8 che le evidenze  parlano chiaro: nel file ~\/Library\/Preferences\/com.apple.X11.plist del  pbook (\u00e8 bastato usare defaults oppure Plist Editor per vedere) esiste  una chiave di nome nolisten_tcp, di tipo booleano settata al valore YES.  Quindi X11 viene attivato con l&#8217;esclusione dei client da network (come  se il flag fosse rimosso nel pannello X11 Preferences: Security di  Panther.<\/p>\n<p>Oltre alla correzione  apportata a mano occorreva una soluzione pi\u00f9 elegante: un software che  facesse questo fornendo una interfaccia grafica.<\/p>\n<p>Il primo prototipo fu una applicazione Cocoa, X11TcpEnabler: poi venne il turno di un plugin per il Pannello di Controllo di sistema che replicasse la porzione di configurazione di sicurezza di X11 in Panther:<\/p>\n<p><a href=\"http:\/\/www.ilinux.it\/content\/wp-content\/uploads\/2006\/05\/X11Pref_custom.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-36\" title=\"X11Pref_custom\" src=\"http:\/\/www.ilinux.it\/content\/wp-content\/uploads\/2006\/05\/X11Pref_custom.png\" alt=\"\" width=\"300\" height=\"283\" \/><\/a> <a href=\"http:\/\/www.ilinux.it\/content\/wp-content\/uploads\/2006\/05\/X11TCPenabler1.2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-37\" title=\"X11TCPenabler1.2\" src=\"http:\/\/www.ilinux.it\/content\/wp-content\/uploads\/2006\/05\/X11TCPenabler1.2.png\" alt=\"\" width=\"300\" height=\"213\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\">P.S.  Il problema non si verifica se la connessione avviene attraverso  protocollo secure-shell (ssh), in quanto il tunnelling che viene  costruito per il trasporto cifrato delle connessioni X11 (X11Forwading)  rende la connessione X11 attraverso il localhost (unix-domain socket),  quindi non \u00e8 una connessione TCP\/UDP<\/p>","protected":false},"excerpt":{"rendered":"<p>Accade qualche volta che anche un professionista sbagli; accade qualche volta che anche un professionista non adotti il corretto modello per comprendere un evento empirico; accade qualche volta che la suggestione prenda e corrompa la lucidit\u00e0 e le capacit\u00e0 dello stesso professionista, portandolo sulla via sbagliata nella ricerca della soluzione ad un problema, e coinvolgendo &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.ilinux.it\/content\/sbagliando-si-impara.html\" class=\"more-link\">Leggi tutto<span class=\"screen-reader-text\"> &#8220;Sbagliando si impara&#8221;<\/span><\/a><\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/www.ilinux.it\/content\/wp-json\/wp\/v2\/posts\/31"}],"collection":[{"href":"https:\/\/www.ilinux.it\/content\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ilinux.it\/content\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ilinux.it\/content\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ilinux.it\/content\/wp-json\/wp\/v2\/comments?post=31"}],"version-history":[{"count":7,"href":"https:\/\/www.ilinux.it\/content\/wp-json\/wp\/v2\/posts\/31\/revisions"}],"predecessor-version":[{"id":56,"href":"https:\/\/www.ilinux.it\/content\/wp-json\/wp\/v2\/posts\/31\/revisions\/56"}],"wp:attachment":[{"href":"https:\/\/www.ilinux.it\/content\/wp-json\/wp\/v2\/media?parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ilinux.it\/content\/wp-json\/wp\/v2\/categories?post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ilinux.it\/content\/wp-json\/wp\/v2\/tags?post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}