Capitolo 45.   Cloud computing: il ritorno all'informatica centralizzata

Gli anni 2010 segnano il ritorno dell'informatica centralizzata, tipica degli anni 1960-1970, ma al posto di fare riferimento a un solo elaboratore servente ci si avvale oggi di quello che è noto come cloud provider, il quale fornisce i propri servizi attraverso sistemi elaborativi molto più complessi, ma in modo trasparente per l'utenza.

Il cloud provider può fornire servizi di vario genere, i quali hanno generalmente in comune la garanzia per l'utenza della preservazione dei dati coinvolti.

La fruizione dei servizi di un cloud provider può dipendere da software specifico, necessario presso i terminali degli utenti, oppure di navigatori ipertestuali comuni.

Quando un servizio riguarda la gestione o la conservazione di dati, si pone il problema della riservatezza di questi. In pratica, quando si conservano o si elaborano dati presso un servizio esterno, c'è il rischio che qualcuno, presso il gestore, possa trafugarli per qualche scopo.

Il problema della riservatezza può essere più o meno importante, a seconda del contesto. Allo stesso modo, il rischio che i propri dati siano usati in modo scorretto varia a seconda della reputazione di chi si trova a gestirli. Pertanto si affronta il problema a due livelli: scegliendo oculatamente il gestore di servizi oppure gestendo in proprio una struttura di cui si può avere il controllo completo.

45.1   Sistemi tradizionali di accesso remoto

Il metodo tradizionale per accedere a un servente remoto consiste nell'uso di un programma in grado di connettersi attraverso protocolli come TELNET e SSH (sezioni 36.8 e 44.7). Tuttavia, l'introduzione sempre più importante di software grafico, a partire dagli anni 1990, ha relegato l'uso del terminale testuale remoto alle sole attività amministrative dei sistemisti.

Il sistema grafico X consente di interagire con un'applicazione grafica remota (sezione 28.5.5); tuttavia, questa facoltà viene attuata normalmente attraverso un tunnel SSH (sezione 28.5.6), per garantire che la comunicazione non possa essere intercettata.

Attraverso VNC (sezione 28.13) è poi possibile mantenere attiva una sessione di lavoro grafica, presso un servente remoto, riprendendola e sospendendola a piacimento.

45.2   Applicazioni «web»

L'avvento dei navigatori ipertestuali in grado di interpretare il linguaggio HTML (con tutti i suoi sviluppi successivi) e la nascita della programmazione CGI (sezioni 40.4 e 40.5), ha messo a disposizione un'interfaccia universale, sulla quale la costruzione di un programma diventa indipendente dal sistema usato per interagire.

Per mettere in pratica un'applicazione «web» presso un servente, occorre un servente HTTP (capitolo 40) e un programma CGI. Di solito, il programma CGI è scritto utilizzando il linguaggio PHP (http://php.net), affidando la gestione dei dati a un DBMS (parte v). A Questo proposito si usa spesso la sigla «...AMP» per indicare l'integrazione di Apache, MySQL e PHP (Apache in qualità di servente HTTP, MySQL in qualità di DBMS e PHP come interprete di programmi CGI scritti nel linguaggio omonimo), anche se la combinazione di questi programmi non è necessariamente obbligata.

Dal lato «cliente», ovvero nel sistema che deve poter fruire del servizio «web» remoto, occorre un navigatore ipertestuale in grado di interpretare correttamente il linguaggio HTML e il linguaggio JavaScript (sezione 54.7), e in grado di visualizzare documenti in formato PDF. Infatti, il linguaggio JavaScript affogato nei documenti HTML consente di disporre di funzionalità dinamiche gestite localmente, senza richiedere necessariamente un'interazione continua con il servente remoto per l'aggiornamento della schermata visualizzata. Inoltre, la capacità di visualizzare documenti PDF serve per la gestione delle stampe: un'applicazione remota, per poter produrre una stampa, fornisce un file PDF che poi, una volta visualizzato, può essere stampato effettivamente (o archiviato elettronicamente).

45.3   Applicazioni «web» invadenti

Un'applicazione «web» che per funzionare presso un terminale richiede soltanto un navigatore normale, con la capacità di interpretare il linguaggio JavaScript e di visualizzare file PDF, è universale, in quanto ha la garanzia ragionevole di poter essere fruita in qualunque condizione.

