Topolinux 9 - Vecchiomago

Transcript

Topolinux 9 - Vecchiomago
Editoriale
D
opo circa due mesi e mezzo abbiamo prodotto un nuovo
numero dell’ezine.
Come al solito il lavoro per migliorare tutto il progetto sta togliendo moltissimo tempo alla stesura di nuovi articoli ed ecco quindi
spiegato questo ritardo rispetto alla cadenza più o meno bimestrale della rivista.
Questo numero vede la luce di una serie di articoli sulla tanto richiesta programmazione di script Shell.
Vedremo inoltre come installare Apache, Mysql e PHP sotto Linux, condividere risorse tra Linux e Windows tramite Samba ed
infine anche come divertirci un po’ tra giochi e musica.
Prosegue anche la rubrica recensioni dove, grazie a Venkè, è
stato redatto un articolo su Mandriva PowerPack.
Putroppo la sezione “Pillole” e “L’eco dei Pinguini” vede un po’ di
magra in questo numero, ma ci rifaremo per il prossimo. L’articolo
conclusivo sugli attacchi DDos a causa di alcuni problemi logistici
terminerà sul prossimo numero.
Se tutto procede come previsto, a breve TopoLinux avrà un nuovo vestito ;-)
Concludo questo editoriale, portandovi a conoscenza della “bacheca” dell’ezine, abbiamo infatti aperto all’interno del forum nella
sezione “Cose dal mondo” una bacheca dove potrete pubblicizzare i vostri lavori “Rigorosamente Open Source” e/o cercare collaboratori per crescita o realizzazione di progetti.
Ringraziamenti
Fabiana per il nome dell’e-zine;
Rockaffé per tutti i suggerimenti dati;
MakPaolo per il supporto con i CSS;
AngelinoAnt per il supporto hack phpBB;
ed in particolare tutti i membri dello staff!
Numeri arretrati
I numeri arretrati dell’e-zine sono disponibili
per il download sul sito e
consultabili on-line nella sezione ‘Arretrati’
Sito Web
http://www.topolinux.org
Forum
http://forum.topolinux.org
Newsletter
Per rimanere sempre informati
su tutte le attività riguardanti l’e-zine,
è possibile iscriversi sul sito
nella sezione ‘Newsletter’
Lettere alla redazione
[email protected]
Che altro dire?
Direttore:
Buona lettura e occhio al vestito.
Lemoeb ([email protected])
Redattore:
Neon ([email protected])
Correttore di bozza:
Rolly
Giornalisti freelance:
Stonedz
JoErNano
Collaboratori esterni:
Gil (OpenSourceMania.it)
Versione elettronica curata da:
DnDVault ([email protected])
Klaudia ([email protected])
Lemoeb
Copertina:
Klaudia ([email protected])
Copyright (c) 2007 Topolinux
è garantito il permesso di copiare, distribuire e/o modificare
questo documento seguendo i termini della Licenza per
Documentazione Libera GNU, Versione 1.1 o ogni versione
successiva pubblicata dalla Free Software Foundation; con le
Sezioni Non Modificabili Sommario e Lettere alla Redazione, con i Testi
Copertina “Topolinux l’ezine italiano completamente dedicato al Pinguino”.
Una copia della licenza è acclusa nella sezione intitolata “GNU FDL”.
SO MM A RI O
Recensioni
Mandriva PowerPack 2007: alcuni fastidi irrisolti.......................................................pag.
4
Shell
Shell script - Parte 1..................................................................................................pag.
6
Sistema
Condividere risorse a ritmo di Samba......................................................................pag.
Chmod e i permessi sui file......................................................................................pag.
Criptare un File System e montarlo al login.............................................................pag.
Installare Apache, PHP e MySQL..........................................................................pag.
10
16
19
22
Ambiente desktop
Col pinguino in sala giochi: Xmame........................................................................pag.
25
Uno studio musicale per GNU/Linux.......................................................................pag.
30
Pillole
Htop: Top all’ennesima potenza.............................................................................pag.
36
NTFS-3G..............................................................................................................pag.
36
Recensioni
Mandriva PowerPack 2007: alcuni fastidi
irrisolti
Alzi la mano chi non conosce Mandriva, e chi
non conosce il suo passato. Si può dire, in
due parole, che Mandriva è l’atto dell’acquisto
di Connectiva da parte di MandrakeSoft; un
tempo una società molto prospera, poi soggetta a cavilli burocratici e giudiziari, soprattutto per via del suo nome. Oggi questa crisi,
che ha avuto dei riscontri anche economici,
si è del tutto risolta, anche se oggi Mandriva
è soggetta ad un altro tipo di crisi, se così la
si può definire: dalle statistiche risulta che le
utenze di questa distribuzione stanno scendendo e non poco. Ma quali sono i motivi di
questo allontanamento?
vedremo, una piccola differenza fra il Centro
di Controllo della Free e quello della Powerpack c’è.
Che il test abbia inizio!
Il test è stato condotto su un CompaQ Presario V4000 (giusto per essere precisi). Molti la
conoscono, l’installazione di Mandriva, molto
simile a quella di Windows: elenco puntato a
sinistra, schermata al centro con i dettagli e le
opzioni. Tra i pacchetti proposti scelgo KDE
e GRUB (il bootloader di default è LILO). Ma
salta subito all’occhio una differenza, sia con
Windows, che con le altre distribuzioni: molta,
forse troppa, pubblicità, non solo nella Free,
ma anche nella versione a pagamento che
ho acquistato, che trovo alquanto fastidiosa.
Terminata la procedura di installazione, il PC
si riavvia da solo, ma ecco la prima pecca: il
programma mi ha rilevato automaticamente la
partizione di Windows, ma, cosa stranissima,
non mi ha rilevato ciò che è della stessa natura di Mandriva: la mia installazione di Ubuntu. Beh, è un problema che si può risolvere
in qualche passaggio, ma risulta ancora una
volta fastidioso.
Caratteristiche generali
L’avvio del DVD della versione commerciale
è stato identico a quello della versione Free:
nemmeno durante l’installazione era possibile
leggere da qualche parte la parola “Powerpack”, tant’è che ad un certo punto ho cominciato a preoccuparmi, pensando di aver
installato una semplice Free. Molti conoscono
com’è fatta Mandriva, e poco è cambiata: il sistema di gestione pacchetti “urpmi”, semplice
sia da riga di comando sia per via grafica, con
il programma rpmdrake, ma spesso impreciso
nella risoluzione di alcune dipendenze. I repository ufficiali, comunque sia, sono certamente più completi di quelli della openSuSE (vedi
n. 8 di Topolinux). Il Centro di Controllo completo e funzionale (ma, s’aggiunga, un po’ pesante) raccoglie un po’ tutte le impostazioni e
rende quasi inutile la riga di comando. Come
Il primo boot
Con già molto rancore mi accingo ad avviare
la nostra Mandriva Powerpack, che si presenta con un cursore “in attesa” molto carino, un
tema molto sportivo, seppure un po’ impreciso, e la schermata di benvenuto di Mandriva.
La scheda di rete wireless è subito rilevata,
Recensioni
cosa che non mi aveva fatto con la versione
Free, anche se bisogna attivare la connessione a ogni avvio. Stesso discorso vale per i plugin del browser: già installati nella Powerpack,
“acquistabili”, invece, nella Free. Essendo
questa la versione a pagamento, mi precipito
nel menù per scoprire qualche programmino
che nella Free, giustamente, non c’è. Ed ecco
spuntare LinDVD (Figura 2), Cedega, e tanti
altri programmini che fanno di questa distro
per molti aspetti una valida alternativa a Windows.
il vantaggio di essere gratuite e liberamente
scaricabili. Per fare un po’ di nomi, Kaffeine
e Mplayer, con gli opportuni codec, sono degli ottimi riproduttori. RPMdrake2 (Figura 4) è
quella che potremmo definire la versione riservata, alquanto elitaria, del gestore di pacchetti
di Mandriva. Differenze di sostanza non ce ne
sono: il motore è sempre lo stesso (urpmi) con
i suoi pregi e i suoi difetti. La differenza che
risalta maggiormente è la diversa interfaccia
grafica, più gradevole.
Peculiarità
Per tirar le somme
Senza ombra di dubbio essendo questa una
versione acquistata, non scaricata, contiene
materiale non necessariamente a sorgente aperto e sicuramente non gratuito la cui
qualità, in teoria, dovrebbe essere superiore
a quella dei programmi contenuti nella Free.
Segue una panoramica sui software esclusivi
presenti nel pacchetto. Il primo di cui parlo è
Cedega: molti lo conoscono, pochi lo hanno
provato. È un programma a pagamento, dal
costo di una ventina di euro, che permette di
far “girare” i giochi fatti per Windows sul nostro amato sistema operativo (Figura 3). Il
gioco che ho provato, Stronghold Deluxe, sicuramente un po’ datato, ha lavorato alla perfezione, tenendo conto, però, che è un gioco
che non necessita di alcun potente motore
3D. LinDVD, da quando è uscito, è considerato da alcuni la migliore soluzione sul mercato
per la riproduzione di DVD su Linux. Hanno
ragione a dire “sul mercato”. Infatti molte altre valide alternative non sono sul mercato,
sono altrettanto ottime (LinDVD è un gran bel
pezzo di software, inutile negarlo), ma hanno
Un prezzo e qualche programma non-free non
hanno fatto certo la differenza per una distro
che non migliora alcune importanti lacune di
base delle quali ho parlato poc’anzi: l’installer che non riconosce l’altra distribuzione sull’hard-disk, tanta pubblicità, un centro di controllo alquanto massiccio. Pochi come difetti,
ma molto importanti. Difetti che in una distro
del calibro di Mandriva (Powerpack a maggior
ragione) non deve, nella maniera più assoluta, avere.
Venkè
Shell
Shell script - Parte 1
Introduzione
tramite il comando chmod. Se non conoscete
questo comando, date uno sguardo all’articolo relativo presente su questo numero dell’ezine.
Si sente spesso parlare in ambiente Unix Like
di shell scripting o più semplicemente di
script.
Il nostro primo script
Ma cosa sono realmente gli script e soprattutto come prepararne di nostri?
Finalmente iniziamo a fare qualcosa di serio :
D
Durante questo corso cercheremo di fornire il
maggior numero di informazioni possibili per
la realizzazione di script con teoria ed anche
esempi pratici.
Tramite il vostro editor preferito (noi abbiamo
utilizzato il vi) create un file chiamato primo_
script.sh
Tutto il corso sarà basato sulla Bourne Again
Shell, una evoluzione della shell creata da
Stephen Bourne.
# vi primo_script.sh
ed inserite al suo interno le seguenti righe :
#!/bin/bash
Si presuppone che il lettore abbia un minimo
di dimestichezza con i comandi Shell e una
piccola infarinatura dei concetti base di programmazione.
#--------------------------------#
Come nostro solito, cercheremo di utilizzare
un linguaggio comprensibile anche a chi è digiuno di linux ;-)
#Titolo
: primo_script.sh #
#Autore
: lemoeb
#
#Versione
: 1.0
#
#Data
: Marzo 2007
#
#Data ult.mod. :
Fatto questo cappello, iniziamo a preparare il
tutto per il nostro primo script.
#
#--------------------------------#
Prepariamo l’ambiente
La pulizia e l’ordine sono una cosa fondamentale per non rischiare di avere molti script
sparsi ovunque per il nostro disco, quindi iniziamo a crare una bella directory dove sperimenteremo il tutto.
#
#
# Questo script visualizza sul
#
# terminale il messaggio
#
# “Questo è il primo script
#
# che ho realizzato”
#
#--------------------------------#
La directory che, con molta fantasia, chiameremo “corso_script_topolinux” conterrà tutte
le nostre sperimentazioni.
echo “Questo è il primo
script che ho realizzato”
# mkdir corso_script_topolinux
Salviamo il tutto.
Bene, ora che abbiamo creato la nostra directory, spostiamoci al suo interno
# cd corso_script_topolinux
Ora, prima di andare ad eseguire lo script e
vedere cosa fa, analizziamone le singole parti
per rendere più chiaro il tutto.
Siamo pronti? Iniziamo?
#!/bin/bash
Un momento! C’è da fare ancora una piccola
premessa!
Con questa riga specifichiamo al sistema quale shell deve utilizzare per l’esecuzione del
nostro script, in questo caso la shell bash.
Gli script devono essere eseguibili, no? Altrimenti che ci facciamo?
Il path dovrebbe essere corretto, in quanto di
default l’installazione di un sistema Unix Like
posiziona la Bourne Shell all’interno della di-
Bene, ricordatevi che una volta creato il vostro script, dovrete dargli i permessi esecutivi
Shell
rectory /bin.
./primo_script.sh
Nel caso dovesse trovarsi in una posizione
differente dovrete modificare la riga in questione.
darà come risultato:
#--------------------------------#
Variabili
#Titolo
: primo_script.sh #
#Autore
: lemoeb
#
#Versione
: 1.0
#
#Data
: Marzo 2007
#
#Data ult.mod. :
Questo è il primo script
che ho realizzato
Nell’esempio precedente abbiamo visto come
utilizzare il comando echo per mostrare frasi
“statiche” su schermo. Ora vediamo come richiedere e mostrare su schermo dati che vengono inseriti dall’utente. Il comando in questione è read
#
#--------------------------------#
#!/bin/bash
#
#
#--------------------------------#
# Questo script visualizza sul
#
#Titolo
: in-out.sh
#
# terminale il messaggio
#
#Autore
: neon
#
# “Questo è il primo script
#
#Versione
: 1.0
#
# che ho realizzato”
#
#Data
: Marzo 2007
#
#--------------------------------#
#Data ult.mod. :
Queste righe sono dei Commenti.
#--------------------------------#
I Commenti sono molto, e ripeto molto, importanti quando si scrive un qualunque programma, quindi imparate a scriverli anche se
vi fanno in teoria perdere tempo. Dico in teoria perchè vi posso assicurare che torneranno
utili, quando rimetterete mano al codice dopo
qualche tempo, soprattutto su script complessi.
#
#
# Questo script richiede una
#
# variabile all’utente e
#
# la mostra su schermo.
#
In ogni caso, spiegare cosa fa uno script in un
preciso punto aiuterà anche un utente futuro a
migliorarlo, o quanto meno a comprenderlo.
read a;
#
#--------------------------------#
echo “Scrivere il tuo nome:”;
echo “Tu ti chiami: $a”;
Come vediamo nella seconda riga dopo i commenti, il comando read permette di assegnare
un dato valore alla variabile attraverso l’inserimento di una stringa. Ora possiamo avere
questo dato “custodito” nella variabile $a. Con
l’ultima riga possiamo mostrare su schermo
sia una frase “statica” che la variabile catturata poco prima!
echo “Questo è il primo
script che ho realizzato”
Eccoci arrivati nel cuore vero e proprio del nostro script, la riga in cui viene eseguito il comando echo.
Cosa fa echo?
Il comando echo permette di stampare a video un determinato output, nel nostro caso la
stringa “Questo è il primo script che ho realizzato”.
Il risultato sarà:
Scrivere il tuo nome:
Tu ti chiami: ‘’valore
digitato con la tastiera’’
Ora che abbiamo spiegato tutte le righe di codice, andiamo ad eseguire lo script (ricordo
che vanno assegnati i permessi di esecuzione
prima).
Le variabili in bash sono molto facili da manipolare! Per esempio posso concatenare 2 variabili in una terza variabile molto facilmente:
Sistema
Esempio: Se $a valesse Topo e $b Linux
Il programma è uscito in maniera corretta e
restituisce 0.
c=$a$b;
$HOME
echo “$c”;
In questa variabile è presente il percorso della
home dell’utente in uso
c=$a$b;
Ritornerebbe TopoLinux
Esempio:
Ecco altri esempi utilissimi di manipolazione
di variabili in bash! Consideriamo sempre il
caso di:
$ echo $HOME
/home/neon
$ export a=”Topo”
$RANDOM
$ export b=”Linux”
$ echo $a
Genera un numero casuale ogni volta che viene richiamato il suo valore
Topo
Esempio:
$ echo $b
$ echo $RANDOM
Linux
13894
Numero di lettere:
$ echo $RANDOM
$ echo ${#a}
6858
4
$ echo $RANDOM
Manipolazione di caratteri
28458
$ echo $RANDOM
$ echo ${a:1}
11243
opo
$1 $2 ...
Mostra tutte le lettere dopo la prima
Sono il numero di argomenti passati ad un
programma
$ echo ${a:2}
po
Esempio:
$ echo ${a:0:3}
./mioscript.sh ciao diavolo 666
Top
La variabile $1 avra’ valore ciao, $2 avra’ valore diavolo, $3 avra’ valore 666
Utilizzando anche la variabile $b
$ echo ${a:0:3}${b:1}
Topinux
Mentre $# è il numero di argomenti passati
allo script.
Variabili importanti
Osservazioni
Alcune variabili di sistema che sono molto importanti da conoscere sono:
Le variabili in bash non sono tipizzate come
avviene in linguaggi come il C, C++, Java e
molti altri. Non devo decidere cosa verra’ immesso in una variabile, ma bastera’ assegnare
ad essa un valore perche’ venga “tipizzata”.
$?
Ogni programma che viene lanciato in shell,
una volta che esce, restituisce un valore che
viene inserito in $?. Esempio:
Esempio con variabile non dichiarata $a
$ whoami
echo $a
neon
let “a += 1”
$ echo $?
echo “a = $a”
0
1
Come vedete pur avendo inizialmente valore
Sistema
Conclusione della prima parte
nullo la variabile $a quando gli viene sommato
1 passa automaticamente a valore 1, pur non
essendo inizializzata e pur non avendo inizialmente valore 0!
Speranzosi di aver avuto un effetto fortemente catartico :) e sperando che sia stato tutto
chiaro, vi auguriamo una buona programmazione ed un arrivederci al prossimo numero in
cui tratteremo argomenti piu’ avanzati.
Lemoeb & Neon
Sistema
Condividere risorse a ritmo di SAMBA
Introduzione
possono effettuare il mount delle directory
condivise direttamente nell'albero del filesystem o, in alternativa, è possibile usare una
utility, smbclient installata con samba per leggere le directory condivise mediante un'interfaccia simile a quella del programma FTP via
linea di comando. Ogni directory può avere
differenti privilegi di accesso sovrapposti ai
normali privilegi UNIX. Per esempio: le home
directory potrebbero essere accessibili in lettura/scrittura a tutti gli utenti riconosciuti dal
sistema permettendo ad ogni utente di accedere ai propri file. Comunque potrebbero non
avere l'accesso ai file degli altri utenti a meno
che questo permesso non sia normalmente
previsto. Notare che /etc/samba/netlogon,
tipicamente distribuita come condivisione
in sola lettura, è la directory di logon per gli
script di logon dell'utente.
S
amba è un progetto open source che
fornisce servizi di condivisione di file e
stampanti a client SMB/CIFS, liberamente disponibile, al contrario di altre implementazioni SMB/CIFS, e permette di ottenere
interoperabilità tra Linux, Unix, Mac OS X e
Windows.
Samba è un software che
può girare su diverse piattaforme tra cui:
• Microsoft Windows
• UNIX
• Linux
• IBM System 390
• OpenVMS
La configurazione di Samba si ottiene modificando un singolo file (di solito presente come
/etc/smb.conf o /etc/samba/smb.conf). Samba può fornire anche script per il logon dell'utente e implementazione di policy di gruppo
attraverso poledit.
Samba usa il protocollo TCP/IP utilizzando i
servizi offerti sul server ospite. Quando correttamente configurato, permette di interagire
con client o server Microsoft Windows come
se fosse un file e print server Microsoft agendo
da Primary Domain Controller (PDC) o come
Backup Domain Controller, può inoltre prendere parte ad un dominio Active Directory.
Samba fu sviluppato originariamente per
UNIX da Andrew Tridgell alla Università Nazionale Australiana.
Samba, quindi, è un pacchetto software che
dà all'amministratore flessibilità e libertà in termini di installazione, configurazione, e scelta
di sistema operativo e hardware. Grazie a
questa ampia offerta, Samba è diventato molto popolare, e continua ad esserlo, ogni anno
sempre di più fin dal suo rilascio nel 1992.
In questo articolo impareremo a condividere
le risorse di rete tra Linux e Windows e viceversa.
Linux e le risorse condivise
con Windows
Il nome "samba" deriva dall'inserzione di 2
vocali nel nome del protocollo usato da Microsoft "SMB" (server message block). Originariamente si chiamava smbserver ma
fu cambiato a causa dell'azienda "Syntax"
che vendeva un prodotto chiamato TotalNet
advanced Server e possedeva il marchio SMBserver.
Iniziamo... la condizione base per usare samba è avere una macchina con una qualsiasi
distribuzione Linux installata, Samba client ,
Samba Server e smbfs sono solitamente tra i
pacchetti installati di default, ma se così non
fosse basta lanciarli col vostro package manager oppure andare sul sito ufficiale di Samba
- http://www.samba.org - e scaricarlo. Fatta
l’installazione aprite una shell e scrivete:
Samba configura share (condivisioni) per
le directory UNIX scelte (incluse le sottodirectory). Queste appaiono agli utenti di Microsoft Windows come normali cartelle di
Windows accessibili via rete. Gli utenti Unix
$ smbclient -L ip server-samba
ip è l’indirizzo della macchina dove sono condivisi i file, se si richiede una password immettetela. Apparira’ una schermata simile a
10
Sistema
quella riportata nel riquadro 1.
Come si può vedere appaiono il nome della macchina (Machine_Name), il sistema
operativo e poi una lista di voci. Quella che
a noi interessa è Sharename che e’ il nome
della condivisione e in questo caso particolare avremo: D. A questo punto occorre creare
una cartella dove visualizzare ciò che vogliamo vedere delle condivisioni col comando
mkdir.
$ mkdir /home/Machine_Name/shared
user@machine:~$ smbclient -L 192.168.0.100
Password: (digitate semplicemente INVIO)
corre configurare Samba, modificando il file
smb.conf. Questo file solitamente si trova
dentro /etc/samba/. In ogni caso è sempre
conveniente fare una copia di backup di questo file per evitare di compiere modifiche “pericolose”.
# cd /etc/samba
# cp smb.conf smb.conf.orig
# emacs smb.conf
Aperto questo file ne cancelleremo tutto il
contenuto e lo sostituiremo
con quanto riportato nel riquadro 2 presente in fondo
all’articolo.
Domain=[Machine_Name] OS=[Windows x.y] Server=[Windows 2003 LAN Manager]
Sharename Type Comment
Finita la sezione [global] si
passa ai vari servizi.
--------- ---- -------
Ipotizziamo che i nostri
utenti siano: Pippo, Pluto
D Disk
e Paperino e che siano diADMIN$ Disk Amministrazione remota
stribuiti in tre gruppi: Lavoro
(utente Pippo), Casa (utenDomain=[Machine_Name] OS=[Windows x.y] Server=[Windows 2003 LAN Manager] te Pluto) e Sport (utente PaServer Comment
perino). In questo caso potremmo creare un servizio,
--------- ------come se fosse una share,
Workgroup Master
di interscambio globale a
--------- ------cui tutti gli utenti hanno acRiquadro 1 cesso sia in lettura che in
una volta montata dentro la nostra cartella
scrittura, ma non vogliamo che ognuno possa
la risorsa di rete desiderata col comando semodificare/cancellare i file di un altro,usando
guente :
il smb.conf, in questo modo:
IPC$ IPC IPC remoto
$ mount -t smbfs //192.168.0.100/
D /home/Machine_Name/shared
nella cartella /home/Machine_Name/shared
avremo tutto quel che si trova nella risorsa di
rete D.
Nel caso ci siano user e passwd basta aggiungere l’opzione -o come l’esempio sotto
riportato:
mount -t smbfs -o username=username,
password=password //192.168.0.100/
D /home/Machine_Name/shared
NB: controllate sempre i permessi.
Windows e le risorse
condivise di Linux
Per visualizzare sulle macchine windows il
contenuto delle directory lnux condivise oc-
[Exchange]
comment = exchange
user = %S
path = /home/samba/exchange
browseable = yes
writeable = yes
public = yes
l’opzione user = %S permette l’accesso
a questo servizio da parte di qualunque
utente riconosciuto da samba.Path indica
il percorso della directory condivisa, a patto di
settare i permessi giusti affinché la directory
/home/samba/pub sia visibile dagli utenti.
Poi potremmo voler fare una condivisione per
ogni gruppo alla quale solo gli utenti di quel
11
Sistema
gruppo possono accedere sia in lettura che in
scrittura, così:
comment = Server Printer
[Gruppo]
printer name = printer_name
comment = Group reserved folder
public = no
user = %S
writeable = no
path = /home/samba/%G
printable = yes
browseable = yes
browseable = yes
writeable = yes
Anche qui settate i permessi giusti affinché la
directory /var/spool/lpd/printer_name sia visibile dagli utenti.
public = no
La variabile %G individuerà, di volta in volta, a quale delle sottocartelle, che si chiamano così come i gruppi (Lavoro, Casa e
Sport), indirizzare il servizio. Anche in questo caso occorre settare i permessi giusti
affinché le directory /home/samba/Lavoro,
/home/samba/Casa e /home/samba/Sport
siano visibili dagli utenti. Se si volesse
creare un servizio di utilità accessibile a tutti
ma in sola lettura e dove solo un utente, adeguatamente autorizzato, possa scrivere si può
procedere come segue:
[BullettinBoard]
comment = Bullettin Board
user = %S
path = /home/samba/BB
browseable = yes
ready only = yes
public = yes
admin users = Paperino
l’opzione admin users = permette di identificare un utente come amministratore di
quel servizio. Anche in questo caso ricordo di settare i permessi giusti affinché la
directory /home/samba/BB sia visibile dagli utenti.
Volendo estendere i diritti di amministratore
ad un intero gruppo si può procedere cosi:
admin users = @Sport
Potrei continuare pressapoco all’infinito col
fare esempi, ma siccome mi è seccato, mi fermo qui, aggiungendo soltanto una sezione di
esempio per le stampanti:
[SharedPrinter]
user = %S
path = /var/spool/lpd/printer_name
Configurazione delle
macchine Windows
Vediamo adesso cosa occorre impostare sulle
macchine Windows. Per prima cosa abilitate
la Condivisione di Files e Stampanti:
dal menu Start aprite Risorse di Rete. Poi fate
click su “Visualizza Connessioni di Rete” dal
menu sulla sinistra della finestra. Quindi selezionate la vostra connessione di rete LAN
e dalla finestra “Operazioni di Rete” scegliete “Cambia impostazioni della connessione”.
Dalla finestra che si apre verificate che la
connessione stia usando “Condivisione file e
stampanti”. In caso contrario installatela. Nella
stessa finestrella fate doppio click sulla voce
“Protocollo Internet (TCP/IP)” e assegnate alla
macchina un indirizzo IP e una subnet mask
coerenti con quelle presenti nella vostra rete
LAN. Infine dal menu Start fate click col pulsante destro su “Risorse del Computer”, scegliete la scheda “Nome Computer” e cliccate
su “Cambia”. Compilate il campo “Nome Computer” (questo sarà d’ora in poi il nome con cui
il PC comparirà nella rete) e il campo “Gruppo
di Lavoro”. Il campo Gruppo di Lavoro servirà
a raggruppare tutte le vostre macchine della
LAN e dovrà essere identico su tutti i PC.
Ora bisogna impostare le condivisioni.
Aprite una qualsiasi cartella del PC, andate
nel menu “Strumenti” -> “Opzioni Cartella” ->
“Visualizzazione” e togliete il segno di spunta
alla voce “Utilizza condivisione file semplice”.
Quindi navigate nel vostro filesystem alla ricerca delle cartelle che volete condividere. Quando ne trovate una, fateci click col pulsante destro e scegliete “Condivisione e Protezione”.
Nella scheda “Condivisione” potete impostare
12
Sistema
il nome della condivisione e le autorizzazioni
di accesso dalla rete alla cartella per gli utenti presenti sul PC. Nella scheda “Protezione”
potete impostare i permessi di accesso degli
utenti locali. permessi negati hanno la precedenza su quelli concessi! Se ad un utente viene negato il permesso di accesso dalla scheda “Protezione”, questo non potrà accedere
alla cartella nemmeno se abilitato attraverso
la scheda “Condivisione”
Quindi aprite Konqueror o Firefox e nella barra degli indirizzi digitate:
Quache esempio pratico su Linux: Nell’ipotesi
che usiate SUSE, selezionate System e poi
System Services (Runlevel) e abilitate i seguenti servizi:
Quindi spostatevi nella sezione “Global” e
configurate le seguenti voci:
localhost:901
Alla richiesta di login, inserite root con relativa
password.
Ora cliccate sul pulsante “Password”; nella
schermata che vi compare dovete aggiungere
gli utenti configurati sulle altre macchine, con
lo stesso nome di login e la stessa password.
• OS Level = 2
• Preferred Master, Local Master, Domain Master = No
nmb, smb, smbfs, xinetd
A questo punto, ritornati nella schermata principale di Yast, andate su Network Services ->
Samba Server. Dalla scheda Start Up / Avvio
Poi spostatevi nella scheda Identity / Identità
e riempite il campo Gruppo di Lavoro - Dominio con il nome del vostro gruppo di lavoro.
Nella voce Domain Controller scegliete No
DC e poi date un nome alla vostra macchina
Linux (sarà il nome con cui il PC comparirà
nella rete LAN). Aprite infine la voce Host Names e aggiungete i nomi e gli indirizzi IP delle
macchine della vostra LAN. Quindi chiudete
Yast.
Le voci precedenti vengono utilizzate quando
si imposta Samba come Controllore di Dominio di una rete Windows
• server string = Metteteci quello che volete. Sarà la stringa di commento riferita alla macchina Linux che comparirà
in Risorse di Rete dei PC Windows
• Host allow = bisogna mettere l'indirizzo di rete della vostra LAN. Esempio: se avete una LAN con indirizzi
del tipo 192.168.1.xx dovete scrivere
192.168.1. (con il punto finale!)
Swat
• Host deny = se avete un qualche specifico PC che volete escludere, mettete
il suo indirizzo qui.
Swat è l’utilità di configurazione di Samba via
browser. Non è strettamente necessario utilizzare swat per le configurazioni che seguiranno, ma spesso risulta essere una via semplice
e che, comunque, faccia bene conoscere più
strumenti di configurazione.
• User allow = metteteci i nomi degli
utenti che avete poco fa inserito
• root = sarà l'amministratore di Samba.
Metteteci root
Condivisione di files e cartelle
Ora non resta che condividere files e cartelle.
In KDE cliccate col tasto destro sulla cartella
da condividere andate alla voce “condivisione” e spuntate la voce “Enable local network
file sharing” e la voce “Advanced sharing” per
entrare nella gestione avanzata delle condivisioni. Dall’elenco delle directory condivise selezionate quelle su cui volete avere accesso
anche in scrittura e scegliete “Modifica”.
Poi spuntate le voci Public e Writable
A questo punto, attraverso il pulsante More
13
Sistema
Samba Option, potete entrare nella scheda
Users / Utenti. Lì potrete vedere l’elenco degli
utenti che avete inserito prima. Per ogni utente potrete cambiare le impostazioni di lettura,
scrittura, amministrazione come meglio credete.
re in grado di navigare nelle risorse condivise
della rete attraverso il comando
smb://nome_del_PC_Windows
digitato nella barra degli indirizzi di Konqueror.
In alternativa è possibile usare il programma
Smb4k.
Seguendo la stessa procedura potrete inoltre
aggiungere nuove cartelle condivise, oppure
cambiare le impostazioni di quelle già condivise, oppure ancora potrete impostare permessi differenziati di accesso degli utenti Samba.
Le finestre sono parecchio intuitive.
Konqueror e Nautilus con SAMBA
In fig. 1 e 2 abbiamo un esempio di richiesta di
autenticazione e visualizzazione dei pc delle
LAN visibili con Nautilus, mentre in fig. 3 abbiamo la stessa operazione effettuata invece
con Konqueror.
Discorso simile vale per GNOME.
Esplorazione della LAN
Se tutto è andato a buon fine, dovreste esse-
Figura 1
Figura 2
Figura 3
AntoFraGe
14
Sistema
[global]
#nome del gruppo di lavoro (il cancelletto indica un commento)
workgroup = WORKGROUP
hosts allow = 192.168.0.255
#le macchine (PC) aventi accesso a Samba, nell’ esempio tutta la rete che va 192.168.0.1 a 192.168.0.255
interfaces = 192.168.0.1/24 192.168.0.2/24
#individua la o le schede di rete abilitate per samba. Nell’ esempio si ipotizza che il server abbia
#due schede di rete: 192.168.0.1 e 192.168.0.2, il /24 sta ad indicare la maschera di rete.
wins support = no
#il nostro pc non ha il compito di registrare e risolvere i nomi windows, quindi questo
#supporto non occorre
security = user
#questo settaggio permette di autenticare in maniera sicura i nostri utenti al server Samba
log file = /var/log/samba/log.%m
#con questa opzione si scrive un file di accesso a Samba che verrà aggiornato per ogni macchina che si
#connette.
log level =2
#meglio non aumentare questo livello se non ci si vuole ritrovare dei log pieni di immondizia.
load printers = yes
printing = bsd
printcap name = /etc/printcap
#permette a Samba di mettere a disposizione della rete le stampanti configurate
#sul server. Da notare che non sempre printcap si trova dentro /etc, occorre
#localizzarlo nella propria distribuzione.
dns proxy = no
#non si vuol agire da DNS
netbios name = SambaServer
#questo è il nome con il quale il PC sarà visto in rete, personalizzabile a
#piacere.
browseable = yes
#obbliga la comparsa del nome netbios nei browsers
encrypt passwords = yes
#utilizzate questa opzioni se volete che i vostri client vengano riconosciuti
#dal sistema di autenticazione di GNU/Linux
smb passwd file = /etc/samba/smbpasswd
#file dove sono registrate le passwords degli utenti
config file = /etc/samba/smb.conf.%u
#questa opzione ci consente di utilizzare un altro file di configurazione al
#posto di smb.conf, per esempio:
#smb.conf.user nel caso di un file personalizzato per l’utente user, o usando %G
#per esempio: smb.conf.administrators se administrators è il gruppo primario di
#appartenza per quell’utente. Attenzione: tutti gli utenti e i gruppi di cui
#loro fanno parte devono essere
#inseriti sul sistema GNU/Linux anche se le loro passwords possono essere
#diverse da quelle di Samba.
Riquadro 2 - Esempio di file smb.conf
15
Sistema
Chmod e i permessi sui file
Introduzione
C
vidiamo i successivi in gruppi di 3
- | rw- | r-- | r-- |
osa sono i chmod? Ve lo siete mai
chiesto? Ne avete sentito mai parlare?
e diamogli un significato (vedere il riquadro
2).
Se non ne avete mai sentito parlare
ecco che lo faccio io, quindi dopo non potrete più dire “Non È/Non è una directory | Permessi proprietario
so cosa siano i ch|
rwmod”. ;-)
Detto in parole molto semplici i chmod sono i permessi di un file o
una directory che fanno capire al sistema cosa
si può fare o non fare per la risorsa relativa.
Prendiamo in considerazione il seguente file:
-rw-r--r-- 1 lemoeb sviluppo
2006-07-03 14:24 file1.txt
-rw-r--r--
Bene ora che li abbiamo individuati andiamo a
capire come interpretarli.
120 2006-07-31 16:17
3 root
-rw-r--r--
1 lemoeb users
836 2006-04-18 13:30
-rw-r--r--
1 lemoeb users
3309 2006-04-18 13:30
drwxr-xr-x
2 lemoeb sviluppo
144 2006-11-15 10:42
-rw-r--r--
1 lemoeb sviluppo
32 2006-07-03 14:24
-rw-r--r--
1 lemoeb sviluppo
40 2006-07-03 14:30 file2.txt
• x => Il file in questione è eseguibile
32
Da quanto detto prima ci rendiamo subito conto che non è una directory, il proprietario
gambas
può scriverlo e leggerlo,
hp_swap.inc.php
HP_swap_load_order.php il gruppo può leggerlo e
tutti gli altri utenti posimage
sono leggerlo.
file1.txt
drwxr-xr-x
• w => Il file in questione è modificabile/
scrivibile
|
Come leggere i permessi su file e directory
ormai credo che sia molto chiaro, ma come li
impostiamo?
Dove sono i chmod o permessi dei file? Presto detto nella prima colonna. esempio:
• r => Il file in questione è leggibile
r--
Come impostarli
ottenendo un output simile a quello riportato
nel riquadro 1.
• d => Il file in questione è una directory
|
Nel caso fosse stato una directory, il primo
carattere al posto del segno “-” sarebbe stato
“d”
# ls -l
I permessi sui file/directory sono identificati da
4 caratteri distinti :
r--
Riquadro 2
Per renderci subito conto di cosa sono i chmod
apriamo il nostro caro terminale e digitiamo:
Come si leggono
|
Ora è molto più chiaro no? Il file preso in considerazione non è una directory, è leggibile/modificabile da parte del proprietario e soltanto
leggibile da parte degli appartenenti allo stesso gruppo del proprietario e dagli altri utenti.
Per ogni singolo file o per ogni singola directory possiamo decidere chi può fare cosa
e chi no!
root
| Permessi gruppo | permessi utenti |
Decidiamo ora di voler dare il permesso di
Riquadro 1
scrittura/modifica anche al gruppo di appartenenza, cioè al gruppo
sviluppo.
Per impostare i permessi su un file/directory si
utilizza il comando chmod che sta per change mode secondo la seguente sintassi
# chmod PERMESSI file_su_cui_
modificare_i_permessi
dove i permessi possono essere modificati utilizzando il metodo simbolico o quello ottale.
Sorvolando per ora sul primo carattere suddi16
Sistema
Metodo Simbolico
Anche se definito da molti il più intuitivo e
semplice, lo trovo personalmente più complicato ma è questione di gusti ;-)
La forma sintattica per utilizzare questo metodo è la seguente:
A_CHI_DARE_I_PERMESSI - COSA_
FARE - QUALI_PERMESSI_DARE
Nel dettaglio :
A_CHI_DARE_I_PERMESSI può assumere i
seguenti valori :
• u => Utente e/o proprietario del file
• g => Gruppo di appartenenza o gruppo
del proprietario file
• o => Tutti gli altri utenti
• a => Tutti gli utenti indistintamente (è
l’opzione di default)
COSA_FARE può assumere i seguenti valori :
• + => Aggiunge i permessi a quelli già
esistenti
• - => Rimuove i permessi da quelli già
esistenti
• = => Imposta i permessi eliminando
quelli già esistenti
QUALI_PERMESSI_DARE può assumere i
seguenti valori :
• r => Permesso di lettura
• w => Permesso di scrittura
• x => Permesso di esecuzione
• s => Effettua il SET USER ID (Ne parleremo più avanti)
• t => Imposta lo Sticky Bit (Ne parleremo più avanti)
Viste ora le opzioni per ogni singola voce andiamo a permettere la scrittura del file in questione anche al gruppo utilizzando il seguente
comando :
# chmod g+w file1.txt
lanciando ora il comando ls noteremo un cambiamento nei permessi del file :
-rw-rw-r-- 1 lemoeb sviluppo
2006-07-03 14:24 file1.txt
32
Come si nota ora il file è modificabile anche
dal resto del gruppo e non soltanto dall’utente
proprietario.
Metodo Ottale
Il metodo ottale, ha le stesse funzionalità del
metodo Simbolico, con la differenza che ad
impostare i permessi sono dei numeri e non
delle lettere.
Escludendo per ora lo STICKY BIT e il SET
USER ID possiamo dire che l’impostazione
dei permessi avviene secondo la seguente
sintassi:
PERMESSI_PROPRIETARIO - PERMESSI_
GRUPPO - PERMESSI_ALTRI_UTENTI
I permessi vengono impostati effettuando la
somma dei numeri secondo la seguente tabella :
Numero Permesso
4
Lettura
2
Scrittura
1
Esecuzione
Facciamo un esempio pratico per chiarire meglio la cosa prendendo in considerazione il file
di prima.
-rw-r--r-- 1 lemoeb sviluppo
2006-07-03 14:24 file1.txt
32
Partendo dai permessi sopra riportati, vogliamo fornire al proprietario i permessi di
lettura,scritture ed esecuzione, al gruppo
quelli di lettura e scrittura e agli altri utenti soltanto quelli di lettura.
Lanceremo il seguente comando al prompt:
# chmod 764 file.txt
Perché proprio quel numero? È presto detto:
Permessi del proprietario:
4 (Lettura) + 2 (Scrittura) + 1
(Esecuzione) = 7
Permessi del gruppo:
4 (Lettura) + 2 (Scrittura) = 6
Permessi altri utenti:
4 (Lettura) = 4
Eseguendo ora il comando ls noteremo i nuovi permessi assegnati :
17
Sistema
-rwxrw-r-- 1 lemoeb sviluppo
2006-07-03 14:24 file1.txt
ATTENZIONE
32
L’uso di questo Bit può essere particolarmente pericoloso, quindi se ne consiglia
l’utilizzo soltanto dove ce ne sia veramente necessità.
Sticky Bit, User id
Abbiamo prima menzionato lo Sticky Bit e il
Set User id, cosa sono questi permessi particolari? È presto detto.
Directory e File
• Sticky Bit
L’impostazione dei permessi sulle directory
avviene nel medesimo modo dei file, quindi
utilizzando il metodo ottale o quello simbolico, c’è però da notare una piccola differenza
per quanto riguarda il significato dei vari permessi.
È il permesso per un utente proprietario
di una determinata directory di cancellare i file presenti in essa anche se non
possiede i permessi di scrittura su tali
file. Questa è l’impostazione di default
nei sistemi Unix Like.
Per rendersi meglio conto della cosa guardate
la tabella contenuta nel riquadro 3.
Nel caso non si volesse permettere al proprietario di cancellare i file senza possedere
il permesso di scrittura su di esso, si dovrà
impostare lo sticky bit
Conclusioni
Bene in questo articolo abbiamo visto come
modificare i permessi relativi a determinate
operazioni che un utente o un gruppo può/non
può effettuare sui file.
• Set user id
Questo particolare permesso viene impostato quando si ha la necessità di
far eseguire un comando/script da altri utenti, ma utilizzando i permessi del
proprietario anche se non lo si è.
Ora non andate in giro a dire che non conoscete il significato di chmod.
Alla prossima.
Permesso
Significato su file
Lettura
Il file risulta leggibile
Scrittura
Il file risulta scrivibile/modificabile
Esecuzione Il file può essere eseguito
Significato su directory
La directory presenta la lista dei file
È possibile creare nuovi file nella directory
È possibile accedere all’interno della directory
Riquadro 3
Lemoeb
18
Sistema
Criptare un FS e montarlo al Login
Un vecchio adagio recita “se vuoi conoscere davvero una persona, fruga sul suo harddisk”. Con le capienze degli attuali dischi rigidi, questa massima può essere ogni giorno
più vera, perché ognuno di noi può registrare
sul proprio sistema l’intera propria storia informatica: scambi di e-mail, conversazioni fatte
in chat, segnalibri del browser, documenti fiscali e finanziari, foto di famiglia... Ognuno di
noi, insomma, sul proprio computer può avere
dati che non gradisce che altri vedano.
Se è vero che i sistemi GNU/Linux, soprattutto
se aggiornati e sottoposti ad un serio hardening, sono relativamente sicuri contro attacchi
remoti, è altrettanto vero che non c’è nessun
tipo di protezione seria in caso di attacchi da
parte di persone che abbiano accesso fisico
alla macchina. I meccanismi di protezione del
login possono essere frantumati senza perder
neanche troppo tempo, basta inserire una distro live nel lettore e tutti i nostri dati sono lì,
aperti a chiunque rovisti (ed abbia un minimo
di competenza).
L’unica possibilità per mettere al riparo da occhi indiscreti dei documenti è che siano crittografati, resi, perciò, illeggibili a chiunque non
conosca la password.
dando a lui il lavoro di montaggio e smontaggio del file-system crittato al momento dell’accesso.
L’ideale è, ovviamente, crittare la propria cartella home, dove risiedono documenti ed impostazioni.
I comandi che riporterò in questo articolo sono
testati con Kubuntu 6.10 (Edgy Eft) e 7.04
(Feisty Fawn); dovrebbero essere utilizzabili
in maniera analoga sulle maggiori distribuzioni.
Preparare il kernel
Il metodo di crittazione che si è scelto è dmcrypt, installato a livello kernel e che interagisce con le API crypto per permettere una
crittazione “al volo” dei dati. L’algoritmo di codifica che useremo è l’AES 256bit (approvato
dalla National Security Agency statunitense).
Prima di tutto, accertiamoci se il nostro kernel
già supporta l’algoritmo AES, usando il comando
$cat /proc/crypto
Se il supporto per l’uso di AES è già caricato,
dovrebbe comparire un output di questo tipo:
name
: aes
driver
: aes-generic
module
: aes
priority
: 100
1. Trasparenza: non deve essere necessario decodificare il documento ogni
volta che lo si usa per ricodificarlo una
volta modificato;
refcnt
: 2
type
: cipher
blocksize
: 16
2. Semplicità: non devono esserci procedure tediose per accedere ai dati protetti, sennò dopo una settimana ci stufiamo;
min keysize : 16
3. Velocità: non deve esserci un significativo decremento prestazionale a seguito della crittazione dei dati.
$ sudo modprobe aes
Affinché la crittazione sia efficace e non ci
intralci il lavoro quotidiano, i requisiti che un
utente medio richiede sono fondamentalmente:
Il modo più comodo per raggiungere questi
traguardi è usare un modulo di crittazione fornito da Linux, interfacciandoci poi con PAM (il
sistema di autenticazione dell’utente) deman-
max keysize : 32
Se così non fosse, AES può essere caricato
con il comando
Successivamente, il modulo sarà caricato automaticamente quando necessario.
A questo punto installiamo i pacchetti necessari alla creazione delle partizioni crittate:
19
Sistema
$ sudo apt-get install
dmsetup cryptsetup
mapper/homesegreta che si comporterà esattamente come una partizione reale.
Carichiamo quindi il modulo dm-crypt del kernel
Ora creiamo un file-system nella partizione
virtuale
$ sudo modprobe dm-crypt
$ sudo mkfs.xfs /dev/
mapper/homesegreta
Se tutto ha funzionato, è possibile avere da
dm-crypt l’elenco dei target supportati con
$ sudo dmsetup targets
Dovrebbe essere fornito un output simile a
questo
crypt
v1.3.0
striped
v1.0.2
linear
v1.0.2
error
v1.0.1
Creare una partizione crittata
È necessario avere una partizione completamente vuota che in questi esempi chiameremo /dev/sdd1. L’uso dei prossimi comandi
distruggerà irrimediabilmente il contenuto di
questa partizione, quindi accertatevi che sia
vuota e che abbiate fatto un buon backup.
Utilizziamo quindi il comando cryptsetup per
creare un volume logico collegato alla partizione:
$ sudo cryptsetup -y create
homesegreta /dev/sdd1
Verrà domandata una password che sarà la
chiave (non modificabile) di crittazione della
partizione, quindi cercatela particolarmente
lunga, difficile, non mnemonica, con maiuscole
minuscole numeri e punteggiatura; soprattutto
non deve essere una delle vostre password
di accesso. Per una volta (una sola!) facciamo un’eccezione e scriviamola su un foglietto.
L’opzione -y serve a far richiedere due volte
la stessa password in modo da esser certi di
non aver fatto errori di immissione, altrimenti i
nostri dati andranno persi per sempre.
Montare la partizione crittata e
copiarci dentro la nostra home
Successivamente montiamo la nostra homesegreta in /tmp per potervi copiare sopra i nostri dati. Da ora in poi ad utente deve essere
sostituito il nostro nome d’accesso.
$ sudo mkdir /tmp/homesegreta
$ sudo mount /dev/mapper/
homesegreta /tmp/homesegreta
$ sudo rsync -aHPvu /home/
utente/ /tmp/homesegreta/
Il comando rsync si occupa di copiare tutti i
dati dalla nostra home alla partizione crittata.
Fatto questo, abbiamo una partizione contenente tutti i nostri dati crittati. Ma all’avvio
sono illeggibili, dobbiamo far sì che automaticamente all’accesso il sistema monti la nostra
home, sennò non potremo fare il login. Per far
questo dobbiamo chiedere aiuto a PAM (Pluggable Authentication Modules), il sottosistema
che si occupa dell’autenticazione degli utenti.
A lui faremo fare il lavoro sporco.
Installiamo i moduli di cui PAM ha bisogno per
montare l’unità crittata
$ sudo apt-get install
libpam-mount openssl
Modifichiamo (come root) quindi il file /etc/
pam.d/common-auth ed aggiungiamo questa
riga in fondo al file
auth
optional
pam_
mount.so use_first_pass
Ora possiamo controllare che il volume sia
stato creato con il comando
Modifichiamo poi (sempre come root) anche
il file /etc/pam.d/common-session ed aggiungiamo questa riga in fondo al file
$ sudo dmsetup ls
session optional
Dovrebbe apparire la lista dei volumi crittati,
come
Questa ultima modifica ha l’effetto collaterale,
talvolta un po’ sgradevole, di far richiedere la
password ad ogni cambio utente tramite i comandi su.
homesegreta (254, 0)
Il volume virtuale sarà montato come /dev/
20
pam_mount.so
Sistema
A questo punto dobbiamo spiegare a PAM
come montare il dispositivo.
Una piccola precisazione, prima. All’inizio dell’articolo ho suggerito di usare una password
difficoltosa, che non fosse la password di login al computer. Perché? Il motivo principale è
che buona norma vuole che periodicamente si
modifichi la password di login al computer; la
password di crittazione della partizione invece
non potrà essere mai cambiata una volta generata; secondariamente, se la password di
accesso fosse compromessa, non si desidera
che anche quella di crittazione lo sia.
Ora troviamo un modo efficace per nascondere la password di crittazione sul nostro PC in
modo che venga automaticamente utilizzata
al login.
Il modo più semplice è crittare la password del
volume, utilizzando la password di login come
chiave. Per far ciò utilizziamo OpenSSL
$ sudo sh -c “echo
‘passworddifficiledelvolumecrittato’
| openssl aes-256-ecb > /
home/utente.key”
Verrà chiesta una password che questa volta
dovrà essere necessariamente la password
che usiamo al login. Verrà quindi creato il file /
home/utente.key contenente la password crittata.
Ultimo passo: modificare il file /etc/security/
pam_mount.conf aggiungendo la linea
volume utente crypt - /dev/sdd1
/home/utente cipher=aes aes256-ecb /home/utente.key
In alternativa, se non volete creare il file /home/
utente.key è possibile (anche se lo sconsiglio)
utilizzare per la crittazione del volume la stessa password di login, e chiedere a PAM di
fornire a dm-crypt quella password anziché la
chiave crittata; in questo caso la linea poco
sopra diventa
volume utente crypt - /dev/sdd1
/home/utente cipher=aes - -
Da ultimo, se vogliamo che la nostra home
crittata venga smontata quando facciamo logout, modifichiamo (da root) il file /etc/login.
defs attivando l’opzione
CLOSE_SESSIONS yes
A questo punto potete riavviare il sistema,
fare login e controllare con il comando mount
il successo dell’operazione che dovrebbe darvi una linea del tipo
/dev/mapper/_dev_sdd1 on /
home/marco type xfs (rw)
Se tutto funziona (ed avete un backup completo) è il momento di cancellare le tracce:
date il comando history -c per cancellare le
tracce della password che avevate digitato
alla creazione, poi da telinit 1 smontate il volume crittato con umount /home/utente, cancellate il contenuto della vecchia home (che non
è crittata). Questi passi vanno fatti con estrema attenzione, controllando sempre almeno 3
volte quel che stiamo andando a fare, perché
ad un rm -rf non c’è rimedio e non voglio avere
i vostri dati sulla coscienza.
Fatto tutto, ricordatevi di distruggere il foglietto con la password!
Rolly
21
Sistema
Installare Apache, PHP e MySQL
Introduzione
Linux, come tutti sappiamo, è un sistema che
si presta molto bene a fungere da server, in
particolar modo da server web. Il più famoso è
sicuramente Apache (http://httpd.apache.
org), che è disponibile per molte piattaforme,
Linux, Windows, FreeBSD, e molte altre. Raccomando di scaricare la versione 2.2.4, che
è la più recente a disposizione al momento
della stesura di questo articolo. Apache da
solo, però, è molto limitato per la gestione di
un sito web, perché permette di fornire al visitatore del nostro sito solo pagine web statiche e file. Per ovviare a questo problema ci
viene in aiuto PHP (http://www.php.net/), il
famoso linguaggio di scripting Open Source.
A sua volta, però, PHP richiede un database
per poter memorizzare e consultare facilmente le informazioni di cui neccessitano i nostri
script e MySQL (http://www.mysql.com/) è
uno dei migliori DBMS in circolazione, ed è
fornito anch’esso sotto la licenza GPL. Linux,
Apache MySQL e PHP formano la piattaforma
LAMP
(http://it.wikipedia.org/wiki/
LAMP_(piattaforma) ), molto potente e diffusa. Dopo questa breve premessa, passiamo
alla guida pratica per installare e configurare
questi tre potentissimi strumenti liberi. Per prima cosa è necessario procurarsi i programmi
e, per mantenere questa guida il più indipendente dalla distribuzione utilizzata, il metodo
migliore è utilizzare i tarball contenenti i sorgenti.
Installazione di Apache
Una volta scaricato Apache da http://httpd.apache.org/, scompattiamolo
$ tar xvzf httpd-2.2.4.tar.gz
Naturalmente se avete scaricato una versione diversa dovete adattare anche il nome del
file nel comando. Passiamo quindi alla cartella appena scompattata e vediamo le opzioni
disponibili per la compilazione:
$ cd httpd-2.2.4
$ ./configure --help
Vi accorgerete subito che le opzioni sono molte, ho selezionato per voi le più rilevanti, --
enable-rewrite che abilita il mod_rewrite e
--enable-so che permette di attivare ulterio-
ri moduli in fase di runtime. Lanciamo quindi
configure e make rispettivamente per impostare le opzioni ed avviare la compilazione:
$ ./configure --enablerewrite --enable-so
$ make
Terminata la compilazione, bisogna installare
Apache, eseguendo come root il classico
# make install
A questo punto non resta che testare se Apache funziona, quindi avviamolo, sempre come
root:
# /usr/local/apache2/
bin/apachectl start
Andiamo ora con il nostro browser preferito
all’indirizzo http://localhost/ e dovremmo
vedere un trionfale “It Works!” a confermarci
l’avvenuta installazione e avvio di Apache.
Preciso di default la document root, cioè
la cartella radice del server è /usr/local/
apache2/htdocs. A questo punto fermiamo
il server per procedere all’installazione degli
altri programmi necessari, eseguendo come
root
# /usr/local/apache2/
bin/apachectl stop
Installazione di MySQL
A questo punto, dobbiamo installare MySQL,
non PHP, perché questo richiede la presenza del database per potersi compilare correttamente con il modulo per la connessione.
Andiamo su http://www.mysql.com/ e scarichiamo la versione 5.0.x, l’ultima stabile al
momento della stesura dell’articolo. Facciamo
attenzione a scaricare l’edizione “Community Server”, quella Open Source, sotto forma
di sorgenti, che troviamo in fondo alla pagina
che elenca i vari metodi per ottenere MySQL.
Possiamo trovare facilmente i sorgenti nella
pagina cercando il testo “Compressed GNU
TAR archive” con il browser (con FireFox basta premere Alt+F3). Una volta scaricato il file,
scompattiamolo, accediamo alla directory e
22
Sistema
lanciamo configure
$ tar xvzf mysql-5.0.33.tar.gz
$ cd mysql-5.0.33
$ ./configure
questa volta non è necessario lanciare ./configure --help perché le impostazioni predefinite dovrebbero andare bene praticamente
per tutti, ma nulla vieta di modificarle. Se ./
configure non riporta errori possiamo passare alla compilazione e, come al solito come
root, all’installazione vera e propria
$ make
# make install
Per il suo corretto funzionamento, MySQL richiede un suo utente e un suo gruppo nel sistema, provvediamo quindi a crearli, nel caso
non fossero già presenti, lanciando i seguenti
comandi come root:
# groupadd mysql
# useradd -g mysql -s /bin/false mysql
con groupadd aggiungiamo il gruppo mysql,
mentre con useradd aggiungiamo l’utente
mysql, appartenente all’omonimo gruppo e
gli assegniamo /bin/false come shell di
login, in modo che non gli sia possibile fare
il login nel sistema. Per maggiori dettagli su
questi comandi vi consiglio di leggere l’ottimo
articolo di Lemoeb che trovate sul numero 8
di TopoLinux. Adesso è necessario impostare
correttamente i permessi alle cartelle usate da
MySQL, con questi comandi, sempre come
root:
default è vuota. Per fare ciò eseguiamo il comando
# mysqladmin -u root password
[nuova password]
Naturalmente bisogna sostituire [nuova password] con la password che vogliamo utilizzare. Adesso è il momento di fermare MySQL
per passare all’installazione di PHP, con il comando
# mysqladmin -u root -p shutdown
Installazione di PHP
Una volta scaricato il file da http://www.php.
net/, scompattiamolo ed entriamo nella directory:
$ tar xvzf php-5.2.0.tar.gz
$ cd php-5.2.0
A questo punto, come per l’installazione di
Apache, lanciamo
$ ./configure --help
per vedere le opzioni disponibili, che sono ancora più di quelle di Apache. Genericamente,
$ ./configure --with-apxs2=/
usr/local/apache2/bin/apxs -with-gd --with-mysql
dovrebbe soddisfare la maggior parte degli
utenti, se pero desideraste una configurazione diversa sarebbe sufficiente modificare le
opzioni passate a configure. Su Debian Sarge
ho incontrato dei problemi di dipendenze, per
la mancanza di libxml2-dev, per installarlo
lanciamo come root
# chown -R root:mysql /usr/local/mysql
# apt-get install libxml2-dev
# chown -R mysql:mysql /usr/local/mysql/var
su questa distribuzione è stato necessario anche modificare i parametri passati a configure, in questo modo:
Adesso siamo pronti per testare se il nostro
database funziona, avviamolo e verifichiamo
se è correttamente in esecuzione con
# mysqld_safe --user=mysql &
# mysqladmin ping
Avrete notato la “&” dopo il primo comando,
ha lo scopo di mandare il processo in background. Il secondo comando dovrebbe restituire “mysqld is alive” come output, altrimenti
significa che c’è qualche problema. Un altra
cosa importantissima è cambiare la password
di root (di MySQL, non del sistema!), che di
$ ./configure --with-apxs2=/
usr/local/apache2/bin/apxs -with-gd --with-mysql --withzlib-dir=/usr/include
A questo punto compiliamo php:
$ make
terminata la compilazione, lanciamo i seguenti comandi come root per completare l’installazione.
23
Sistema
# make install
# cp php.ini-dist /usr/local/
apache2/conf/php.ini
# ln -s /usr/local/apache2/
conf/php.ini /etc/php.ini
Come chiaramente intuibile, il primo installa
PHP, mentre il secondo copia il php.ini di
default in /usr/local/apache2/conf/php.
ini. Il terzo non è indispensabile, ma suggerisco vivamente di lanciarlo: crea un link simbolico al php.ini nella cartella /etc, dove
normalmente risiede questo file, mentre io ho
preferito posizionarlo nella cartella dove si trova anche il file di configurazione di Apache,
per una questione di comodità.
Configurare Apache per usare PHP
Una volta effettuata l’installazione di PHP,
dobbiamo “istruire” Apache affinché passi a
questo i file .php, al fine di interpretarli. Per
fare questo, sempre come root, editiamo /
usr/local/apache2/conf/httpd.conf
e
aggiungiamo le linee seguenti linee, se non
sono presenti:
LoadModule php5_module
modules/libphp5.so
AddType application/x-httpd-php .php
Potrebbe darsi che le linee siano presenti, ma
commentate, cioè precedute da un #, che le
fa ignorare ad Apache al momento della lettura del file di configurazione; in questo caso
cancelliamo semplicemente il cancelletto. Bisogna ora trovare la linea
DirectoryIndex index.html
e sostituirla con
che index.htm e index.php. Il file indice è il
file che viene visualizzato automaticamente se
si accede al server digitando semplicemente
il nome della directory. Ad esempio, quando
accediamo a http://localhost/ richiediamo
la risorsa /, cioè la root di Apache, che grazie
all’impostazione di prima cerca in quella cartella un file con il nome uguale ad uno di quelli
impostati nella direttiva DirectoryIndex, nell’ordine in cui sono scritti. Salviamo ora il file.
Conclusione
A questo punto ci basterà avviare il server e
visualizzare un file che creeremo appositamente per verificare il corretto funzionamento
di PHP, tutto ciò verrà fatto eseguendo da root
questi comandi:
# /usr/local/apache2/
bin/apachectl start
# echo “<?php phpinfo(); ?>” > /
usr/local/apache2/htdocs/info.php
Se visualizzando la pagina http://localhost/info.php apparirà una schermata
che riepiloga la configurazione tutto funziona
come dovrebbe, se invece appare il contenuto
del file appena creato probabilmente la configurazione del file httpd.conf non è stata
eseguita nel modo giusto, oppure Apache era
già avviato al momento della sua modifica:
per riavviarlo lanciamo come root
# /usr/local/apache2/bin/
apachectl restart
A questo punto la nostra piattaforma LAMP
dovrebbe completamente attiva, a parte MySQL che bisogna avviare con
# mysqld_safe --user=mysql
DirectoryIndex index.
html index.htm index.php
Buon divertimento.
Questa modifica dice ad Apache di usare
come file indice non solo index.html, ma an-
24
Ambiente Desktop
Col pinguino in sala giochi: Xmame
Una domanda ai lettori…
Per installarlo nelle distribuzioni
Quanti di noi, fanno parte della cosiddetta “generazione dei videogames”? Quelli che hanno
speso ore in sala giochi da ragazzi e ricordano
nostalgici quei giochi che hanno fatto epoca,
come “GHOSTS’N GOBLINS” o “PANG”?
• redhat-like:
Per i nostalgici, (ma non solo per loro ) è nato
il progetto MAME, acronimo per Multiple Arcade Machine Emulator) è un software per
PC sviluppato inizialmente per MS-DOS e in
seguito per quasi tutte le macchine e sistemi
operativi in circolazione, in grado di emulare
varie piattaforme di gioco arcade. Lo scopo
di tale emulazione è quello di documentare il
funzionamento dei coin-up, preservare la storia dei videogame e di prevenire la sparizione
di vecchie rarità una volta che le macchine originali abbiano cessato di funzionare per motivi di obsolescenza.
• debian:
yum –y install xmame
• mandriva:
urpmi xmame
apt-get install xmame
• slackware:
o scaricare il pacchetto xmamex.y.z.tgz
o dare da root:
installpkg xmame
Una volta installato il programma si può dare
il via alla sua configurazione, ultimata questa
si potrà iniziare a giocare, a patto di avere le
ROM installate!!
Come funziona MAME
Xmame è la risposta per Linux del progetto
MAME, ovvero un emulatore di giochi arcade.
Per potere giocare a questi giochi è necessario scaricarsi l’emulatore Xmame e in seguito
i vari giochi contenuti in file .zip detti ROM. Il
sito di riferimento è http://x.mame.net e da
qui si può scaricare l’ultima versione dell’emulatore Xmame.
MAME è composto da varie parti che in pratica ricostruiscono via software tutte quelle circuiterie interne che permettono di gestire gli
input dei joystick, la gestione del monitor e dei
riproduttori di suoni. L’unica cosa che manca è
la parte software delle macchine, cioè le ROM
originali dei giochi, che per motivi di copyright
non possono essere distribuite legalmente.
Da un punto di vista logico MAME può essere
diviso in 3 livelli:
• Il primo livello si occupa dell'emulazione dell'hardware vero e proprio.
Qui è possibile scaricare la versione più recente di questo software, sia già pacchettizzato
per le distribuzioni più conosciute, sia disponibile sotto forma di sorgente. Il file è chiamato
xmame-x.y.z.tar.bz2.
• Il secondo livello contiene tutte le funzioni generali e i moduli che fanno da
collante tra il primo e il terzo livello.
• Il terzo livello è quello che "presenta"
l'emulatore all'utente. È composto dall'interfaccia grafica (se presente) e da
tutte quelle opzioni che permettono di
avviare e pilotare l'emulatore.
ROM… queste sconosciute…
In quasi tutti i giochi arcade i dati (software,
grafica, audio, ecc.) sono memorizzati in chip
di memoria di sola lettura (Read Only Memory,
25
Ambiente Desktop
• ROM Set Originale
ROM) sebbene in alcuni casi siano utilizzati
anche floppy disk, o CD-ROM. I dati contenuti in questi supporti vengono letti e riscritti
in file contenenti l’esatta copia del chip da cui
provengono attraverso un processo chiamato dumping. Tali file (indipendentemente dal
supporto dal quale provengono) vengono
chiamati ROM.
anche chiamato ROM Set Parent, questo set contiene tutte le ROM del gioco
che il team di sviluppo del MAME ha
definito come originale (alcune volte è
la versione più recente e completa del
gioco, altre volte è la prima e più tradizionale, altre volte ancora è la versione
mondiale o la più famosa). Le ROM di
questo set contengono tutte le informazioni per lanciare il gioco.
• ROM Set Clone
Solitamente un gioco è composto da più ROM
(alcune per l’audio, alcune per la grafica, ecc.).
L’insieme di tutte le ROM di un gioco prende il
nome di ROM Set.
sono varianti dei giochi originali, per
esempio versioni precedenti o successive o localizzate, che usano svariate
ROM identiche ad altre versioni dello
stesso gioco. Per risparmiare spazio
queste ROM duplicate vengono incluse
una sola volta nel set Parent, mentre il
set Clone contiene solamente le ROM
che lo distinguono dalle altre edizioni
del gioco.
• BIOS ROM Set
Il MAME gestisce i ROM Set in 2 modi:
• file CHD (Compressed Hunks of Data),
contengono le immagini compresse di
hard disk o cd
• file ZIP contenenti tutte le ROM
non sono veri e propri giochi, contengono delle ROM necessarie ad altri giochi
per poter essere eseguiti. Il BIOS (Basic Input/Output System) è un insieme
di routine di base che gestiscono le
varie componenti hardware della macchina del gioco. Queste immagini sono
particolarmente importanti per sistemi
che supportano più giochi quali il Neo
Geo.
Otternere una ROM utilizzabile
Le ROM dei giochi le potete scaricare da uno
di questi siti:
• http://www.mame.dk
• http://www.rom-world.com
I ROM Set sono gruppi di immagini delle ROM
che compongono lo stesso gioco. Ci sono 3
tipi principali di ROM Set:
Dovete registrarvi per potere scaricare i giochi. Riconoscerete il file del gioco perché la
parte prima dell’estenzione .zip è simile al
nome. In alcuni giochi, specialmente quelli della NeoGeo, dovete scaricarvi anche le
ROM della casa produttrice (neogeo.zip).
Si Gioca!
Xmame così com’è non ha frontend e quindi
bisogna specificare direttamente da linea di
26
Ambiente Desktop
comando il nome del gioco. Per fare partire
xmame la sintassi è:
E KDE e Gnome? Un frontend per Xmame
$xmame [opzioni] nomegioco
Finora abbiamo lanciato xmame da console,
ma non è detto che occorra sempre fare così.
Sia per KDE che per GNOME esistono vali-
Le opzioni di default vengono lette nei file di
configurazione.
Se specificate a linea di comando allora quelle
del file di configurazione vengono inibite. Per
avere la lista delle opzioni date il comando
“xmame --help”. Il nome del gioco altro non
è che il nome del file .zip esclusa l’estenzione .zip. Se per esempio ho scaricato King of
Fighters 2000, che ha per nome kof2k.zip,
darò il comando:
de interfacce grafiche (FRONTEND) che somigliano tantissimo all’interfaccia di MAME32
per Windows.
Sotto KDE basta installare kxmame e sotto
GNOME … gxmame!!!
Ecco qui come installarli (il discorso è identico
a quello fatto per xmame)
$xmame kof2k.zip
• redhat-like:
A questo punto parte il gioco. Se vi da errori
di NOT FOUND controllate dove avete messo la
ROM e specialmente se avete scaricato anche la ROM della casa produttrice (per Metal
Slug dovete scaricare due file: il gioco e neogeo.zip).
yum –y install {k|g}xmame
• mandriva:
urpmi {k|g}xmame
• debian:
apt-get install {k|g}xmame
Una volta partito, per inserire la moneta premete 5 e per giocare (1° giocatore) premete
1. Per avere la lista delle opzioni premete TAB.
Per avere la lista completa dei comandi leggete la documentazione nei sorgenti.
• slackware:
o scaricare
il
pacchetto
{k|g}xmame-x.y.z.tgz
27
Ambiente Desktop
o dare da root:
installpkg {k|g}xmame
Ecco un paio di screenshots di kxmame:
In entrambi i programmi, per settare i path degli eseguibili di xmame e delle roms basta utilizzare il menù Options->Paths. Un esempio
potrebbe essere:
• Xmame
executable:
/usr/bin/
xmame.{x11,sdl} (a seconda del vostro driver video potete ave bisogno di
una particolare versione dell’eseguibile)
• Roms
myRoms
Path:
/home/<username>/
A questo punto basta lanciare da File->Audit all games la scansione di tutti giochi
disponibili e selezionare un gioco con un doppio click.
FAQS più comuni su rom/emulatori
• Gli Emulatori sono legali?
ed eccone un paio di gxmame:
Dipende. Ci sono certi emulatori (come
quelli per la PS2) che richiedono il
BIOS della macchina da simulare: se
non si possiede il sistema originale (la
Playstation 2 in questo caso) è illegale
procurarsi il BIOS, quindi l’emulatore
diventa fuori legge. Gli altri emulatori
sono invece legali, sempre che l’uso
che se ne faccia sia corretto.
• E' vera legge delle 24 ore sulle
ROMs?
E’ falsa. Non esiste proprio una tale
legge sulle ROMS. E’ stata inventata
da qualcuno per giustficare il download/
upload di ROMS commerciali e quindi
illegali. Recita più o meno così: “Se non
si possiede il gioco originale le ROMS
scaricate vanno cancellate entro 24 ore
dal download”.
• Le ROMs sono legali?
Se le ROMS riproducono giochi freeware oppure di “pubblico dominio” sono
legali al 100% mentre se sono ancora in commercio o ancora supportati
dalla casa sviluppatrice sono illegali.
E’ comunque illegale vendere ROMS
freeware o di “pubblico dominio”, discorso simile alla distribuzione di giochi Abandonware
• ROMs di pubblico dominio: cosa signi28
Ambiente Desktop
fica?
Le ROMs di pubblico dominio (public
domain) sono ROMS di giochi creati
da programmatori non professionisti o
che comunque non lavorano per case
sviluppatrici di videogiochi. Provengono anche da programmatori dilettanti
che cercano una certa visibilità del loro
lavoro. Queste ROMS non sono commerciali e possono essere redistribuite
liberamente ma non a scopo di lucro.
• I giochi Abandonware sono legali?
• Certe ROMs non funzionano. Perché?
Assicurati di aver scaricato e avviato
l’emulatore apposito. Ci sono diversi emulatori per la stessa piattaforma
e non tutti girano con lo stesso tipo di
ROMS. Quelli sul sito sono quelli che
si abbinano con le ROMS che offriamo.
Se il problema riguarda il MAME 32
puoi trovare la soluzione nelle sul sito
ufficiale dell’emulatore.
• Giochi Abandonware: cosa sono?
I giochi Abandonware sono quei videogiochi (o programmi) che non sono più
in commercio, hanno almeno 5 anni di
età e non sono supportati dalla casa
produttrice: cioè non ne paga più i diritti. Generalmente si intendono come
giochi per PC o Mac ma possono considerarsi tali anche le ROMS per giochi
di altre piattaforme (console), purchè
rispodano ai requisiti sopracitati. Il sito
li offre in tutti e due le modalità.
La distribuzione di giochi Abandonware
non crea nessun danno economico alle
software house o all’autore del videogame. Non sono propriamente legali
ma la loro distribuzione è ampiamente
tollerata, purchè non sia a scopo di lucro.
Buon divertimento ;P
AntoFraGe
29
Ambiente Desktop
Uno studio musicale per GNU/Linux
Introduzione
A tutti i musicisti ai quali è stato detto: “Sì ma
per fare musica col tuo PC ti ci vuole il m*c! altrimenti non vai da nessuna parte!”, o “eh ma
senza C*base cosa vuoi fare, è il software di
riferimento!”, oppure anche “GNU/Linux non
è adatta come piattaforma per fare musica”,
voglio io dire qualcosa: è possibile utilizzare
il nostro sistema operativo e strumenti liberi
per mettere su un completo studio musicale
professionale. E con l’aggettivo professionale non voglio solo rappresentare l’alta qualità
del risultato ottenibile, ma proprio indicare che
l’utilizzo di GNU/Linux per fare musica con il
proprio PC è possibile in ambito professionale.
Cercherò, in questa serie di articoli che inizia
oggi, di spiegarvi le basi di quella che viene
definita Computer Music, con particolare attenzione a quelle che sono le applicazioni utilizzate durante tutto il processo di produzione
musicale. Sarà poi interessante vedere con
esempi pratici cosa realmente siamo in grado
di fare, ma vediamo innanzi tutto la struttura di
questo e degli articoli a venire, così da avere
una visione d’insieme un po’ più dettagliata:
I° articolo:
• Presentazione della serie di articoli e
definizione degli obiettivi.
• Preparazione generale e consigli sul
materiale necessario.
• Jack, il server audio a bassa latenza.
II° articolo:
• Ardour, il cuore del nostro studio.
• Hydrogen, una potente drum machine.
• Un primo esempio di registrazione, ovvero “ripasso generale”.
III° articolo:
• Sintetizzatori, ovvero “non si esce vivi
dagli anni '80”.
• La masterizzazione con Jamin.
• Considerazioni finali e idee per il futuro.
Il contenuto degli articoli successivi a quello
che state leggendo potrebbe variare per mia
insindacabile scelta, ne sarete naturalmente
avvertiti. Nel caso invece vogliate che vengano affrontati altri argomenti in particolare,
basta che me lo facciate sapere, ad esempio
utilizzando il nostro bel forum.
Termino questa introduzione specificando
che non sono un musicista professionista (per
ora...), tanto meno sono un tecnico del suono o qualsiasi altra figura professionale vagamente avvicinabile a questa, non prendete
quindi per oro colato tutto quello che leggerete; cercherò di essere il più chiaro possibile,
ma non investite tutto il vostro capitale in uno
studio musicale basandovi su questi articoli, o
quantomeno aspettate di averli letti tutti.
Preparazione e materiale
Tutto ciò di cui abbiamo bisogno per iniziare
a lavorare è in realtà un sistema GNU/Linux
funzionante e possibilmente aggiornato, equipaggiato di una scheda audio con almeno una
line-in e opzionalmente una mic-in. Naturalmente ci vorrà anche qualcosa per produrre i
suoni che andremo a registrare, ma parleremo
di questo aspetto in seguito. La maggior parte
di questo capitolo non sarà strettamente legata al nostro sistema operativo, ma mi sembrava utile introdurre alcuni argomenti tecnici che
mi avrebbe fatto comodo conoscere le prime
volte che mi sono avvicinato a questo mondo.
Non è necessario che capiate tutto, né tanto
meno che ricordiate tutto, tenete solo quello
che eventualmente vi potrebbe essere utile.
Le schede audio si occupano principalmente
di fare una cosa: convertire un segnale digitale in un segnale analogico e predisporlo per
l’uscita , oppure convertire un segnale analogico in entrata in uno digitale, per essere in
seguito utilizzato dal software appropriato.
Mentre la prima conversione (effettuata da un
così detto DAC), ci interessa, per il momento,
in maniera minore, soffermiamoci sulla seconda (effettuata invece da un ADC), visto che è
proprio quello che andremo a fare nel corso di
questi nostri articoli: inviare alla nostra scheda
audio dei segnali analogici affinché vengano
30
Ambiente Desktop
convertiti in dati digitalizzati, pronti per essere
utilizzati dalle nostre applicazioni.
La prima considerazione importante da fare è
la differenza che intercorre tra una line-in e
una mic-in: la prima entrata accetta segnali al
così detto “livello di linea”, ovvero segnali con
un determinato voltaggio (+4dbu o -10dbV in
linea di massima), abbastanza “forte” per poter essere utilizzato tranquillamente dal convertitore; la linea mic-in invece è normalmente
fornita di un pre-amplificatore per aumentare
il livello di un segnale, che altrimenti sarebbe troppo basso. Possiamo quindi immaginare a questo punto che, ad esempio, la nostra
chitarra elettrica non potrà essere attaccata
semplicemente alla line-in, in quanto il segnale che esce dai pick-ups è troppo basso, come
per il microfono dovrà essere pre-amplificata.
Da notare anche che il pre-amplificatore nella
linea mic-in è di solito di pessima qualità, o
comunque talmente misero da non meritare la
nostra attenzione.
Ad esempio, per un microfono, si potrebbe
optare per un pre-amplificatore esterno e poi
collegarlo normalmente alla line-in, per gli
strumenti a corda elettrici, invece, potremmo
usare l’uscita “line out” del nostro amplificatore normale (ove presente), oppure optare per
un simulatore di pre-amplificatori elettronico
(ottima scelta se posso dare la mia opinione),
e così via. State sempre attenti a quello che
fate, si tratta comunque di energia elettrica,
potreste rovinare il vostro materiale o anche
prendervi la scossa se non sapete cosa state
facendo. Per esempio, un basso elettrico attivo non avrà bisogno di pre-amplificazione, ma
lascio a voi tutte le varie declinazioni di questi
rapidi consigli per l’uso.
Un altro aspetto al quale fare attenzione è
quello delle connessioni, che possono essere di tre tipi diversi, fate quindi riferimento al
vostro materiale per sapere quale tipo di cavo
e jack usare. La prima tipologia di connessione è quella detta sbilanciata (mono), ovvero
un solo segnale trasportato attraverso una
sola connessione. Poi c’è la connessione stereofonica, due segnali (destra “R” e sinistra
“L”) trasportati su due canali diversi. Infine
ci sono le connessioni bilanciate, utilizzatissime in ambito professionale o, comunque,
in qualsiasi situazione si voglia minimizzare
le interferenze nella trasmissione del segnale; con questo tipo di connessione, infatti, si
trasmette un solo segnale su due connessioni diverse con polarità opposta, il segnale in
uscita sarà la differenza tra i due, con la conseguenza di eliminare eventuali interferenze
(visto che saranno verosimilmente uguali per
le due connessioni). Alcuni di voi, magari, si
chiederanno come mai ho insistito su questo
aspetto: almeno ora sapete, o potete arrivare a comprendere, cosa succede se ho una
scheda audio che accetta entrate bilanciate
ed io fornisco un segnale stereofonico (visto
che i jack e i cavi sono identici).
Qui termina questa veloce carrellata su tutto
ciò che sta “al di fuori” del nostro computer,
dovremmo avere capito un po’ meglio come
poter inviare un qualche input alla nostra
scheda audio, e come assicurarci che tutto sia
collegato in maniera corretta.
Jack, il server audio a bassa latenza
Jack[1], come al solito nel mondo del pinguino, è un acronimo che sta per “Jack audio
connection kit”, ma più che di un kit si tratta di
un server audio, che offre due interessantissime prerogative: è stato creato con in mente
la bassa latenza, e permette all’utilizzatore di
connettere applicazioni e dispositivi hardware,
proprio come se fosse in uno studio musicale
con cavi e jacks reali. Vediamo in maniera più
approfondita cosa significhino praticamente
queste due caratteristiche.
Per latenza (in questo specifico contesto) si
intende quel lasso di tempo che trascorre tra
un evento (segnale) in ingresso ed il suo effettivo utilizzo; ad esempio il lasso di tempo
che trascorre da quando suono la corda della
mia chitarra a quando il suono viene registrato dalla mia applicazione. Jack si propone di
lavorare con la minore latenza possibile, sfruttando anche le capacità realtime del kernel linux. In pratica cercherà di eseguire quello che
gli viene chiesto, ovvero dirigere i vari flussi di
segnali tra le varie applicazioni e i vari dispositivi audio, in un lasso di tempo massimo prestabilito impostato dall’utilizzatore. In parole
povere, se impostiamo 20 millisecondi come
tempo di latenza massimo, jack si impegnerà,
per quanto possibile, a rispettare questo tempo come limite superiore al quale operare nel
31
Ambiente Desktop
trasporto del segnale. La bassa latenza, come
è facile immaginare, è un aspetto fondamentale nella registrazione musicale, basti pensare a cosa succederebbe registrando una voce
su di una base già registrata con una latenza
di 500 millisecondi.
prodotto. Per prima cosa dobbiamo installarlo,
non ci dovrebbero essere problemi da questo
punto di vista in quanto le maggiori distribuzioni lo hanno pacchettizzato, anche se il nome
del pacchetto potrebbe variare: jack, jackd,
jack-connection-audio-kit. Insieme al
server vero e proprio
vi conviene installare
Qjackctl [2], indispensabile interfaccia grafica che facilita di molto
la gestione di Jack. Nel
caso abbiate problemi
fate riferimento alla documentazione della vostra distribuzione. Una
volta installati questi
due pacchetti con tutte
le loro dipendenze siamo pronti a cominciare.
Visto che Jack si basa
su ALSA per interfacciarsi con i vostri dispositivi audio, non c’è
bisogno di nessuna
configurazione da queFigura 1 - GUI di configurazione di Jack sto punto di vista, è invece utile controllare
Il secondo aspetto è quello dei collegamenti:
che sia possibile sfruttare le capacità realticome detto in precedenza Jack permette di
me del kernel linux attraverso Jack. La cosa
connettere interfacce audio (la vostra scheda
più semplice è provare se tutto funziona così
audio ad esempio) ad applicazioni, applicacom’è: facciamo partire qjackctl da utente
zioni ad interfacce audio ed anche applicazionormale, e tramite il pulsante “Setup...” apriani ad altre applicazioni. Ma cosa si intende per
mo la finestra di configurazione come nell’im“connettere”? Pensiamo ad un unico segnale
magine che segue (figura 1). Assicuriamoci
che entri dalla nostra scheda audio attraverso
quindi che l’opzione “Realtime” sia attivata,
la line-in, con Jack è possibile far percorrere a
che il valore dei frames (che va a quantificare
questo stesso segnale il percorso che vogliala latenza finale) sia su valori accettabili (nelmo, attraverso applicazioni e altri eventuali
l’immagine 256 ma consiglio di alzarlo a 1024
dispositivi hardware, proprio come si farebbe
per i primi tests), è che l’interfaccia sia quella
nella realtà con cavi e collegamenti. Naturalvoluta (è possibile aiutarsi nella scelta tramite
mente, perché tutto funzioni c’è bisogno che
la piccola freccia alla destra del campo). Non
le suddette applicazioni siano state sviluppate
ci resta che salvare con “Ok” e ritornare alla
per funzionare con Jack, ovvero per accettare
nostra interfaccia principale, dalla quale proe/o inviare segnali che Jack possa gestire nel
viamo a dare il fatidico “Start”. A questo punto,
modo che abbiamo precedentemente introse tutto è andato bene, il demone jackd è in
dotto. Più avanti potrete vedere una rappreesecuzione sfruttando le capacità realtime del
sentazione grafica di quanto detto attraverso
kernel linux e con i parametri da noi specificauno screenshot.
ti. Se è effettivamente così, nel finto display
LCD dell’interfaccia di qjackctl dovreste
Affrontati questi due aspetti teorici vediamo in
avere queste informazioni (figura 2):
pratica come fare ad usare questo stupendo
32
Ambiente Desktop
Dove “Started” ci indica
che il server è in esecuzione, “RT” che efFigura 2 - qJackCTL
fettivamente sta usando le capacità realtime del kernel linux, “x.y%”
la percentuale di CPU utilizzata dal server,
“xxx Hz” la frequenza di campionamento del
segnale, “0 (0)” il numero di Xruns (dei quali parlerò più tardi), e il resto informazioni su
di un altro aspetto del server detto “transport”
(del quale non ci occuperemo per ora).
Il discorso cambia se qualcosa è andato storto. La prima cosa da controllare è che l’utente che lancia il demone Jack faccia parte del
gruppo “audio” (come nella maggior parte delle distribuzioni che ho provato), questo perché
dura di base per fare ciò è abbastanza complicata e non sto quindi a spiegarla in questo
articolo, vi basti sapere che potrete comunque utilizzare Jack in due modi: mantenendo
l’opzione “Realtime” e facendo partire Jack
da utente root, oppure disabilitando l’opzione “Realtime” dalla configurazione. A questo
punto dovremmo avere il nostro server jackd
in esecuzione e pronto a funzionare.
Il cuore dell’interfaccia di controllo di Jack è
senza dubbio la finestra delle connessioni,
alla quale si accede tramite il pulsante “Connect”. Da qui infatti è possibile effettuare i collegamenti tra interfacce e applicazioni, una
delle caratteristiche più importanti ed utili del
server.
Figura 3 - Finestra delle connessioni di Jack
solitamente a questo gruppo sono dati i permessi necessari per accedere alle risorse che
ci interessano. Se anche con questo accorgimento non appare il fatidico “RT” nel display di
qjackctl, o il demone si termina all’avvio con
messaggi di errore poco rassicuranti, dovrete
cercare le istruzioni per permettere l’accesso
alle risorse realtime del kernel linux. La proce-
Nella figura 3 vediamo un esempio della finestra delle connessioni: a sinistra abbiamo
dispositivi e applicazioni dai quali è possibile
leggere uno o più segnali, nella parte destra
invece ci sono i dispositivi e le applicazioni sui
quali è possibile scrivere un segnale. È naturalmente possibile che lo stesso dispositivo o
la stessa applicazione si trovi sia da una parte
33
Ambiente Desktop
che dall’altra: la scheda audio avrà nella parte
sinistra tutte le entrate (in questo caso specifico capture_[1-12]), e nella parte destra tutte le
uscite (playback_[1-10]). Le 12 entrate della
figura potrebbero (anche se in realtà non lo
sono) essere 6 entrate stereofoniche (2 canali
per entrata L1 R1, L2 R2 etc etc), mentre le
10 uscite potrebbero essere 5 uscite stereofoniche. A questo punto, per collegare la prima
entrata stereo alla prima uscita stereo ci basterà collegare capture_1 con playback_1, e
capture_2 con playback_2; per effettuare un
collegamento basta cliccare su di un elemento e trascinarlo sull’elemento della parte opposta al quale si vuole collegarlo.
Nella figura 3 abbiamo collegato capture_1
con un entrata di Ardour (ne parleremo nel
prossimo articolo), un’applicazione per la registrazione di flussi audio, così facendo il segnale che andremo ad inviare nella prima linein potrà essere utilizzato (sulla pista Audio 1
ma al momento non ci interessa) dall’applicazione. Allo stesso tempo master/out1 e master/out2 di Ardour vengono inviate ai due canali playback_1 e playback_2, la nostra prima
uscita stereo, alla quale, per esempio, abbiamo attaccato le nostre cuffie. Il nostro segnale
fa quindi un percorso di questo tipo: line-in ->
ardour -> line-out. Con un po’ di esercizio vedrete che l’utilizzo di questa interfaccia diverrà
immediato, facilitandovi il lavoro e permettendovi di fare cose che prima neanche immaginavate.
È possibile che abbiate molte meno entrate e
uscite di quelle presentate qui (sono quelle di
una scheda M-audio delta 44) e che dobbiate
scegliere tra la mic-in e la line-in attraverso il
mixer di sistema, per utilizzare l’una o l’altra.
In linea di massima si tratta solo di modificare
gli switches per attivare l’una o l’altra, ma a
volte questa semplice operazione è complicata inutilmente dall’interfaccia di quasi tutti i
mixer di sistema (kmix, alsamixer etc.), state
quindi attenti ad attivare l’entrata che volete, e
anche l’opzione “Capture” là dove presente.
Potete ora fare la vostra prima prova con
Jack. Fate partire il server, collegate alla vostra entrata un segnale come spiegato nel
capitolo precedente, oppure inserite un microfono nell’apposita mic-in; a questo punto
dovete attivare dal mixer di sistema la giusta
entrata , collegare l’entrata (se stereo sono
due) all’uscita (idem) e, come per magia, dovreste sentirvi nelle cuffie o nelle casse collegate. Probabilmente non sentirete niente ma
non scoraggiatevi, si tratta sicuramente di una
piccola disattenzione, controllate i volumi nel
mixer, i collegamenti (reali e di Jack), e qualsiasi altra cosa abbiate fatto prima di provare.
Se invece sentite suoni o la vostra voce prima di fare i collegamenti dentro Jack, significa semplicemente che la vostra scheda audio
effettua il mixing dei segnali anche a livello
hardware; se così fosse basterà “mutare” gli
ingressi (line-in o mic-in) e lasciare che Jack
faccia il suo lavoro. Ora dovrebbe funzionare
tutto!
Per terminare questa presentazione di Jack
affrontiamo il problema degli Xruns. Semplificando, diciamo che un Xrun si manifesta
quando Jack non riesce a rispettare il lasso di
tempo impostogli per la latenza. Questo può
accadere perché l’intervallo di tempo è troppo piccolo per le capacità della macchina, o
perché altre applicazioni richiedono l’utilizzo
della CPU, o per altri motivi meno immediati.
Come detto in precedenza qjackctl ci informa
di quanti Xruns si sono verificati, possiamo
così vedere se sia utile o meno intervenire per
minimizzarli. Il problema fondamentale è che
ogniqualvolta si verifica un Xrun, Jack per un
brevissimo momento smette di fare quello che
deve fare, e se, per esempio, stiamo registrando, smetterà di registrare. Dobbiamo anche
tenere conto che, se abbiamo impostato una
latenza al di sotto dei 10 millisecondi, un Xrun
durante una registrazione non sarà udibile
dall’orecchio umano, è quindi necessario capire se sia il caso o meno di cercare di abbassare il numero di eventuali Xruns. Nel caso si
debba per forza intervenire, la prima cosa da
fare è alzare il tempo di latenza (aumentando
la taglia dei frames come spiegato in precedenza), fino a trovare il giusto compromesso.
Un altro parametro sul quale intervenire è il
kernel: è infatti possibile compilare il kernel
linux migliorando il suo comportamento realtime; si tratta di un procedimento che non starò
a spiegare qui, ma è possibile che possiate
trovare un kernel compilato in questo modo,
pacchettizzato per la vostra distribuzione.
Termina qui il primo articolo della serie sulla
34
Ambiente Desktop
produzione di musica con il pinguino, spero
sia stato di vostro gradimento. Se avete domande oppure richieste particolari non vi resta che farvi vivi sul nostro forum, intanto vi
saluto fino al prossimo articolo,
[1] http://jackaudio.org/
[2] http://qjackctl.sourceforge.net/
Stonedz
35
Pillole
Pillole
Htop – Top all’ennesima potenza
Dopo questo titolo abbastanza criptico, passo a spiegare cos’è htop. In teoria è “solo” la
versione interattiva di top, ma in realtà è molto
di più, è un vero e proprio task manager da
usare in un terminale, quindi anche in sistemi
senza interfaccia grafica, cosa che risulta utilissima per chi usa SSH. Quasi sicuramente
lo troveremo già pacchettizzato per la nostra
distribuzione, se così non fosse possiamo
compilarlo dai sorgenti, scaricabili da http://
htop.sourceforge.net/, tenendo presente
che dobbiamo avere installate le librerie ncurses.
Per lanciarlo non sono necessari argomenti,
quindi è sufficiente digitarne il nome e premere [Invio]. Possiamo navigare tramite i
processi attivi tramite le frecce della tastiera
e, una volta selezionato il processo che ci interessa, possiamo killarlo, con [F9], ridurne
la priorità di esecuzione con [F8] e, se siamo
superutenti, aumentarla con [F7]. Con [F2]
si accede alla configurazione di htop, dove
scegliere quali informazioni visualizzare nella
parte alta della schermata, con [F5] si ottiene la struttura ad albero dei processi, mentre
spazio ci consente di selezionare più processi
su cui eseguire le medesime operazioni. Queste sono solo alcune delle funzioni di htop, per
scoprire le altre basterà leggere la pagina di
manuale
# man htop
Tuttoeniente
Installare NTFS-3G
“Posso scrivere da Linux nella mia partizione
di Windows?” Questa è una domanda molto
frequente che viene posta dai nuovi utenti del
pinguino nei vari forum specializzati, e molto
spesso la risposta è “Sì, ma solo sulle partizioni FAT32, con NTFS non è ancora possibile”. Ora finalmente la musica è cambiata, e con il recente rilascio di NTFS-3G 1.0,
un driver open source è finalmente possibile
l’accesso in lettura e scrittura alle partizioni
formattate con NTFS con una buona stabilità
36
Pillole
e sicurezza. Se pensate che l’installazione e
l’uso di questo tool sia una cosa complessa e
possibile solo ai più esperti vi sbagliate! Per
rendere disponibile NTFS-3G bastano pochi e
semplici passaggi: una volta scaricato il pacchetto da http://www.ntfs-3g.org/ è sufficiente compilarlo con i classici ./configure
&& make && make install (eseguito come
root). Attenzione però, perché il programma
ha bisogno di Fuse 2.6.0 o versioni successive per funzionare correttamente. Ora che il
driver è installato, lo si può utilizzare montando direttamente la partizione che ci interessa:
# mount -t ntfs-3g /dev/
hda1 /mnt/windows
Chiaramente, se necessario, possiamo cambiare sia il device che identifica la partizione
da montare, sia il suo mount point. Possiamo
anche rendere automatico il montaggio con
NTFS-3G, aggiungendo questa linea a /etc/
fstab
/dev/hda1 /mnt/windows
ntfs-3g defaults 0 0
oppure sostituendo ntfs con ntfs-3g nel caso
fosse già presente l’istruzione.
Tuttoeniente
37
GNU FDL
GNU Free Documentation License
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other functional and useful document “free” in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way to get credit for their work,
while not being considered responsible for modifications made by others.
This License is a kind of “copyleft”, which means that derivative works of the document must
themselves be free in the same sense. It complements the GNU General Public License, which
is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same
freedoms that the software does. But this License is not limited to software manuals; it can be
used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License principally for works
whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that contains a notice placed
by the copyright holder saying it can be distributed under the terms of this License. Such a notice
grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of
the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or
distribute the work in a way requiring permission under copyright law.
A “Modified Version” of the Document means any work containing the Document or a portion of
it, either copied verbatim, or with modifications and/or translated into another language.
A “Secondary Section” is a named appendix or a front-matter section of the Document that deals
exclusively with the relationship of the publishers or authors of the Document to the Document’s
overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section
may not explain any mathematics.) The relationship could be a matter of historical connection
with the subject or with related matters, or of legal, commercial, philosophical, ethical or political
position regarding them.
The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this
38
GNU FDL
License. If a section does not fit the above definition of Secondary then it is not allowed to be
designated as Invariant. The Document may contain zero Invariant Sections. If the Document
does not identify any Invariant Sections then there are none.
The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or
Back-Cover Texts, in the notice that says that the Document is released under this License. A
Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
A “Transparent” copy of the Document means a machine-readable copy, represented in a format
whose specification is available to the general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text
formatters or for automatic translation to a variety of formats suitable for input to text formatters.
A copy made in an otherwise Transparent file format whose markup, or absence of markup, has
been arranged to thwart or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount of text. A copy that is not
“Transparent” is called “Opaque”.
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo
input format, LaTeX input format, SGML or XML using a publicly available DTD, and standardconforming simple HTML, PostScript or PDF designed for human modification. Examples of
transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary
formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or processing tools are not
generally available, and the machine-generated HTML, PostScript or PDF produced by some
word processors for output purposes only.
The “Title Page” means, for a printed book, the title page itself, plus such following pages as are
needed to hold, legibly, the material this License requires to appear in the title page. For works
in formats which do not have any title page as such, “Title Page” means the text near the most
prominent appearance of the work’s title, preceding the beginning of the body of the text.
A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely
XYZ or contains XYZ in parentheses following text that translates XYZ in another language.
(Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”,
“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you
modify the Document means that it remains a section “Entitled XYZ” according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License
applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these
Warranty Disclaimers may have is void and has no effect on the meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License
applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further copying of the copies you make
or distribute. However, you may accept compensation in exchange for copies. If you distribute a
large enough number of copies you must also follow the conditions in section 3.
39
GNU FDL
You may also lend copies, under the same conditions stated above, and you may publicly display
copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you
must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: FrontCover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify you as the publisher of these
copies. The front cover must present the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve the title of the Document
and satisfy these conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the first
ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must
either include a machine-readable Transparent copy along with each Opaque copy, or state in or
with each Opaque copy a computer-network location from which the general network-using public
has access to download using public-standard network protocols a complete Transparent copy of
the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps, when you begin distribution
of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at
the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions of sections
2 and 3 above, provided that you release the Modified Version under precisely this License, with
the Modified Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy of it. In addition, you must
do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and
from those of previous versions (which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version if the original publisher of
that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for authorship
of the modifications in the Modified Version, together with at least five of the principal authors of
the Document (all of its principal authors, if it has fewer than five), unless they release you from
this requirement.
C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
40
GNU FDL
E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice giving the public permission
to use the Modified Version under the terms of this License, in the form shown in the Addendum
below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts
given in the Document’s license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least
the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If
there is no section Entitled “History” in the Document, create one stating the title, year, authors,
and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous
versions it was based on. These may be placed in the “History” section. You may omit a network
location for a work that was published at least four years before the Document itself, or if the
original publisher of the version it refers to gives permission.
K. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles.
Section numbers or the equivalent are not considered part of the section titles.
M. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version.
N. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any
Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant
Sections in the Modified Version’s license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements
of your Modified Version by various parties--for example, statements of peer review or that the
text has been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25
words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only
one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same
cover, previously added by you or by arrangement made by the same entity you are acting on
behalf of, you may not add another; but you may replace the old one, on explicit permission from
the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use
their names for publicity for or to assert or imply endorsement of any Modified Version.
41
GNU FDL
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this License, under the
terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all
as Invariant Sections of your combined work in its license notice, and that you preserve all their
Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical Invariant
Sections may be replaced with a single copy. If there are multiple Invariant Sections with the
same name but different contents, make the title of each such section unique by adding at the
end of it, in parentheses, the name of the original author or publisher of that section if known, or
else a unique number.
Make the same adjustment to the section titles in the list of Invariant Sections in the license notice
of the combined work.
In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements”.
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released under this
License, and replace the individual copies of this License in the various documents with a single
copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually under this
License, provided you insert a copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate and independent documents
or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the
copyright resulting from the compilation is not used to limit the legal rights of the compilation’s
users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not apply to the other works
in the aggregate which are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if
the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be
placed on covers that bracket the Document within the aggregate, or the electronic equivalent of
covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole aggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include translations of some or all Invariant
Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers,
provided that you also include the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between the translation and the origi42
GNU FDL
nal version of this License or a notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the
requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual
title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly provided
for under this License. Any other attempt to copy, modify, sublicense or distribute the Document
is void, and will automatically terminate your rights under this License. However, parties who
have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns. See
http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this License “or any later version”
applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any
version ever published (not as a draft) by the Free Software Foundation.
ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
Copyright (c)
YEAR
YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no FrontCover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled “GNU
Free Documentation License”.
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with...
Texts.” line with this:
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three,
merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these
examples in parallel under your choice of free software license, such as the GNU General Public
License, to permit their use in free software.
43