venerdì 12 febbraio 2010

Il programma xhost (controllo degli accessi)

Il programma xhost serve ad aggiungere o togliere l'accesso al server X agli host specificati.
E' anche possibile specificare una coppia utente/hostname, ma per questa funzione è necessario avere Secure RPC e NIS in esecuzione sulle macchine interessate (chiedete all'amministratore di sistema se non siete sicuri su di esso).
Fondamentalmente xhost permette solo una forma rudimentale di sicurezza e di controllo della privacy.
Serve per un ambiente singolo utente, pur limitando i peggiori abusi. Se si lavora in un ambiente multi utente, è necessario utilizzare il programma xauth.

Per vedere se il controllo degli accessi è abilitato (in genere lo è), scrivere su terminale xhost. Mostra qualcosa del tipo:
$ xhost
access control enabled, only authorized clients can connect

Se il controllo di accesso è stato disattivato, scrive:
$ xhost
access control disabled, clients can connect from any host

Per disattivare il controllo di accesso basta scriveee xhost +, che permette ad ogni host esterno di accedere al server X sulla macchina locale. Non si dovrebbe mai fare questo, perché permetterebbe al mondo esterno di aprire finestre di X sullo schermo e di catturare le sequenze di tasti mentre si digita (in modo da sniffare le password).
Per abilitare nuovamente il controllo di accesso scrivere xhost - e solo i client/host autorizzati potranno fare le cose di cui sopra.

Ora vogliamo fare qualcosa di utile, cioè consentire l'accesso da un host specifico (ad esempio perché si è loggati in esso e si vuole avviare un programma che usa il server X, o perché ci si è appena loggati nella stessa macchina con un altro nome utente e anche si vuole avviare un programma X). E' facile, basta digitare xhost hostname oppure xhost + hostname e chiunque sia loggato nell'host hostname può accedere al server X (e aprire alcune finestre sullo schermo, ecc.).
Se si desidera consentire a chiunque l'accesso al server X sulla macchina locale, basta scrivere xhost localhost (o xhost + localhost o xhost + nome_della_macchina_locale).
Supponiamo che abbiamo dato il permesso a localhost e friend.his.domain per accedere al nostro server X, il comando xhost ora stamperà:

$ xhost
access control enabled, only authorized clients can connect
INET:friend.his.domain
INET:localhost

La parte INET:localhost dipende dall'installazione della nostra macchina o rete; è anche possibile che stampi INET:localhost.my.domain. Un altro modo per consentire agli utenti locali di connettersi al server X è digitando xhost local: (o xhost + local:). In questo modo vengono consentite le connessioni locali verso il server X (in questo caso la variabile DISPLAY deve essere impostata a ": displaynumber[.screennumber]" invece di "hostname:[displaynumber.screennumber]").

$ xhost local:
non-network local connections being added to access control list

$ xhost
access control enabled, only authorized clients can connect
LOCAL:

Dopo aver dato l'accesso a un host specifico vogliamo anche essere in grado di togliergli l'accesso. Semplicemente, basta digitare xhost - hostname e l'host specificato non può più accedere al nostro server X (xhost - local: se hai utilizzato xhost + local:). E' anche possibile specificare più operazioni sulla stessa riga di comando, ad esempio, xhost +host1 - host2 + host3. Ciò abilita l'accesso al server X per host1 e host3 e lo disabilita per host2.
In alcune versioni di xhost è meglio non mettere uno spazio tra il + e il nome dell'host (così facendo si consente l'accesso all'host ma viene anche disabilitato completamente il controllo di accesso).