Tuttavia esistono applicazioni «web» invadenti, nel senso che richiedono di più, costringendo l'utenza a procurarsi software specifico. In particolare questo è il caso di quei servizi che per essere fruiti spediscono al terminale cliente un'applicazione ad-hoc da eseguire localmente. Si tratta di solito di programmi Java (http://java.com), SWF (Shockwave Flash o semplicemente Flash http://www.adobe.com/products/flash.html) o Silverlight (http://silverlight.net).

L'invadenza consiste nel fatto che si è costretti a eseguire localmente un'applicazione sulla quale non si può avere alcun controllo e nel fatto che per poterlo fare può essere necessario scaricare altro software la cui licenza deve essere valutata (e di norma ciò non viene fatto con la dovuta cura).

45.4   eyeOS 1.*

eyeOS(1) è un'applicazione «web» che si comporta come se fosse un sistema operativo grafico, in grado di eseguire applicazioni scritte in PHP, utilizzando però le interfacce previste nel «kernel» di questo pseudo sistema. Qui si considera la versione 1.9.0.3 che ha la caratteristica di essere «stabile» e relativamente facile da installare, anche da un utente comune che possa gestire la propria directory ~/public_html/.

Il sistema operativo (quello vero) che deve ospitare il servizio di eyeOS, deve disporre di un servente HTTP configurato in modo da poter funzionare con un interprete PHP. Le versioni 1.9.* di eyeOS non richiedono necessariamente la presenza di MySQL, che invece diventa indispensabile nelle versioni 2.*.

Quando il sistema ospitante è in grado di far funzionare correttamente il PHP, si può procedere a scaricare la versione scelta di eyeOS, presso http://sourceforge.net/projects/eyeos/files/eyeos/1.9.0.3/, ottenendo il file eyeOS_1.9.0.3-1.zip (si suppone di averlo salvato nella directory /tmp/). Il file va estratto dove il servente HTTP può utilizzarlo: potrebbe essere la directory /var/www/ oppure ~/public_html/, o qualcosa di simile.

cd /var/www[Invio]

unzip /tmp/eyeOS_1.9.0.3-1.zip[Invio]

Oppure:

cd ~/public_html/[Invio]

unzip /tmp/eyeOS_1.9.0.3-1.zip[Invio]

A questo punto, però, occorre attribuire tutti i permessi di accesso alla struttura espansa, e occorre inserire un file php.ini che consenta espressamente al codice PHP di poter scrivere e cancellare file.

Questo fatto rappresenta il punto dolente di eyeOS che espone se stesso ad attacchi al codice PHP.

chmod -R a+rwX /var/www/eyeOS[Invio]

Oppure:

chmod -R a+rwX ~/public_html/eyeOS[Invio]

Il file php.ini che segue va collocato nella directory eyeOS/ e una sua copia anche nella directory eyeOS/installer/:

memory_limit = 128M
display_errors = Off
post_max_size = 200M
upload_max_filesize = 100M
error_reporting = E_ALL & ~E_NOTICE
max_execution_time = 30
max_input_time = 60
allow_url_fopen = On
disable_functions =
safe_mode = Off
short_open_tag = On
magic_quotes_runtime = Off
file_uploads = On
cgi.force_redirect = 0

A questo punto si può accedere al programma di «installazione», ma in realtà è un programma di preparazione che modifica però il contenuto della directory eyeOS/ appena creata. Si tratta di accedere con il navigatore all'indirizzo http://localhost/eyeOS/installer/, ovvero a http://localhost/~utente/eyeOS/installer/, a seconda di come è stato collocato.

Figura 45.2. Primo avvio di eyeOS.

primo avvio di eyeOS

La maschera che si ottiene va compilata per attribuire la parola d'ordine che deve usare l'utente amministratore del sistema eyeOS (il nominativo di tale utente è root, come si fa nei sistemi Unix) e per stabilire se sia concesso agli utenti comuni di registrarsi automaticamente e senza formalità.

Figura 45.3. Compilazione della maschera di primo avvio.

primo avvio di eyeOS: compilazione

Si procede quindi alla «installazione», nel senso della sistemazione automatica della directory eyeOS/, dopo aver definito le informazioni amministrative fondamentali. A questo punto, però, è probabile che si presenti un errore, del tipo: «404 not found», perché dopo i cambiamenti che vengono apportati automaticamente, mancano certi permessi di accesso. Si procede quindi manualmente, una seconda volta, a cambiarli:

chmod -R a+rwX /var/www/eyeOS[Invio]

Oppure:

chmod -R a+rwX ~/public_html/eyeOS[Invio]

A questo punto si può ricaricare la pagina che prima dava la segnalazione di errore e si ottiene il primo vero avvio di eyeOS:

Figura 45.4. Login.

eyeOS: login

A seconda di come è stato configurato nella prima fase di installazione, può essere possibile aggiungere un nuovo utente, selezionando la voce {New User}; diversamente si può iniziare in qualità di utente root, e da lì procedere poi all'inserimento manuale dei nuovi utenti.

Figura 45.5. Inserimento libero di un nuovo utente.

eyeOS: nuovo utente libero

Figura 45.6. Utente root: preferenze di sistema.

eyeOS: utente root: preferenze di sistema

Figura 45.7. Utente root: creazione manuale di un nuovo utente.

eyeOS: creazione manuale di un nuovo utente

45.4.1   Manutenzione e ripristino dell'utenza amministrativa

Un'installazione di eyeOS 1,*, dopo che è stata definita la configurazione iniziale dell'amministratore, può essere copiata, tale e quale, in un'altra collocazione, o semplicemente archiviata per un'ulteriore installazione semplificata. Eventualmente è utile sapere che i dati principali delle utenze sono memorizzati nella directory eyeOS/eyeOS*/accounts/*/nome.xml; per esempio, le informazioni fondamentali dell'utente root potrebbero trovarsi precisamente nel file eyeOS/eyeOS*/accounts/rt4/root.xml:

<eyeUser>
       <username>root</username>
       <password>9cb6c50fd358a69956d44f4f2b5ed9ab</password>
       <email></email>
       <createDate>1312350725</createDate>
       <group>public</group>
       <lastLogin>1312351456</lastLogin>
</eyeUser>

Nel caso venga dimenticata o non si conosca la parola d'ordine dell'utente root, è possibile creare un'utenza comune, stabilendo una parola d'ordine, per poi copiarne la versione cifrata nel file di configurazione dell'amministratore. Per fare questo, ovviamente, è necessario che sia abilitata la facoltà di creazione libera degli utenti. Eventualmente si può intervenire nel file eyeOS/eyeOS*/system/conf/system.xml, dove va abilitata la direttiva ALLOW_USER_REGISTER:

<CONFIG>
        <ALLOW_USER_REGISTER>1</ALLOW_USER_REGISTER>
        <synellipsis>
</CONFIG>

Nello stesso modo, è sempre possibile in un secondo momento togliere la facoltà di aggiunta libera delle utenze, intervenendo nella stessa direttiva, mettendo il valore zero.

45.4.2   Installazione presso Altervista o un servizio simile

Per installare eyeOS 1.* presso un servizio come quello di http://altervista.org, si deve copiare un'installazione già completata (munita del file php.ini come descritto in precedenza), tenendo conto delle osservazioni fatte nella sezione precedente. È sufficiente che il linguaggio PHP sia interpretato correttamente e tutto dovrebbe funzionare correttamente, senza ulteriori complicazioni.

Figura 45.10. eyeOS dopo essere stato copiato su http://altervista.org. Si può osservare anche il fatto che sia stato cambiato il nome della directory eyeOS/, senza che ciò abbia comportato delle conseguenze sul funzionamento.

eyeOS: funzionamento presso Altervista

45.5   eyeOS 2.*

Le versioni 2.* di eyeOS sono un po' difficili da installare, perché richiedono che il sistema ospitante abbia dei requisiti specifici; in particolare serve che disponga di PHP 5.3, MySQL 5 e che il servente HTTP sia precisamente Apache 2. Nella spiegazione seguente si fa riferimento all'installazione di eyeOS 2.4.1.0 in un sistema GNU/Linux Debian.

Per prima cosa è indispensabile che nel sistema ospitante siano installati i pacchetti seguenti, con le rispettive dipendenze:

Name                  Version Description
=============================-==============================
apache2               2.x     Apache HTTP Server metapackage
mysql-server          5.x     MySQL database server
                               (metapackage depending on
                               the latest version)
build-essential       11.5    Informational list of
                               build-essential packages
libapache2-mod-php5   5.3.*   server-side, HTML-embedded
                               scripting language
                               (Apache 2 module)
libimage-exiftool-perl        Library and program to read
                               and write meta information
                               in multimedia files
libreoffice                   office productivity suite
php-pear              5.3.x   PEAR - PHP Extension and
                               Application Repository
php5                  5.3.x   server-side, HTML-embedded
                               scripting language
                               (metapackage)
php5-curl             5.3.x   CURL module for php5
php5-dev              5.3.x   Files for PHP5 module
                               development
php5-gd               5.3.x   GD module for php5
php5-imagick                   ImageMagick module for php5
php5-mcrypt           5.3.x   MCrypt module for php5
php5-mysql            5.3.x   MySQL module for php5
php5-sqlite           5.3.x   SQLite module for php5
python-uno                     Python-UNO bridge
unzip                          De-archiver for .zip files
zip                            Archiver for .zip files

Quindi occorre installare un'estensione al PHP, con il comando pecl:

pecl install uploadprogress[Invio]

Poi, per far sì che tale estensione venga presa in considerazione dal PHP, occorre intervenire in un file php.ini, aggiungendo la direttiva extension=uploadprogress.so. Ma questa viene inserita in un file php.ini complessivo di eyeOS, senza disturbare ulteriormente la configurazione generale del PHP.

È necessario intervenire comunque nella configurazione di sistema di Apache 2, modificando il file /etc/apache2/sites-available/default, nel modo evidenziato nel listato seguente:

<VirtualHost *:80>
        ...
        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        ...
</VirtualHost>

Inoltre, se si vuole concedere l'esecuzione di codice PHP nelle cartelle personali degli utenti, conviene intervenire nel file /etc/apache2/mods-available/php5.conf:

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the
    # following lines
    # (from <IfModule ...> to </IfModule>.)
    # Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    #<IfModule mod_userdir.c>
    #    <Directory /home/*/public_html>
    #        php_admin_value engine Off
    #    </Directory>
    #</IfModule>
</IfModule>

Infine, occorre accertarsi che Apache 2 applichi la riscrittura degli URI:

a2enmod rewrite[Invio]

Module rewrite already enabled

Avendo completato la sistemazione di Apache e del PHP, si può riavviare il servizio in modo da rendere attivi i cambiamenti:

/etc/init.d/apache2 restart[Invio]

Con MySQL occorre creare una base di dati, con un nome di fantasia, con un'accortezza: non va usato il nome «eyeos», altrimenti gli script di configurazione iniziale di eyeOS si confondono e sbagliano il procedimento. Per questo occorre intervenire nella base di dati in qualità di amministratore dei DBMS e logicamente MySQL deve essere in funzione:

/etc/init.d/mysql status[Invio]

MySQL is stopped..

/etc/init.d/mysql start[Invio]

Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..

mysql -u root -p[Invio]

Enter password: digitazione_all'oscuro[Invio]

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 300
Server version: 5.1.49-3 (Debian)
...

mysql> CREATE DATABASE nome_db;[Invio]

Query OK, 1 row affected (0.10 sec)

mysql> GRANT ALL ON nome_db.* TO nome_utente@'localhost' \
  \     IDENTIFIED BY 'mia_password';
[Invio]

Query OK, 0 rows affected (0.00 sec)

mysql> \q[Invio]

Bye

Si può quindi procedere con l'installazione del pacchetto di eyeOS, precisamente utilizzando il file http://sourceforge.net/projects/eyeos/files/eyeos2/eyeos-2.4.1.0.tar.gz/download; si suppone di averlo scaricato nella directory temporanea /tmp/:

mkdir /var/www/eyeos-2.4[Invio]

cd /var/www/eyeos-2.4[Invio]

tar xzvf /tmp/eyeos-2.4.1.0.tar.gz[Invio]

A questo punto, nella directory /var/www/eyeos-2.4/ va predisposto un file php.ini appropriato alle esigenze di eyeOS. In pratica serve il contenuto seguente:

memory_limit = 128M
display_errors = Off
post_max_size = 200M
upload_max_filesize = 100M
error_reporting = E_ALL & ~E_NOTICE
max_execution_time = 30
max_input_time = 60
allow_url_fopen = On
disable_functions =
safe_mode = Off
short_open_tag = On
magic_quotes_runtime = Off
file_uploads = On
cgi.force_redirect = 0
extension = uploadprogress.so
date.timezone = "Europe/Rome"

Quindi va sistemata la proprietà e i permessi dei file: purtroppo eyeOS deve scrivere nelle sue directory.

chown -R www-data:www-data /var/www/eyeos-2.4[Invio]

chmod -R ug+rwX /var/www/eyeos-2.4[Invio]

chmod -R o-rwx /var/www/eyeos-2.4[Invio]

Finalmente si può cominciare a comunicare con eyeOS, allo scopo di configurare il collegamento con la base di dati e per definire la parola d'ordine dell'utente amministratore di eyeOS stesso. Si usa il navigatore all'indirizzo http://localhost/eyeos-2.4/install. Se tutto va bene, si ottiene la schermata seguente:

Figura 45.22. Maschera iniziale del procedimento di configurazione di eyeOS. Da qui si prosegue selezionando la voce {Install eyeOS 2 on my server}.

eyeOS 2: maschera iniziale di installazione

Figura 45.23. Controllo delle componenti indispensabili a eyeOS 2. Successivamente si deve selezionare la voce {Continue with the installation}.

eyeOS 2: controllo componenti presenti

Figura 45.24. Qui si stabilisce il collegamento con la base di dati. A titolo di esempio, la base di dati creata in precedenza ha il nome nomedb, vi si accede con l'utenze nomeutente e la parola d'ordine miapassword (nascosta dai pallini). Si stabilisce anche che la parola d'ordine iniziale dell'utente root di eyeOS sia proprio «root».

eyeOS 2: definizione di base di dati e utenza amministrativa

Figura 45.25. Si conclude quindi l'installazione.

eyeOS 2: fine installazione

Terminata l'installazione si può passare all'indirizzo http://localhost/eyeos-2.4/ per verificare che tutto sia in ordine. Se funziona, si può cancellare la directory /var/www/eyeos-2.4/install/, perché è bene evitare di ripetere il procedimento di configurazione iniziale.

Figura 45.26. Avvio di eyeOS e identificazione dell'utente root di eyeOS stesso.

eyeOS 2: login root

Figura 45.27. eyeOS avviato.

eyeOS 2: avviato

45.5.1   Osservazioni su eyeOS 2.5

Il pacchetto di eyeOS 2.5 non funziona, perché mancano alcuni file. Per ottenerne una versione funzionante, occorre scaricare la versione 2.4.1.0 e aggiornarla con un pacchetto apposito. In pratica servono i pacchetti http://sourceforge.net/projects/eyeos/files/eyeos2/eyeos-2.4.1.0.tar.gz/download e http://sourceforge.net/projects/eyeos/files/eyeos2/eyeos-2.5-update.tar.gz/download. Quindi, nella directory /var/www/eyeos-2.5 si estraggono in successione:

tar xzvf /tmp/eyeos-2.4.1.0.tar.gz[Invio]

tar xzvf /tmp/eyeos-2.5-update.tar.gz[Invio]

Le altre operazioni si svolgono allo stesso modo già visto per la versione 2.4.

45.5.2   Riutilizzo di una versione 2.5 già installata

Si può fare a meno della procedura guidata di «installazione», se si è in grado di ricostruire la base di dati che serve a eyeOS. Per eyeOS 2.5 serve precisamente il codice SQL che dovrebbe essere disponibile presso allegati/eyeos/eyeos-2.5.sql.

In tal modo, dopo la preparazione della base di dati vuota, è possibile popolarla delle tabelle necessarie:

cat eyeos-2.5.sql | mysql -u utente_db -p nome_db[Invio]

Partendo dal pacchetto originario, è poi sufficiente modificare il file settings.php per far sapere a eyeOS quale base di dati contattare.

mkdir /var/www/eyeos-2.5[Invio]

tar xzvf /tmp/eyeos-2.4.1.0.tar.gz[Invio]

tar xzvf /tmp/eyeos-2.5-update.tar.gz[Invio]

Nel file /var/www/eyeos-2.5/settings.php occorre intervenire nelle righe nell'estratto seguente, sostituendo il testo in corsivo con i nomi della base di dati, dell'utente della base di dati e con la parola d'ordine relativa:

...
// STORAGE
define('SQL_HOST', 'localhost');
define('SQL_CONNECTIONSTRING', 'mysql:dbname=nome_db;host='.SQL_HOST);
define('SQL_USERNAME', 'nome_utente_dbms');
define('SQL_PASSWORD', 'password_db');
// NETSYNC 
define('SQL_NETSYNC_DBNAME', 'nome_db');
...

Nella tabella eyeosuser è memorizzata la parola d'ordine necessaria all'utente root di eyeOS. Nel caso dell'esempio, la parola d'ordine corrisponde a «root»:

CREATE TABLE IF NOT EXISTS `eyeosuser` (
  `id` varchar(128) NOT NULL,
  `name` varchar(40) NOT NULL,
  `password` varchar(40) NOT NULL,
  `primarygroupid` varchar(128) NOT NULL,
  `status` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`),
  KEY `primarygroupid` (`primarygroupid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `eyeosuser` (`id`, `name`, `password`,
                         `primarygroupid`,
                         `status`) VALUES

('eyeID_EyeosUser_root', 'root',
 'fff2b4cb565669376cf14c11154c9821b5a8855c',
 'eyeID_EyeosGroup_root', 0);

45.5.3   Installazione presso un provider HTTP esterno

Purtroppo, eyeOS 2.x richiede molto dal servente in cui si installa. Questo rende difficile il trovare un gestore esterno presso cui installarlo (al momento della versione 2.5 non esiste alcun servizio gratuito in grado di gestire eyeOS 2.x). In ogni caso, prima di perdere tempo a installare tutta la struttura di eyeOS, conviene limitarsi a copiare la directory install/, per verificare con il programma iniziale di configurazione se i requisiti principali sono soddisfatti o meno: se appaiono segnalazioni in rosso, come nell'esempio seguente, è meglio rinunciare subito.

Figura 45.30. Situazione in cui è meglio rinunciare all'installazione di eyeOS.

eyeOS 2: meglio rinunciare

Se si ha fortuna, l'installazione può essere tentata utilizzando poi la procedura guidata per la configurazione della base di dati e della parola d'ordine dell'amministratore, oppure si può usare il metodo descritto in precedenza, con il quale si carica un file SQL che produce le tabelle necessarie, con una parola d'ordine nota per l'utente root di eyeOS, modificando manualmente il file settings.php.

45.6   Lucid desktop 1.*

Lucid desktop(2) è un'applicazione «web» che si comporta come se fosse un sistema operativo grafico, in grado di eseguire applicazioni scritte in Javascript, utilizzando però le interfacce previste nel «kernel» di questo pseudo sistema. Qui si considera la versione 1.0.1 scaricata da Github.

Il sistema operativo ospitante Lucid desktop, deve disporre di un servente HTTP configurato in modo da poter funzionare con un interprete PHP e con un DBMS comune. Tuttavia, dalle prove fatte, sembra che solo Apache 2 sia adeguato al funzionamento di Lucid desktop.

Quando il sistema ospitante è in grado di far funzionare correttamente il PHP, si può procedere a scaricare la versione corrente di Lucid desktop presso http://github.com/lucid/lucid/:

git clone git://github.com/lucid/lucid.git lucid[Invio]

Cloning into lucid...
remote: Counting objects: 46095, done.
remote: Compressing objects: 100% (19258/19258), done.
Receiving objects: ...

Così facendo si ottiene la directory ./lucid/ contenente la distribuzione di Lucid desktop. Questa directory (con il suo contenuto) va collocata dove il servente HTTP può utilizzarlo: potrebbe essere la directory /var/www/lucid/ oppure ~/public_html/lucid/, o qualcosa di simile.

A questo punto, però, occorrerebbe intervenire nei permessi di accesso ai file, per consentire al servente HTTP di modificare il propri stessi file. Tuttavia, a differenza di altri sistemi del genere, come eyeOS, con Lucid desktop è più facile capire cosa deve essere accessibile in scrittura e cosa può rimanere protetto. Pertanto, inizialmente si lasciano le cose come sono e si attende il responso della procedura di configurazione iniziale.

A questo punto si può accedere al programma di configurazione. Si tratta di accedere con il navigatore all'indirizzo http://localhost/lucid/install/, ovvero a http://localhost/~utente/lucid/install/, a seconda di come è stato collocato.

Figura 45.32. Introduzione alla configurazione di Lucid desktop.

Lucid desktop: avvio della configurazione

Mano a mano che si compilano le varie schede si deve selezionare il bottone <->> che appare in basso a destra.

Figura 45.33. Scelta tra configurazione iniziale o azzeramento di una configurazione precedente.

Lucid desktop: tipo di configurazione

La maschera successiva riguarda il controllo dei permessi di accesso. È lo stesso sistema di configurazione che avvisa su quali directory occorre intervenire, come si vede nella figura successiva.

Figura 45.34. Controllo dei permessi non soddisfatto.

Lucid desktop: controllo dei permessi di accesso

Lasciando in sospeso il procedimento di configurazione, si interviene nelle directory indicate, cercando di fare il meglio possibile. Quello che viene richiesto, in pratica, è che il servente HTTP, funzionando con una certa utenza fittizia definita nel sistema ospitante, possa accedere, leggere e scrivere ai contenuti che si articolano a partire dalla directory specificate. Mano a mano che questi permessi vengono cambiati, la maschera si aggiorna; quando tutto è a posto, si può proseguire.

Figura 45.35. Controllo dei permessi soddisfatto.

Lucid desktop: controllo dei permessi di accesso soddisfatto

Si passa quindi alla scelta della base di dati: si può scegliere tra i DBMS più comuni; nelle due figure successive si vede la configurazione per SQLite e MySQL:

Figura 45.36. Configurazione di SQLite; in questo caso si fa riferimento alla base di dati collocata nel file /home/tizio/public_html/lucid/db.

Lucid desktop: utilizzo di SQLite

Figura 45.37. Configurazione di MySQL. Come si può intendere, sarebbe possibile attribuire un prefisso ai nomi delle tabelle, per poter utilizzare una base di dati che serve anche ad altre applicazioni con altre tabelle.

Lucid desktop: utilizzo di MySQL

Segue la configurazione dell'amministrazione.

Figura 45.38. Configurazione del nominativo usato per l'amministrazione, della parola d'ordine e di altre informazioni accessorie.

Lucid desktop: configurazione amministrazione

Figura 45.39. Ultimo controllo prima dell'applicazione della configurazione.

Lucid desktop: ultimo controllo

Figura 45.40. Conclusione.

Lucid desktop: conclusione

Va osservato che se si usa SQLite, il file in questione deve essere accessibile in lettura e scrittura dal servente HTTP, come già per le altre directory indicate espressamente dal procedimento di configurazione.

A questo punto si può rimuovere la directory lucid/install/, in modo da impedire che la configurazione possa essere rifatta e dall'indirizzo «normale», che secondo gli esempi sarebbe http://localhost/lucid/ ovvero http://localhost/~utente/lucid/, si ottiene il sistema funzionante.

Figura 45.41. Login.

Lucid desktop: login

Figura 45.42. Sessione dell'utente root.

Lucid desktop: sessione

Dal procedimento mostrato si intende che sia relativamente facile installare Lucid desktop anche in un servizio remoto che offre Apache2, PHP e MySQL, senza esigenze particolarmente difficili da soddisfare.

Va però tenuto in considerazione che la costruzione di applicazioni per Lucid desktop è più semplice rispetto ad altri sistemi simili. Il tutto è documentato nel sito di riferimento del progetto.

45.7   Feng Office

Feng Office(3) (ex OpenGoo) è un'applicazione «web» con lo scopo di organizzare l'attività di ufficio, consentendo la condivisione selettiva di parte delle attività e facilitando la comunicazione tra gli utenti in relazione alle attività svolte, con funzionalità vicine a quelle di Google documenti (http://docs.google.com) e di Zoho (http://zoho.com).

Il sistema operativo ospitante Feng Office deve disporre di Apache 2, PHP e MySQL. Prima di installare Feng Office è anche necessario predisporre una base di dati, sapendo comunque che è possibile condividerne una già usata per altre applicazioni. Nell'esempio successivo viene creata la base di dati fengoffice a cui si accede con un utente avente lo stesso nome.

/etc/init.d/mysql status[Invio]

MySQL is stopped..

/etc/init.d/mysql start[Invio]

Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing
tables..

mysql -u root -p[Invio]

Enter password: digitazione_all'oscuro[Invio]

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 300
Server version: 5.1.49-3 (Debian)
...

mysql> CREATE DATABASE fengoffice;[Invio]

Query OK, 1 row affected (0.10 sec)

mysql> GRANT ALL ON fengoffice.* TO fengoffice@'localhost' \
  \     IDENTIFIED BY 'password';
[Invio]

Query OK, 0 rows affected (0.00 sec)

mysql> \q[Invio]

Bye

A questo punto si può prelevare il pacchetto di Feng Office ed estrarlo in una collocazione che lo renda accessibile al servente HTTP. Per esempio potrebbe trattarsi della directory /var/www/ o ~/public_html/. Nell'estrazione viene creata la sottodirectory fengoffice/; qui si suppone di intervenire nella directory ~/public_html/ dell'utente appunti2, secondo il sistema ospitante, e che il pacchetto da estrarre si trovi in una directory temporanea:

cd ~/public_html[Invio]

unzip /tmp/fengoffice_1.7.5.zip[Invio]

Nelle figure successive si procede con la configurazione successiva di Feng Office.

Figura 45.49. Inizio della configurazione di Feng Office.

Feng office: installazione: inizio

Figura 45.50. Controllo dell'ambiente di lavoro: in questo caso è necessario sistemare i permessi di alcune directory, per permettere all'applicazione di scriverci all'interno.

Feng office: installazione: ambiente, controllo

È sufficiente intervenire nei permessi delle directory indicate, senza continuare ricorsivamente nel loro contenuto.

Figura 45.51. Dopo la modifica dei permessi richiesta, si può verificare nuovamente la situazione con il bottone <Try again>. In questo caso tutto è stato soddisfatto.

Feng office: installazione: ambiente, controllo, ok

Figura 45.52. Creazione delle tabelle necessarie a Feng Office. In questo caso la base di dati si chiama fengoffice e l'utente del DBMS definito originariamente per accedervi ha lo stesso nome.

Feng office: installazione: db

Figura 45.53. Conclusione della preparazione generale.

Feng office: installazione: conclusione

Al primo accesso al sistema di Feng Office, viene chiesto ancora di configurare l'utenza amministrativa.

Figura 45.54. Configurazione dell'utenza amministrativa.

Feng office: configurazione root

A questo punto, è possibile accedere. Naturalmente si può iniziare solo in qualità di utente amministrativo; poi, è possibile aggiungere altri utenti.

Figura 45.55. Login.

Feng office: login

La prima cosa importante che deve fare l'amministratore è l'inserimento delle altre utenze ed eventualmente dei gruppi e dei progetti di lavoro (workplace). Per questo si deve selezionare la voce {Amministrazione}, in alto a destra.

Figura 45.56. Menù amministrativo. Si può creare un'utenza selezionando la voce {Aggiungi utente}.

Feng office: menù amministrativo

Nell'approccio più semplice si aggiungono gli utenti soltanto, a cui si abbina semplicemente un proprio progetto personale e il gruppo predefinito. Durante la creazione degli utenti è possibile fare in modo che la registrazione si completi attraverso un messaggio di posta elettronica; tuttavia, per questo è necessario che nel servente che ospita Feng Office sia attivo un MTA (un sistema di trasferimento dei messaggi di posta elettronica). Se così non fosse, diventa necessario che la registrazione sia completata subito con l'inserimento della parola d'ordine dell'utente.

Figura 45.57. Maschera per l'aggiunga di un utente: parte superiore. La maschera appare inizialmente in forma sintetica, ma conviene aprirla per vedere tutte le impostazioni disponibili, selezionando la voce {See all user settings}, come in questa figura.

Feng office: aggiunta di un utente

Figura 45.58. Nello scorrere della maschera si può intervenire nei permessi operativi concessi all'utente che si va a creare: quelli predefiniti non consentono alcun tipo di attività amministrativa, ma nella figura si vede invece l'attivazione della facoltà di aggiungere propri progetti (workplace).

Feng office: aggiunta di un utente

Figura 45.59. In basso, è possibile definire la parola d'ordine, se si sceglie per non inviare una richiesta di conferma attraverso la posta elettronica.

Feng office: aggiunta di un utente

Sulla base degli esempi mostrati fino a questo punto, ogni utente viene creato un proprio progetto personale, avente lo stesso nome. Se poi agli utenti viene concesso di aggiungere altri progetti, questi possono intervenire nella voce {Aggiungi progetto} (add workplace) e {Modifica progetto} (edit workplace), che appaiono nella parte sinistra della superficie di lavoro dell'utente.

Figura 45.60. L'utente tizio che si accinge ad aggiungere un progetto.

Feng office: aggiunta di un progetto

Figura 45.61. Contestualmente all'aggiunta di un progetto, conviene definire i permessi di accesso degli altri utenti. Per questo va selezionata la voce {Modifica permessi} (edit permissions) e in questo caso si vede che all'utente caio viene concesso di partecipare solo alla gestione dei file.

Feng office: aggiunta di un progetto: permessi

Nell'ambito di ogni progetto è possibile gestire dei documenti, in modo simile a quanto si fa con Google documenti, con la differenza che la condivisione di questi deve avvenire a livello complessivo di progetto (nella figura precedente si abilita l'utente caio a partecipare ai documenti di tizio) e che la loro modifica, se concessa, non può avvenire simultaneamente. Pertanto, quando un utente vuole modificare un documento condiviso (proprio o di altri), deve prima bloccarlo, liberandolo solo dopo che ne ha salvato le modifiche.

Figura 45.62. L'utente tizio ha creato due documenti condivisi e si accinge a modificare il contenuto del primo; pertanto lo blocca per impedire un accesso concorrenziale.

Feng office: blocco di un documento

Come si può intendere dal procedimento mostrato per l'installazione di Feng Office in un proprio sistema, è abbastanza semplice anche l'installazione in un sistema remoto, dove sia possibile accedere ai file solo attraverso il protocollo FTP, anche perché in quel caso, i processi del servente HTTP e degli script PHP si trovano verosimilmente a funzionare impersonando l'identità dell'utente a cui appartengono i file che vengono caricati.

45.8   Google documenti

Google documenti è una specie di applicazione per l'ufficio (documento di testo, foglio elettronico, presentazione, ecc.) che consente il lavoro di gruppo, simultaneamente sugli stessi file. Il servizio di Google documenti è accessibile a chiunque disponga di un indirizzo di posta elettronica, oppure a chi ha già un'utenza Gmail (la posta elettronica di Google). Il servizio può essere usato, sia per la gestione di documenti, sia per l'archiviazione di dati in formati che Google non riconosce o non gestisce direttamente.

Chi dispone di un'utenza Gmail (http://mail.google.com) ha già accesso alle funzioni di Google documenti. Chi invece utilizza la posta elettronica presso un gestore differente, può registrarsi a Google documenti attraverso una procedura relativamente semplice, attraverso la quale ottiene però anche un'utenza per Gmail.

Figura 45.63. Fasi della registrazione al servizio di Google documenti, per chi non è già iscritto a Gmail. ogv http://www.youtube.com/watch?v=Ea2niDKa-Yo

registrazione al servizio di Google documenti registrazione al servizio di Google documenti registrazione al servizio di Google documenti registrazione al servizio di Google documenti

Durante la procedura di registrazione, Google richiede di inserire il proprio numero di telefono cellulare, o almeno un indirizzo di posta elettronica alternativo, che verrebbero usati solo per ripristinare l'utenza in caso di difficoltà.

45.8.1   Creazione, caricamento e gestione dei file

Google documenti è una specie di sistema operativo a cui si accede attraverso un navigatore comune. Tale sistema operativo offre un file system, gestito in maniera simile a quella di un sistema grafico strutturato in «cartelle» e un applicativo per l'ufficio, tutto in-linea. Vanno però osservate subito due cose importanti: le cartelle sono chiamate «raccolte» ed è consentito avere più file differenti, ma con lo stesso nome, anche se collocati nella stessa raccolta.

Si crea un file o una raccolta selezionando il bottone <Crea>, dal quale si ottiene un menù con i vari tipi di opzioni disponibili. Tutte le altre operazioni relative alla gestione dei file e delle cartelle creati, procedono in modo intuitivo, anche attraverso l'uso del tasto destro del mouse. Va però osservato che i file creati compaiono inizialmente in una classificazione speciale, denominata «home page», e anche quando vengono spostati in una raccolta, continuano a mostrarsi lì. I file e le raccolte che sono stati collocati consapevolmente, possono essere fatti scomparire dalla «home page», ma ciò potrebbe essere fatto anche per file non collocati diversamente. In ogni caso, se non si trova un file, si può usare la funzione di ricerca che riguarda principalmente il nome del file ed eventualmente anche il suo contenuto.

Questo video mostra la creazione di un paio di file, la loro collocazione in raccolte appropriate e l'uso del cestino: ogv http://www.youtube.com/watch?v=9tXjkjvMF60.

Un file può essere caricato nella gestione di Google documenti e archiviato tale e quale, oppure convertito nei formati di Google. La conversione consente successivamente la modifica dei file caricati e sarebbe la soluzione preferibile, tenendo conto però che file originali troppo complessi non vengono convertiti in maniera ottimale. Questo video mostra il caricamento di alcuni file, di cui solo uno viene effettivamente convertito in un formato di Google documenti: ogv http://www.youtube.com/watch?v=rcAshzi33Gg.

I file caricati o creati con Google documenti, possono essere scaricati, ovvero se ne può ottenere una copia presso il proprio elaboratore locale. A seconda dei casi, può essere necessaria una conversione; per esempio un documento di testo può richiedere di essere convertito in formato ODT, oppure DOC. Anche in questo caso, se si richiede la conversione, c'è però il rischio di perdere informazioni relative all'impaginazione originale. Questo video mostra lo scaricamento di un foglio di lavoro che viene convertito nel formato ODT: ogv http://www.youtube.com/watch?v=JpMhqI1ptqo.

45.8.2   Condivisione, nel senso di collaborazione e attribuzione di responsabilità

La condivisione dei file è l'aspetto più importante del servizio di Google documenti. Ogni file che viene creato o caricato, appartiene all'utente stesso e inizialmente è un file privato. Quindi è possibile estendere l'accessibilità di questo file, in lettura o anche in scrittura, a gruppi limitati di persone o a tutti indiscriminatamente. In questo video si mostra l'utente appunti2@fastmail.fm che condivide alcuni file con l'utente appunti2@gmail.com, concedendogli la facoltà di modifica: ogv http://www.youtube.com/watch?v=ddo8UR29sI0.

I permessi di accesso ai file hanno anche altre sfumature che, con lo sviluppo del servizio, potranno arricchirsi nel tempo. Le figure successive mostrano i casi principali con la spiegazione del significato che hanno.

Figura 45.64. Condivisione con chiunque; in questo caso si può cercare di rendere meno accessibile il file, limitando l'accesso solo a chi conosce il percorso necessario per raggiungerlo (il link), ma si tratta di una limitazione che può essere efficace solo per brevi periodi. Inoltre si può concedere l'accesso in scrittura o limitarlo alla sola lettura (ogv http://www.youtube.com/watch?v=GjyJNSYQZsE).

Google documenti: condivisione pubblica

Figura 45.65. Condivisione personale, controllando individualmente chi può accedere e come può farlo. In questo caso, se si immette un indirizzo errato o appartenente a una persona che non risulta iscritta a Google documenti, si ottiene un'icona confusa a fianco della condivisione. (ogv http://www.youtube.com/watch?v=apjzHhUPgVs).

Google documenti: condivisione personale

Figura 45.66. La condivisione con una persona che non risulta iscritta al servizio di Google documenti viene evidenziata da un'icona particolare. Quando non si è certi di un indirizzo con cui si condivide un documento, è preferibile evitare l'invio della notifica attraverso la posta elettronica, in modo da non importunare uno sconosciuto. (ogv http://www.youtube.com/watch?v=apjzHhUPgVs).

Google documenti: condivisione personale incerta

Figura 45.67. Agli utenti che possono modificare il documento condiviso, può essere concesso di aggiungere altre condivisioni, oppure si può riservare questa facoltà al proprietario. (ogv http://www.youtube.com/watch?v=KbQy-zo0D48).

Google documenti: condivisione ereditaria

I tipi file gestiti direttamente da Google documenti (quelli nel formato nativo di Google documenti) possono essere ceduti, nel senso che si può cedere la proprietà a un utente diverso, al quale precedentemente è stata concessa la condivisione.

Figura 45.68. Un file precedentemente condiviso, viene ceduto a un altro utente. (ogv http://www.youtube.com/watch?v=xHDNB5IzW9c).

Google documenti: cessione della proprietà

Si può rinunciare alla condivisione togliendo la propria «sottoscrizione».

Figura 45.69. Rinuncia a una condivisione. (ogv http://www.youtube.com/watch?v=OxlZBvi5uhc).

Google documenti: rinuncia alla condivisione

La cancellazione di un file condiviso ha implicazioni differenti: se il file non appartiene all'utente che lo cancella, ciò comporta al massimo la rinuncia alla condivisione; se invece appartiene all'utente che lo cancella, si richiede di scegliere se cancellarlo per tutti i collaboratori o se si preferisce cederne la proprietà a uno dei collaboratori esistenti.

Figura 45.70. Cancellazione di file, alcuni dei quali sono condivisi e appartengono all'utente che li cancella. (ogv http://www.youtube.com/watch?v=Uw3OiMZEa60).

Google documenti: cancellazione di file condivisi

Google documenti consente di operare sui file condivisi in modo simultaneo, visualizzando in tempo reale le modifiche apportate dagli altri collaboratori: ogv http://www.youtube.com/watch?v=9Q5PIt1YF1c. La cronologia consente di mantenere traccia delle modifiche e di attribuirle correttamente al responsabile.

45.8.3   Osservazioni e problematiche da considerare

Oltre ai file, anche le raccolte possono essere condivise, ma ciò comporta la condivisione implicita di tutto il loro contenuto. Pertanto, se successivamente si mette un file privato in una cartella condivisa, questo diviene accessibile con le stesse modalità della cartella che lo ospita.

I nomi dei file sono stabiliti e possono essere cambiati da chi ha i permessi di modifica su di essi. Ciò significa che se «tizio» crea il file «a» e lo mette in condivisione con «caio» consentendogli la modifica, «caio» può cambiargli nome, per esempio trasformandolo in «b». Ma la cosa più importante è che il cambiamento si trasmette a tutti gli altri collaboratori, proprietario incluso.

Quando si condivide un file e si invia la notifica attraverso la posta elettronica, occorre considerare che il volume delle notifiche può essere eccessivo per il destinatario, ma soprattutto, se si sbaglia indirizzo di condivisione, si rischia di importunare una persona diversa, probabilmente sconosciuta. Pertanto, quando si usa il servizio nell'ambito di un'attività già organizzata, è più prudente evitare l'invio delle notifiche, in modo da avere ancora la possibilità di correggere (annullando una condivisione errata), senza creare disagi inutili.

Google documenti è un vero sistema «cloud», dove l'elaboratore con cui si dialoga cambia nel tempo, anche durante il lavoro. Ciò comporta dei fenomeni che per i più possono risultare misteriosi. Per esempio, apparentemente in modo inspiegabile, può capitare che i comandi impartiti non diano esito, o che l'accesso a un file si blocchi improvvisamente. In tutti questi casi, l'unica cosa che si può fare è il tentare di ricaricare la pagina, attraverso il comando apposito del navigatore utilizzato per accedere al servizio. Infatti non bisogna dimenticare che si sta operando con un sistema remoto, eccezionalmente complesso, che sta servendo una quantità enorme di utenti simultaneamente.

Un altro aspetto della complessità del servizio comporta un problema subdolo per chi non se lo aspetta: la scomparsa dei file. Per comprendere la cosa, va prima considerata la modalità con cui Google documenti gestisce i file: i file (e le raccolte) sono entità numeriche che possono essere abbinate a una classificazione in raccolte. Va chiarito che possono, ma ciò non è obbligatorio. Per questo motivo, normalmente, i file e le raccolte che vengono creati o acquisiti attraverso le condivisioni, compaiono inizialmente nella classificazione generica «home page». Ma dalla «home page» i file e le raccolte possono essere fatti scomparire, e ciò è opportuno farlo quando si vanno a collocare in raccolte appropriate, ma lo si può fare anche se questi non sono ancora stati abbinati ad alcuna raccolta! Esiste sicuramente la possibilità di trovare i propri file nella classificazione denominata «tutti gli elementi», ma quando si gestiscono migliaia di file, questo elenco diventa ingestibile. Pertanto:

L'unico modo per gestire correttamente i file attraverso Google documenti è quello di usare regole precise nella denominazione, perché in caso di necessità si possa usare la funzione di ricerca per far riemergere i file apparentemente scomparsi.

L'attività con Google documenti è sottoposta a un certo tipo di controllo, automatico, volto a evitarne l'uso improprio. Quando il sistema di Google «sospetta» lo svolgimento di un'attività scorretta, tende a limitare le funzionalità accessibili. L'aspetto su cui Google documenti è più sensibile è la condivisione in massa di un documento; per esempio, se si deve condividere un documento con 30 persone, è necessario farlo in più fasi, durante le quali almeno alcune di queste persone devono aprire il documento, dimostrando la «sincerità» o l'approvazione dell'operazione.

45.9   Riferimenti


1) eyeOS   GNU AGPL

2) Lucid desktop   AFL: Academic Free License

3) Feng Office   GNU AFL: Affero General Public License

«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net