Manovrare X da remoto: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (verificata)
 
(24 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
== Cos'� il Software Libero ==
{{Versioni compatibili|Jessie|Stretch|Buster}}
== Introduzione ==
Nelle distribuzioni GNU/Linux e in generale nei sistemi UNIX e Unix-like l'interfaccia grafica (''GUI'') non è parte del kernel ma gestita da un programma a parte: l' ''X window system'' o semplicemente server '''X''', di cui [[Xorg]] rappresenta l'implementazione attualmente più diffusa.


Il concetto di '''software libero''' discende naturalmente da quello di libert� di scambio di idee e di informazioni. Negli ambienti scientifici, quest'ultimo principio � tenuto in alta considerazione per la fecondit� che ha dimostrato; ad esso infatti � generalmente attribuita molta parte dell'eccezionale ed imprevedibile crescita del sapere negli ultimi tre secoli.
Le richieste dai client X di gestire le finestre avvengono di solito localmente, ma nulla impedisce di gestire le finestre attraverso la rete, permettendo a utenti remoti di effettuare il login sul display manager (<code>xdm</code>, <code>gdm</code>, <code>kdm</code>, <code>lightdm</code>, ecc...) per accedere al server X locale attraverso ''XDMCP'' ('''''X''' '''D'''isplay '''M'''anager '''C'''ontrol '''P'''rotocol'').


La libert� di scambio di idee non � tuttavia una questione puramente pratica: essa � anche alla base dei concetti di libert� di pensiero e di espressione. Analogamente alle idee, il software � immateriale, e pu� essere riprodotto e trasmesso facilmente. In modo simile a quanto avviene per le idee, parte essenziale del processo che sostiene la crescita e l'evoluzione del software � la sua libera diffusione. Ed ogni giorno di pi�, come le idee, il software permea il tessuto sociale e lo influenza, produce effetti etici, economici, politici e in un senso pi� generale culturali.
Per semplicità di configurazione, e per la stabilità dimostrata attraverso i passaggi di versione di Debian, in questa guida si considera unicamente '''<code>xdm</code>'''.


Fu Richard M. Stallman, nei primi anni Ottanta, a formalizzare per la prima volta il concetto di software libero. La definizione di Stallman, che da subito assurse al ruolo di definizione per eccellenza di software libero, assume la forma di quattro principi di libert�:
{{Warningbox | Ogni comunicazione da e verso il server X avverrebbe in chiaro, e sarebbe pertanto manipolabile e/o ascoltabile sulla rete. '''Questo rappresenta un <u>enorme rischio</u> per la sicurezza del sistema!'''


;Libert� 0, o libert� fondamentale: La libert� di eseguire il programma per qualunque scopo, senza vincoli sul suo utilizzo.
Se è possibile, si raccomanda caldamente invece di configurare una connessione [[SSH]] e di abilitare l'[[OpenSSH: X11 forwarding|X11 forwarding]] per avviare un'applicazione grafica o anche un'intera sessione.}}
;Libert� 1: La libert� di studiare il funzionamento del programma, e di adattarlo alle proprie esigenze.
;Libert� 2: La libert� di redistribuire copie del programma.
;Libert� 3: La libert� di migliorare il programma, e di distribuirne i miglioramenti.


Il software distribuito con una licenza che rispetti questi principi � detto software libero (in inglese free software). Nel 1984 Richard M. Stallman diede vita al progetto GNU, con lo scopo di tradurre in pratica il concetto di software libero, e cre� la Free Software Foundation per dare supporto logistico, legale ed economico al progetto GNU.
== Lato server ==
=== Installazione ===
Con [[privilegi di amministrazione]] è necessario installare <code>xdm</code>, oltre ovviamente al server [[Xorg]], se ancora non presente nella macchina che farà da server. Per esempio con [[apt]] basta:
<pre>
# apt install xdm xorg
</pre>


=== Link utili ===
=== Configurazione di xdm ===
* [http://www.gnu.org/home.it.html Progetto GNU]
Sempre con [[privilegi di amministrazione]], è sufficiente modificare i file di configurazione indicati in questa sezione con un editor di testo, per esempio [[nano]]:
* [http://www.gnu.org/philosophy/free-sw.it.html Progetto GNU: Cos'� il Software Libero]
<pre>
* [http://www.italy.fsfeurope.org/index.it.html Free Software Foundation Europe]
# nano /etc/X11/xdm/xdm-config
* [http://it.wikipedia.org/wiki/Open_source Open Source su Wikipedia]: breve storia dagli anni 50 ad oggi
</pre>


== Il software libero � gratuito? ==
In <code>/etc/X11/xdm/xdm-config</code> commenta:
<pre>
DisplayManager.requestPort:  0
</pre>
che diventa:
<pre>
!DisplayManager.requestPort:  0
</pre>


'''� falso''': la libert� del software non ha nulla a che vedere con il suo prezzo. Bench� gran parte del software libero pi� diffuso sia distribuito gratuitamente, ci sono programmatori che vivono della vendita e della manutenzione dei programmi liberi da loro creati.
Salva il file (con <code>nano</code> premi <code>Ctrl-o</code> e per uscire <code>Ctrl-x</code>).


In modo analogo, apri il file <code>/etc/X11/xdm/Xaccess</code> e togli il comento a:
<pre>
#*        #any host can get a login window
</pre>
che diventerà:
<pre> 
*        #any host can get a login window
</pre>


== Il software gratuito � libero? ==
Al posto di <code>*</code> è possibile anche specificare, uno a uno, gli [[host]] da cui si intende accettare la connessione, anche con uso di pattern. Per esempio basta scrivere (al posto di <code>*</code>):
<pre>
192.168.0.*
</pre>
per accettare connessioni dagli host appartenenti alla rete <code>192.168.0.0/24</code>, ossia tutti gli indirizzi compresi da <code>192.168.0.1</code> a <code>192.168.0.254</code>. Sono permessi anche [[hostname]], per esempio se definiti in <code>/etc/hosts</code>, e l'uso di indirizzi multicast a cui limitare l'ascolto. Per maggiori informazioni si consultino gli esempi scritti nel file.


'''� falso'''. Molti programmi proprietari vengono distribuiti gratuitamente.
Per finire è necessario specificare di restare in ascolto sulla porta TCP, modificando il file <code>/etc/X11/xdm/Xservers</code>:
<pre>
:0 local /usr/bin/X :0 vt8 -nolisten tcp
</pre>
che diventerà:
<pre>
:0 local /usr/bin/X :0 vt8
</pre>
dove:
* '''<code>:0</code>''' è l'identificativo del server X che sarà avviato e dev'essere libero; se ce n'è già uno in esecuzione, utilizzarne un altro (<code>:1</code>, <code>:2</code>, ecc...);
* '''vt8''' è il terminale virtuale da utilizzare, in questo caso <code>tty8</code> (accessibile con <code>Ctrl-Alt-F8</code>). Sceglierne uno qualsiasi libero (<code>vt9</code>, <code>vt10</code>, ecc...).


È possibile anche specificare più linee, se si intendono avviare più server X simultaneamente. In tal caso è consigliabile lasciare l'opzione '''<code>-nolisten tcp</code>''' su quelli per cui non è previsto l'accesso remoto, come misura di sicurezza.


== Il software libero � privo di copyright? ==
{{Warningbox | Si ricorda nuovamente che, anche se l'accesso deve essere autenticato, la comunicazione non è criptata. Per cui chiunque nella rete potrebbe ascoltare le credenziali di accesso e il suo uso è '''altamente sconsigliato''' al di fuori della LAN, e anche in questo caso esclusivamente se tutti gli host e gli utenti connessi alla LAN possono sempre essere considerati fidati.}}


'''� falso'''. Bench� si possa rinunciare al copyright su un proprio programma e renderlo cos� di pubblico dominio, la gran parte del software libero � distribuito con una licenza. Per esempio, sono licenze di copyright la licenza BSD e la GNU GPL, anche se per qualificare quest'ultima spesso si parla di permesso d'autore (copyleft). [http://www.gnu.org/philosophy/categories.it.html Qui] si pu� trovare una classificazione delle varie licence '''pi�''' o '''meno''' libere.
Per rendere effettive le modifiche, è necessario riavviare il display manager:
<pre>
# service xdm restart
</pre>
e questo conclude la configurazione lato server. <code>xdm</code> resterà in ascolto sulla porta 177 del protocollo UDP per ricevere richieste di autenticazione, secondo il protocollo XDMCP, dagli host specificati nel file <code>Xaccess</code>. Il server <code>Xorg</code> resta invece in ascolto sulla porta 6000 del protocollo TCP e successive, in base al display utilizzato, e permetterà l'accesso soltanto previa autenticazione, di default in base alla conoscenza di una sequenza casuale generata in precedenza: il ''magic cookie'' (per maggiori informazioni si rimanda alla lettura del manuale di <code>xauth</code>), comunicato da <code>xdm</code> per permettere l'autenticazione.


== L'introduzione del [http://scuola.linux.it/ software libero nella scuola] e nella pubblica amministrazione, ma anche nei paesi poveri, ridurrebbe i costi relativi al software? ==
== Lato client ==
=== Installazione ===
È necessario il solo pacchetto <code>xorg</code>, per cui se non fosse installato, con [[privilegi di amministrazione]]:
<pre>
# apt install xorg
</pre>


Si, ci sono studi condotti da molte universit� che dimostrano che l'adozione del software libero comporta un'abbattimento dei costi rispetto a sistemi proprietari. Bisogna infatti ricordare che per un'azienda o un ente pubblico il costo maggiore non � la licenza ma la gestione (aggiornamenti, reinstallazioni, malfunzionamenti, ecc...). Anche considerando questo fattore il software libero resta competitivo.
=== Utilizzo ===
Se l'indirizzo IP del server è <code>192.168.0.2</code>, dal client sarà sufficiente il comando:
<pre>
# X -query 192.168.0.2 :0 vt8
</pre>
per connettersi a <code>xdm</code> sulla macchina server. Si noti che il display e il terminale virtuale non devono combaciare per forza con quelli scelti sul server, l'unica cosa importante è che siano entrambi liberi sul client, in maniera analoga a quanto visto in precedenza per il server.


L'importanza del software libero st� per� nella libert� non nel prezzo. L'adozione del sofware libero svincola dalla dipendenza da un unico fornitore favorendo il libero mercato (ci si pu� rivolgere ad un azienda diversa per l'assistenza). Per questo il suo utilizzo � particolarmente importante un settori pubblici dove l'erogazione di servizi al cittadino non pu� dipendere dalle disposizioni di una sola azienda. Questa azienda sfruttando la sua posizione monopolistica potrebbe decidere di alzare a dismisura i prezzi o di ledere la privacy: si sarebbe costretti ad accettare (magari senza farci tanto caso) le nuove condizioni. La Microsoft, ad esempio, si comporta proprio in questo modo: abusando del suo monopolio ha imposto una [http://www.interlex.it/675/mscontinua.htm licenza che le consente di accedere ai dati (anche confidenziali) degli ignari utenti] (pensate al vostro medico, al vostro commercialista).
In alternativa, se si è nella stessa rete locale del server, è anche possibile:
<pre>
# X -broadcast :0 vt8
</pre>
per mandare il messaggio di richiesta in ''broadcast'' (ossia a tutti gli [[host]] della rete), per effettuare la connessione al server X del primo ''host'' che risponde.


Adottando invece software libero, se si avessero problemi con un'azienda che fornisce assistenza, si � sempre liberi di rivolgersi ad un concorrente, essendo il software libero gestibile e modificabile da chiunque ne abbia le competenze.
Si visualizzerà <code>xdm</code> in esecuzione sul server, che si potrà utilizzare per autenticarsi, utilizzando le credenziali di accesso di un utente che ha accesso alla macchina remota.


In Cina, in Giappone, in Brasile, in India, in Sud-Africa ed in molti altri paesi in via di sviluppo � stato scelto software libero per i sistemi informativi nazionali e con i soldi risparmiati stanno investendo in formazione.
Si avrà così accesso a un'intera sessione grafica, anche se con qualche limitazione di performance. Si noti infatti che il protocollo X11 trasmetterà tutto lo schermo, comprese le aree non necessarie perché non cambiate: non c'è una cache né alcun tipo di funzionalità "trasmetto solo cosa è cambiato".


Ma la cosa pi� importante � la ''libert�'' non il ''prezzo''!
== Link ==
<!-- link commentato: * [http://www.freesoftwaremagazine.com/articles/what_is_x/ What is X?]: interessante articolo che parte dalle basi del funzionamento fino agli utilizzi più avanzati del server X in remoto; -->
* [http://www.tldp.org/HOWTO/XDMCP-HOWTO Linux XDMCP HOWTO]


{{Autori
|Autore = [[Utente:HAL 9000|HAL 9000]] 17:50, 8 set 2019 (CEST) <br/>(guida originariamente scritta da [[Utente:MaXeR|MaXeR]])
|Estesa_da =
|Verificata_da =
|Numero_revisori = 0
}}


== Cos'� l'Open Source? ==
[[Categoria:Xorg]][[Categoria:Altri servizi di rete]]
 
Nel 1998 Bruce Perens, Eric Raymond e altre personalit� nel campo del software libero si convinsero che i principi di libert� associati ad esso fossero malvisti nel mondo degli affari, a causa della loro carica ideologica. Decisero perci� di evitare accuratamente ogni riferimento a considerazioni politiche o di principio, e di lanciare una campagna di promozione del software libero che ne mettesse in luce i numerosi vantaggi pratici, come la facilit� di adattamento, l'affidabilit�, la sicurezza, la conformit� agli standard, l'indipendenza dai singoli fornitori. A tal fine scrissero la [http://www.opensource.org/docs/definition.html Open Source Definition], il documento fondamentale del movimento open source.
 
Il movimento open source fu un successo, e contribu� a sdoganare il concetto di software libero in campo aziendale, dove era guardato con sospetto o condiscendenza. Un esempio di questo successo � l'atteggiamento dell'IBM, l'azienda che ha fatto di gran lunga i maggiori investimenti nel campo del software libero, la quale parla esclusivamente di open source, mai di software libero.
 
La voluta neutralit� del movimento open source verso gli aspetti etici e politici del software libero � la caratteristica sostanziale che lo distingue dalla filosofia del software libero, che al contrario pone l'accento sulle motivazioni ideali. Parlare di software libero piuttosto che di open source � una questione politica piuttosto che pratica; i due movimenti concordano infatti sulle licenze considerate accettabili, ed hanno obiettivi e mezzi comuni.
 
=== Link utili: ===
 
* [http://www.opensource.org/ www.opensource.org]: sito che promuove e diffonde la definizione di open source (in inglese).

Versione attuale delle 15:50, 8 set 2019

Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"
Debian 9 "stretch"
Debian 10 "buster"

Introduzione

Nelle distribuzioni GNU/Linux e in generale nei sistemi UNIX e Unix-like l'interfaccia grafica (GUI) non è parte del kernel ma gestita da un programma a parte: l' X window system o semplicemente server X, di cui Xorg rappresenta l'implementazione attualmente più diffusa.

Le richieste dai client X di gestire le finestre avvengono di solito localmente, ma nulla impedisce di gestire le finestre attraverso la rete, permettendo a utenti remoti di effettuare il login sul display manager (xdm, gdm, kdm, lightdm, ecc...) per accedere al server X locale attraverso XDMCP (X Display Manager Control Protocol).

Per semplicità di configurazione, e per la stabilità dimostrata attraverso i passaggi di versione di Debian, in questa guida si considera unicamente xdm.

Warning.png ATTENZIONE
Ogni comunicazione da e verso il server X avverrebbe in chiaro, e sarebbe pertanto manipolabile e/o ascoltabile sulla rete. Questo rappresenta un enorme rischio per la sicurezza del sistema!

Se è possibile, si raccomanda caldamente invece di configurare una connessione SSH e di abilitare l'X11 forwarding per avviare un'applicazione grafica o anche un'intera sessione.


Lato server

Installazione

Con privilegi di amministrazione è necessario installare xdm, oltre ovviamente al server Xorg, se ancora non presente nella macchina che farà da server. Per esempio con apt basta:

# apt install xdm xorg

Configurazione di xdm

Sempre con privilegi di amministrazione, è sufficiente modificare i file di configurazione indicati in questa sezione con un editor di testo, per esempio nano:

# nano /etc/X11/xdm/xdm-config

In /etc/X11/xdm/xdm-config commenta:

DisplayManager.requestPort:   0

che diventa:

!DisplayManager.requestPort:   0

Salva il file (con nano premi Ctrl-o e per uscire Ctrl-x).

In modo analogo, apri il file /etc/X11/xdm/Xaccess e togli il comento a:

#*         #any host can get a login window

che diventerà:

  
*         #any host can get a login window

Al posto di * è possibile anche specificare, uno a uno, gli host da cui si intende accettare la connessione, anche con uso di pattern. Per esempio basta scrivere (al posto di *):

192.168.0.*

per accettare connessioni dagli host appartenenti alla rete 192.168.0.0/24, ossia tutti gli indirizzi compresi da 192.168.0.1 a 192.168.0.254. Sono permessi anche hostname, per esempio se definiti in /etc/hosts, e l'uso di indirizzi multicast a cui limitare l'ascolto. Per maggiori informazioni si consultino gli esempi scritti nel file.

Per finire è necessario specificare di restare in ascolto sulla porta TCP, modificando il file /etc/X11/xdm/Xservers:

:0 local /usr/bin/X :0 vt8 -nolisten tcp

che diventerà:

:0 local /usr/bin/X :0 vt8

dove:

  • :0 è l'identificativo del server X che sarà avviato e dev'essere libero; se ce n'è già uno in esecuzione, utilizzarne un altro (:1, :2, ecc...);
  • vt8 è il terminale virtuale da utilizzare, in questo caso tty8 (accessibile con Ctrl-Alt-F8). Sceglierne uno qualsiasi libero (vt9, vt10, ecc...).

È possibile anche specificare più linee, se si intendono avviare più server X simultaneamente. In tal caso è consigliabile lasciare l'opzione -nolisten tcp su quelli per cui non è previsto l'accesso remoto, come misura di sicurezza.

Warning.png ATTENZIONE
Si ricorda nuovamente che, anche se l'accesso deve essere autenticato, la comunicazione non è criptata. Per cui chiunque nella rete potrebbe ascoltare le credenziali di accesso e il suo uso è altamente sconsigliato al di fuori della LAN, e anche in questo caso esclusivamente se tutti gli host e gli utenti connessi alla LAN possono sempre essere considerati fidati.


Per rendere effettive le modifiche, è necessario riavviare il display manager:

# service xdm restart

e questo conclude la configurazione lato server. xdm resterà in ascolto sulla porta 177 del protocollo UDP per ricevere richieste di autenticazione, secondo il protocollo XDMCP, dagli host specificati nel file Xaccess. Il server Xorg resta invece in ascolto sulla porta 6000 del protocollo TCP e successive, in base al display utilizzato, e permetterà l'accesso soltanto previa autenticazione, di default in base alla conoscenza di una sequenza casuale generata in precedenza: il magic cookie (per maggiori informazioni si rimanda alla lettura del manuale di xauth), comunicato da xdm per permettere l'autenticazione.

Lato client

Installazione

È necessario il solo pacchetto xorg, per cui se non fosse installato, con privilegi di amministrazione:

# apt install xorg

Utilizzo

Se l'indirizzo IP del server è 192.168.0.2, dal client sarà sufficiente il comando:

# X -query 192.168.0.2 :0 vt8

per connettersi a xdm sulla macchina server. Si noti che il display e il terminale virtuale non devono combaciare per forza con quelli scelti sul server, l'unica cosa importante è che siano entrambi liberi sul client, in maniera analoga a quanto visto in precedenza per il server.

In alternativa, se si è nella stessa rete locale del server, è anche possibile:

# X -broadcast :0 vt8

per mandare il messaggio di richiesta in broadcast (ossia a tutti gli host della rete), per effettuare la connessione al server X del primo host che risponde.

Si visualizzerà xdm in esecuzione sul server, che si potrà utilizzare per autenticarsi, utilizzando le credenziali di accesso di un utente che ha accesso alla macchina remota.

Si avrà così accesso a un'intera sessione grafica, anche se con qualche limitazione di performance. Si noti infatti che il protocollo X11 trasmetterà tutto lo schermo, comprese le aree non necessarie perché non cambiate: non c'è una cache né alcun tipo di funzionalità "trasmetto solo cosa è cambiato".

Link




Guida scritta da: HAL 9000 17:50, 8 set 2019 (CEST)
(guida originariamente scritta da MaXeR)
Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized