set up and management of an integrated information system on linux

165
UNIVERSITÀ DEGLI STUDI DI PISA - FACOLTÀ DI INGEGNERIA CORSO DI LAUREA TRIENNALE IN INGEGNERIA DELLE TELECOMUNICAZIONI Andrea Marchetti Michele Bartoli C C O O N N F F I I G G U U R R A A Z Z I I O O N N E E E E G G E E S S T T I I O O N N E E , , S S U U P P I I A A T T T T A A F F O O R R M M A A L L I I N N U U X X , , D D I I U U N N S S I I S S T T E E M M A A I I N N F F O O R R M M A A T T I I V V O O I I N N T T E E G G R R A A T T O O Tutori interni: Prof. Ing. Stefano Giordano Ing. Rosario G. Garroppo Tutore esterno: Dott.ssa Ilaria Bertolucci

Upload: andrea-marchetti

Post on 27-Jan-2017

129 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Set up and management of an integrated information system on Linux

UNIVERSITÀ DEGLI STUDI DI PISA - FACOLTÀ DI INGEGNERIA

CORSO DI LAUREA TRIENNALE IN INGEGNERIA DELLE

TELECOMUNICAZIONI

Andrea Marchetti Michele Bartoli

CCOONNFFIIGGUURRAAZZIIOONNEE EE GGEESSTTIIOONNEE,,

SSUU PPIIAATTTTAAFFOORRMMAA LLIINNUUXX,,

DDII UUNN SSIISSTTEEMMAA IINNFFOORRMMAATTIIVVOO

IINNTTEEGGRRAATTOO

Tutori interni:

Prof. Ing. Stefano Giordano

Ing. Rosario G. Garroppo

Tutore esterno:

Dott.ssa Ilaria Bertolucci

Page 2: Set up and management of an integrated information system on Linux

2

INDICE

Profilo dell’azienda 5

Ringraziamenti 5

Introduzione 6

1. Come avvicinarsi a Linux? 10

1.1. Le distribuzioni 11

1.2. Scelta della distribuzione Linux 19

1.3. Requisiti di sistema Intel 20

1.4. Macchine utilizzate per i test 20

1.5. Prima di installare 20

1.6. Installazione di Red Hat Linux 22

1.7. Configurazione del sistema 42

1.8. Creare un account utente 45

2. Alcuni segreti dei tool di Linux 46

2.1. La shell 46

Completamento automatico della digitazione 46

Ripetizione dei comandi digitati 46

Ridirigere l’input e l’output 47

La documentazione 48

2.2. File e directory 49

Creare un file vuoto 50

2.3. Lavorare con i file 51

Trovare i file 53

Analisi del testo 54

2.4. Gestione dei dischi 55

Un solo disco più piattaforme 57

Usare i dischi rimovibili 58

2.5. L’elaborazione del testo 60

Vi 60

Emacs 60

La selezione del testo 61

3. Samba 62

3.1. File samba.conf 63

3.2. SWAT 69

3.3. Configurazione di Samba su Windows NT 70

3.4. Configurazione di Samba su Windows 95/98 71

3.5. Utilizzo di Samba 73

4. Le routine di avvio: i primi minuti dopo il lancio del sistema operativo 75

4.1. Init: il processo 1 75

4.2. L’organizzazione degli script di avvio 83

4.3. Gli script di attivazione e disattivazione dei servizi 84

5. Lan browsing 87

5.1. LAN Information Server – LISa 87

Page 3: Set up and management of an integrated information system on Linux

3

5.2. Come funziona LISa? 88

5.3. Accesso alle informazioni – client 90

5.4. resLISa 90

5.5. Installazione 91

5.6. Configurazione 92

5.7. Quattro differenti esempi di file di configurazione 95

5.8. Opzioni e segnali della riga di comando 96

6. X-Win32 v.5.5.2 98

6.1. Nuove caratteristiche 99

6.2. X-Win32 + SSH 99

6.3. Lingue 99

6.4. Altre importanti caratteristiche 100

6.5. Filosofia del prodotto 100

6.6. Font aggiuntivi 100

6.7. Configurazione di X-Win32 101

7. Web Server Linux 104

7.1. Quale Web Server scegliere: Apache, NCSA o Netscape 104

7.2. Installazione del Web Server 106

7.3. Configurazione 106

7.4. Ottimizzazione del Web Server 108

7.5. Apache Server Status 109

7.6. La sicurezza del Web Server 110

7.7. Hosting virtuale 111

7.7.1. Hosting basato su indirizzo IP 111

7.7.2. Hosting virtuale basato su nome 112

7.7.3. Hosting virtuale basato sulla porta 113

7.7.4. File httpd.conf 114

7.8. Sommario delle caratteristiche del Web Server Apache HTTP Server 1.3 125

8. TWiki 127

8.1. Introduzione 127

8.2. Requisiti di sistema di TWiki 129

8.3. Requisiti del server 129

8.4. Requisiti dei client 130

8.5. Guida di installazione di TWiki 130

8.6. Abilitare l’autenticazione degli utenti 134

8.6.1. File .htaccess 135

8.7. Aggiungere un sito web 138

8.8 TWiki Access Control 138

8.9. Nascondere i settaggi di controllo 142

8.10. Il SuperAdminGroup 142

8.11. Gestione file allegati 143

8.12. Sistema di gestione dei documenti 143

8.13. Condivisione file 143

8.14. Web Authoring 143

8.15. Upload dei file 144

8.16. Download dei file 144

8.17. Spostare i file allegati 144

8.18. Eliminare gli allegati 144

Page 4: Set up and management of an integrated information system on Linux

4

8.19. Link ai file allegati 144

8.20. Form TWiki 146

8.21. Templates TWiki 146

9. Java 2 SDK, Standard Edition Versione 1.4.0 Linux 148

9.1. Presentazione di Java 148

9.2. Java come strumento di programmazione 148

9.3. Java virtual machine 149

9.4. Struttura della Java virtual machine 150

9.5. Vantaggi di Java 151

9.6. Caratteristiche di Java 152

Appendice 159

Red Hat: disponibile la versione 7.3 159

I contenuti 159

Installazione 160

Le prime impressioni 160

L’ambiente grafico e il software multimediale 161

Il software da ufficio 162

Gli strumenti d’amministrazione 163

Conclusioni 163

Requisiti Hardware 164

Indirizzi Internet utili 164

I costi 164

Bibliografia 165

Page 5: Set up and management of an integrated information system on Linux

5

Profilo dell’azienda

Gruppo Servizi progetta, sviluppa e rende operativi sistemi informativi per il management aziendale

ed offre attività di consulenza nelle aree d’intervento dei software proposti, ponendosi sul mercato

nazionale come sintesi efficace ed innovativa fra software house e società di consulenza.

Il consolidamento civilistico e gestionale di bilanci, la pianificazione finanziaria e patrimoniale, il

budgeting, forecasting e il financial report, ma anche il datawarehousing, la business intelligence e

la logistica, rappresentano aree di forte competenza nelle quali sono nate soluzioni particolarmente

efficaci.

Gruppo Servizi è una delle poche realtà presenti sul mercato a possedere la caratteristica della

“doppia competenza”: al know how tecnologico affianca skill organizzativi, al software abbina

consulenza qualificata. Queste caratteristiche consentono di fornire ai clienti “soluzioni a problemi”

pronte all’uso, efficaci, affidabili e facili da utilizzare.

Ringraziamenti

Ringraziamo la ditta che ci ha dato la possibilità di svolgere il tirocinio aziendale per completare il

nostro corso di studi. Siamo grati in particolare all’Ing. Duccio Vigolo ed ai suoi collaboratori per

l’aiuto che ci hanno fornito.

Page 6: Set up and management of an integrated information system on Linux

6

Introduzione

Mappa di massima della rete aziendale:

Page 7: Set up and management of an integrated information system on Linux

7

L’obiettivo da raggiungere è realizzare una postazione Server Linux configurata per ospitare un

Web Server in grado di interpretare applicazioni Java Based integrata in un dominio Windows 2000

(con protocolli di tipo Samba). Il Server dovrà poi poter essere amministrato da remoto (tramite

Telnet, X-Win32, ecc.) da macchine Windows e dovrà vedere i Server ed i Client della rete

Windows (per la condivisione di cartelle, file e stampanti). Dovrà inoltre ospitare uno spazio di

sviluppo di progetti, gestione documenti e database di informazioni per facilitare lo sviluppo di

gruppo, sia sulla rete intranet sia su quella internet. La funzione del Server in azienda sarà quella di

offrire un banco di test per la compatibilità multipiattaforma delle applicazioni Web Java Based

sviluppate da Gruppo Servizi e file sharing.

Una bozza di struttura della intranet e dei relativi servizi per il file sharing è di seguito

rappresentata:

Area Pubblica: l'accesso a questa parte della intranet è soggetto a Login e Password (solo i

clienti abilitati potranno entrare) ed è visibile anche agli utenti interni.

Programma X (pagina accessibile a tutti gli utenti registrati):

o Segnalazione Bug (per ogni programma un utente può inserire informazioni relative a

presunti bug).

o Segnalazione Migliorie (per ogni programma gli utenti possono inserire suggerimenti

per nuove implementazioni).

o FAQ (i clienti possono solo leggere).

o Releases e Patches (con possibilità di download) (i clienti possono solo leggere).

o History ed Elenco versioni rilasciate (i clienti possono solo leggere).

Programma Y:

o ...

o ...

o ...

Pagina privata utente: ogni utente ha accesso a questa pagina in cui può modificare informazioni

e gestire allegati (questa pagina è la candidata per sostituire l'area di scambio).

Pagina di News di Gruppo Servizi: in questa pagina potrebbero essere pubblicate informazioni

che Gruppo Servizi vuol rendere disponibile a tutti gli utenti ma in forma riservata, ovvero

senza pubblicarle sul sito ufficiale.

Area Privata: l'accesso a questa parte è visibile solo agli utenti interni, che tipicamente potranno

accedere a tutte le pagine.

Richieste di intervento/acquisto HW

Page 8: Set up and management of an integrated information system on Linux

8

Installazioni (trasversale a tutti i prodotti dovrebbe fornire indicazioni sul cliente, prodotto,

Consulente Responsabile, Tecnico Responsabile, Data Scadenza).

Gestione Documenti (potrebbe essere implementato un db di documenti reperibili via Web con

possibilità di ricerca sui contenuti... ecc. ecc...)

Gestione Programmi Software:

o Programma X:

Elenco lavori schedulati (con indicazione di assegnazione risorse, tempistiche, ecc...)

Elenco proposte per new release

...

o Programma Y:

...

...

...

Knowledge Base (in questa sezione - correlata da funzionalità di ricerca- gli utenti inseriscono e

trovano informazioni e trucchi sui vari argomenti):

o Visual Basic

o Power Builder

o Database

o Oracle

o SQLServer

o Java

o HTML e/o JavaScript

o ...

Utenti e Gruppi

Dovranno esistere 2 gruppi: "GruppoServizi" e "Cliente". Gli utenti del primo gruppo potranno

tipicamente modificare e vedere tutte le pagine della intranet. Gli utenti del secondo gruppo vedono

solo la parte pubblica e di tale parte possono modificare solo alcune pagine/sezioni. Inoltre avranno

accesso ad una propria pagina personale non visibile dagli altri utenti "Cliente". Dovrà esistere un

utente Amministratore in grado di creare nuovi utenti per la parte pubblica. Si potrà accedere alla

parte pubblica solo se si è utenti di "GruppoServizi" o "Cliente". La parte privata (non accessibile

dall'esterno) potrà consentire ai nuovi utenti di creare nuovi account (un utente può essere creato da

chiunque).

Page 9: Set up and management of an integrated information system on Linux

9

Riassumendo:

- installazione e configurazione di un Server Linux (versione da definire);

- installazione della virtual machine Java;

- installazione e configurazione di Web Server Apache;

- installazione di un’architettura sistemistica in grado di integrare il Server Linux con il

dominio Windows 2000 (tipo Samba);

- creazione di uno spazio di sviluppo di progetti, gestione documenti e database di

informazioni (ad esempio TWiki).

Page 10: Set up and management of an integrated information system on Linux

10

1. Come avvicinarsi a Linux?

Dieci anni fa uno studente universitario di nome Linus Torvalds annunciava sul newsgroup

comp.os.minix che aveva iniziato a lavorare su un sistema operativo per piattaforma Intel 386,

leggero e ispirato a Unix. ”Semplicemente un hobby”: cosi egli stesso definiva il proprio lavoro:

oggi quel sistema operativo, Linux gira su macchine di qualunque tipo, a partire dai portatili e dai

dispositivi embedded per arrivare a grossi mainframe.

Linux viene rilasciato sotto la Gnu General Public License (Gpl), che impone la distribuzione del

codice sorgente assieme ai programmi e la distribuzione sempre sotto licenza Gpl dunque anch’esso

deve essere liberamente distribuibile.

Un argomento spesso portato a sostegno dell’open-source è che il software open–source sia di

qualità superiore rispetto a quello commerciale perché “se ci sono abbastanza occhi aperti, tutti i

bug vengono a galla”. In molti ambienti, la semplice definizione di sistema operativo è un

argomento in grado di scatenare vere e proprie guerre di religione. La maggior parte degli utenti

Windows potrebbe indicare con questo termine una singola applicazione che include diversi

software creati per interagire con il proprio computer. Per un utente Linux, invece, il termine è

sinonimo di una raccolta di molti programmi piccoli e indipendenti, ma strettamente legati fra di

loro.

Di questo concetto è permeato Linux (e più in generale l’intero mondo Unix), popolato da piccoli

componenti ben distinti tra loro che interagiscono in modo tale da fornire un servizio complesso.

Questo principio offre indubbi vantaggi in termini di flessibilità e robustezza del codice: i

sostenitori di Linux, ad esempio, deridono gli utenti di altre piattaforme sulle quali è necessario

riavviare il sistema dopo aver installato del software, operazione necessaria molto di rado in tale

ambiente. D’altro canto, per l’utente medio, la presenza di molti tool dalle funzionalità

assolutamente specifiche può rendere più complessa la gestione del sistema. Il cuore di ogni sistema

operativo Unix -incluso Linux – è il kernel, che comunica direttamente con l’hardware, gestisce la

memoria di sistema, distribuisce le risorse ai vari processi ed effettua lo scheduling dei processi in

esecuzione. È assieme il contabile, il vigile e il buttafuori del sistema operativo. Il kernel in se,

tuttavia, non fa nulla di particolarmente interessante: deve essere accompagnato da una certa

quantità di tool, utilità e programmi alcuni dei quali agiscono quasi al livello del kernel stesso, che

si occupano di compiti come la gestione dei file system, l’allocazione della memoria e il controllo

dell’hardware. Gli utenti spesso si sorprendono quando vengono a sapere che molti dei comandi che

usano, per esempio ls e cd, sono in realtà piccoli programmi indipendenti, la maggior parte dei

quali non è stata nemmeno scritta dagli sviluppatori Linux, ma da quelli della Free Software

Page 11: Set up and management of an integrated information system on Linux

11

Fondation. Anche l’interfaccia utente (GUI, Grafical User Intreface), il componente maggiormente

visibile del sistema operativo, non è per Linux altro che una semplice applicazione, per quanto di

grosse dimensioni e molto complessa. L’interfaccia grafica si compone di un sistema a finestre,

solitamente Xfree86, e di un window manager: fra questi ultimi i più diffusi sono oggi KDE e

Gnome.

Ciò significa che, a differenza di quanto accade per Windows, gli utenti Linux possono decidere

con la massima libertà quale interfaccia grafica utilizzare per il sistema operativo.

1.1. Le distribuzioni

Ogni utente abbastanza esperto può in teoria costruirsi il proprio Linux assemblando manualmente

tutti i componenti, anche se il processo è decisamente complicato e piuttosto dispendioso in termini

di tempo. Numerose aziende hanno fatto cosi il loro ingresso nel mondo dell’open-source creando

le cosiddette “distribuzioni Linux”, che eliminano la maggior parte del lavoro noioso di

acquisizione dei dati, installazione e amministrazione delle applicazioni, aggiungendo al semplice

sistema operativo tool per l’installazione dei pacchetti e la gestione del sistema e di altre utilità. Per

le caratteristiche della licenza Gpl, le aziende che producono le distribuzioni non modificano

comunque il sistema operativo ma, al contrario, sviluppano i propri prodotti raccogliendo i tool per

l’installazione e la gestione attorno al cuore di Linux, riunendoli su uno o più cd-rom e vendendo il

pacchetto completo di un contratto di supporto.

Data la natura estremamente personalizzabile di Linux, ciascuna azienda può dedicarsi ad una

nicchia di mercato e costruire un prodotto che si adatti ad essa..Mandrake è la distribuzione più

semplice da installare, oltre che quella più adatta a agli utenti non familiari con il mondo Unix.

Debian invece ha fatto una scelta diversa, focalizzando la propria attenzione sull’aderenza agli

standard, sulla sicurezza e del software e della sua stabilità.

Page 12: Set up and management of an integrated information system on Linux

12

Tu

rbo

Lin

ux S

erver 6

.5

Su

Se L

inu

x 7

.3

Red

Hat P

rofessio

nal 7

.2

Man

drak

e Lin

ux

Pro

Su

ite Ed

itino

8.1

Deb

ian G

nu

/Lin

ux

2.2

(po

tato)

Cald

era Op

en L

inux

Serv

er 3.1

Distrib

uzio

ne

Tu

rbo

linu

x In

c.

Su

SE

Gm

bH

Red

Hat In

c.

Man

drak

eSo

ft S.A

.

Th

e Deb

ian P

roject

Cald

era Intern

ation

al

Inc.

Azien

da

Do

llari US

A 2

00

Eu

ro 6

8

Eu

ro 2

11

,67

Eu

ro 1

49

Gratu

ito

Eu

ro 7

69

,52

Prezzo

Ap

plicazio

ni sp

ecializzate

ed en

terprise d

i alto

livello

; cluster e serv

er

datab

ase.

Ap

plicazio

ni m

idran

ge p

er

wo

rkstatio

n e serv

er;

simile a R

ed H

at per

l’adattab

ilità a camp

i

div

ersi, con

alcun

e

differen

ze di d

esign

.

Qu

alsiasi tipo

di u

tente

softw

are adatto

a og

ni

situazio

ne.

L’u

tente fin

ale; Man

drak

e

forn

isce po

tenti stru

men

ti

di co

nfig

urazio

ne p

er l’uso

della d

istribu

zion

e sul

pro

prio

desk

top

o su

l

po

rtatile.

Uten

ti esperti ch

e

desid

erano

i pacch

etti

essenziali e u

na

distrib

uzio

ne p

riva d

i

fron

zoli.

Seg

men

to d

i mercato

En

terprise. O

pen

Lin

ux

offre p

acchetti p

er la

sicurezza d

el server p

er

l’e-com

merce.

Targ

et

Pacch

etti per sp

ecifiche

app

licazion

i com

e i

datab

ase e per sp

ecifici usi

com

e servizi d

i clusterin

g.

Installazio

ne sem

plice e

com

plete u

tility d

i

con

figurazio

ne.

Distrib

uzio

ne b

en

bilan

ciata.

Installazio

ne im

peccab

ile e

ottim

a integ

razion

e deg

li

strum

enti d

i config

urazio

ne

pro

prietari; n

on

richied

e

trop

pa co

mp

etenza su

Lin

ux

.

È “p

uro

Lin

ux

”; u

tile agli

amm

inistrato

ri che

desid

erano

avere il

con

trollo

com

pleto

sul

sistema.

Ottim

o su

pp

orto

aziend

ale e

gran

de in

tegrazio

ne fra

server e w

ork

station

.

Pu

nti d

i forza

1 C

d-R

om

; rou

tine d

i

installazio

ne n

ella

med

ia.

7 C

d-R

om

+ 1

Dvd

-

Ro

m; Y

aST

2 è m

olto

semp

lice da u

tilizzare.

10

Cd

-Ro

m +

1 D

vd

-

Ro

m; b

uo

ne le ro

utin

e di

installazio

ne e il to

ol d

i

partizio

nam

ento

del

disco

.

9 C

d-R

om

+ 1

Dvd

-

Ro

m; o

ttime ro

utin

e di

installazio

ne.

3 im

mag

ini Iso

disp

on

ibili o

n-lin

e;

l’installazio

ne rich

iede

qu

alche co

mp

etenza

tecnica.

5 C

d-R

om

; rou

tine d

i

installazio

ne n

ella

med

ia.

Med

ia e istallazion

e

Page 13: Set up and management of an integrated information system on Linux

13

Tu

rbo

To

ols fo

rnisce le

fun

zion

alità di

amm

inistrazio

ne d

i base.

YaS

T2

è un

eccellente e

com

pleto

too

l di

con

figurazio

ne.

Set d

i utilità d

i

con

figurazio

ne stab

ile e

stand

ard.

Gran

de q

uan

tità di u

tilità

di co

nfig

urazio

ne

pro

prietarie.

Pacch

etto p

oten

te e

priv

o d

i abb

ellimen

ti.

Vo

lutio

n,

un

’app

licazion

e a livello

enterp

rise per la g

estion

e

della rete.

Utility

di co

nfig

urazio

ne

On

-line in

form

ato P

df.

Am

pia 6

man

uali

inclu

si.

Am

pia 4

man

uali

inclu

si.

Man

uali u

tente e d

i

riferimen

to; d

ispo

nib

ili

anch

e in H

tml e p

df in

sei ling

ue d

ifferenti.

On

-line, p

df su

CD

-

Ro

m.

Su

cd ro

m e o

n-lin

e; la

cop

ia cartacea dei

man

uali d

i riferimen

to è

disp

on

ibile co

n i

pacch

etti avan

zati.

Do

cum

entazio

ne

Div

erse sotto

scrizion

i e pacch

etti di

sup

po

rto su

lla base d

elle richieste d

i

interv

ento

; supp

orto

tramite sito

web

.

60

gio

rni d

i supp

orto

po

st-

installazio

ne; su

pp

orto

tramite m

ailing

list e sito W

eb.

Div

erse sotto

scrizion

i e pacch

etti di

sup

po

rto su

lla base d

elle richieste d

i

interv

ento

; amp

ia kno

wled

ge b

ase sul

sito W

eb, ch

e inclu

de il su

pp

orto

per

pro

do

tti, app

licazion

i e svilu

pp

o.

Div

erse sotto

scrizion

i e pacch

etti d

i

sup

po

rto su

lla base d

elle richieste d

i

interv

ento

.

Riso

rse per la ricerca o

n-lin

e “tra

com

un

ità di u

tenti”; co

mun

ità di

svilu

pp

atori m

olto

attiva.

Sito

Web

; sup

po

rto in

ternazio

nale p

er

gli sv

ilup

pato

ri bu

siness e g

li uten

ti

finali; d

iverse so

ttoscrizio

ni, co

ntratti

di assisten

za e pacch

etti di su

pp

orto

sulla b

ase delle rich

ieste di in

terven

to.

Su

pp

orto

tecnico

Su

pp

orto

garan

tito in

gen

ere

attraverso

app

lication e so

lutio

n

pro

vid

er..

Do

po

Red

Hat, u

na d

elle aziend

e

di m

agg

ior p

eso su

l mercato

.

Div

ersi pro

gram

mi p

recom

pilati

solo

per R

ed H

at e Su

Se.

La p

osizio

ne d

i Red

Hat assicu

ra

ottim

izzazion

i a livello

di

con

figurazio

ni h

ardw

are e la

disp

on

ibilità d

i app

licazion

i per

qu

esta piattafo

rma.

Man

drak

e ben

eficia della

deriv

azion

e da R

ed H

at; gli u

tenti

po

sson

o g

od

ere dei v

antag

gi d

el

do

min

io d

i Red

Hat n

el campo

delle d

istribu

zion

i Lin

ux

.

Alle sp

alle di D

ebian

vi è l’in

tera

com

un

ità di sv

ilup

pato

ri op

en-

sou

rce che assicu

ra il rilascio d

i

app

licazion

i stabili e ag

gio

rnate.

Su

pp

orto

garan

tito in

gen

ere

attraverso

app

lication e so

lutio

n

pro

vid

er.

Su

pp

orto

di m

ercato

Giu

dizio

glo

bale

= Eccellente

= Molto buono

= Buono

= Discreto

= Scarso

Page 14: Set up and management of an integrated information system on Linux

14

La flessibilità di Linux, il suo basso costo e la capacità di girare anche su hardware non troppo

recente, sono le qualità che hanno convinto coloro che per primi hanno adottato questa piattaforma

a introdurla in molte reti aziendali. Un altro vantaggio di Linux è la sua spiccata propensione

all’utilizzo in rete, ad esempio per condividere i file e stampanti su reti NetWare, Unix e Windows.

La penetrazione di Linux nel mercato desktop, tradizionalmente riservato a Windows e Mac Os, è

però ancora piuttosto limitata: mentre i fan di Unix e gli sviluppatori in genere spesso usano Linux

anche sulle proprie workstation, questo sistema operativo continua a suscitare la maggior attenzione

in ambito server. Occorre comunque sottolineare i passi compiuti per rendere Linux un sistema

operativo utilizzabile dall’utente medio a partire dall’interfaccia dei window manager, le cui

versioni più recenti iniziano a potersi confrontare, per semplicità d’uso, con Windows e Mac Os.

In ogni caso la complessità del core Unix rimane immutata, anche se ben nascosta, e forse anche per

questo Linux richiede qualche competenza in più da parte dell’utente. Secondo uno studio svolto da

Idg, il primo impedimento all’adozione di Linux in azienda è la mancanza di personale interno

competente; altri aspetti che scoraggiano l’adozione di Linux sono la mancanza di supporto da parte

dal produttore e la riluttanza ad introdurre all’interno dell’azienda un sistema operativo

completamente nuovo.

Dunque visti questi potenziali aspetti negativi, perché un’azienda dovrebbe passare a Linux?

Sicuramente perché una volta superato il primo impatto con il nuovo sistema operativo, si

guadagnano notevoli benefici, il più importante dei quali e nel contempo quello più citato è la

mancanza di una software house di riferimento assoluto che possano comportarsi in modo

monopolistico. Si possono elencare altri vantaggi, fra i quali l’incremento del tasso di sviluppo e di

supporto delle applicazioni Linux. Le ultime release del kernel, dotate di migliori capacità di

multiprocessing simmetrico (Smp, Symmetrical Multi Processing), hanno permesso a Linux di

occupare posti sempre più importanti sui server aziendali. I nuovi file system con funzionalità di

journaling sono inoltre in grado di mantenere un log delle modifiche dei dati su disco, in modo da

ripristinarli in caso di crash e rendono assai poco probabili la perdita dei dati. Inoltre diversi

produttori di hardware rilasciano oggi driver per Linux oltre che per Windows, e aziende come IBM

hanno addirittura a listino sistemi con una distribuzione Linux gia preinstallata.

Ora il problema rimane nel decidere quale distribuzione scegliere.

A differenza di Windows, Linux richiede una conoscenza di base dell’architettura del sistema. Il

cuore di Linux è il kernel, che gestisce tutte le funzioni di “basso livello”. Il codice del kernel è in

realtà molto ristretto: Linux carica infatti al volo molte delle funzionalità di cui necessita, lasciando

libera la memoria per altri compiti. Per inciso oggi la maggior parte dei sistemi operativi carica

invece la maggior parte dei propri componenti direttamente all’avvio della macchina, a prescindere

Page 15: Set up and management of an integrated information system on Linux

15

dal fatto che queste siano utilizzate o meno. Le interfacce grafiche di Linux iniziano inoltre a far

competere Linux con Windows in termini di utilizzabilità nella maggior parte delle più comuni

operazioni.

I requisiti minimi hardware per far girare Linux sono modesti: sono sufficienti un microprocessore

Pentium, 16 MByte di Ram e 50 MByte di spazio su disco, e se si vuole usare anche l’interfaccia

grafica c’è bisogno di altri 100Mbyte di spazio su disco. I sistemi sui quali gira Linux possono

essere utilizzati per mesi senza che un crash o un blocco di sistema ne renda necessario un riavvio.

Tuttavia, così come accade sotto Windows, anche le applicazioni Linux non devono passare un test

formale di qualità, e un codice colmo di bug può talvolta causare il blocco di alcuni processi o

dell’interfaccia grafica. Sotto Linux, però, l’interfaccia grafica stessa è un programma come tutti gli

altri e come tale può essere chiusa e rieseguita senza per questo dover riavviare la macchina.

Il kernel di Linux è sicuro, ma il framework che lo circonda può aprire falle che possono permettere

a un malintenzionato l’ingresso non autorizzato del sistema. Virus e worm colpiscono inoltre anche

macchine Linux, ma va detto che questo sistema operativo è in genere più protetto rispetto ad altre

piattaforme.

Solo dopo aver provato Linux si potrà apprezzare la disponibilità di applicazioni e tool gratuiti il cui

prezzo sarebbe assai elevato in un ambiente commerciale, facendo cosi emergere rapidamente le

vere potenzialità di questo sistema operativo.

Andando ad esaminare le varie distribuzioni sono venuti fuori i seguenti aspetti.

Per Caldera Open Linux 3.1: è un supporto di ottimo livello e una grande quantità di prodotti, tra

cui alcune soluzioni orientate al commercio elettronico, rendono Caldera OpenLinux Server 3.1 una

scelta decisamente attraente. La decisione di caldera di fare una netta distinzione tra le piattaforme

client e server sottolinea la volontà di rendere i propri prodotti appetibili al mercato aziendale.

Openlinux 3.1 offre un proprio prodotto per l’installazione e la configurazione del sistema: Lizard è

il nome dato da Caldera a una sofisticata routine di installazione curata nei particolari quanto

DrakConf di Mandrake, con cui si possono scegliere cinque configurazioni predefinite per la

piattaforma server e semplificare così il processo di installazione.

Openlinux Workstation 3.1 non è certo migliore di altre distribuzioni ma è senz’altro un’ottima

scelta se si progetta un’infrastruttura basata su Linux e si desidera affidarsi a un unico produttore.

Distinguendosi dal resto del mondo Linux, Caldera pone un particolare risalto sul ridotto costo di

possesso in ambiente corporate. Per raggiungerlo l’azienda ha sviluppato diversi tool e pacchetti,

primo tra tutti Volution, un software di gestione e amministrazione del sistema basato su

un’interfaccia Web. Costruito intorno a Ldap, Volution è progettato per aiutare gli amministratori

Page 16: Set up and management of an integrated information system on Linux

16

nell’implementazione di profili e policy di rete, inventari hardware e software, installazioni

centralizzate, upgrade, rilevamenti di intrusioni e monitoraggio dello stato dei sistemi aziendali.

Il servizio di supporto di Caldera è di ottimo livello.

Esaminando ora Debian Gnu/Linux 2.2 (potato) è risultato che: è la meno commerciale fra le

distribuzioni Linux, è gestita da una comunità di utenti piuttosto che da un’azienda. Date queste

premesse e ricordato lo stretto legame tra Debian e Free Software Foundation è facile comprendere

come Debian abbia la reputazione di essere la distribuzione scelta dai guru di Linux, fama che può

rivelarsi a doppio taglio.

Da un punto di vista aziendale il più grosso svantaggio di Debian è la mancanza di una casa madre

che fornisca un supporto adeguato: si tratta di “free software” nel senso più puro della parola, e

questo fatto potrebbe non essere gradito da alcuni amministratori e responsabili IT. I creatori di

Debian hanno fatto poco per semplificare il processo di apprendimento, quindi chi si avvicina a

Linux per la prima volta è meglio che si rivolga verso altre distribuzioni che offrono miglior

documentazione. I servizi di rete e gli strumenti per lo sviluppo di Debian Gnu/Linux sono

paragonabili a quelli delle altre distribuzioni: mantenendo fede alla natura prudente e conservatrice

di coloro che l’hanno creata, Debian spesso utilizza software in versioni non troppo recenti. I

responsabili di questa distribuzione infatti preferiscono utilizzare pacchetti ben collaudati e che

abbiano dato prova di stabilità e assenza di bug. Per esempio Debian non include le versioni più

recenti del kernel di Linux, dell’interprete Perl e del sistema X window. Ciò la rende inadatta a

sistemi dotati di hardware particolarmente recente (per esempio periferiche usb e schede video

appena uscite): la rivelazione e la configurazione dell’hardware può rivelarsi, in questi casi,

un’operazione poco agevole anche per l’utente più esperto, se non addirittura impossibile senza

adottare software più aggiornato. Uno dei motivi di vanto della maggior parte dei sostenitori di

Debian è il sistema di gestione dei pacchetti, APT (Advanced Package Tool è la risposta di Debian

al gestore di pacchetti di Red Hat, utilizzabile per installare, aggiornare e disinstallare software sia

in locale sia da diversi Ftp remoti.

Mandrake Linux ProSuite Edition 8.1: è un prodotto di qualità e decisamente stabile. Mandrake si è

dimostrata nei nostri test una delle più amichevoli e intuitive distribuzioni disponibili. Basata su

Red Hat, Mandrake è la miglior scelta per gli utenti alle prime armi, che non dovrebbero incontrare

nessun problema nell’utilizzare le applicazioni di questa distribuzione, tuttavia non può ancora

competere con caldera e Red Hat per quanto concerne la disponibilità di supporto. E’ da ritenere

giusto l’utilizzo di questa distribuzione sia per desktop che per notebook.

Le procedure di installazione, basate su interfacce testuali, erano spesso un primo scoglio di fronte a

cui molti utenti si arenavano. Con il tool di installazioni di Mandrake non c’è questo problema: in

Page 17: Set up and management of an integrated information system on Linux

17

15 passi, illustrati in modo chiaro, l’utente viene guidato verso l’installazione e la configurazione

del sistema, senza che sia necessario intervenire manualmente su alcun file di configurazione.

Una delle caratteristiche più apprezzate di Mandrake è il meccanismo di selezione dei pacchetti,

spesso uno dei punti più critici e macchinosi delle procedure di installazione. L’installer divide i

pacchetti in due gruppi logici, rispettivamente per server e workstation. All’interno delle due

categorie i software sono raggruppati in base alle funzioni e al loro utilizzo sul sistema, ed è

possibile scegliere liberamente pacchetti appartenenti alle diverse categorie fino ad ottenere la

selezione più adatta alle proprie esigenze. Ottime sono anche le procedure di installazione

automatica della stampante, dei wizard di rete, della configurazione della connessione remota e del

meccanismo di attivazione dei servizi. Distribuzione corredata da due manuali abbastanza chiari: la

guida all’installazione conduce gli utenti poco esperti nel processo di installazione di Mandrake

mentre gli argomenti più approfonditi come la sicurezza o la configurazione dettagliata del sistema

sono trattati nel secondo manuale. Rendere sicuro il proprio sistema è ancora un compito complesso

ma con l’utility Bastile risulta un po’ più semplice. Con questa utilità è possibile scegliere fra tre

tipi diversi di sicurezza predefiniti.

In ogni segmento del mercato del software si può trovare un prodotto considerato leader e per

quanto riguarda Linux questo viene svolto da Red Hat. Questa distribuzione viene considerata come

uno standard per gli sviluppatori. Con la versione 7.2, che l’azienda ha acquistato, Red Hat rimane

all’altezza della sua fama. Debian può essere l’alternativa più indicata per i puristi del free software,

Mandrake la più adatta per gli utenti desktop alla ricerca di un ambiente semplice da utilizzare:

tuttavia in un ambiente aziendale, Red Hat è a nostro parere la scelta più sicura. La versione

acquistata è corredata da una grande quantità di tool e di software: Red Hat mette a disposizione

dell’utente il kernel 2.4.7 compilato in diverse versioni, compilatori per tutti i principali linguaggi di

programmazione e strumenti di vario genere. L’installazione, priva di inutili fronzoli, è una delle

più sicure fra quelle disponibili per Linux. A tutt’oggi i punti più critici nell’installazione dei

sistemi operativi Linux sono il partizionamento dei dischi, il riconoscimento dell’hardware e

l’installazione del software, ambiti in cui Red Hat 7.2 eccelle. Per il partizionamento del disco Red

Hat fa ricorso all’utility Disk Druid, utility caratteristica di questa distribuzione. Il software

permette di applicare in modo automatico tre schemi predefiniti per la distribuzione dello spazio su

disco per configurare il computer rispettivamente come workstation, server o laptop, ma lascia

liberi gli utenti più esperti di gestire in prima persona tale operazione. L’elenco delle periferiche

riconosciute da Red Hat è molto ampio e cresce in maniera costante.

Le distribuzioni di Linux forniscono solitamente un’enorme quantità di software. Riconoscendo che

questo fatto potrebbe indurre in confusione l’utente, Red Hat effettua una selezione dei programmi

Page 18: Set up and management of an integrated information system on Linux

18

a seconda dell’utilizzo del sistema indicato durante l’installazione anche se la lista di pacchetti può

essere modificata e personalizzata. La gestione dei pacchetti si basa su RPM (Red Hat Manager),

tool in grado di aiutare gli amministratori nel compito di installare, aggiornare, rimuovere e gestire

il software. Nonostante gli amministratori esperti solitamente mettono mano a Linux direttamente

tramite la linea di comando, Red Hat offre una buona serie di strumenti basati sull’interfaccia

grafica, fra cui citiamo il tool Linuxconf. La documentazione cartacea e quella elettronica sono ben

bilanciate nell’offrire un certo livello di dettaglio pur mantenendosi comprensibili ai nuovi utenti.

Passando alla versione SuSe Linux 7.3 Professional Edition: è corredata da un’ampia e aggiornata

quantità di software free e open-source. La distribuzione include tutti i tool di sviluppo Gnu, i

servizi di rete standard (Apache, Bind, Samba e così via), i principali data base server (MySql, e

PostgreSql) e il supporto per la maggior parte dei linguaggi di programmazione. Durante

l’installazione gli utenti hanno modo di familiarizzare con YaST2 (Yet Another Setup Tool),

l’utilità di gestione del sistema fornita da SuSe. YaST2 si occupa di partizionare i dischi,

configurare l’hardware, selezionare il software e completarne l’installazione. L’utility è veramente

notevole: ha un aspetto curato, è semplice da utilizzare e muovendosi fra i suoi menu è abbastanza

facile amministrare molti degli aspetti del sistema operativo. Ha delle ottime routine di rivelazione

dell’hardware. L’installazione di SuSe Lnux Professional 7.3 è in grado di rivelare e configurare

non solo le schede di rete, le schede audio e i modem, ma anche le stampanti, gli adattatori isdn e le

schede Tv eventualmente presenti sul sistema.

Un aspetto che può creare qualche confusione è quello legato al particolare utilizzo che la

distribuzione fa del file system. SuSe tende a “personalizzare” le posizioni predefinite per diverse

componenti del sistema, ad esempio installando il software applicativo nella directory /opt invece

che in /usr più frequentemente utilizzata. Questo significa che gli utenti gia familiari con le altre

versioni di Linux devono porre attenzione a riservare spazio sul disco durante la partizione che

conterrà tale directory. L’approccio di SuSe è poco diffuso nel mondo Linux, e se anche si tratta

tecnicamente di una maniera accettabile di partizionare e gestire il sistema, potrebbe essere fonte di

spiacevoli sorprese a causa della sua scarsa diffusione.

Passando a TurboLinux 6.5: mentre tutte le altre distribuzioni hanno posto l’accento su elementi

quali la facilità d’uso e l’ampiezza dell’offerta di software, TurboLinux ha seguito una sua strada,

creando differenti versioni mirate a specifici ambienti di utilizzo: in questo modo possono

risparmiare molto tempo ad esempio gli utenti aziendali cui è sufficiente la soluzione pacchettizzata

fornita dall’azienda, perché ogni elemento della distribuzione è preconfigurato e testato per

funzionare perfettamente integrandosi con il resto del software incluso.

Page 19: Set up and management of an integrated information system on Linux

19

TurboLinux fornisce i medesimi servizi di rete delle altre distribuzioni, ma si distingue per una

scelta conservatrice del kernel 2.2.18 in luogo dei più recenti kernel 2.4.x. Se così da una parte, a

TurboLinux mancano alcune nuove caratteristiche, occorre però sottolineare come tale distribuzione

risulti più probabilmente esente da bug. Anche per TurboLinux possiamo dire che la propensione

all’uso di sistemi desktop è piuttosto scarsa. La dotazione software non proprio aggiornata rende

particolarmente complesso il lavoro di configurazione delle periferiche più recenti.

TurboLinux pone la sua attenzione nel garantire agli utenti la sicurezza della propria distribuzione,

cercando di impedire potenziali exploit di servizi di rete come telnet e Ftp. A differenza di molti dei

prodotti concorrenti, questi servizi sono tra l’altro disattivati secondo le impostazioni di default.

Turbolinux è corredata da una versione sicura di Apache, dal software di controllo del server

Tripwire e da OpenSsh. La routine di installazione di Turbolinux sono semplici e pratiche ma prive

degli abbellimenti grafici che caratterizzano alcune delle altre distribuzioni da noi esaminate.

Coloro che sono poco pratici con le procedure di installazione Unix si troveranno probabilmente più

a proprio agio con i tool forniti da altre distribuzioni.

Le utilità in Turbolinux, chiamate Turbo Tools, forniscono un’interfaccia grafica per la

configurazione e l’amministrazione dei servizi più comuni e delle applicazioni, in modo non

completo come avviene con Linuxconf o YaST2 ma comunque funzionale. Come la maggior parte

delle distribuzioni, Turbolinux utilizza RPM per l’installazione, la gestione, la disinstallazione del

software, vero standard nel settore anche se alcuni utenti più esperti potrebbero preferire il sistema

APT (Advanced Package Tool) di Debian. Fedele alla sua natura di distribuzione orientata alla

praticità, la documentazione Turbolinux è disponibile solo in formato elettronico (.pdf) e sul sito

Web dell’azienda. Turbolinux offre 60 giorni di supporto via e-mail, oltre a vari tipi di contratti di

supporto.

1.2. Scelta della distribuzione Linux

Nell’azienda abbiamo discusso a lungo per decidere a quale distribuzione affidarci per creare una

postazione Web Server sulla rete interna, ma alla fine siamo stati tutti d’accordo nello scegliere Red

Hat Linux Professional 7.2. Molti fattori hanno influenzato il giudizio a favore di Red Hat: i più

importanti sono la sua qualità, la semplicità d’uso e l’ottima fama di cui essa gode in ambito

aziendale. Nonostante altre distribuzioni le siano superiori nello svolgere specifici compiti, nessuna

è così ben bilanciata e versatile. La longevità di Rad Hat nel mercato Linux sta inoltre a

testimoniare la sua compatibilità con i sistemi usati in azienda. Molto vicino a Red Hat giunge,

seconda scelta possibile, SuSE, la distribuzione più diffusa sul mercato europeo.

Page 20: Set up and management of an integrated information system on Linux

20

1.3. Requisiti di sistema Intel

Linux è in grado di funzionare in quasi tutti i computer moderni che usano processori intel. Se il

computer può usare il sistema operativo Dos o Windows potrà generalmente eseguire Linux.

Secondo Red Hat si elencano i requisiti di sistema necessari per eseguire Red Hat Linux sulle

piattaforme Intel:

Processore Intel 386 o superiore.

Spazio disponibile su disco. 850 MB per l’installazione Workstation e 1.7 GB per

un’installazione Server. E’ possibile ridurre la dimensione dell’installazione ed installare

meno software eseguendo l’installazione nella modalità expert mode.

Si raccomanda di usare almeno 32 MB di memoria o più; se non si usa X11, si possono

usare 16 MB di RAM, mentre si consiglia di usare almeno 64 MB se si pensa di usare X11 e

di eseguire diversi client contemporaneamente.

Il supporto alle schede video è migliore per quelle rilasciate da almeno un anno. Il supporto

alle schede grafiche più recenti, con maggiori funzionalità, potrebbe essere solo parziale.

Per facilitare la procedura di installazione è consigliabile impostare il BIOS per consentire

l’avvio da Cd-Rom.

Drive floppy da 3,5 pollici per creare il disco di ripristino o per eseguire installazioni

speciali per mezzo di PCMCIA, PLIP, FTP, NFS o HTTPD.

Per effettuare il multiboot è necessario creare una partizione separata o installare un disco

separato per Linux.

1.4. Macchine utilizzate per i test

Il server Linux (Linux Red Hat 7.2) è un Pentium-II a 400 MHz, 256 MB di RAM, Hard

Disk da 9 GB, collegamento alla rete Microsoft aziendale.

Il client Windows (Windows 98 SE) è un Pentium-S a 166 MHz con 64 MB di RAM e Hard

Disk 2 GB, collegamento alla rete Microsoft aziendale.

Server Windows (Windows 2000 Professional Server) aziendale.

Altri vari client Windows (Windows 2000 Professional Workstation, Windows 2000

Professional Server) appartenenti alla rete aziendale.

1.5. Prima di installare

Red Hat Linux offre cinque differenti classi di installazione:

Page 21: Set up and management of an integrated information system on Linux

21

Workstation

E’ la più appropriata per i nuovi utenti del mondo Linux. L’installazione workstation creerà

un sistema per l’utilizzo home. Verrà installata l’interfaccia grafica.

Server

E’ la più appropriata se si vuole creare un sistema basato su un server Linux, e se l’utente

vuole personalizzare pesantemente la configurazione del sistema.

Laptop

E’ stata progettata per essere istallata sui portatili in modo molto semplice. Installerà i

pacchetti necessari offrendo un’installazione automatica ed intuitiva.

Custom

Permette all’utente una grande flessibilità durante l’installazione. Possono essere scelti il

boot loader, i pacchetti desiderati, ecc. Questa installazione è la più appropriata per utenti

esperti di Red Hat o per chi ha paura di perdere la completa flessibilità.

Upgrade

Se è già presente una versione di Red Hat Linux (3.03 o superiore), verranno istallati solo gli

aggiornamenti del kernel e dei nuovi pacchetti.

L’installazione più appropriata per il nostro Web Server è quella Server:

Qui sotto sono riportati i minimi spazi su disco richiesti per tale tipo di installazione in una sola

lingua (ad esempio Italiano).

Server (installazione minima, senza interfaccia grafica): 1GB

Server (installazione completa, senza interfaccia grafica): 1.3 GB

Server (installazione completa, con interfaccia grafica GNOME e KDE): 2 GB

Se si pensa di installare tutti i gruppi di pacchetti, oppure selezionare individualmente pacchetti

aggiuntivi, ci sarà bisogno di un minimo di 1.2 GB o più. Durante l’installazione X Window System

non sarà configurato e nessuna GUI verrà caricata per default all’avvio del sistema, a meno che

non vengano scelti manualmente i pacchetti appropriati.

La dimensione della partizione swap è determinata dalla quantità di RAM che è presente sul

sistema e dall’ammontare dello spazio disponibile sull’hard disk. Per esempio, se il pc

dispone di 128 MB di RAM sarà creata una partizione di swap tra i 128 MB ed i 256 MB (il

doppio della RAM), che dipende dalla disponibilità di spazio libero sul disco.

Una partizione 384 MB (montata come /).

Una partizione di almeno 1.4 GB (montata come /usr).

Una partizione di almeno 512 MB (montata come /home).

Page 22: Set up and management of an integrated information system on Linux

22

Una partizione di 256 MB (montata come /var).

Una partizione di 50 MB (montata come /boot) nella quale risiedono il kernel ed i relativi

file.

Questo schema di partizionamento risulta appropriata per la maggior parte dei server; in ogni caso è

possibile effettuarlo manualmente.

Per effettuare l’installazione per la prima volta, è necessario effettuare il boot da Cd-Rom oppure

avere a disposizione i dischetti di avvio nel caso in cui il pc non preveda il boot da questa periferica.

Per effettuare il boot da floppy inserire un dischetto formattato ed eseguire l’utilità rawrite inclusa

nel Cd-Rom nella directory dosutils. A questo punto digitare dalla shell Dos i seguenti comandi:

C:\> d:

D:\> cd \dosutils

D:\dosutils> rawrite

Enter disk image source file name: ..\images\boot.img

Enter target diskette into drive: a:

Please insert a formatted diskette into drive A: and press --

ENTER-- : [Enter]

D:\dosutils>

Nel primo menu che compare è possibile scegliere in che modo effettuare l’installazione. Le scelte

possibili sono:

Installazione o upgrade in modalità grafica: [Enter]

Installazione o upgrade in modalità testo: text [Enter]

Abilitazione modalità expert: expert [Enter]

Abilitazione modalità rescue: rescue [Enter]

Se si dispone di un disco driver: linux dd [Enter]

1.6. Installazione di Red Hat Linux

A seguito sono riportati i menu d’installazione e le scelte da noi effettuate.

Page 23: Set up and management of an integrated information system on Linux

23

Selezione della lingua

Italiano

Selezione della tastiera

Modello: Generic 102-key (INTL) PC

Layout: Italiano

Dead Key: Abilita Dead Key

Page 24: Set up and management of an integrated information system on Linux

24

Configurazione mouse

3 button mouse PS/2

Opzioni d’installazione

Server

Setup della partizione del disco

Partizionamento automatico

Page 25: Set up and management of an integrated information system on Linux

25

Rimuovere tutte le partizioni sul sistema

La scelta del partizionamento automatico ha generato sulla nostra macchina una suddivisione del

disco come in tabella:

Dispositivo Inizio Fine Dimensione (MB) Tipo Mountpoint Formattare

/dev/hda

| /dev/hda1

1 6 47 ext3 /boot Sì

| /dev/hda2 7 794 6181 ext3 /usr Sì

| /dev/hda3 795 1082 2259 ext3 /home Sì

| /dev/hda4 1083 1229 1153 estesa

| /dev/hda5 1083 1131 384 ext3 / Sì

| /dev/hda6 1132 1196 510 swap Sì

| /dev/hda7 1197 1229 259 ext3 /var Sì

Page 26: Set up and management of an integrated information system on Linux

26

Installazione del boot loader

GRUB

Configurazione del boot loader

Installa il record del boot loader su MBR

Configurazione della rete

No DHCP

Attiva all’avvio

Indirizzo IP: 192.9.200.211

Page 27: Set up and management of an integrated information system on Linux

27

Netmask: 255.255.255.0

Network: 192.9.200.0

Broadcast: 192.9.200.255

Hostname: Linux01

Gateway: 192.9.200.2

DNS primario: 192.9.200.1

DNS secondario: 192.9.200.2

Configurazione del firewall

Nessun firewall

Page 28: Set up and management of an integrated information system on Linux

28

Selezione lingua di sistema

Italiano

Selezione dell’ora

Ora e fuso orario locale

Configurazione degli account

Password per root

Username e password per altri utenti

Page 29: Set up and management of an integrated information system on Linux

29

Selezione dei gruppi di pacchetti

KDE

Sistema X Window

Files Server Windows (SMB)

Server Web (WWW)

Selezione individuale dei pacchetti

Quelli riportati sono solo i pacchetti da noi installati

Page 30: Set up and management of an integrated information system on Linux

30

Package Name Version Description

4Suite 0.11 Python tools and libraries for XML processing and databases.

GConf 1.0.4 The Gnome Config System.

LPRng 3.7.4 The LPRng print spooler.

MAKEDEV 3.2 A program used for creating the device files in /dev.

Mesa 3.4.2 A 3-D graphics library similar to OpenGL.

ORBit 0.5.8 A high-performance CORBA Object Request Broker.

PyXML 0.6.5 XML libraries for python.

VFlib2 2.25.1 A vector font library used for Japanese document processing.

XFree86-100dpi-fonts 4.1.0 X Window System 100dpi fonts.

XFree86 4.1.0 The basic fonts, programs and documentation for an X workstation.

XFree86-75dpi-fonts 4.1.0 A set of 75 dpi resolution fonts for the X Window System.

XFree86-ISO8859-15-100dpi-fonts 4.1.0 ISO8859-15-100dpi-fonts

XFree86-ISO8859-15-75dpi-fonts 4.1.0 ISO8859-15-75dpi-fonts

XFree86-libs 4.1.0 Shared libraries needed by the X Window System.

XFree86-tools 4.1.0 Various tools for XFree86.

XFree86-twm 4.1.0 A simple, lightweight window manager for X.

XFree86-xdm 4.1.0 The X display manager.

XFree86-xf86cfg 4.1.0 A configuration tool for XFree86.

XFree86-xfs 4.1.0 A font server for the X Window System.

Xaw3d 1.5 A version of the MIT Athena widget set for X.

Xconfigurator 4.9.39 The Red Hat Linux configuration tool for the X Window System.

alchemist 1.0.18 A multi-sourced configuration back-end.

apache 1.3.20 The most widely used web server on the Internet.

apache-manual 1.3.20 Documentation for the Apache web server.

apacheconf 0.8.1 A configuration tool for Apache.

arpwatch 2.1a11 Network monitoring tools for tracking IP addresses on a network.

arts 2.2 A modularized sound system for KDE.

ash 0.3.7 A smaller version of the Bourne shell (sh).

asp2php 0.75.17 An ASP to PHP converter.

asp2php-gtk 0.75.17 This package contains a GUI GTK+ interface for the asp2php file format converter.

audiofile 0.2.1 A library for accessing various audio file formats.

aumix 2.7 An ncurses-based audio mixer.

auth_ldap 1.4.8 An LDAP authentication module for Apache.

authconfig 4.1.19 Text-mode tool for setting up NIS and shadow passwords.

autoconf 2.13 A GNU tool for automatically configuring source code.

autofs 3.1.7 A tool for automatically mounting and unmounting filesystems.

automake 1.4p5 A GNU tool for automatically creating Makefiles.

autorun 2.7 A CD-ROM mounting utility.

basesystem 7.0 The skeleton package which defines a simple Red Hat Linux system.

bash 2.05 The GNU Bourne Again shell (bash).

bdflush 1.5 The daemon which starts the flushing of dirty buffers back to disk.

bind 9.1.3 A DNS (Domain Name System) server.

bind-utils 9.1.3 Utilities for querying DNS name servers.

bindconf 1.6.1 A Red Hat DNS configuration tool.

bonobo 1.0.7 Library for compound documents in GNOME.

Page 31: Set up and management of an integrated information system on Linux

31

bzip2 1.0.1 A file compression utility.

bzip2-libs 1.0.1 Libraries for applications using bzip2

chkconfig 1.2.24 A system tool for maintaining the /etc/rc*.d hierarchy.

chkfontpath 1.9.5 Simple utility for editing the font path for the X font server.

compat-libstdc++ 6.2 Standard C++ libraries for Red Hat 6.2 backwards compatibility.

console-tools 19990829 Tools for configuring the console.

cracklib 2.7 A password-checking library.

cracklib-dicts 2.7 The standard CrackLib dictionaries.

curl 7.8 A utility for getting files from remote servers.

cyrus-sasl 1.5.24 The Cyrus SASL library.

cyrus-sasl-md5 1.5.24 CRAM-MD5 and DIGEST-MD5 support for Cyrus SASL.

cyrus-sasl-plain 1.5.24 PLAIN and LOGIN support for Cyrus SASL.

db1 1.85 The BSD database library for C (version 1).

db2 2.4.14 The BSD database library for C (version 2).

db3 3.2.9 The Berkeley DB database library (version 3) for C.

dev 3.2 The most commonly-used entries in the /dev directory.

diffutils 2.7.2 A GNU collection of diff utilities.

dosfstools 2.7 Utilities for making and checking MS-DOS FAT filesystems on Linux.

e2fsprogs 1.23 Utilities for managing the second extended (ext2) filesystem.

Eel 1.0.1 Eazel Extensions Library.

efax 0.9 A program for faxing using a Class 1, 2 or 2.0 fax modem.

eject 2.0.9 A program that ejects removable media using software control.

emacs 20.7 The libraries needed to run the GNU Emacs text editor.

emacs-X11 20.7 The Emacs text editor for the X Window System.

emacs-nox 20.7 The Emacs text editor without support for the X Window System.

esound 0.2.22 Allows several audio streams to play on a single audio device.

expat 1.95.1 A library for parsing XML.

Fam 2.6.4 FAM, the File Alteration Monitor.

File 3.35 A utility for determining file types.

filesystem 2.1.6 The basic directory layout for a Linux system.

fileutils 4.1 The GNU versions of common file management utilities.

findutils 4.1.7 The GNU versions of find utilities (find and xargs).

firewall-config 0.95 A configuration tool for IP firewalls and masquerading.

foomatic 1.1 Foomatic printer database.

fortune-mod 1.0 A program which will display a fortune.

freetype 2.0.3 A free and portable TrueType font rendering engine.

ftp 0.17 The standard UNIX FTP (File Transfer Protocol) client.

gawk 3.1.0 The GNU version of the awk text processing utility.

gdbm 1.8.0 A GNU set of database routines which use extensible hashing.

gdk-pixbuf 0.11.0 An image loading library used with GNOME.

gdk-pixbuf-gnome 0.11.0 GnomeCanvas support for displaying images.

gdm 2.2.3.1 The GNOME Display Manager.

gedit 0.9.4 A text editor for GNOME.

ghostscript 6.51 A PostScript(TM) interpreter and renderer.

ghostscript-fonts 5.50 Fonts for the Ghostscript PostScript(TM) interpreter.

glib 1.2.10 A library of functions used by GDK, GTK+ and many applications.

Page 32: Set up and management of an integrated information system on Linux

32

glibc 2.2.4 The GNU libc libraries.

glibc-common 2.2.4 Common binaries and locale data for glibc.

gmp 3.1.1 A GNU arbitrary precision library.

gnome-core 1.4.0.4 The core programs for the GNOME GUI desktop environment.

gnome-libs 1.2.13 The main GNOME libraries.

gnome-linuxconf 0.67.1 The GNOME front-end for linuxconf.

gnome-print 0.29 Printing libraries for GNOME.

gnome-vfs 1.0.1 The GNOME virtual file-system libraries.

gnupg 1.0.6 A GNU utility for secure communication and data storage.

gpm 1.19.3 A mouse server for the Linux console.

gq 0.4.0 A GUI LDAP directory browser and editor.

grep 2.4.2 The GNU versions of grep pattern matching utilities.

groff 1.17.2 A document formatting system.

grub 0.90 GRUB - the Grand Unified Boot Loader.

gtk+ 1.2.10 The GIMP ToolKit (GTK+), a library for creating GUIs for X.

gzip 1.3 The GNU data compression program.

hdparm 4.1 A utility for displaying and/or setting hard disk parameters.

hexedit 1.2.1 A hexadecimal file viewer and editor.

hotplug 2001_04_24 A helper application which loads modules for USB devices.

htmlview 1.2.0 A script which calls an installed HTML viewer.

hwbrowser 0.3.5 A hardware browser.

im 140 Perl scripts to replace MH, for use with the Mew mail reader.

indexhtml 7.2 The web page you'll see after installing Red Hat Linux.

info 4.0b A stand-alone TTY-based reader for GNU texinfo documentation.

initscripts 6.40 The inittab file and the /etc/init.d scripts.

ipchains 1.3.10 Tools for managing Linux kernel packet filtering capabilities.

iproute 2.2.4 Advanced IP routing and network device configuration tools.

iptables 1.2.3 Tools for managing Linux kernel packet filtering capabilities.

iptables-ipv6 1.2.3 IPv6 support for iptables.

iptraf 2.4.0 A console-based network monitoring utility.

iputils 20001110 Network monitoring tools including ping.

junkbuster 2.0.2 An ad-blocking application for Web browsers.

kbdconfig 1.9.14 A text-based interface for setting and loading a keyboard map.

kde-i18n-Italian 2.2 Italian language support for KDE.

kdeaddons-kate 2.2 Plugins for the Kate text editor

kdeaddons-kicker 2.2 Plugins and additional applets for Kicker (the KDE panel)

kdeaddons-konqueror 2.2 Plugins extending the functionality of Konqueror

kdeadmin 2.2 Administrative tools for KDE.

kdebase 2.2 Basic files needed for KDE.

kdelibs 2.2 Various libraries for KDE.

kdelibs-sound 2.2 KDE libraries needed to support sound.

kdemultimedia 2.2 Multimedia applications for the K Desktop Environment (KDE).

kdemultimedia-devel 2.2 Development files for kdemultimedia.

kdenetwork 2.2 Networking applications for KDE.

kdenetwork-ppp 2.2 PPP configuration utilities for KDE.

kdepim 2.2 Personal information management tools for KDE.

Page 33: Set up and management of an integrated information system on Linux

33

kdepim-cellphone 2.2 KDE support for synchronizing data with cellphones.

kdepim-devel 2.2 Development files for kdepim.

kdepim-pilot 2.2 KDE support for synchronizing data with a Palm(tm) or compatible PDA.

kdesdk 2.2 KDE SDK

kdesdk-devel 2.2 Development files for kdesdk

kdeutils 2.2 KDE utilities.

kdoc 2.2 Documentation for the K Desktop Environment (KDE) 2.0.

kernel 2.4.7 The Linux kernel (the core of the Linux operating system).

krb5-libs 1.2.2 The shared libraries used by Kerberos 5.

ksconfig 1.9.8 A graphical interface for making kickstart files.

ksymoops 2.4.1 The kernel oops and error message decoder.

kudzu 0.99.23 The Red Hat Linux hardware probing tool.

less 358 A text file browser similar to more, but better.

libcap 1.10 Library for getting and setting POSIX.1e capabilities

libglade 0.16 The libglade library for loading user interfaces.

libgnomeprint15 0.29 Printing libraries for GNOME.

libjpeg 6b A library for manipulating JPEG image format files.

libmng 1.0.2 A library which supports MNG graphics.

libpcap 0.6.2 A system-independent interface for user-level packet capture.

libpng 1.0.12 A library of functions for manipulating PNG image format files.

librep 0.13.6 A shared library that implements a Lisp dialect.

librsvg 1.0.0 An SVG library based on libart.

libstdc++ 2.96 The GNU Standard C++ Library v3.

libtermcap 2.0.8 A basic system library for accessing the termcap database.

libtiff 3.5.5 A library of functions for manipulating TIFF format image files.

libtool 1.4 The GNU libtool, which simplifies the use of shared libraries.

libtool-libs 1.4 Runtime libraries for GNU libtool.

libungif 4.1.0 A library for manipulating GIF format image files.

libuser 0.32 A user account administration library.

libvorbis 1.0rc2 The Vorbis General Audio Compression Codec.

libxml 1.8.14 An XML library.

libxml2 2.4.2 Library providing XML and HTML support.

libxslt 1.0.1 Library providing the Gnome XSLT engine

links 0.96 A text-mode web browser.

linuxconf 1.25r7 A system configuration tool.

lm_sensors 2.5.5 Hardware monitoring tools.

locale_config 0.3.2 A tool for configuring your system's locale.

lockdev 1.0.0 A library for locking devices.

logrotate 3.5.9 Rotates, compresses, removes and mails system log files.

logwatch 2.1.1 A log file analysis program.

lokkit 0.50 Firewall configuration application for an average end user.

losetup 2.11g Programs for setting up and configuring loopback devices.

m4 1.4.1 The GNU macro processor.

mailcap 2.1.6 Associates helper applications with particular file types.

make 3.79.1 A GNU tool which simplifies the build process for users.

man 1.5i2 A set of documentation tools: man, apropos and whatis.

Page 34: Set up and management of an integrated information system on Linux

34

man-pages 1.39 Man (manual) pages from the Linux Documentation Project.

man-pages-it 0.3.0 Italian man pages from the Linux Documentation Project.

mgetty 1.1.26 A getty replacement for use with data and fax modems.

minicom 1.83.1 A text-based modem control and terminal emulation program.

mkbootdisk 1.4.2 Creates an initial ramdisk image for preloading modules.

mkinitrd 3.2.6 Creates an initial ramdisk image for preloading modules.

mktemp 1.5 A small utility for safely making /tmp files.

mm 1.1.3 A shared memory library.

mod_dav 1.0.2 A DAV module for Apache.

mod_perl 1.24_01 An embedded Perl interpreter for the Apache web server.

mod_ssl 2.8.4 Cryptography support for the Apache web server.

modutils 2.4.6 Kernel module management utilities.

mount 2.11g Programs for mounting and unmounting filesystems.

mouseconfig 4.23 The Red Hat Linux mouse configuration tool.

mozilla 0.9.2.1 A web browser.

mtools 3.9.8 Programs for accessing MS-DOS disks without mounting the disks.

nautilus 1.0.4 Nautilus is a network user environment

nautilus-mozilla 1.0.4 Nautilus component for use with Mozilla

ncompress 4.2.4 Fast compression and decompression utilities.

ncurses 5.2 A CRT screen handling and optimization package.

net-tools 1.60 Basic networking tools.

netconfig 0.8.11 A text-based tool for simple configuration of ethernet devices.

netpbm-progs 9.14 Tools for manipulating graphics files in netpbm supported formats.

netscape-common 4.78 Files shared by Netscape Navigator and Communicator.

netscape-communicator 4.78 The Netscape Communicator suite of tools.

netscape-navigator 4.78 The Netscape Navigator web browser.

newt 0.50.33 A development library for text mode user interfaces.

nfs-utils 0.3.1 NFS utilities and supporting daemons for the kernel NFS server.

nmap 2.54BETA22 A utility for port scanning large networks (or single hosts).

nmap-frontend 2.54BETA22 A GUI front end for the nmap port scanner.

nscd 2.2.4 A Name Service Caching Daemon (nscd).

nss_ldap 172 NSS library and PAM module for LDAP.

ntp 4.1.0 Synchronizes system time using the Network Time Protocol (NTP).

ntsysv 1.2.24 A tool to set the stop/start of system services in a runlevel.

nvi-m17n-nocanna 1.79 The nvi multiligualized text editor without support for Canna.

oaf 0.6.5 Object activation framework for GNOME.

openjade 1.3 A DSSSL implementation.

openldap 2.0.11 The configuration files, libraries and documentation for OpenLDAP.

openldap-clients 2.0.11 Client programs for OpenLDAP.

openldap-servers 2.0.11 OpenLDAP servers and related files.

openldap12 1.2.12 Shared libraries for OpenLDAP 1.2 applications.

openssh 2.9p2 The OpenSSH implementation of SSH.

openssh-askpass 2.9p2 A passphrase dialog for OpenSSH and X.

openssh-clients 2.9p2 OpenSSH clients.

openssh-server 2.9p2 The OpenSSH server daemon.

openssl 0.9.6b The OpenSSL toolkit.

Page 35: Set up and management of an integrated information system on Linux

35

openssl-perl 0.9.6b Perl scripts provided with OpenSSL.

pam 0.75 A security tool which provides authentication for applications.

pam_smb 1.1.6 A Pluggable Authentication Module (PAM) for use with SMB servers.

parted 1.4.16 The GNU disk partition manipulation program.

passwd 0.64.1 The passwd utility for setting/changing passwords using PAM.

patch 2.5.4 The GNU patch command, for modifying/upgrading files.

pciutils 2.1.8 PCI bus related utilities.

pciutils-devel 2.1.8 Linux PCI development library.

pcre 3.4 Perl-compatible regular expression library

perl 5.6.0 The Perl programming language.

perl-DateManip 5.39 DateManip module for perl

perl-Digest-MD5 2.13 A perl interface to the MD5 digest algorithm.

perl-HTML-Parser 3.25 HTML-Parser module for perl (World_Wide_Web_HTML_HTTP_CGI/HTML)

perl-HTML-Tagset 3.03 This module contains data tables useful in dealing with HTML.

perl-MIME-Base64 2.12 Perl module for MIME encoding/decoding (base64 and quoted-printable)

perl-Parse-Yapp 1.04 Parse-Yapp module for perl

perl-SGMLSpm 1.03ii A Perl library for parsing the output of nsgmls.

perl-Storable 0.6.11 Storable module for perl

perl-URI 1.12 URI module for perl (World_Wide_Web_HTML_HTTP_CGI/URI)

perl-XML-Dumper 0.4 Perl module for dumping Perl objects from/to XML

perl-XML-Encoding 1.01 XML-Encoding module for perl

perl-XML-Grove 0.46alpha XML-Grove module for perl

perl-XML-Parser 2.30 A perl module for parsing XML documents

perl-XML-Twig 2.02 XML-Twig module for perl

perl-libnet 1.0703 The libnet module for perl (../authors/id/GBARR)

perl-libwww-perl 5.53 Libwww-perl module for perl

perl-libxml-enno 1.02 libxml-enno module for perl

perl-libxml-perl 0.07 libxml-perl module for perl

php 4.0.6 The PHP HTML-embedded scripting language.

pidentd 3.0.14 An implementation of the RFC1413 identification server.

pinfo 0.6.1 An info file viewer.

pmake 1.45 The BSD 4.4 version of make.

pnm2ppa 1.04 Drivers for printing to HP PPA printers.

popt 1.6.3 A C library for parsing command line parameters.

portmap 4.0 A program which manages RPC connections.

ppp 2.4.1 The PPP (Point-to-Point Protocol) daemon.

printconf 0.3.44 A printer configuration backend/frontend combination.

printconf-gui 0.3.44 A GUI frontend for printconf.

procps 2.0.7 System and process monitoring utilities.

psmisc 20.1 Utilities for managing processes on your system.

pwdb 0.61.1 The password database library.

pygnome 1.4.1 Python bindings for the GNOME libraries.

pygnome-libglade 1.4.1 GNOME support for the libglade Python wrapper.

pygtk 0.6.8 Python bindings for the GTK+ widget set.

pygtk-libglade 0.6.8 A wrapper for the libglade library for use with PyGTK.

python 1.5.2 An interpreted, interactive object-oriented programming language.

Page 36: Set up and management of an integrated information system on Linux

36

python-xmlrpc 1.5.0 A set of Python modules for XML-RPC support.

qt 2.3.1 The shared library for the Qt GUI toolkit.

quota 3.01pre9 System administration tools for monitoring users' disk usage.

rarpd ss981107 The RARP daemon.

rcs 5.7 Revision Control System (RCS) file version management tools.

rdate 1.0 Tool for getting the date/time from a remote machine.

rdist 6.1.5 Maintains identical copies of files on multiple machines.

redhat-config-network 0.9 The Network Adminstration Tool for Red Hat Linux.

redhat-config-users 0.9.2 A graphical interface for administering users and groups.

redhat-logos 1.1.3 Red Hat-related icons and pictures.

redhat-release 7.2 The Red Hat Linux release file.

reiserfs-utils 3.x.0j Tools for creating, repairing and debugging ReiserFS filesystems.

rep-gtk 0.15 GTK+ bindings for librep Lisp environment.

rep-gtk-gnome 0.15 GNOME bindings for the librep Lisp interpreter.

rhn_register 2.7.2 The Red Hat Network Services registration program.

rootfiles 7.2 The basic required files for the root user's directory.

routed 0.17 The routing daemon which maintains routing tables.

rpm 4.0.3 The Red Hat package management system.

rpm-build 4.0.3 Scripts and executable programs used to build packages.

rpm-perl 4.0.3 Native bindings to the RPM API for Perl.

rpm-python 4.0.3 Python bindings for apps which will manipulate RPM packages.

rsh 0.17 Clients for remote access (rsh, rlogin, rcp).

rsh-server 0.17 Servers for remote access (rsh, rlogin, rcp).

rsync 2.4.6 A program for synchronizing files over a network.

rusers 0.17 Displays the users logged into machines on the local network.

rusers-server 0.17 Server for the rusers protocol.

rwall 0.17 Client for sending messages to a host's logged in users.

rwall-server 0.17 Server for sending messages to a host's logged in users.

rwho 0.17 Displays who is logged in to local network machines.

samba 2.2.1a The Samba SMB server.

samba-client 2.2.1a Samba (SMB) client programs.

samba-common 2.2.1a Files used by both Samba servers and clients.

samba-swat 2.2.1a The Samba SMB server configuration program.

sawfish 0.38 An extensible window manager for the X Window System.

screen 3.9.9 A screen manager that supports multiple logins on one terminal.

scrollkeeper 0.2 ScrollKeeper is a cataloging system for documentation on open systems.

sed 3.02 A GNU stream text editor.

serviceconf 0.6.6 Serviceconf is an initscript and xinetd configuration utility.

setup 2.5.7 A set of system configuration and setup files.

setuptool 1.8 A text mode system configuration tool.

sgml-common 0.5 Common SGML catalog and DTD files.

sh-utils 2.0.11 A set of GNU utilities commonly used in shell scripts.

shadow-utils 20000902 Utilities for managing accounts and shadow password files.

shapecfg 2.2.12 A configuration tool for setting traffic bandwidth parameters.

sharutils 4.2.1 The GNU shar utilities for managing shell archives.

slang 1.4.4 The shared library for the S-Lang extension language.

Page 37: Set up and management of an integrated information system on Linux

37

squid 2.4.STABLE1 The Squid proxy caching server.

stat 2.5 A tool for finding out information about a specified file.

sudo 1.6.3p7 Allows restricted root access for specified users.

switchdesk 3.9.7 A desktop environment switcher.

switchdesk-kde 3.9.7 A KDE interface for the Desktop Switcher.

symlinks 1.2 A utility which maintains a system's symbolic links.

sysctlconfig 0.14 A configuration tool for operating system tunable parameters.

sysklogd 1.4.1 System logging and kernel message trapping daemons.

syslinux 1.52 A simple kernel loader which boots from a FAT filesystem.

sysreport 1.2 Gathers system hardware and configuration information.

sysstat 4.0.1 The sar and iostat system monitoring commands.

talk 0.17 Talk client for one-on-one Internet chatting.

talk-server 0.17 The talk server for one-on-one Internet chatting.

tar 1.13.19 A GNU file archiving program.

tcp_wrappers 7.6 A security tool which acts as a wrapper for TCP daemons.

tcpdump 3.6.2 A network traffic monitoring tool.

tcsh 6.10 An enhanced version of csh, the C shell.

telnet 0.17 The client program for the telnet remote login protocol.

telnet-server 0.17 The server program for the telnet remote login protocol.

termcap 11.0.1 The terminal feature database used by certain applications.

textutils 2.0.14 A set of GNU text file modifying utilities.

time 1.7 A GNU utility for monitoring a program's use of system resources.

timeconfig 3.2.2 Text mode tools for setting system time parameters.

tmpwatch 2.8 A utility for removing files based on when they were last accessed.

traceroute 1.4a12 Traces the route taken by packets over a TCP/IP network.

tree 1.2 A utility which displays a tree view of the contents of directories.

ttfonts 1.0 A set of TrueType fonts.

ttfonts-ja 1.0 Free Japanese TrueType fonts

unzip 5.42 A utility for unpacking zip files.

up2date 2.7.2 Determines which system packages need to be updated via RHN.

urw-fonts 2.0 Free versions of the 35 standard PostScript fonts.

usbview 1.0 A USB topology and device viewer.

usermode 1.43 Graphical tools for certain user account management tasks.

utempter 0.5.2 A privileged helper for utmp/wtmp updates.

util-linux 2.11f A collection of basic system utilities.

vim-X11 5.8 The VIM version of the vi editor for the X Window System.

vim-common 5.8 The common files needed by any version of the VIM editor.

vim-enhanced 5.8 A version of the VIM editor which includes recent enhancements.

vim-minimal 5.8 A minimal version of the VIM editor.

vixie-cron 3.0.1 The Vixie cron daemon for executing specified programs at set times.

vlock 1.3 A program which locks one or more virtual consoles.

vnc 3.3.3r2 A remote display system.

vnc-doc 3.3.3r2 Complete documentation for VNC.

vnc-server 3.3.3r2 A VNC server.

webalizer 2.01_06 A flexible Web server log file analysis program.

which 2.12 Displays where a particular program in your path is located.

Page 38: Set up and management of an integrated information system on Linux

38

whois 1.0.9 An Internet whois client.

words 2 A dictionary of English words for the /usr/dict directory.

xinetd 2.3.3 A secure replacement for inetd.

xinitrc 3.20 The default startup script for the X Window System.

xloadimage 4.1 An X Window System based image viewer.

xpdf 0.92 A PDF file viewer for the X Window System

xscreensaver 3.33 A set of X Window System screensavers.

yp-tools 2.5 NIS (or YP) client programs.

Ypbind 1.8 The NIS daemon which binds NIS clients to an NIS domain.

Ypserv 1.3.12 The NIS (Network Information Service) server.

Zip 2.3 A file compression and packaging utility compatible with PKZIP.

Zlib 1.1.3 The zlib compression and decompression library.

Dipendenze non risolte:

Installa i pacchetti per soddisfare le dipendenze

Page 39: Set up and management of an integrated information system on Linux

39

Configurazione interfaccia grafica (X)

Intel 740 (Generic)

8 MB

Installazione dei pacchetti

Page 40: Set up and management of an integrated information system on Linux

40

Creazione del dischetto d’avvio

Crea dischetto d’avvio

Configurazione del monitor

Unprobed monitor

Sync orizzontale: 31.5 – 48.5

Page 41: Set up and management of an integrated information system on Linux

41

Sync verticale: 50 – 70

Configurazione personalizzata di X

Profondità di colore: High Color (16 bit)

Screen resolution: 1024 x 768

Login type: Graphical

Page 42: Set up and management of an integrated information system on Linux

42

1.7. Configurazione del sistema

Una volta effettuato il login come root, si hanno tutti i privilegi necessari per effettuare le modifiche

alla configurazione. E’ consigliabile utilizzare l’account root solo per effettuare l’amministrazione

del sistema. Creare un account non-root per un uso generale e diventare su (superuser) per

apportare veloci modifiche. Queste regole base limitano le possibilità di digitare un comando

incorretto che potrebbe danneggiare il sistema.

Uno dei maggiori vantaggi di possedere Red Hat Linux è nei numerosi strumenti (sia grafici che

testuali), inseriti nel pacchetto di distribuzione per facilitare la gestione del sistema. Questi vanno a

scrivere su diversi file di configurazione (di solito ***.conf) i quali sono editabili da qualsiasi text

editor. Un utente esperto si troverà più a suo agio modificando i file manualmente, poiché vedrà

direttamente i cambiamenti apportati. Di seguito riportiamo l’elenco dei tool che riteniamo

particolarmente utili:

linuxconf

Può essere richiamato dalla riga comandi in una finestra terminale, mentre si esegue X, da

una riga comandi dello schermo console, oppure attraverso il browser web che si preferisce.

I motivi per cui si può usare linuxconf sono:

fornisce una comoda interfaccia grafica per l’amministrazione del sistema;

consente di salvare configurazioni di sistema diverse, che permettono di avviare il

proprio computer come macchina desktop o server Internet con un semplice comando

dalla riga comandi;

effettua la manutenzione e sostituisce utility d’utente, di file e di rete; il programma è

usato come strumento di configurazione e d’attivazione di servizi;

ha la capacità di usare moduli per aggiungere nuove funzioni;

consente di fare la manutenzione in rete, ne deriva una più efficiente gestione locale o

remota del computer e della rete.

linuxconf si trova nella directory /bin. Quando il programma viene usato senza le

librerie GNOME (gnome-linuxconf) o dalla console, risponde ai comandi da tastiera come

uno strumento d’installazione di Linux di Red Hat. Occorre spostarsi mediante un tasto Tab

e usare Invio per confermare la scelta quando il cursore è sull’argomento che interessa. Può

essere usato non solo interattivamente, ma anche dalla riga comandi. Il comando

linuxconf aiuta anche ad avviare e terminare servizi sotto Linux mentre il sistema è in

Page 43: Set up and management of an integrated information system on Linux

43

esecuzione. linuxconf può essere configurato anche tramite browser Web attraverso la

porta 98. Per prima cosa è necessario avviare il servizio linuxconfweb attraverso il tool

serviceconf. Da linuxconf bisogna abilitare l’accesso alla rete che è disabilitato per

default. E’ anche necessario specificare i computer o le reti che possono accedervi. Infine

basta far puntare il browser all’indirizzo http://tuo_calcolatore:98. A questo

punto viene visualizzata una pagina Web dalla quale è possibile apportare le modifiche al

sistema; comunque è necessaria la password.

dnsconf

Utilità per la configurazione del server DNS.

fsconf

Utilità che manipola la tabella di filesystem /etc/fstab.

netconf

Utilità di configurazione dei servizi TCP/IP.

netconfig

Uguale alla precedente ma in modalità testo.

userconf

Configurazione d’utenti e gruppi (per aggiungere e togliere utenti e gruppi).

serviceconf

Applicazione grafica sviluppata da Red Hat per configurare i servizi che devono partire

durante il boot, o far partire o arrestare i servizi.

Page 44: Set up and management of an integrated information system on Linux

44

swat

Utilità grafica che è stata aggiunta alla suite di software Samba per assistere gli

amministratori nella configurazione del file smb.conf.

apacheconf

Utilità grafica per la configurazione del Web server. Vengono modificati i file:

httpd.conf

Contiene informazioni di configurazione per il daemon del Web server (httpd), tra

cui i numeri di porta o gli indirizzi su cui stare in ascolto, quali permessi sono

necessari per l’esecuzione del daemon, il numero dei daemon e informazioni in

merito agli host virtuali.

access.conf

Contiene informazioni d’accesso su base per-directory; qui si trovano le definizioni

di ciò che è consentito con esattezza su ciascuna directory.

srm.conf

Questo file contiene direttive che definiscono le directory e i file utilizzati dal Web

server, oltre a definire risorse che determinano la gestione delle richieste da parte dei

browser Web.

xf86cfg

Page 45: Set up and management of an integrated information system on Linux

45

Utilità grafica per configurare le periferiche quali monitor, scheda grafica, mouse, tastiera. Il

programma va a modificare il file di testo chiamato /etc/X11/XF86config che

contiene tutte le informazioni di configurazione per X.

xf86config

Come la precedente ma in modalità testo.

Xconfigurator

Come la precedente ma in modalità testo all’interno della shell.

1.8. Creare un account utente

Ci sono due metodi per creare o aggiungere nuovi utenti: attraverso la GUI, usando il tool di

configurazione User Manager, o attraverso il prompt della shell. Per creare un nuovo account è

necessario conoscere la password di root oppure aver effettuato il log in come tale. Per creare un

account dalla shell:

Aprire un terminale ed effettuare log in come root.

Scrivere useradd seguito da uno spazio e il nome del nuovo utente. Premere [Enter].

Scrivere passwd seguito da uno spazio e dal nome utente.

La shell chiederà la password per il nuovo utente. Immetterne una e premere [Enter].

Verrà chiesto di digitare nuovamente la password per conferma. La creazione del nuovo

utente verrà confermata dal messaggio:

passwd: all authentication tokens updated successfully

Gli account degli utenti si trovano sul server Microsoft. Ogni utente ha la possibilità di accedere, da

qualsiasi client e/o server collegato in rete, alle risorse del server Linux che sono state rese

pubbliche. Se l’account dell’utente è presente anche sul server Linux sarà possibile vedere la

propria cartella oltre alle risorse pubbliche. E’ inoltre possibile effettuare il log in direttamente sulla

macchina Linux. Dato l’elevato numero d’utenti in azienda, abbiamo preferito creare delle risorse

condivise visibili a tutti, evitando così di ricopiare tutti gli utenti sul server Linux. Inoltre abbiamo

preferito che solo l’amministratore potesse entrare direttamente sulla macchina Linux in quanto

server. Per poter inserire il nostro server nella nostra rete Microsoft abbiamo utilizzato il protocollo

Samba, uno dei progetti Open Source maggiormente riusciti.

Page 46: Set up and management of an integrated information system on Linux

46

2. Alcuni segreti dei tool di Linux

Spiegare in poche parole quali siano le differenze che esistono tra Windows e Linux non è un

compito semplice. Guardando il tutto dal punto di vista dell’utente medio, le due piattaforme non

sono troppo distanti: ormai esistono applicazioni simili per le due famiglie di sistemi e, come se non

bastasse, le principali interfacce grafiche per Linux prendono più di una semplice ispirazione dalla

struttura del desktop di Windows. Un aspetto differenzia però ancora i due sistemi operativi

(sempre parlando dal punto di vista dell’utente): la riga di comando. Nel mondo Windows ormai si

tende ad utilizzare soltanto applicazioni a finestra, spesso anche per amministrare il sistema, mentre

nel mondo Linux ancora oggi è quasi impossibile prescindere dagli strumenti a caratteri.

2.1. La shell

La shell è l’interprete dei comandi, il componente del sistema che legge ciò che l’utente scrive nella

finestra di terminale e lancia di conseguenza applicazioni e altri strumenti. Linux prevede diversi

tipi di shell, ciascuna con le sue peculiarità: solo per citare i nomi delle più note si può ad esempio

parlare di bash (Bourne-Again Shell, usata per default in molte distribuzioni), tcsh (TC Shell), ksh

(Korn Shell). Le differenze tra le diverse shell sono rilevanti soltanto per determinati compiti, come

l’impostazione delle variabili di sistema o l’automazione dei comandi attraverso script eseguibili.

> Completamento automatico della digitazione

Il completamento automatico permette di scrivere i comandi in modo molto più rapido di quanto

permetta la semplice digitazione. Per utilizzarla basta premere il tasto Tab sulla riga di comando: in

questo modo la shell cerca di completare la parola alla sinistra del cursore al meglio delle sue

capacità.

Il completamento funziona sia sui nomi di file sia su quelli dei comandi, a seconda della posizione

in cui si trova il cursore nel momento in cui si preme Tab.

> Ripetizione dei comandi digitati

La cronologia dei comandi è l’elenco sequenziale dei comandi digitati nella sessione corrente della

shell o in quelle precedenti. I comandi contenuti in quest’elenco cronologico sono definiti eventi. La

cronologia dei comandi è memorizzata in un file di testo all’interno della directory home chiamato

.bash_history; questo file può essere visualizzato o modificato, proprio come un qualsiasi file di

testo.

Page 47: Set up and management of an integrated information system on Linux

47

Due aspetti molto interessanti della cronologia dei comandi sono la possibilità di ripetere l’ultimo

comando digitato e la capacità di eseguire una ricerca incrementale a ritroso nella cronologia.

Per visualizzare la cronologia dei comandi si utilizza lo strumento history.

[root@linux01 root]# history

1who

2apropos shell>shell-commands

3apropos bash>bash-commands

4history

Questo comando mostra il contenuto del file con la cronologia dei comandi, visualizzando un

comando per riga preceduto dal relativo numero d’evento. Si può specificare un vecchio evento

dalla cronologia sulla riga di comando per eseguirlo nuovamente: il metodo più semplice consiste

nell’utilizzare i tasti freccia rivolti verso l’alto e verso il basso al prompt della shell. Per eseguire un

evento della cronologia utilizzando il numero d’evento corrispondente, basta digitare un punto

esclamativo seguito dal numero d’evento:

[root@linux01 root]# !15

E’ possibile utilizzare con la combinazione di tasti Ctrl+R la funzione di ricerca incrementale

offerta da bash, per eseguire una ricerca a ritroso nella cronologia dei comandi. Questa funzione è

utile se si ricorda di aver digitato una riga di comando contenente una determinata parola e si

desidera ripetere il comando senza doverlo ridigitare da capo. Per questo basta digitare Ctrl+R

seguito dal testo desiderato, per vedere visualizzato al prompt l’ultimo comando digitato

corrispondente al criterio dato.

> Ridirigere l’input e l’output

La shell sposta il testo in stream specificati. Lo standard output è il luogo in cui la shell invia

l’output in formato testo dei comandi e, per impostazione predefinita è costituito dallo schermo del

terminale. Lo standard input è tipicamente la tastiera. Se durante l’esecuzione di un comando viene

riscontrato un errore, il messaggio d’errore è solitamente inviato allo schermo sotto forma di flusso

separato chiamato standard error.

Questi stream vengono ridiretti ad un file o anche ad un altro comando mediante la ridirezione.

Ridirigere l’input ad un file

Per ridirigere lo standard input ad un file si utilizza l’operatore “<”. L’operazione viene eseguita

facendo seguire il comando da “<” e dal nome del file da cui il comando deve prendere l’input.

Esempio:

[root@linux01 root]# apropos < keywords

Page 48: Set up and management of an integrated information system on Linux

48

Ridirigere l’input ad un file

Con l’operatore “>” si ridirige lo standard output ad un file. Per utilizzarlo bisogna far seguire un

comando da “>” e dal nome del file a cui inviare l’output. Esempio:

[root@linux01 root]# apropos shell bash > commands

Lo standard output ridiretto ad un file esistente sovrascrive il file; se invece dell’operatore “>” si

utilizza il “>>” l’output del comando non viene sostituito al vecchio contenuto del file ma

semplicemente aggiunto. Esempio:

[root@linux01 root]# apropos shells >> commands

Ridirigere i messaggi d’errore ad un file

Per ridirigere lo stream di standard error ad un file l’operatore da usare è “2>”. Esempio:

[root@linux01 root]# apropos shell bash 2> command.error

Come nel caso dello standard output, si può utilizzare l’operatore “2>>” per aggiungere lo standard

error al contenuto di un file esistente. Esempio:

[root@linux01 root]# apropos shell 2>> command.error

Ridirigere l’output all’input di un altro comando

Il piping si verifica quando si connette lo standard output di un comando allo standard input di un

altro comando. Quest’operazione viene eseguita specificando i due comandi in sequenza separati

dal carattere “|” (definito per l’appunto pipe). I comandi così costruiti prendono il nome di pipeline.

Per esempio, è spesso utili ridirigere in questo modo i comandi che visualizzano un output con

molto testo a less. Esempio:

[root@linux01 root]# apropos bash shell | less

Un esempio che mette assieme le tecniche viste finora, vale a dire l’analisi dell’history, della shell e

la ridirezione d’input ed output, permette di cercare all’interno di un lungo file di comandi digitati

solo le righe che contengono una determinata stringa di testo, utilizzando lo strumento grep. grep è

uno strumento che accetta in ingresso uno stream di testo e mostra soltanto le righe contenenti un

testo specificato. Esempio:

[root@linux01 root]# history | grep apropos

> La documentazione

I sistemi Linux dispongono di numerose funzioni di guida, tra cui completi manuali in formato

elettronico. Il problema della documentazione di Linux risiede paradossalmente nella sua

abbondanza, che spesso costringe gli utenti a passare al vaglio montagne di materiale nel tentativo

di trovare le informazioni desiderate.

Page 49: Set up and management of an integrated information system on Linux

49

Una delle risorse principali di documentazione dei comandi e degli strumenti è il manuale che si

richiama con il comando man. Per visualizzare la pagina di manuale relativa ad uno strumento

bisogna digitare al prompt:

[root@linux01 root]# man nome_strumento

E’ possibile spostarsi nel testo ed interrompere la visualizzazione premendo il tasto “Q”

Nonostante il nome, una pagina di manuale non sempre contiene la documentazione completa di un

programma, ma assomiglia più ad una guida rapida di consultazione. Di solito, offre una

descrizione breve del programma ed elenca le opzioni e gli argomenti che quest’accetta.

Il comando man può anche servire a visualizzare un elenco di tutti gli strumenti le cui pagine nel

manuale del sistema contengono un riferimento ad un determinato termine. Per questo bisogna

usare lo switch –k: Ad esempio per conoscere tutti gli strumenti che contengono nella loro pagina di

manuale il termine “console”:

[root@linux01 root]# man –k console

In alternativa è possibile verificare se all’interno dello strumento stesso è prevista una descrizione

sommaria delle funzioni disponibili. Per questo si può provare a lanciare lo strumento con l’opzione

--help, che fornisce informazioni sull’utilizzo dello strumento, incluse le opzioni e gli argomenti

accettati dallo strumento.

Altra fondamentale risorsa è la documentazione di sistema che si trova nella directory /usr/doc:

HowTo, Faq e file di documentazione forniti insieme ai comandi ed ai programmi specifici.

Il Linux Documentation Project (LDP, www.linuxdoc.org, con filiale italiana all’indirizzo

www.pluto.linux.it/ildp) ha visto la creazione di oltre 100 file “HowTo” e di numerose Faq,

ciascuno dei quali copre un aspetto particolare dell’installazione o dell’impiego dei sistemi basati

sul Linux. Gli HowTo e le Faq oggi sono disponibili in più lingue ed in vari formati, tra cui l’Html.

2.2. File e directory

File e directory sono rappresentati in modo gerarchico, ad albero: c’è una directory radice,

rappresentata dalla “/”, da cui partono tutte le altre directory e sottodirectory, alcune della quali

hanno una precisa importanza nell’ambito del sistema operativo. Ogni directory ha al suo interno

due file speciali identificati rispettivamente da uno e due punti. Come in Ms-Dos, questi file

indicano la directory corrente e quella immediatamente superiore.

I nomi dei file possono essere costituiti da lettere maiuscole e minuscole, numeri, punti, trattini e

sottolineature. I file system di Linux sono inoltre case sensitive, cioè viene fatta distinzione tra

caratteri maiuscoli e minuscoli. Linux non obbliga ad utilizzare le estensioni di file, che risultano

Page 50: Set up and management of an integrated information system on Linux

50

comunque comode per identificare immediatamente tipi di file e non hanno particolare limite di

lunghezza.

Le directory di Linux

/ La capostipite di tutte le directory presenti sul sistema

/bin Strumenti essenziali ed altri programmi di sistema

/dev File che rappresentano le varie periferiche del sistema

/etc File di configurazione e d’avvio del sistema

/home Le directory home degli utenti

/lib File delle librerie utilizzate dagli strumenti in /bin

/proc File che forniscono informazioni sui processi attivi

/root La directory home del superuser, il cui nome utente è root

/sbin Strumenti essenziali per l’amministratore del computer e programmi di sistema

/tmp File temporanei

/usr Sottodirectory con file relativi agli strumenti ed alle applicazioni utente

/usr/X11R6 File relativi al sistema X Window, compresi quei programmi (in /usr/X11R6/bin)

che vengono eseguiti unicamente in X

/usr/bin Strumenti ed applicazioni per gli utenti

/usr/dict Dizionari ed elenchi di parole (che vengono lentamente superati da /usr/share/dict)

/usr/doc Documentazione varia di sistema

/usr/games Giochi e passatempi

/usr/info File per il sistema ipertestuale GNU Info

/usr/lib Librerie utilizzate dagli strumenti /usr/bin

/usr/local File locali, ossia file esclusivi dei singoli sistemi, che includono la

documentazione (in /usr/local/doc) ed i programmi (in /usr/local/bin) locali

/usr/man I manuali in linea che vengono letti con il comando man

/usr/share Dati per applicazioni installate indipendenti dall’architettura e che possono essere

condivisi dai sistemi. Questa directory comprende inoltre svariate sottodirectory

con equivalenti in /usr, comprese /usr/share/doc, /usr/share/info e /usr/share/icons

/usr/src Codice sorgente dei programmi per il software installato sul sistema

/usr/tmp Un’altra directory per i file temporanei

/var File variabili di dati come code dello spooler e file di log

> Creare un file vuoto

Può essere talvolta necessario creare un file vuoto che funzioni da “segnaposto”. Per eseguire

quest’operazione, si fornisce come argomento a touch il nome desiderato per il file. Esempio:

[root@linux01 root]# touch prova.txt

Creare una directory

Per creare una nuova directory si utilizza mkdir, utilizzando come unico argomento il nome del

percorso della nuova directory. I nomi delle directory seguono le stesse convenzioni adottate per

altri file e di conseguenza è sconsigliato l’utilizzo di spazi, barre o altri caratteri insoliti. Esempio:

[root@linux01 root]# mkdir /tmp/work

Page 51: Set up and management of an integrated information system on Linux

51

Cambiare la directory corrente

Come in Dos, si utilizza il comando cd per cambiare la directory di lavoro corrente fornendo come

argomento il nome della nuova directory. Esempio:

[root@linux01 root]# cd work

Per tornare alla directory superiore:

[root@linux01 root]# cd..

Ottenere il nome della directory corrente

Per determinare qual è la directory di lavoro corrente si utilizza pwd, che ne visualizza il nome di

percorso completo.

Visualizzare il contenuto delle directory

ls è lo strumento che si usa per visualizzare ciò che c’è dentro una directory. Si può utilizzare senza

argomenti, in tal caso viene visualizzato l’intero contenuto della directory corrente, oppure si può

indicare il nome di una directory (per vederne il contenuto) o di un file, per sapere se tale file è

presente nella directory attuale. ls ha molte opzioni di visualizzazione, tutte elencata all’interno

della documentazione elettronica presente nel sistema operativo. I principali switch disponibili, da

indicare al prompt appena dopo il comando ls sono:

--color Attribuisce un colore ai nomi dei file a seconda del loro tipo

-R Produce una visualizzazione ricorsiva delle sottodirectory

-a Visualizza tutti i file in una directory, compresi i file nascosti, o “dot”

-s Mostra a video la dimensione di ciascun file in KByte

-l Visualizza le dimensioni e gli attributi dei file

Midnight Commander

Le operazioni sui file che abbiamo descritto e molte altre ancora possono essere svolte molto più

comodamente con uno strumento quasi sempre fornito a corredo del sistema operativo: Midnight

Commander.

Midnight Commander (che si richiama attraverso il comando mc) visualizza contemporaneamente

due directory e permette di compiere tra le altre cose operazioni di copia e spostamento dei file,

gestione delle cartelle.

2.3. Lavorare con i file

Linux è da sempre un sistema operativo multiutente. Il sistema utilizzato per proteggere la privacy

di ciascun utente è quello dei privilegi d’accesso, che consiste nello specificare per ogni file e

directory diversi permessi per ciascun utente o gruppo d’utenti. Ogni file dispone di permessi che

specificano il tipo d’accesso degli utenti. Esistono tre tipi di permessi: lettura, scrittura ed

esecuzione.

Page 52: Set up and management of an integrated information system on Linux

52

Di solito gli utenti dispongono di permessi di scrittura su file contenuti nelle loro directory home.

Solo l’utente root gode del permesso di scrittura sui file contenuti in directory importanti, come /bin

ed /etc, e i normali utenti non devono in linea di massima avere timore di modificare o cancellare

per errore un importante file di sistema.

I permessi funzionano in maniera diversa per le directory rispetto ai file. Se si dispone del permesso

di lettura ma non del permesso d’esecuzione su una directory, è possibile solo leggere i nomi dei

file contenuti in detta directory, ma non leggere altri attributi, esaminarne il contenuto, modificarli o

eseguirli. Con il permesso d’esecuzione, ma senza il permesso di lettura su una directory, si può

leggere, modificare o eseguire qualsiasi file contenuto nella directory a condizione di conoscerne il

nome e di godere dei permessi appropriati su detto file.

Ogni file dispone di permessi separati per tre categorie d’utenti: l’utente che possiede il file, il

gruppo a cui appartiene l’utente che possiede il file e il resto degli utenti presenti sul sistema.

Quando si crea un nuovo file, questo ha una serie di permessi predefinita: generalmente, di lettura e

scrittura per l’utente e di lettura per il gruppo e tutti gli altri utenti.

Visualizzare i permessi di un file

Per visualizzare i permessi d’accesso ad un file si utilizza ls con l’opzione “-l”. Esempio:

[root@linux01 root]# ls –l cruise

-rwxrwx-r-- 1 captain crew 8,420 Jan 12 21:42 cruise

Il primo carattere (“-“) è il tipo di file; gli altri tre caratteri specificano I permessi per l’utente che

possiede il file(“rwx”), gli altri tre (“rw-“) specificano I permessi per tutti I membri del gruppo che

possiede il file ad esclusione dell’utente che lo possiede. Gli ultimi tre caratteri della colonna (“r--)

specificano i permessi per gli utenti sul sistema. Tutte e tre le sezioni relative ai permessi hanno lo

stesso formato ed indicano da sinistra a destra il permesso di lettura, scrittura ed esecuzione. Un

trattino (“-“) al posto di una di queste lettere indica che il permesso non è accordato.

Modificare i permessi di un file

Per modificare la modalità d’accesso di qualsiasi file si utilizza lo strumento chmod. Questo

strumento si usa specificando prima quali siano i permessi da concedere o revocare per determinati

utenti, e quindi i nomi dei file su cui lavorare. In primo luogo vanno specificate le categorie d’utenti

da includere utilizzando una combinazione dei seguenti caratteri.

Carattere Categoria

u Utente che possiede il file

g Tutti gli altri membri del gruppo che possiede il

file

o Tutti gli altri utenti presenti sul sistema

a Tutti gli altri utenti sul sistema; equivale a “ugo”

Bisogna aggiungere l’operatore che indica l’azione da eseguire.

Page 53: Set up and management of an integrated information system on Linux

53

Operazione Azione

+ Aggiunge permessi ai permessi esistenti

dell’utente

- Rimuove permessi dai permessi esistenti

dell’utente

Infine specificare i permessi

Carattere Permesso

r Imposta il permesso di lettura

w Imposta il permesso di scrittura

x Imposta il permesso d’esecuzione

> Trovare i file

Una volta imparato a gestire file e cartelle è opportuno dare anche qualche indicazione su

com’effettuare ricerche all’interno del file system.

Oltre al comando ls, ci sono infatti altri strumenti per la ricerca dei file su disco.

Il metodo più semplice per trovare il file è lo strumento locate di GNU. Si utilizza locate per

visualizzare tutti i file sul sistema il cui nome del percorso completo corrisponde ad un particolare

modello. locate visualizza un elenco di tutti i file sul sistema che corrispondono al modello e

fornisce il loro percorso completo. Quando si specifica un modello, è possibile utilizzare anche i

caratteri jolly “?” (che indica un carattere qualsiasi) e “*” (che indica un qualunque gruppo di

caratteri).

Un comando più elaborato per la ricerca di file e directory è find. Allo strumento find bisogna prima

indicare la directory in cui iniziare a cercare i documenti, poi i criteri di ricerca, che vanno al di là

del semplice nome del file da trovare.

Opzioni del comando find

-name abc cerca tutti i file con il teso abc all’interno del nome, senza fare distinzione

tra lettere maiuscole e minuscole

-size 123k cerca tutti i file dalle dimensioni di 123KByte; se s’inserisce un segno “+” o

un segno “-“ prima del numero vengono individuati i file di dimensioni

maggiori o minori di quella specificata

-mmin 123 cerca tutti i file modificati da esattamente 123 minuti; se s’inserisce un

segno “+” o un segno “-“ prima del numero vengono individuati i file

modificati da un periodo di tempo superiore o inferiore di quello specificato

-mtime 123 cerca tutti i file modificati da esattamente 123 giorni; se s’inserisce un segno

“+” o un segno “-“ prima del numero vengono individuati i file modificati da

un periodo di tempo superiore o inferiore di quello specificato

-empty cerca tutti i file vuoti

-newer abc cerca solo i file modificati più recentemente rispetto al file abc

-user pippo cerca tutti i file appartenenti all’utente pippo

-group pluto cerca tutti i file appartenenti ai membri del gruppo pluto

-exec cmd esegue in modo automatico l’istruzione cmd sui file individuati

Page 54: Set up and management of an integrated information system on Linux

54

Altro strumento rilevante nella ricerca dei file è which, che serve ad individuare con certezza la

posizione di applicazioni e strumenti.

> Analisi del testo

Tra gli strumenti disponibili in ogni distribuzione Linux ci sono alcuni piccoli tool per l’analisi del

testo. Si tratta di strumenti dalle dimensioni ridottissime e dalle funzioni ben definite, di per sé non

particolarmente potenti ma in grado di fornire, se usati in combinazione, risultati eccellenti.

Leggere un testo

[root@linux01 root]# cat articolo.txt

Questa riga di comando fa in modo che ciò che è contenuto nel file articolo.txt venga mostrato sullo

schermo. Se il testo è troppo lungo per rientrare nel video del pc, cat non prevede la possibilità di

visualizzare il testo una schermata alla volta. Per questo è spesso necessario utilizzarlo in

congiunzione con il comando less, che permette all’utente di navigare all’interno dell’output di un

comando come cat, spostandosi in avanti e all’indietro con i tasti direzionali. Oppure andando

avanti di una schermata alla volta premendo la barra spaziatrice. Altri comandi utili possono essere

q (per uscire) e la ricerca di un pattern di testo che si effettua con il simbolo “/”. Ad esempio se si

vuol cercare la parola “computer” in un testo visualizzato con less bisogna digitare:

/computer.

Contare il testo

Per contare il numero di caratteri, parole o righe presenti in un testo, sotto Linux c’è lo strumento

wc. Per visualizzare il numero di righe, parole e caratteri nel file outline.txt, basta digitare:

[root@linux01 root]# wc outline

Utilizzando wc bisogna indicare come argomento il nome del file da analizzare, di cui vengono così

riportate in tre colonne separate i conteggi per le righe, le parole ed i caratteri presenti. Le principali

opzioni di wc sono:

-c specifica che deve essere contato e visualizzato solo il numero dei caratteri del file

-w specifica che deve essere contato e visualizzato solo il numero delle parole del file

-l specifica che deve essere contato e visualizzato solo il numero delle righe del file

Cercare una stringa di testo

Per cercare ad esempio la parola “pollo” nel file ricette.doc:

[root@linux01 root]# grep pollo ricette.doc

L’output del comando consiste nelle righe in cui il testo cercato viene individuato.

Page 55: Set up and management of an integrated information system on Linux

55

Ancor più di altri strumenti, grep dimostra la sua potenza se utilizzato in congiunzione con più

comandi: sfruttando il già citato meccanismo della ridirezione di input ed output si può sfruttare

grep in molte situazioni.

Modificare le password

Per modificare la propria password bisogna utilizzare lo strumento passwd. Questo chiede di

indicare la password corrente (per essere sicuro di trovarsi di fronte all’utente giusto) e quindi la

nuova password che s’intende usare. Per motivi di sicurezza, né la password vecchia né quella

nuova vengono visualizzate sullo schermo. Per garantire che la nuova password sia stata scritta

correttamente, passwd chiede di immettere la nuova password due volte. Se questa non viene

digitata nello stesso modo entrambe le volte, passwd non effettua il cambiamento. Esempio:

[root@linux01 root]# passwd

Changing password for kurt

Old password: [vecchia password]

Enter the new password (minimum of 5, maximum of 8 characters)

Please use a combination of upper and lower case letters and

numbers.

New password: [nuova password]

Re-enter new password: [ridigitare nuova password]

Password changed

Le password possono comprendere caratteri sia maiuscoli sia minuscoli, le cifre da 0 a 9 e simboli

di punteggiatura; inoltre dovrebbero avere una lunghezza compresa tra cinque ed otto caratteri.

2.4. Gestione dei dischi

In un sistema Linux sono previsti due tipi di memorizzazione su disco: fissa e rimovibile. La prima

fa riferimento ad un disco permanente collegato al sistema e non prevede alcuna rimozione casuale.

La seconda categoria di dispositivi di memorizzazione su disco è quella dei dischi rimovibili, di cui

cioè si prevede l’estrazione per l’archiviazione od il trasferimento in un altro sistema.

Nei sistemi Linux, i dischi vengono impiegati dopo essere stati montati in una directory, che rende

disponibili i contenuti dell’albero delle directory del disco in quel determinato mount point. Questo

vuol dire che tutti i dischi appartengono alla medesima struttura logica di directory, e non esiste il

concetto di unità così come invece accade nel mondo Dos/Windows. I dischi possono essere

montati in qualsiasi directory del sistema, ma qualsiasi divisione tra dischi è trasparente: così, un

sistema che possiede, oltre al disco del file di sistema principale montato in /, anche diversi dischi

rigidi separati per l’albero delle sottodirectory /home, /usr e /usr/local, agli occhi dell’utente questo

non risulterà differente dai sistemi che hanno un unico disco fisso.

Gli amministratori del sistema spesso montano lettori a capacità elevata su alberi delle directory che

siano in grado di contenere molti dati e, per motivi di sicurezza, spesso si servono di diversi dischi

Page 56: Set up and management of an integrated information system on Linux

56

rigidi in un unico sistema, in modo da ridurre la perdita di dati in caso di danneggiamento di un

singolo disco.

Visualizzare lo spazio disponibile su disco

Per visualizzare quanto spazio è ancora disponibile in un disco si utilizza lo strumento df. Senza

alcun’opzione, df elenca tutti i file di sistema montati disponibili. L’output è costituito da sei

colonne con le informazioni di ciascun disco: il nome del dispositivo nella directory /dev (che

contiene i riferimenti alle periferiche del pc sotto forma di file); il numero di blocchi da 1.024 byte

utilizzati dal sistema; il numero di blocchi attualmente impiegati; il numero di blocchi disponibili; la

percentuale del dispositivo utilizzata e, infine, il nome dell’albero della directory in cui è stato

montato il dispositivo.

[root@linux01 root]# df

Filesystem 1024-blocks Used Available Capacity Mounted on

/dev/hda1 195167 43405 141648 23% /

/dev/hda2 2783807 688916 1950949 26% /usr

/dev/hdb1 2039559 1675652 258472 87% /home/utente

Visualizzare lo spazio utilizzato dai file

du è uno strumento che serve ad elencare lo spazio su disco occupato dai file. Se si utilizza senza

specificare alcun nome di file o di directory, du analizza l’intera directory corrente, altrimenti si

occupa solo di ciò che l’utente ha specificato. Questo comando scrive una riga per ogni

sottodirectory dell’albero, con tanto di spazio utilizzato espresso in KByte; l’ultima riga mostra la

quantità di spazio totale impiegata dall’intero albero della directory.

[root@linux01 root]# du

8 ./projects/documentation

12 ./projects/source

4 ./projects/etc

24 ./projects

3 ./temp

27 .

Dischi floppy

Per leggere o salvare su un disco formattato è necessario montare il disco floppy in una directory

vuota, per rendere disponibile il file di sistema nella directory specificata. Solitamente i sistemi

Linux sono per questo dotati di un’apposita directory vuota chiamata /floppy (o /mnt/floppy).

Quando si monta un disco in una directory, questa apparentemente contiene tutti i file e le directory

del filesystem del disco; quando successivamente si smonta il disco, tale directory viene svuotata:

Page 57: Set up and management of an integrated information system on Linux

57

tutti i file e le directory del disco non vengono cancellati dal file system corrispondente, ma

quest’ultimo non risulta più accessibile.

Quando si termina di utilizzare un disco floppy, è necessario smontarlo prima di estrarlo dal lettore.

In caso contrario si rischia di danneggiare o eliminare alcuni dei file in esso contenuti, che

potrebbero essere stati messi “in attesa” e non ancora del tutto scritti fisicamente sul disco; il

sistema operativo potrebbe inoltre cercare di utilizzare i file montati anche dopo l’estrazione del

disco e provocare errori e malfunzionamenti ai programmi.

Cd-Rom

Come nel caso dei dischi floppy, prima di poter utilizzare un Cd di dati nel sistema, questo deve

prima essere montato in una directory vuota. Successivamente, prima di poterlo estrarre dal lettore

Cd-Rom, questo deve essere smontato. I Cd-Rom vengono in genere montati in una sottodirectory

di /mnt (/mnt/cdrom o /mnt/dvd), e se directory simili non esistono consigliamo di crearne una

appositamente, prestando attenzione a non chiamarla semplicemente /mnt/cd per evitare confusioni

con l’omonimo comando di cambio della directory corrente. La questione dello smontare i Cd-Rom

dopo l’uso è importante ma meno delicata di quanto sia con i floppy. Innanzi tutto perché, a meno

di non utilizzare un masterizzatore sotto Linux, in genere sui Cd si compiono solo operazioni di

lettura, quindi non si rischia la perdita di dati non ancora scritti. In secondo luogo, Linux esegue

solitamente il lock dei Cd-Rom per tutto il tempo in cui questi rimangono montati nel file system e

impedisce all’utente di estrarre il disco attraverso il pulsante d’espulsione.

> Un solo disco, più piattaforme

Molti utenti Linux sono anche utenti Windows. Questo perché Windows è almeno per il momento il

sistema operativo più utilizzato negli ambienti lavorativi italiani, e perché oggi come oggi non è

facile abbandonare del tutto la piattaforma Microsoft: buona parte degli utenti Linux tiene installati

i due sistemi operativi, e qualche volta si trova davanti alla necessità di scambiare tra questi

documenti e risorse.

Il pacchetto mtools, presente praticamente in tutte le distribuzioni, fornisce una raccolta di strumenti

utili per facilitare la gestione di file e dischi rimovibili normalmente utilizzati sotto Ms-Dos. I

mtools sono un’implementazione dei più comuni comandi Dos e Windows per la gestione di file, e

riconoscono le estensioni del formato Ms-Dos impiegate dai diversi sistemi operativi Microsoft.

L’uso di questi strumenti è in generale più semplice della procedura di montare e smontare i dischi.

I comandi di mtools sono tutti simili alle controparti Dos, con l’aggiunta della lettera “m” prima del

nome dei comandi.

Le principali funzioni fornite da mtools sono:

Page 58: Set up and management of an integrated information system on Linux

58

mdir

Visualizza file e directory presenti in un disco Dos. Vuole come parametro il disco a cui si vuole

fare riferimento. Esempio:

[root@linux01 root]# mdir a:

mcopy

copia i file su un disco Dos (o da quest’ultimo in una normale directory del file system). Per copiare

un file in un disco Dos, si assegnano come argomenti il nome del file sorgente da copiare e la lettera

del drive contenente il disco su cui effettuare la copia. Esempio:

[root@linux01 root]# mcopy readme.txt a:

Al contrario, per copiare un file da un disco Dos, bisogna scambiare gli argomenti ed eseguire, dalla

directory corrente, il comando:

[root@linux01 root]# mcopy b:resume.doc

Per copiare tutti i file da un disco Dos alla directory corrente, s’indica semplicemente la lettera del

drive senza alcun nome di file:

[root@linux01 root]# mcopy a:

mdel

elimina un file da un disco Dos. Esempio:

[root@linux01 root]# mdel a:resume.doc

mformat

formatta un dischetto in modo che sia riconosciuto sotto Ms-Dos. Viene creato, all’interno del

dischetto nel floppy principale, un filesystem compatibile con i sistemi operativi Microsoft, pronto

ad essere usato sia sotto Windows sia sotto Linux. Esempio:

[root@linux01 root]# mformat a:

> Usare i dischi rimovibili

Formattare un disco floppy

Si usa mke2fs, specificando il nome del dispositivo floppy da utilizzare. Solitamente, si tratta del

primo drive per dischi rimovibili, /dev/fd0. Qualsiasi dato sul floppy viene eliminato. Esempio:

[root@linux01 root]# mke2fs /dev/fd0

Montare un disco rimovibile

Si utilizza il comando mount specificando il nome del dispositivo da inserire nel file system di

Linux. Per montare un disco floppy:

[root@linux01 root]# mount /mnt/floppy

Page 59: Set up and management of an integrated information system on Linux

59

Per montare un Cd-Rom in una directory specificata (hdc indica la terza unità collegata al controller

eide):

[root@linux01 root]# mount /dev/hdc /home/utente/cdrom

Dopo aver montato un disco rimovibile, i suoi contenuti compaiono nella directory specificata e si

può utilizzare qualsiasi comando su di essi.

Smontare un disco floppy

Si utilizza umount aggiungendo il nome della directory in cui questo è montato. Esempio:

[root@linux01 root]# umount /mnt/floppy

Attenzione: non è possibile smontare un disco se la directory corrente, quella in cui si trova

attualmente la shell, è nell’albero della directory del disco stesso. In tal caso, quando si tenta di

smontare il disco, compare l’errore che indica che il file di sistema /mnt/floppy è attualmente in uso;

bisogna perciò passare ad una directory diversa e tentare nuovamente di smontare il disco. Talvolta,

quando si smonta un disco floppy, la luce sul lettore rimane accesa per alcuni secondi successivi

alla chiusura. Questo accade perché Linux mantiene talvolta in memoria le modifiche ai file, prima

di salvarle su disco; esso si assicura che i file contenuti nel disco floppy siano aggiornati. Bisogna

perciò attendere semplicemente che la luce si spenga, prima di estrarre il disco floppy dal lettore.

Consentire agli utenti di accedere alle periferiche hardware

Alcune periferiche hardware, come i lettori Cd-Rom e le schede audio, richiedono normalmente i

privilegi dell’utente root per accedervi. Questi dispositivi hanno solitamente dei gruppi propri, così

che un utente normale possa accedervi quale membro di tale gruppo.

I gruppi di cui possono far parte gli utenti normali includono ad esempio audio (la scheda audio) e

dialout (i modem dial-out).

L’utente root può usare addgroup per aggiungere un utente al gruppo associato ad un dispositivo

hardware, indicando come argomenti il nome utente da aggiungere ed il nome del gruppo di

destinazione. Esempio:

[root@linux01 root]# addgroup utente audio

Consentire agli utenti di montare i drive

Un caso particolare d’accesso all’hardware è la possibilità di montare nel file system di Linux

dischi rimovibili di varia natura. Il file /etc/fstab specifica i dettagli sul file system in uso sul

sistema, inclusi quelli che possono essere montati dai drive floppy o dai Cd-Rom. Al fine di

consentire agli utenti di montare dischi in questi drive, l’utente root deve assicurarsi che vi sia una

riga in /etc/fstab sia per il drive floppy che per il Cd-Rom, contenenti entrambe il flag “user”:

/dev/fd0 /floppy auto defaults,noauto,user 0 0

/dev/cdrom /cdrom auto defaults,noauto,user 0 0

Page 60: Set up and management of an integrated information system on Linux

60

2.5. L’elaborazione del testo

L’elaborazione di testo è una delle principali attività svolte quotidianamente sui pc. Linux mette a

disposizione dei suoi vari utenti validi strumenti per questo scopo, molti dei quali nascono per

essere utilizzati proprio in modalità a carattere. Tra gli editor abbiamo scelto Vi ed Emacs.

> Vi

E’ di gran lunga il più famoso editor di testo sotto Unix, e tutti gli utenti di un sistema operativo di

questa famiglia prima o poi si ritrovano a doverlo utilizzare. Vi è un editor a caratteri basato sulla

separazione tra la modalità editing e la modalità comandi: per passare dall’una all’altra si usa il

tasto Esc, e mentre in modalità inserimento si possono semplicemente aggiungere nuovi caratteri o

eliminare quelli già scritti, in modalità a comandi si ha davanti una lunga serie di possibilità. Molti

comandi sono composti da più di un carattere: ad esempio per salvare sul disco il file scritto si usa

“:w”, per chiudere il programma “:q” e per chiudere il programma tralasciando le modifiche

apportate al file dall’ultimo salvataggio “:q!”.

L’editor Vi comprende un tutorial pratico, che permette di prendere confidenza con gli strumenti di

lavoro e con le funzioni del pacchetto. Il tutorial è memorizzato sotto forma di file compresso nella

directory /usr/doc/nvi.

> Emacs

Definire Emacs un editor di testo significa non rendergli giustizia: Emacs è un applicazione ampia,

capace di eseguire molte funzioni, tra cui la lettura della posta elettronica e delle news Usenet, e la

navigazione sul World Wide Web. esistono più versioni di Emacs. Gnu Emacs è l’Emacs ha le

medesime funzioni offerte da Emacs , ma comprende anche funzioni proprie da utilizzarsi con il

sistema a finestre X.

Emacs si avvia nel modo consueto, selezionando dal menu fornito dal gestore di finestre in X

oppure digitandone il nome (in caratteri minuscoli) al prompt della shell. Per lanciare Gnu Emacs al

prompt della shell, basta digitare:

[root@linux01 root]# emacs

Un file o un altro testo aperto in Emacs viene conservato in un’area chiamata buffer. per

impostazione predefinita, il buffer corrente appare nell’area grande sotto la barra dei menu. Per

scrivere un testo nel buffer, basta digitarlo. Il luogo in cui si trova il cursore nel buffer è detto punto

d’inserzione e al punto fanno riferimento molti comandi Emacs. La barra orizzontale sotto la

finestra Emacs è direttamente sotto il buffer corrente si chiama linea di modo; fornisce informazioni

sul buffer corrente. La riga di modo elenca anche i modi attivi nel buffer. I modi Emacs sono stati

Page 61: Set up and management of an integrated information system on Linux

61

generali che ne controllano il comportamento; ad esempio quando viene impostato il modo

Overwrite, il testo digitato sovrascrive il testo in corrispondenza del punto; nel modo Insert, viene

invece inserito in corrispondenza del punto. Di solito, nell’elenco compaiono il modo Fundamental

o il modo Text. L’area echo è l’area in cui Emacs scrive brevi messaggi di stato, come i messaggi di

errore; si tratta dell’ultima riga nella finestra Emacs. Quando si digita un comando che richiede un

input, l’input viene richiesto in quest’area.

Normalmente i comandi Emacs cominciano con una combinazione di tasti comprendente il tasto

Ctrl o Esc. Per esempio la funzione find-file chiede il nome di un file e apre una copia del file in un

nuovo buffer, e la scelta rapida da tastiera corrisponde a Ctrl-x, Ctrl-b.

Emacs può avere più di un buffer aperto per volta.

> La selezione del testo

A differenza di altri sistemi operativi, Linux prevede, sia nella modalità a caratteri sia in quella

grafica, un utilizzo per il terzo tasto del mouse: la copia del testo. Prima si selezionano, utilizzando

il pulsante sinistro del mouse, le parole da copiare; quindi spostandosi con il mouse in un altro

punto della pagina (o in un’altra finestra sotto X), con un click del tasto centrale il testo selezionato

viene istantaneamente incollato nella nuova posizione. Se si possiede un mouse con solo due

pulsanti, è possibile configurare gpm in modo da emulare il terzo pulsante alla pressione

contemporanea dei tasti sinistro e destro del mouse.

Page 62: Set up and management of an integrated information system on Linux

62

3. Samba

E’ un’implementazione del protocollo SMB/CIFS. SMB (Server Message Block) è il protocollo che

sotto Windows si occupa della condivisione di file e stampanti. Può anche essere utilizzato per le

autenticazioni di un server, proprio come NIS. In questo caso Samba rappresenta quello che per

Unix è NFS e lpd. In più è multipiattaforma. Infatti, oltre che su Windows e Linux è possibile

utilizzare il protocollo SMB praticamente su tutti i sistemi operativi (tutti gli altri Unix, OS/2,

Macintosh, AmigaOS e altri).

Pur essendo disponibili delle soluzioni che permettono di utilizzare NFS anche su Dos e Windows,

è altamente sconsigliabile il loro uso per problemi legati alla sicurezza: per la natura non

multiutente di Dos è impossibile impedire un uso “maldestro” o “malintenzionato” di directory

esportate con NFS (l’uso di NFS su sistemi Unix rimane, invece, una scelta preferibile in quanto

l’integrità del sistema è garantita dalla necessaria autenticazione dell’utente). Il protocollo Samba è

fatto in modo da appoggiarsi a NetBIOS (Network Basic Input Output System), un protocollo

studiato da IBM per fornire una base allo sviluppo di software per Dos.

Questi due protocolli non sono in grado di “transitare” su una rete se non vi è un terzo protocollo

che si occupi del trasporto. L’implementazione originaria di questo protocollo era studiata per

utilizzare NetBEUI (NetBIOS Extended User Interface), in seguito lo si è reso compatibile anche

con IPX di Novell. Ma, con la diffusione di Internet, il suo utilizzo con il protocollo TCP/IP è stato

quello che ha riscosso maggior successo, in quanto questo protocollo è praticamente presente

ovunque.

Samba utilizza proprio quest’implementazione. All’uso di SMB attraverso TCP/IP, Microsoft ha

dato il nome di CIFS (Common Internet File System). Samba è costituito da due demoni: smbd e

nmbd. Il primo si occupa della condivisione vera e propria, aprendo la connessione coi client dopo

averli autenticati. Il secondo, invece, è il demone che agisce come il cosiddetto “network browser”,

quello che è in grado di far vedere la nostra condivisione in “Risorse di Rete”. Può essere utilizzato

anche come server WINS (Windows Internet Name Server). Samba è uno strumento molto potente

e flessibile, sono tantissime le opzioni a nostra disposizione, ma la sua configurazione non risulta

tanto complessa come potrebbe sembrare. Infatti esiste un unico file di configurazione

/etc/samba/smb.conf. E’ strutturato come un file .INI di Windows e permette di avere delle

linee commentate con il # o con ;.

Samba è quasi sempre incluso nell’installazione di default. In caso non fosse presente sicuramente

si può trovare sul cd di installazione oppure sul sito http://www.samba.org. Su Red Hat è

Page 63: Set up and management of an integrated information system on Linux

63

necessario installare i pacchetti samba, samba-common e samba-client. E’ anche essenziale

aver già configurato correttamente le schede di rete dei pc presenti sulla LAN.

Passiamo ora all’analisi del nostro file di configurazione già modificato per permettere operazioni:

inserimento del server Linux all’interno del dominio

workgroup = MYGROUP workgroup = GRUPPOSERVIZI

autenticazione degli utenti da parte del server Microsoft (IP: 192.9.200.1)

domain = USER domain = SERVER

;passwordserver = x.x.x.x passwordserver = 192.9.200.1

accesso lettura/scrittura ad una directory resa pubblica a tutti gli utenti

1. scommentare le voci del [public] in lettura/scrittura

2. scrivere nel path una directory precedentemente creata (ad esempio:

./home/condivisione) con permessi di lettura/scrittura

# A publicly accessible directory, read/write to all users. Note that all files

# created in the directory by users will be owned by the default user, so

# any user with access can delete any other user's files. Obviously this

# directory must be writable by the default user. Another user could of course

# be specified, in which case all files would be owned by that user instead.

[public]

path = /home/condivisione

public = yes

only guest = yes

writable = yes

printable = no

accesso alle home directory da parte dei rispettivi utenti

1. opzione già attiva per default

3.1. File samba.conf

# This is the main Samba configuration file. You should read the

# smb.conf(5) manual page in order to understand the options listed

# here. Samba has a huge number of configurable options (perhaps too

# many!) most of which are not shown in this example

#

# Any line which starts with a ; (semi-colon) or a # (hash)

# is a comment and is ignored. In this example we will use a #

# for commentry and a ; for parts of the config file that you

# may wish to enable

#

# NOTE: Whenever you modify this file you should run the command "testparm"

# to check that you have not made any basic syntactic errors.

#

#======================= Global Settings =====================================

[global]

Page 64: Set up and management of an integrated information system on Linux

64

# workgroup = NT-Domain-Name or Workgroup-Name

workgroup = GRUPPOSERVIZI

# server string is the equivalent of the NT Description field

server string = Samba Server

# This option is important for security. It allows you to restrict

# connections to machines which are on your local network. The

# following example restricts access to two C class networks and

# the "loopback" interface. For more examples of the syntax see

# the smb.conf man page

; hosts allow = 192.9.200. 127.

# if you want to automatically load your printer list rather

# than setting them up individually then you'll need this

printcap name = /etc/printcap

load printers = yes

# It should not be necessary to spell out the print system type unless

# yours is non-standard. Currently supported print systems include:

# bsd, sysv, plp, lprng, aix, hpux, qnx

printing = lprng

# Uncomment this if you want a guest account, you must add this to /etc/passwd

# otherwise the user "nobody" is used

; guest account = pcguest

# this tells Samba to use a separate log file for each machine

# that connects

log file = /var/log/samba/%m.log

# Put a capping on the size of the log files (in Kb).

max log size = 0

# Security mode. Most people will want user level security. See

# security_level.txt for details.

security = SERVER

# Use password server option only with security = server

# The argument list may include:

# password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]

# or to auto-locate the domain controller/s

# password server = *

password server = 192.9.200.1

# Password Level allows matching of _n_ characters of the password for

# all combinations of upper and lower case.

; password level = 8

; username level = 8

# You may wish to use password encryption. Please read

# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.

# Do not enable this option unless you have read those documents

encrypt passwords = yes

smb passwd file = /etc/samba/smbpasswd

# The following is needed to keep smbclient from spouting spurious errors

# when Samba is built with support for SSL.

; ssl CA certFile = /usr/share/ssl/certs/ca-bundle.crt

# The following are needed to allow password changing from Windows to

# update the Linux sytsem password also.

# NOTE: Use these with 'encrypt passwords' and 'smb passwd file' above.

Page 65: Set up and management of an integrated information system on Linux

65

# NOTE2: You do NOT need these to allow workstations to change only

# the encrypted SMB passwords. They allow the Unix password

# to be kept in sync with the SMB password.

; unix password sync = Yes

; passwd program = /usr/bin/passwd %u

; passwd chat = *New*password* %n\n *Retype*new*password* %n\n

*passwd:*all*authentication*tokens*updated*successfully*

# Unix users can map to different SMB User names

; username map = /etc/samba/smbusers

# Using the following line enables you to customise your configuration

# on a per machine basis. The %m gets replaced with the netbios name

# of the machine that is connecting

; include = /etc/samba/smb.conf.%m

# This parameter will control whether or not Samba should obey PAM's

# account and session management directives. The default behavior is

# to use PAM for clear text authentication only and to ignore any

# account or session management. Note that Samba always ignores PAM

# for authentication in the case of encrypt passwords = yes

; obey pam restrictions = yes

# Most people will find that this option gives better performance.

# See speed.txt and the manual pages for details

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

# Configure Samba to use multiple interfaces

# If you have multiple network interfaces then you must list them

# here. See the man page for details.

; interfaces = 192.168.12.2/24 192.168.13.2/24

# Configure remote browse list synchronisation here

# request announcement to, or browse list sync from:

# a specific host or from / to a whole subnet (see below)

; remote browse sync = 192.168.3.25 192.168.5.255

# Cause this host to announce itself to local subnets here

; remote announce = 192.168.1.255 192.168.2.44

# Browser Control Options:

# set local master to no if you don't want Samba to become a master

# browser on your network. Otherwise the normal election rules apply

; local master = no

# OS Level determines the precedence of this server in master browser

# elections. The default value should be reasonable

; os level = 33

# Domain Master specifies Samba to be the Domain Master Browser. This

# allows Samba to collate browse lists between subnets. Don't use this

# if you already have a Windows NT domain controller doing this job

; domain master = yes

# Preferred Master causes Samba to force a local browser election on startup

# and gives it a slightly higher chance of winning the election

; preferred master = yes

# Enable this if you want Samba to be a domain logon server for

# Windows95 workstations.

; domain logons = yes

# if you enable domain logons then you may want a per-machine or

Page 66: Set up and management of an integrated information system on Linux

66

# per user logon script

# run a specific logon batch file per workstation (machine)

; logon script = %m.bat

# run a specific logon batch file per username

; logon script = %U.bat

# Where to store roving profiles (only for Win95 and WinNT)

# %L substitutes for this servers netbios name, %U is username

# You must uncomment the [Profiles] share below

; logon path = \\%L\Profiles\%U

# Windows Internet Name Serving Support Section:

# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server

; wins support = yes

# WINS Server - Tells the NMBD components of Samba to be a WINS Client

# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both

; wins server = w.x.y.z

# WINS Proxy - Tells Samba to answer name resolution queries on

# behalf of a non WINS capable client, for this to work there must be

# at least one WINS Server on the network. The default is NO.

; wins proxy = yes

# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names

# via DNS nslookups. The built-in default for versions 1.9.17 is yes,

# this has been changed in version 1.9.18 to no.

dns proxy = no

# Case Preservation can be handy - system default is _no_

# NOTE: These can be set on a per share basis

; preserve case = no

; short preserve case = no

# Default case is normally upper case for all DOS files

; default case = lower

# Be very careful with case sensitivity - it can break things!

; case sensitive = no

#============================ Share Definitions ==============================

[homes]

comment = Home Directories

browseable = no

writable = yes

valid users = %S

create mode = 0664

directory mode = 0775

# If you want users samba doesn't recognize to be mapped to a guest user

; map to guest = bad user

# Un-comment the following and create the netlogon directory for Domain Logons

;[netlogon]

; comment = Network Logon Service

; path = /usr/local/samba/lib/netlogon

; path = /

; guest ok = yes

; writable = no

; share modes = no

# Un-comment the following to provide a specific roving profile share

# the default is to use the user's home directory

;[Profiles]

Page 67: Set up and management of an integrated information system on Linux

67

; path = /usr/local/samba/profiles

; browseable = no

; guest ok = yes

# NOTE: If you have a BSD-style print system there is no need to

# specifically define each individual printer

[printers]

comment = All Printers

path = /var/spool/samba

browseable = no

# Set public = yes to allow user 'guest account' to print

guest ok = no

writable = no

printable = yes

# This one is useful for people to share files

;[tmp]

; comment = Temporary file space

; path = /tmp

; read only = no

; public = yes

# A publicly accessible directory, but read only, except for people in

# the "staff" group

;[public]

; comment = Public Stuff

; path = /home/samba

; public = yes

; writable = yes

; printable = no

; write list = @staff

# Other examples.

#

# A private printer, usable only by fred. Spool data will be placed in fred's

# home directory. Note that fred must have write access to the spool directory,

# wherever it is.

;[fredsprn]

; comment = Fred's Printer

; valid users = fred

; path = /home/fred

; printer = freds_printer

; public = no

; writable = no

; printable = yes

# A private directory, usable only by fred. Note that fred requires write

# access to the directory.

;[fredsdir]

; comment = Fred's Service

; path = /usr/somewhere/private

; valid users = fred

; public = no

; writable = yes

; printable = no

# a service which has a different directory for each machine that connects

# this allows you to tailor configurations to incoming machines. You could

# also use the %U option to tailor it by user name.

# The %m gets replaced with the machine name that is connecting.

;[pchome]

; comment = PC Directories

Page 68: Set up and management of an integrated information system on Linux

68

; path = /usr/local/pc/%m

; public = no

; writable = yes

# A publicly accessible directory, read/write to all users. Note that all files

# created in the directory by users will be owned by the default user, so

# any user with access can delete any other user's files. Obviously this

# directory must be writable by the default user. Another user could of course

# be specified, in which case all files would be owned by that user instead.

[public]

; path = /usr/somewhere/else/public

path = /home/condivisione

public = yes

only guest = yes

writable = yes

printable = no

# The following two entries demonstrate how to share a directory so that two

# users can place files there that will be owned by the specific users. In this

# setup, the directory should be writable by both users and should have the

# sticky bit set on it to prevent abuse. Obviously this could be extended to

# as many users as required.

;[myshare]

; comment = Mary's and Fred's stuff

; path = /usr/somewhere/shared

; valid users = mary fred

; public = no

; writable = yes

; printable = no

; create mask = 0765

Ogni parola racchiusa tra [ ] rappresenta una sezione.

[global] contiene le opzioni globali e le impostazioni di default. “workgroup” indica il

gruppo di lavoro al quale il nostro server Samba appartiene. “server string” ci permette di

scrivere un breve commento. “printing” indica il sistema di stampa utilizzato sul nostro sistema.

Potremmo scegliere tra: BSD, AIX, LPRNG, PLP, SYSV, HPUX, QNX, SOFTQ e CUPS.

Dobbiamo dedicare maggiore attenzione alle restanti tre voci della sezione [global]. A

“security” può essere assegnato il valore “user” che permette ad ogni utente di autenticarsi

utilizzando la propria username e password, altrimenti possiamo usare “share”. E’ possibile

mettere anche “domain” e “server”, come nel nostro caso, per far autenticare un utente

attraverso un server NT. “encrypt password = yes” ci permette di poter utilizzare Samba

anche con Windows 98, NT, 2000 ed XP. Questo perché, per motivi di sicurezza, questi sistemi

operativi non inviano più la password in chiaro, ma criptata. L’ultima voce della sezione

“smbpasswd file” indica il file contenente le password, che per default è

/etc/samba/smbpasswd.

[homes] fa in modo di esportare la home directory di ogni utente. L’utente viene riconosciuto in

base alla combinazione username/password. Con “browseable” decidiamo se far visualizzare o

Page 69: Set up and management of an integrated information system on Linux

69

meno questa cartella come condivisa tra le “Risorse di Rete”. Per default è assegnato il valore “no”,

perché la cartella condivisa appare già con il nome dell’utente (altrimenti apparirebbero due cartelle

condivise, una con il nome homes e una con il nome dell’utente). “read only = no” permette

di poter scrivere sulla condivisione, se i permessi lo consentono.

[printers] “guest ok = yes” permette l’utilizzo della stampante a tutti gli utenti e non

richiede un’autenticazione. A “printable” dovrebbe sempre essere assegnato il valore “yes”

per le stampanti. Le stampanti condivise nella nostra rete sono già installate sotto il server Microsoft

ed il server Linux le utilizza come una qualsiasi risorsa condivisa. Quindi le voci nella sezione

[printers] non hanno, per noi, alcuna importanza.

Una volta verificata la correttezza del file di configurazione possiamo avviare i demoni smbd e

nmbd attraverso il tool serviceconf oppure digitando nella shell

# service smb restart

3.2. SWAT

Nel caso non si voglia configurare a mano il file samba.conf esiste un’utilità grafica per assistere

l’amministratore nella configurazione di suddetto file. Samba Web Administration Tool (SWAT) è

un’utilità basata su Web che assiste nella configurazione del file mediante finestre molto facili da

usare. La posizione di default di SWAT è /usr/local/sbin/swat, con i file utilizzati per la

pagina Web localizzati nella directory /usr/local/samba/swat. SWAT viene avviata tramite

il processo inetd in Linux. Per eseguire SWAT è necessario creare una voce nel file

/etc/services in modo che Linux sappia a quale porta TCP essa sarà in ascolto. Potete

selezionare qualsiasi porta TCP disponibile anche se attualmente si verifica un errore se selezionate

una porta superiore a 1024. La documentazione SWAT corrente utilizza la porta TCP 901 come

esempio, quindi essa è quella che abbiamo impiegato. La voce in /etc/services dovrebbe

avere il seguente aspetto: swat 901/tcp. Successivamente deve essere aggiunta una voce nel

file /etc/inetd.conf in modo che il processo inetd sappia cosa generare quando riceve una

richiesta di connessione alla porta SWAT:

swat stream tcp nowait.400 root /usr/local/sbin/swat swat

E’ necessario riavviare il processo inetd per leggere le nuove configurazioni. Una volta riavviata

inetd possiamo utilizzare il nostro Web browser preferito e connetterci al nostro server Samba

tramite la porta definita nel file /etc/services/ (per esempio http://tuo_computer:901/). Prima

della connessione SWAT invierà una interrogazione per ricevere un ID utente ed una password.

Bisogna fare attenzione in quanto questi valori vengono inviati sulla rete in formato testo semplice;

Page 70: Set up and management of an integrated information system on Linux

70

una volta effettuato il log in nell’utilità SWAT, essa dovrebbe produrre la home page Web illustrata

nella figura sottostante.

Dalla home page è possibile visualizzare, aggiungere, eliminare o modificare tutti i parametri

contenuti nel file smb.conf. SWAT ci permetterà anche di avviare e riavviare i demoni smbd e

nmbd se avete modificato il file smb.conf.

3.3. Configurazione di Samba su Windows NT

Adesso che abbiamo un server Samba attivo vogliamo avere dei client che si collegano ad esso. Il

server Samba si comporta come un normale device in una rete CIFS di Microsoft e connettersi ad

esso è come collegarsi ad altri device CIFS presenti sulla rete. Perché una workstation Windows NT

si connetta ad un server Samba, deve essere configurata come un client per una rete Microsoft. Ci

sono tre differenti protocolli che possono essere utilizzati in reti CIFS di Microsoft: NetBEUI, IPX

e TCP/IP. Attualmente Samba supporta soltanto reti Microsoft che utilizzano il protocollo TCP/IP,

quindi tutti i client che hanno bisogno di connettersi al server Samba devono avere TCP/IP

configurato in modo adeguato, oltre ad avere istallato il normale software Client per Microsoft

Network. Per configurare la rete su una workstation Windows NT bisogna attivare la finestra di

Page 71: Set up and management of an integrated information system on Linux

71

configurazione Network facendo click su Start Settings Control Panel e poi selezionando

l’icona Network.

Con i seguenti passi è possibile configurare le impostazioni Network in modo da permettere a tutte

le workstation di connettersi al server Samba.

1. Configurare la scheda di rete. Selezionare la scheda Adapter. Se non è configurata la scheda

basta aggiungerla facendo click sul pulsante Add e selezionandola dall’elenco di schede

disponibili oppure facendo click sul pulsante Have Disk per utilizzare il driver fornito con la

scheda.

2. Configurare l’identificazione del PC. Ciascun device in un gruppo di lavoro di rete deve

avere un nome di rete univoco. E’ inoltre conveniente ma non necessario unirlo allo stesso

gruppo di lavoro o dominio in cui si trova il server Samba (perché in questo modo il server

appare nelle Risorse di Rete).

3. Configurare il protocollo TCP/IP. E’ necessario selezionare la scheda Protocols. Se il

protocollo non è installato bisogna cliccare sul pulsante Add e selezionarlo dall’elenco dei

protocolli di rete. Una volta installato deve essere configurato in modo adeguato perché il pc

possa comunicare con la rete. Selezionando TCP/IP Protocol e facendo click sul pulsante

Page 72: Set up and management of an integrated information system on Linux

72

Properties è possibile modificarne le impostazioni. L’indirizzo IP deve essere valido per la

rete locale.

4. Configurare i servizi Microsoft Network. Questi servizi sono impostati per default su una

workstation NT.

Una volta configurata adeguatamente la workstation siamo in grado di vedere il server Samba dalle

Risorse di Rete, da cui è possibile mappare drive e stampanti condivise. Se è visibile il server ma è

impossibile vedere le condivisioni, è probabile che ci sia un problema di ID utente o di password.

L’ID utente utilizzato dalla workstation Windows NT per collegarsi al server Linux è lo stesso

utilizzato per il login nella workstation stessa; da ricordare che dopo il Service Pack 3 Windows NT

impiega per default le password codificate.

3.4. Configurazione di Samba su Windows 95/98

E’ possibile collegarsi al server Samba mediante workstation Windows 95 e 98. Affinché si

colleghino a Samba, queste devono essere configurate per supportare Microsoft Network ed avere il

protocollo TCP/IP configurato. Questi componenti possono essere configurati mediante la finestra

di configurazione Network.

Page 73: Set up and management of an integrated information system on Linux

73

1. Configurare la scheda di rete. Selezionare la scheda Adapter. Se non è configurata la scheda

basta aggiungerla facendo click sul pulsante Add e selezionandola dall’elenco di schede

disponibili oppure facendo click sul pulsante Have Disk per utilizzare il driver fornito con la

scheda.

2. Configurare TCP/IP. Selezionare Microsoft, nella scheda Protocol, nell’elenco dei

fabbricanti e poi fare clic su TCP/IP, potete configurare le impostazioni IP.

3. Configurare il client per Microsoft Networks. Selezionare Microsoft dall’elenco dei

fabbricanti e poi scegliere Microsoft Client for Microsoft Networks

4. Configurare l’identificazione della workstation. Ogni device in un gruppo deve di lavoro

deve avere un Computer Name unico. E’ anche conveniente unirsi allo stesso gruppo di

lavoro o dominio su cui si trova il server Samba, anche se non è necessario.

Una volta completata la configurazione siamo in grado di vedere il server Samba fra le risorse di

rete della workstation.

3.5. Utilizzo di Samba

Adesso che abbiamo un server Samba pienamente funzionale con client che si collegano a

condivisioni e stampanti, è interessante poter monitorare tutte le nuove attività.

Samba mantiene dettagliati log file di tutte le connessioni alle condivisioni. La posizione di default

per i log file è la directory /usr/local/samba/var. I due log file principali per Samba sono.

log.smb e log.nmb. Questi file documentano l’attuale stato dei processi smbd e nmbd, oltre ai

tentativi di connessione alle condivisioni. Segue una breve descrizione delle utilità relative a

Samba.

smbstatus

Può essere utilizzata per monitorare lo stato delle connessioni Samba correnti. Mostra le

connessioni correnti oltre che i file attualmente bloccati e l’attuale stato della memoria del

server. Questo permette di monitorare connessioni alle condivisioni sul server Samba.

smbclient

Può essere utilizzata per la connessione ad altre condivisioni di rete dal server Samba.

Questo programma utilizza un interfaccia di tipo FTP quando si connette alla condivisione

remota che permette di sfogliare, inviare e ricevere file dalla condivisione. La sintassi del

comando di smbclient è la seguente:

smbclient service <password> [options]

Il parametro service è il nome della condivisione alla quale ci si vuole connettere

mediante le convenzioni di denominazione standard CIFS.

Page 74: Set up and management of an integrated information system on Linux

74

testparm

Programma utile agli amministratori. Testa il file smb.conf alla ricerca di errori di

configurazione e di incoerenze, ma non lo testa per individuare errori logici come

condivisioni configurate con privilegi di accesso errati, anche se le informazioni da esso

fornite possono aiutare a localizzare problemi di quel genere. Il formato di testparm è:

testparm [configfilename] [hostname hostIP]

configfilename è impostato per default al file standard smb.conf, sebbene possa

essere modificato qualora si voglia modificare un diverso file di configurazione. Il

programma testparm elenca i valori di tutti o parametri server come sono impostati dal

file di configurazione smb.conf.

testprns

Il programma testprns testa le stampanti definite nel file smb.conf. Verifica se la

stampante esiste nel file /etc/printcap. Il formato di testprns è:

testprns printername [printcap name]

In cui printername è il nome della stampante che si desidera testare.

nmblookup

Questo tool permette alle richieste dei nomi NetBIOS di essere effettuate da un host Unix.

make_smbcodepage

Questa utilità provvede a creare i file di definizione di codice di pagina SMB per il demone

smbd.

smbpasswd

Questo comando è un tool per cambiare gli hashes delle password di LanMan e Windows

NT sui server Samba e Windows NT.

Page 75: Set up and management of an integrated information system on Linux

75

4. Le routine di avvio: i primi minuti dopo il lancio del sistema operativo

Gli utenti che provengono dal mondo Dos/Windows 9x spesso si domandano se esista (e quale sia)

l’equivalente Linux del file autoexec.bat e config.sys che, già nelle prime versioni di Ms-

Dos, erano responsabili dell’esecuzione, all’avvio del sistema operativo, di programmi o di semplici

script personalizzati. Il processo di bootstrap ha inizio al momento dell’accensione del sistema.

Viene per prima cosa eseguito il codice residente nel bios della macchina che, terminati i test

sull’hardware, ha il compito di leggere il programma di boot residente sull’unità di avvio (di solito

si trova sul Master Boot Record del disco rigido). Il programma di boot ha il compito di caricare e

passare il controllo al kernel del sistema operativo installato, sia esso Ms-Dos, Windows 9x o NT,

2000 o XP, Linux, Unix, Mac-Os o quant’altri.

I meccanismi di gestione del processo di boot dei “dialetti” Unix (e Linux fra essi) prevedono che il

kernel effettui il probing del bus alla ricerca dei dispositivi connessi al sistema e che lanci alcuni

processi indispensabili al funzionamento del sistema operativo. Il kernel rimarrà residente in

memoria fino al riavvio del sistema operativo: tuttavia, dopo aver eseguito i compiti di cui sopra,

cederà il controllo ad un processo, il cui ruolo è molto importante, chiamato init.

I sistemi Unix vengono classificati in due categorie che si distinguono per alcune scelte

architetturali, le quali si riflettono anche sulla gestione delle routine di inizializzazione del sistema:

l’architettura System V prende il nome dallo Unix di AT&T; mentre l’architettura BSD trae il

proprio nome dall’Università della California di Berkeley nella quale è stata sviluppata. Le

principali differenze fra i due modelli, per quanto concerne il processo di inizializzazione del

sistema, si trovano nella diversa struttura del file system in relazione agli script di boot e nella scelta

dei processi lanciati dal kernel all’avvio del sistema (in particolare per quanto concerne il processo

0 che, nelle architetture System V, è lo scheduler dei processi – sotto BSD il processo 0 è invece il

demone swapper che si occupa dello spostamento delle pagine di memoria da quella fisica a

quella virtuale).

La maggior parte delle distribuzioni Linux oggi in commercio adottano il meccanismo di

inizializzazione System V, che viene ritenuto più flessibile e configurabile di quello BSD.

4.1. Init: il processo 1

Init è il processo principale di tutti i sistemi Unix, radice dell’albero dei processi correntemente

in esecuzione sulla macchina (l’unica eccezione è rappresentata dal già menzionato processo 0). Il

suo PID (Process IDentifier) è sempre 1. Il PID è un numero, assegnato automaticamente secondo

sequenza dal sistema, che identifica univocamente un processo, sia esso automatico (cioè avviato in

Page 76: Set up and management of an integrated information system on Linux

76

automatico dal sistema operativo) oppure lanciato da un utente. Come possiamo dimostrare che

init ha PID uguale ad uno? Utilizzando il comando ps, che visualizza i processi attivi, con

l'opzione x, che riporta i processi avviati senza terminale di controllo: nel risultato possiamo

leggere qualcosa del genere:

PID TTY STAT TIME COMMAND

1 ? S 0:05 init [2]

Le colonne che ci interessano sono PID, TTY (terminale su cui è in esecuzione il programma),

STAT (lo stato del programma stesso; S è sinonimo di sleeping) e COMMAND, che ovviamente

mostra il nome del programma.

Uno dei tanti modi di arrestare un sistema Unix è quello di inviare, con il comando kill, un signal

(direttiva Unix di comunicazione tra processi) di terminazione al processo 1. Il programma init si

trova solitamente nella directory /sbin, almeno per quanto concerne le architetture System V, e

viene caricato ed eseguito direttamente dal kernel di Linux. Esso legge il file /etc/inittab che

contiene le informazioni per attivare i processi necessari all’avvio del sistema ed alla gestione dei

terminali; ricava inoltre dal medesimo file l’indicazione del livello di esecuzione esaminando le

indicazioni della direttiva initdefault in esso contenuta: nel caso di Red Hat e sue derivate è il

5, anche se fosse stato 3, 4 o 5 non ci sarebbe stata differenza.

Con il termine runlevel (livello di esecuzione) si intende riferirsi allo stato corrente del sistema, la

qual cosa può dare un’indicazione sufficientemente precisa di quali possono essere i servizi in

esecuzione. I livelli di esecuzione per un sistema Linux sono 7, identificati da una cifra che varia da

0 a 6. Anche se esistono il settimo, l’ottavo e il nono, non vengono però utilizzati dai normali Unix

(e Linux con loro).

>Runlevel 0 Il sistema viene arrestato (halt). Il passaggio a questo livello equivale (in linea di

massima) all’esecuzione del comando halt o, equivalentemente, del comando shutdown –h

now.

>Runlevel 1 Single user (modalità monoutente): il sistema attiva un numero estremamente ridotto di

servizi; il file system radice viene montato in sola lettura; questo livello di esecuzione è utile

quando ogni tentativo di boot ai livelli più elevati fallisce.

>Runlevel 2 Multi user without network (modalità multiutente senza supporto di rete): è attiva la

maggior parte dei servizi con l’eccezione di quelli di rete (httpd, nfs, bind e così via).

>Runlevel 3 Multi user: tutti i servizi vengono attivati.

>Runlevel 4 Solitamente non usato dalle distribuzioni Linux.

Page 77: Set up and management of an integrated information system on Linux

77

>Runlevel 5 Graphical login: tutti i servizi sono attivi e viene proposto il login grafico anziché

quello tramite console testuale.

>Runlevel 6 Il sistema viene riavviato (reboot). Il passaggio a questo livello equivale (in linea di

massima) all’esecuzione del comando reboot o, equivalentemente, del comando shutdown -r

now.

Il comando init può essere lanciato solo dall’utente root con lo scopo di cambiare il livello di

esecuzione oppure di far riesaminare il file di configurazione /etc/inittab. Per esempio, per

porre il sistema in modalità monoutente (livello 1), occorre che l’amministratore digiti sulla shell il

comando:

[root@linux01 root]# init 1

Un modo “alternativo” per arrestare (livello 0) o riavviare (livello 6) il sistema potrebbe essere

rappresentato rispettivamente dai comandi:

[root@linux01 root]# init 0

e

[root@linux01 root]# init 6

Un’utile opzione è -t, che permette di specificare il numero di secondi di attesa prima di passare al

livello specificato (in mancanza di questo parametro si sottintendono 20 secondi). Per far invece

riesaminare la configurazione del file /etc/inittab, senza riavviare il sistema, è sufficiente che

l’utente root digiti il comando:

[root@linux01 root]# init Q

oppure

[root@linux01 root]# init q

In particolari casi, le lettere S oppure s possono indicare la modalità monoutente (single user). In

questi casi i comandi:

[root@linux01 root]# init S

oppure

[root@linux01 root]# init s

sono equivalenti al comando:

[root@linux01 root]# init 1

Ricordiamo come sia possibile eseguire init seguito da una delle prime tre lettere dell’alfabeto (a,

b o c) imponendo così l’esecuzione dei comandi, indicati nel file /etc/inittab, che riportano

un livello di esecuzione equivalente alla lettera specificata. Per esempio, per eseguire i comandi

associati al livello b è sufficiente che l’amministratore digiti dalla shell:

[root@linux01 root]# init b

Page 78: Set up and management of an integrated information system on Linux

78

Occorre tuttavia sottolineare come le tre lettere a, b e c non rappresentino dei reali runlevel: il loro

uso è limitato al testing ed all’utilizzo di particolari configurazioni del sistema e del file

/etc/inittab. Essi saranno eventualmente presenti all’interno del file di configurazione

inittab e trattati come on demand runlevel (livelli di esecuzione a richiesta).

Il file di configurazione /etc/inittab serve per specificare quali processi il comando init

deve lanciare nei diversi livelli di esecuzione (runlevel) cui abbiamo accennato sopra. Per ogni

livello di esecuzione init può lanciare uno o più programmi.

Ogni riga del file /etc/inittab deve rispettare la seguente sintassi:

id:runlevel:azione:processo

dove id rappresenta una sequenza di due caratteri che identifica univocamente la singola riga

all’interno del file; runlevel verrà sostituito con il livello (oppure i livelli) di esecuzione per i quali il

comando processo deve venire eseguito; infine azione specifica le modalità di esecuzione del

processo. In particolare, menzioniamo come particolarmente significative le seguenti keyword per il

campo azione:

>respawn Quando il processo termina, viene automaticamente riavviato.

>wait Il comando viene eseguito una sola volta; inoltre init attende il completamento

dell’esecuzione del processo prima di proseguire.

>once Il comando viene eseguito una sola volta senza attendere il completamento dell’esecuzione

del processo prima di proseguire.

>boot Il comando viene eseguito contestualmente all’avvio del sistema, dopo l’esecuzione dei

comandi associati all’azione sysinit (vedi); il campo runlevel viene ignorato.

>bootwait Simile a boot ma viene atteso il completamento dell’esecuzione del processo prima di

proseguire.

>ondemand Le righe che riportano la keyword ondemand nel campo azione permettono di

specificare i comandi che vanno eseguiti nel caso venga lanciato il comando init seguito dal

parametro a, b o c ad identificare uno degli pseudo runlevel visti prima. Nel caso venga specificata

la keyword ondemand occorre che il campo runlevel contenga una combinazione delle lettere

a, b e c in luogo delle consuete cifre da 0 a 6.

>initdefault Permette di specificare il livello di esecuzione predefinito per l’avvio del sistema. Si

presti particolare attenzione a non indicare il livello 0 (arresto del sistema) o 6 (riavvio del sistema).

>sysinit Il comando viene eseguito contestualmente all’avvio del sistema, prima di eseguire i

comandi associati alle azioni boot e bootwait; il campo runlevel viene ignorato.

Page 79: Set up and management of an integrated information system on Linux

79

>powerwait Il comando viene eseguito quando init riceve il segnale SIGPWR a segnalare un

problema con l’alimentazione elettrica; viene atteso il completamento dell’esecuzione del processo

prima di proseguire.

>powerfail Simile all’azione powerwait ma init non attende il completamento dell’esecuzione

del processo.

>powerokwait Il comando viene eseguito quando init riceve il segnale SIGPWR (a segnalare un

problema con l’alimentazione elettrica) e il file /etc/powerstatus contiene la stringa OK. Ciò

viene interpretato coma ritorno dell’alimentazione allo stato normale.

>ctrlaltdel Il comando viene eseguito quando init riceve il segnale SIGINT (ad esempio per la

pressione della combinazione di tasti Ctrl-Alt-Del).

>kbrequest Specifica quale comando init dovrà lanciare alla pressione della combinazione

kbrequest (di solito Alt-FrecciaSu).

Alcuni esempi ci permetteranno di chiarire meglio i concetti espressi.

id:5:initdefault:

Imposta a 5 (login grafico) il livello di esecuzione predefinito per il sistema.

si:l:bootwait:/etc/init.d/boot

Impone ad init di eseguire lo script boot posto nella directory /etc/init.d prima di ogni

altro script, attendendone il completamento prima di proseguire con l’esecuzione dei comandi

successivi.

si::sysinit:/etc/rc.d/rc.sysinit

Impone a init di eseguire lo script rc.sysinit posto nella directory /etc/rc.d prima

d’ogni altro script.

l0:1:wait:/etc/init.d/rc 1

Impone al sistema di eseguire lo script rc posto nella directory /etc/init.d passandogli il

parametro 1 nel caso l’esecuzione sia pari ad 1 (modalità monoutente), attendendo la fine della sua

esecuzione prima di procedere.

ls:S:wait:/etc/init.d/rc S

~~:S:respawn:/sbin/sulogin

Page 80: Set up and management of an integrated information system on Linux

80

Impone al sistema di eseguire lo script rc posto nella directory /etc/inid.d passandogli il

parametro S, nel caso il livello d’esecuzione sia S (modalità monoutente – vedi sopra), attendendo

la fine della sua esecuzione (wait), prima di lanciare il comando /sbin/sulogin per aprire una

shell d’amministrazione che deve essere riavviata non appena viene chiusa (respawn).

ca:ctrlaltdel:/sbin/shutdown –r –t 4 now

Indica il comando (/sbin/shutdown –r –t 4 now) da eseguire nel caso in cui init riceva

il segnale SIGINT (di solito con la pressione della combinazione di tasti Ctrl-Alt-Del). Si noti come

in questo caso non venga specificato alcun livello d’esecuzione.

sh:12345:powerfail:/sbin/shutdown –h now “THE POWER IS FAILING”

Impone ad init di effettuare uno shutdown immediato segnalando su tutte le console il messaggio

indicato nel caso in cui il processo riceva un signal SIGPWR (problemi d’alimentazione elettrica); il

comando deve essere eseguito se il sistema è in uno dei livelli d’esecuzione da 1 a 5.

1:2345:respawn:/sbin/mingetty –noclear tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

Avvia le console virtuali per i livelli di esecuzione da 2 a 5 (per la modalità monoutente viene

utilizzato il comando sulogin di cui sopra). La console sul dispositivo tty1 (ove vengono

visualizzati i messaggi di avvio del sistema) non deve ripulire lo schermo prima di avviarsi. Ogni

console deve essere riavviata non appena chiusa (respawn) così da rendere sempre disponibile il

prompt di login al sistema.

x:5:respawn:/usr/bin/X11/sdm -nodaemon

In caso d’esecuzione del livello 5 (login grafico), viene lanciato il comando xdm posto nella

directory /usr/bin/X11, cui viene passato il parametro –nodaemon. xdm si occupa di

mostrare lo schermo di login grafico in ambiente X. L’azione respawn garantisce che all’uscita

dell’ambiente grafico venga nuovamente presentata la finestra di login di xdm.

Page 81: Set up and management of an integrated information system on Linux

81

Ma cos'è il runlevel 5 e cosa lo differenzia dagli altri? La definizione di runlevel è già stata data in

precedenza, quello che si vuole mettere qui in evidenza è cosa comporta nel sistema il

raggiungimento di tale runlevel. A questo scopo, dobbiamo rivolgerci ancora al file

/etc/inittab, nel quale sono presenti le righe:

l0:0:wait:/etc/init.d/rc 0

l1:1:wait:/etc/init.d/rc 1

l2:2:wait:/etc/init.d/rc 2

l3:3:wait:/etc/init.d/rc 3

l4:4:wait:/etc/init.d/rc 4

l5:5:wait:/etc/init.d/rc 5

l6:6:wait:/etc/init.d/rc 6

Quindi, al runlevel che c’interessa esaminare, il quinto, viene invocata l'azione "wait", che indica ad

init di avviare il processo ed attenderne la terminazione; il processo che viene avviato è

/etc/init.d/rc con un 5 come argomento. Cos'è questo programma rc che viene richiamato?

Esso non è altro che uno script di shell, che, dopo opportuni controlli ed accorgimenti, si porta nella

directory /etc/rcX.d e n’esegue gli script contenuti. Alla "X" che abbiamo utilizzato va

comunque sostituito l'argomento passato come opzione al comando rc: quindi, nel caso del

runlevel 5, rc si porterà nella directory /etc/rc5.d.

Una volta che ogni servizio dispone del proprio file di script in grado di provvedere alla sua

attivazione e disattivazione, occorre poter segnalare al sistema quale, fra i servizi disponibili, debba

venir avviato (in quale ordine) per ciascun livello d’esecuzione. Il problema è stato risolto in

maniera piuttosto semplice. Nella directory /etc/rc.d si trovano tante directory quanti sono i

possibili livelli d’esecuzione. All’interno di ciascuna di esse si troveranno una serie di collegamenti

simbolici agli script: essi avranno un nome che inizia con la lettera S oppure con la lettera K seguita

da due cifre. Com’è facilmente intuibile, i link simbolici che iniziano con la lettera S (start)

individuano gli script da utilizzare per l’avvio dei servizi (verranno dunque eseguiti gli script di cui

i link “puntano”, seguiti dal parametro start), mentre quelli che iniziano con la lettera K (kill)

individuano gli script da utilizzare per la disattivazione degli stessi (verranno dunque eseguiti gli

script cui i link “puntano”, seguiti dal parametro stop). Gli script vengono eseguiti in rigoroso

ordine alfabetico: da qui la presenza delle due cifre che seguono la prima lettera del nome del link e

che permettono di stabilire l’ordine d’esecuzione degli script.

Page 82: Set up and management of an integrated information system on Linux

82

E’ facile rendersi conto di come le directory rc0.d e rc6.d contengano per la maggior parte script

che iniziano con la lettera K, in quanto i livelli d’esecuzione 0 e 6 servono rispettivamente

all’arresto ed al riavvio del sistema operativo.

Detto questo, esaminiamo il contenuto della directory /etc/rc5.d. Vediamo intanto cosa

contengono, utilizzando il noto comando dir (comunque di solito utilizzeremo solo il comando

ls):

dir /etc/rc5.d

il cui output è qualcosa di simile alle righe seguenti:

S10sysklogd S20anacron S20gpm S20makedev S50proftpd

S99rmnologin S12kerneld S20apmd S20inetd S20postgresql

S89cron S14ppp S20exim S20logoutd S20xfs

S91apache

Come si vede, ogni file ha il nome composto dalle tre parti descritte sopra: la lettera, il numero ed il

nome del processo.

Vediamo un esempio: l'avvio di gpm (il demone che gestisce il mouse) è precedente all'avvio di

apache, visto che gpm ha un id numerico 20 contro il 91 di apache. L'id numerico qui riportato

non ha comunque nulla a che fare con il PID che il programma si vedrà assegnato dal sistema: il

numero che qui precede il nome del programma è utilizzato per definire la priorità con la quale

vengono avviati i processi. Quindi, una volta che init verrà avviato, lancerà il programma rc che

s’incaricherà di avviare i servizi citati in /etc/rc5.d.

Precedentemente abbiamo detto che i runlevel 2, 3, 4 e 5 sono equivalenti. Alla luce di quanto detto,

adesso è possibile dimostrarlo. A parte forzare un cambiamento di runlevel (attuabile con il

comando telinit seguito dal numero di runlevel) e notare che non succede niente, vediamolo più

tecnicamente. Utilizziamo il programma diff che visualizza in output le differenze fra due file o

due directory: lanciando in sequenza

diff /etc/rc2.d /etc/rc3.d

diff /etc/rc2.d /etc/rc4.d

diff /etc/rc2.d /etc/rc5.d

il comando non darà alcun output. Se invece lanciamo:

diff /etc/rc2.d /etc/rc1.d

verranno stampate a video le differenze fra le directory.

I file presenti in, ad esempio, /etc/rc5.d, non sono veri e proprio file, bensì dei link che

puntano a degli script che portano il nome del link senza la S o la K ed il numero presenti in

Page 83: Set up and management of an integrated information system on Linux

83

/etc/init.d; ad esempio, /etc/rc5.d/S91apache punta a /etc/init.d/apache.

Tutti gli script linkati in /etc/rcX.d sono presenti in /etc/init.d, così che possano essere

utilizzati come e quando serve all'entrata d’ogni runlevel.

Sono stati descritti init e runlevel abbastanza approfonditamente, più che altro per rendere

chiari i meccanismi di avvio del sistema; tutti i link e gli script necessari saranno installati

automaticamente all'installazione del sistema o di un nuovo programma che avrà bisogno di essere

lanciato all'avvio, a meno che non si voglia scrivere un proprio programma che debba essere

automaticamente avviato al boot e interrotto allo shutdown del sistema.

4.2. L’organizzazione degli script di avvio

Una delle prime differenze tra una distribuzione Linux e l’altra è l’organizzazione degli script di

avvio dei servizi. Se le procedure di inizializzazione, il comando init e il suo file di

configurazione /etc/inittab sono elementi comuni e standard per tutte le distribuzioni di

Linux, per quanto riguarda gli script successivi la situazione può variare a seconda della

distribuzione presa in esame.

In generale, ogni distribuzione include una directory (solitamente /etc/rc.d) nella quale sono

raccolti tutti gli script di inizializzazione. In particolare, essi si trovano nella directory

/etc/rc.d/init.d. Come abbiamo visto tra gli esempi di cui sopra, nel file /etc/inittab

si trova una riga responsabile dell’avvio dello script di sistema /etc/rc.d/rc.sysinit. Il suo

nome è facilmente individuabile in quanto associato alle azioni boot, bootwait oppure

sysinit nel file /etc/inittab.

Inoltre è possibile notare, all’interno dello script inittab, il richiamo allo script

/etc/rc.d/init.d/rc cui viene passato come parametro il livello di esecuzione selezionato:

questo script si occupa di eseguire tutti i comandi e script necessari all’attivazione dei servizi

associati ad un determinato livello di esecuzione.

Oltre agli rc.sysinit ed a rc nella medesima directory dovrebbe trovarsi lo script rc.local,

che viene normalmente eseguito alla fine della procedura di inizializzazione del sistema: questo file

può essere paragonato allo script autoexec.bat dei sistemi Ms-Dos o Windows 9x ed è

solitamente utilizzato dagli amministratori per effettuare le più svariate operazioni in fase di avvio

di sistema.

Page 84: Set up and management of an integrated information system on Linux

84

4.3. Gli script di attivazione e disattivazione dei servizi

Gli script della procedura di inizializzazione hanno il compito di avviare il sistema operativo e di

fermarlo, attivando e disattivando tutti i servizi necessari, cioè intervenendo sull’avvio e la

conclusione del funzionamento dei demoni relativi.

Come già detto sopra, questi script si trovano di solito nella directory /etc/rc.d/init.d e

provvedono a fornire le funzionalità di avvio e disattivazione dei servizi, oltre che di verifica dello

stato degli stessi in modo da evitare di lanciare più volte istanze diverse del medesimo demone. Gli

script si occupano di avviare o chiudere il servizio lanciando o fermando i corrispondenti demoni:

un singolo servizio potrebbe richiedere l’esecuzione di più di un demone: è questo, per esempio, il

caso di Samba, che richiede il lancio dei demoni smbd per lo sharing dei file e nmbd per la

risoluzione dei nomi. Gli stessi script provvedono a mettere in atto tutte le azioni necessarie a poter

interagire con i demoni medesimi: per esempio, spesso viene annotato in un file l’identificatore del

processo (PID) del demone oppure viene creato un file di lock con lo scopo di segnalare che ne è in

esecuzione un’istanza.

Abbiamo già visto precedentemente l’avvio dei programmi "automatizzato" da init, esaminando

il contenuto della varie directory /etc/rcX.d (ove la lettera X andrà sostituita con la cifra da 0 a

6 corrispondente al livello di esecuzione). Ci siamo però fermati al fatto che un servizio viene

avviato richiamato dal programma rc. Questa cosa è comunque ricollegabile a qualcosa di cui ci

siamo già occupati: i messaggi del boot; richiamiamo quindi qualcosa di già visto:

Starting system log daemon: syslogd klogd.

Starting anac(h)ronistic cron: anacron.

Starting advanced power management daemon: apmd.

Starting mouse interface server: gpm.

Starting internet superserver: inetd.

Starting PostgreSQL postmaster

Starting X font server: xfs.

Starting professional ftp daemon: proftpd.

Starting periodic command scheduler: cron.

Starting web server: apache.

Questi sono gli ultimi messaggi che si vedono al boot prima che si presenti la richiesta di login. Si

nota certamente che tutti questi programmi vengono eseguiti nello stesso ordine che ci si aspetta

leggendo il numero che, in /etc/rc5.d, precede il nome del programma da avviare.

Page 85: Set up and management of an integrated information system on Linux

85

La loro caratteristica fondamentale, a differenza dei normali programmi, è che i demoni sono

normalmente in esecuzione per tutta una sessione di lavoro (che, per un server, potrebbe essere

anche di qualche mese!), dall’avvio allo shutdown. Il motivo è semplice: questi programmi, infatti,

devono sempre essere in ascolto per soddisfare eventuali richieste provenienti dall’utente o

dall’esterno, nel caso la macchina sia in rete. Prendiamo ad esempio il server FTP, proftpd,

supponendo che la macchina sia collegata in rete: se esso non fosse in esecuzione, ogni connessione

alla macchina sarebbe categoricamente rifiutata, e l’amministratore dovrebbe agire manualmente

per avviarlo; ma se viene installato un servizio, probabilmente è perché si intende utilizzarlo, quindi

perché lasciarlo inattivo?

La questione dei "servizi sempre attivi" su una macchina spesso porta a qualche perplessità: molti,

infatti, si chiedono perché avere dei programmi sempre attivi anche se non vengono utilizzati. Se da

un lato questa perplessità è più che giustificata, dall’altra bisogna andare a vedere come funziona

tecnicamente un demone, utilizzando il programma ps, che fornisce altre importanti informazioni.

Un demone, normalmente, è un programma che resta in attesa su una porta del sistema in attesa che

qualcuno o qualcosa richieda una connessione. Lo stato in cui normalmente questo programma si

trova è detto "sleep", come se il programma fosse "in letargo": le risorse occupate dal demone,

quindi, risultano minime, poiché di fatto il programma sta solamente "sopravvivendo".

Vediamo ora la cosa con qualche dato in più: tramite il programma ps si ricava qualche utile

informazione: monitoriamo il demone Apache (legato al protocollo HTTP) in sleep ed in attività:

USER PID %CPU %MEM [...] TTY STAT START TIME COMMAND

root 179 0.0 6.7 [...] ? S 22:50 0:01 /usr/sbin/apache

In questo primo caso, Apache è in Sleep (dimostrato dalla "S" nella colonna "STAT"), non occupa

per nulla la CPU (visto che nella colonna CPU c’è un chiaro 0.0%) ed utilizza una piccola parte di

memoria, che probabilmente avrà utilizzato per l’avvio e per restare in vita. Come si vede, quindi,

un programma in sleep occupa solamente una parte della memoria (che comunque occuperebbe

anche se fosse avviato su richiesta) e nessun’altra risorsa di sistema. E, soprattutto, non forza

l’utente ad avviare un servizio quando non ce ne sia il reale bisogno, visto che questo saprà

rispondere automaticamente una volta interrogato.

Il fatto di avere molti servizi attivi nella macchina, comunque, potrebbe comportare seri problemi

di sicurezza.

In generale gli script possono essere richiamati con una riga di comando simile alla seguente:

[root@linux01 root]# /etc/rc.d/init.d/nome_servizio {start|stop}

Page 86: Set up and management of an integrated information system on Linux

86

ove i parametri start e stop (naturalmente mutuamente esclusivi) servono per indicare se

avviare o fermare il servizio specificato. Col tempo gli script hanno subito una certa evoluzione e

sono stati sottoposti ad un naturale processo di raffinamento: spesso parametri validi sono quelli che

permettono il riavvio o il ricaricamento della configurazione (restart, refresh) oppure la

verifica dello stato del demone (status) e così via.

Riprendiamo Apache per gli esempi. Di default, esso è in ascolto sulla porta 80 ma, per qualche

motivo, si potrebbe decidere di modificare questa impostazione, mettendolo in ascolto, ad esempio,

sulla porta 8080. Dopo aver modificato il file di configurazione, se Apache non viene riavviato

esso sarà sempre in ascolto sulla porta 80, fino al successivo reboot quando il file di configurazione

verrà riletto. Ma, soprattutto per un server di rete, i periodi di uptime (ossia il periodo di attività

senza interruzioni di una macchina) sono assai lunghi, e non sarebbe pensabile di, come si dice in

gergo, "buttare giù" il server. Per questo motivo, è prevista la possibilità di riavviare un solo

servizio senza che nessun’altra applicazione ne risenta.

Di base, il comando è

/etc/rc.d/init.d/apache stop

per interromperlo e

/etc/init.d/apache start

per avviarlo. In alternativa, un metodo più rapido è:

/etc/init.d/apache restart

tramite il quale le azioni stop e start vengono chiamate in successione.

Inoltre, alcuni servizi prevedono anche altre azioni che comunque, rispetto alle precedenti, vengono

usate molto più di rado.

Page 87: Set up and management of an integrated information system on Linux

87

5. Lan browsing

5.1. LAN Information Server – LISa

LISa è un piccolo demone che può funzionare su sistemi end user. Fornisce qualcosa di simile a

“Network Neighborhood” di Windows, ma si appoggia solamente allo stack del protocollo TCP/IP

e non a SMB o altri. Le informazioni sugli host appartenenti alla rete sono fornite via TCP tramite

la porta 7741.

LISa supporta due modalità di ricerca degli host, il primo metodo è quello di inviare pacchetti di

richiesta echo ICMP (Internet Control Message Protocol) agli host, il secondo è quello di inviare

broadcast NetBIOS utilizzando nmblookup. Per mantenere basso il carico della rete sono

implementate diverse strategie. C’è anche un meccanismo di sicurezza di base. Per funzionalità di

sicurezza più ristretta esiste un’altra versione chiamata resLISa.

LISa può funzionare sotto diverse piattaforme Unix (Linux, BSD, Solaris, …), potrebbe avere

problemi su macchine a 64bit e non funziona affatto con Ipv6. Fornisce qualche speciale supporto

per KDE, ma è completamente indipendente, non richiede né la libreria Qt né altri componenti di

KDE.

Questo screenshot mostra cosa LISa è in grado di fare:

Page 88: Set up and management of an integrated information system on Linux

88

5.2. Come funziona LISa?

Nel file di configurazione di LISa si possono inserire range d’indirizzi IP che LISa deve controllare

quando sono disponibili. Nel caso più semplice il range è composto dagli indirizzi e dalla

subnetmask della rete aziendale interna, in modo che LISa possa controllare ogni possibile host

della rete quando questi sono connessi. Gli host sono controllati utilizzando richieste echo ICMP.

Per poter ricevere richieste echo ICMP e risposte, il programma deve aprire il così detto “raw

socket”. Quindi ha bisogno dei privilegi di root. Questo socket viene aperto subito dopo l’avvio del

programma, dopo averlo aperto con successo, i privilegi di root vengono rilasciati immediatamente

(vedi main.cpp e strictmain.cpp). Configurando LISa in questo modo, così che utilizzi anche

nmblookup, si aprirà e visualizzerà i risultati.

Page 89: Set up and management of an integrated information system on Linux

89

Dato che le richieste ICMP ed i broadcast possono causare del traffico sulla rete se c’è più di un

server attivo, i server collaborano tra di loro. Prima di effettuare dei ping (o nmblookup), inviano un

broadcast sulla porta 7741. Se qualcuno risponde a questo broadcast, verrà recuperata da questo

host la lista completa degli host funzionanti via TCP sulla porta 7741 senza bisogno di effettuare

ulteriori ping. Se nessuno risponde, l’host che ha inviato il broadcast inizierà ad effettuare dei ping

verso gli host (o nmblookup) e quindi aprirà un socket che ascolta i broadcast menzionati. Se un

host riceve una risposta al suo broadcast, non avrà un socket disponibile per ascoltare i broadcast

aperti. Quindi di solito un solo determinato server avrà questo socket aperto e solo quest’ultimo

effettuerà dei ping (o nmblookup) verso gli host. In altre parole, i server sono pigri, e fanno un

ragionamento del tipo “Farò qualcosa solo se nessun altro può fare qualcosa per me”. C’è un’altra

caratteristica che riduce il carico sulla rete. Supponiamo di configurare LISa in modo che effettui un

update ogni dieci minuti. Da questo momento non ci sono accessi al server molto frequenti. Se

nessuno ha effettuato un accesso al server durante l’ultimo periodo di update, sarà il server stesso a

fare l’update (o da se stesso o da un altro in rete) ed in seguito raddoppia il suo periodo di update,

cioè l’update successivo verrà effettuato dopo venti minuti. Questo avviene quattro volte, così se

nessuno accede al server con periodo di update di dieci minuti per lungo tempo, il suo intervallo di

update crescerà fino a centosessanta minuti, quasi tre ore. Se poi qualcuno accede ai dati dal server,

si troverà con una lista vecchia (fino ad un massimo di centosessanta minuti). Accedendo al server,

questo resetterà l’intervallo di update al valore iniziale, per esempio dieci minuti e inizierà

immediatamente l’update se quello precedente è stato effettuato più di dieci minuti prima. Questo

significa che se ci troviamo davanti una lista vecchia, basta ricontrollarla di nuovo alcuni secondi

dopo per ottenere la versione corrente. Questo avrà un effetto veloce per i server, che non effettuano

ping (o nbmlookup), dato che di solito un solo utente vi accede, e avrà un minore effetto per il

server che effettua il ping (o nmblookup), dato che tutti gli altri server della rete accedono a questo

server.

In questo modo è possibile che molti host in una rete utilizzino questo server, ma il carico della rete

rimane basso. Per l’utente non è necessario conoscere se c’è un altro server (ad esempio un server di

nomi, di file o altro) nella rete che utilizza LISa. Può sempre utilizzare LISa localmente e LISa

controllerà se ce n’è un altro, in modo trasparente per l’utente.

Se non si vuole che LISa prenda parte al broadcast, ma che effettui un ping per conto proprio, basta

fargli utilizzare un’altra porta attraverso la riga di comando con l’opzione –port o –p.

Quest’operazione non è in ogni caso raccomandata!

Inviando a LISa il segnale HUP, questo leggerà di nuovo il file di configurazione. Inviando invece

il segnale USR1, stamperà qualche informazione di stato sulla periferica d’output standard (stdout).

Page 90: Set up and management of an integrated information system on Linux

90

5.3. Accesso alle informazioni - client

Il primo client di LISa è uno ioslave per KDE2, quindi l’utente può entrare con

lan://localhost/ o lan:/, entrambi i quali contattano LISa sul sistema locale. Se c’è un

server sempre attivo e l’utente è cosciente che anche questa macchina utilizza LISa, può utilizzare il

suo client LISa direttamente con questo server scrivendo sulla barra degli indirizzi del browser:

lan://nome_del_server/. I dati che transitano attraverso il socket hanno un formato

semplice:

"decimal IP address in network byte order\0x20\full hostname\0\n"

e l’ultima linea:

0 succeeded<'\n'>

Ad esempio:

"17302538 some_host.whatever.de

18285834 linux.whatever.de

17827082 nameserver.whatever.de

0 succeeded

"

Questo dovrebbe permettere una facile frammentazione dei dati.

Se nella propria rete ci sono forti regole di sicurezza, alcuni potrebbero considerare il ping come un

potenziale attacco. Se si hanno problemi di questo tipo, è possibile provare una versione più sicura,

resLISa.

5.4. resLISa

Se nella propria rete ci sono strette regole di sicurezza e non si vuole un’altra porta aperta o cose

simili, si può utilizzare resLISa.

Con resLISa si possono effettuare ping verso tutte le reti e range d’indirizzi, si possono assegnare a

resLISa fino a sessantaquattro host attraverso i loro nomi nel suo file di configurazione. Su questi

verranno effettuati dei ping. L’utente sarà ancora in grado di utilizzare nmblookup. resLISa fornirà

anche solo l’informazione su un socket con dominio Unix, ad esempio non sulla rete. Il nome del

socket è /tmp/resLisa-NomeLogin, così resLISa può essere utilizzato tranquillamente da più

utenti su una sola macchina. Dato che non dovrebbe produrre rischi di sicurezza d’alcun tipo, è più

sicuro attivare l’opzione set UID per l’amministratore (root). I privilegi di root verranno rilasciati

subito dopo l’avvio (vedi strictmain.cpp), sono solo necessari per creare un raw socket per inviare

richieste echo ICMP. Non invierà né riceverà alcun broadcast.

Il primo client per questo è anch’esso uno ioslave per KDE2. Per utilizzarlo basta scrive sulla barra

degli indirizzi del browser: rlan:/.

Page 91: Set up and management of an integrated information system on Linux

91

5.5. Installazione

Sia resLISa che LISa aprono un così detto raw socket per inviare e ricevere richieste echo ICMP

(pings). Per fare questo hanno bisogno dei privilegi di root.

LISa offre un servizio sulla porta TCP 7741, dovrebbe essere installato dall’amministratore (root) e

avviato insieme al sistema. La configurazione per il boot automatico dei due servizi dipende dalla

distribuzione utilizzata.

Per avviare LISa su Red Hat Linux basta scrivere le seguenti linee sul file

/etc/rc.d/rc.local:

if [ -x /usr/bin/lisa ]; then

echo “Starting LISa daemon…”

/usr/bin/lisa –config=/root/.kde/share/config/lisarc

fi

oppure:

if [ -x /usr/bin/lisa ]; then

echo “Starting LISa daemon…”

/usr/bin/lisa –kde2

fi

In quest’ultimo caso, il file lisarc viene ricercato nelle directory visualizzate dal comando:

kde-config --path config

Quest’ultima soluzione potrebbe essere più rischiosa perché in caso di cambiamento del path, i file

di configurazione non verrebbero più trovati dal programma. Nel nostro caso non c’è alcuna

differenza in quanto il path impostato manualmente è il medesimo impostato dal KDE Control

Center.

Per quanto riguarda resLISa è necessario scrivere nel medesimo file righe simili alle precedenti:

/etc/rc.d/rc.local:

if [ -x /usr/bin/reslisa ]; then

echo “Starting resLISa daemon…”

/usr/bin/reslisa –config=/root/.kde/share/config/reslisarc

fi

oppure:

if [ -x /usr/bin/reslisa ]; then

echo “Starting resLISa daemon…”

/usr/bin/reslisa –kde2

fi

In ogni caso è necessario utilizzare il path corretto.

resLISa deve essere avviato per tutti gli utenti, non offre niente alla rete. Ha bisogno di essere

installato con l’opzione set UID root attiva.

Page 92: Set up and management of an integrated information system on Linux

92

Utilizzando rlan-ioslave da KDE2, resLISa può essere avviato automaticamente dal resLISa ioslave

(rlan:/).

LISa legge il file lisarc (/root/.kde/share/config/lisarc), resLISa legge il file reslisarc

(/root/.kde/share/config/reslisarc). Nel caso in cui si voglia configurare entrambi i

file dal KDE Control Center, bisogna avviarli con l’opzione –k o –kde2 dalla riga di comando.

5.6. Configurazione

Un esempio di file di configurazione lisarc, con tutte le opzioni supportate:

PingAddresses = 192.168.100.0/255.255.255.0;192.168.100.10-

192.168.199.19;192.168.200.1;192-192.168-168.100-199.0-9;

PingNames = bb_mail;

AllowedAddresses = 192.168.0.0/255.255.0.0

BroadcastNetwork = 192.168.100.0/255.255.255.0

SearchUsingNmblookup = 1 #also try nmblookup

FirstWait = 30 #30 hundredth seconds

SecondWait = -1 #only one try

#SecondWait = 60 #try twice, and the second time wait 0.6

seconds

UpdatePeriod = 300 #update after 300 secs

DeliverUnnamedHosts = 0 #don't publish hosts without name

MaxPingsAtOnce = 256 #send up to 256 ICMP echo requests at

once

Il nostro file di configurazione lisarc è il seguente ed è stato creato automaticamente dal KDE

Control Panel tramite l’opzione “Configurazione Automatica”:

AllowedAddresses=192.9.200.211/255.255.255.0;

BroadcastNetwork=192.9.200.211/255.255.255.0;

FirstWait=30

MaxPingsAtOnce=256

PingAddresses=

PingNames=

SearchUsingNmblookup=1

SecondWait=-1

UpdatePeriod=300

Per quanto riguarda reslisarc, il nostro file di configurazione creato automaticamente dal

programma di configurazione è il seguente:

AllowedAddresses=192.9.200.211/255.255.255.0;

FirstWait=30

MaxPingsAtOnce=256

PingNames=

SearchUsingNmblookup=0

SecondWait=-1

UpdatePeriod=300

Vediamo una descrizione di tutti i parametri:

PingAddresses

Questo è forse il parametro più importante.

Page 93: Set up and management of an integrated information system on Linux

93

Qui si scrivono gli indirizzi sui quali deve essere effettuato il ping. Si possono specificare range

multipli, sono divisi da semicolonne. Ci sono quattro possibili modi di definire gli indirizzi:

indirizzo di rete/maschera di rete: 192.168.100.0/255.255.255.0

un indirizzo IP e la maschera di rete assegnata. L’indirizzo scritto sopra non è reale e quindi

può variare. Ad esempio se si ha 10.0.0.0/255.0.0.0 si potrebbero specificare

10.1.2.0/255.255.255.0 se si è interessati solamente a questi indirizzi. La combinazione fra

indirizzo IP e netmask deve essere divisa da uno slash “/” e l’indirizzo non deve essere

obbligatoriamente un reale indirizzo di rete, potrebbe anche essere l’indirizzo di un host

della rete desiderata, ad esempio 10.12.34.67/255.0.0.0 è lo stesso che 10.0.0.0/255.0.0.0.

range dei seguenti indirizzi IP: 192.168.100.10-192.168.199.19

un primo indirizzo IP da cui inizierà il ping e un secondo indirizzo IP sul quale finirà il ping.

Entrambi gli indirizzi devono essere divisi da un “-“. In questo esempio questo produce 199-

100=99, 99*256=25.344, 25.344+(19-10+1)=25.354 indirizzi.

un indirizzo IP può essere determinato dai suoi quattro numeri decimali, è possibile

specificare dei range per ognuno di questi quattro numeri: 192-192.169-171.100-199.0-9

In questo esempio verranno effettuati ping su tutti gli indirizzi IP con il primo numero 192,

il secondo da 169 a 171, il terzo da 100 a 199 e l’ultimo da 0 a 9. Questo fornirà

1*3*100*10=3000 indirizzi. Questa possibilità è utile solo in rari casi. Qui bisogna inserire

un range per ognuno dei quattro numeri, sempre divisi da un “-“.

indirizzo IP singolo: 192.168.200.1

singolo indirizzo IP o nome dell’host. Questo campo può anche essere lasciato vuoto.

PingNames

Qui si possono specificare ulteriori host su cui effettuare il ping utilizzando i loro nomi. I nomi

devono essere divisi da semicolonne. Questo campo può anche essere lasciato vuoto.

AllowedAddresses

Questo è molto importante. LISa effettua solo ping sugli indirizzi, accetta client risponde ai

broadcast dagli indirizzi corrispondenti a quelli scritti in questo campo. Si possono aggiungere fino

a 32 indirizzi di rete/maschere di rete o singoli indirizzi. Devono essere divisi da “;” e non devono

essere messi spazi vuoti tra gli indirizzi.

Ad esempio: 192.168.0.0/255.255.0.0;192.169.0.0

Sono validi anche una rete completa ed un singolo indirizzo. Di solito l’indirizzo di rete/maschera

di rete è una buona scelta.

Page 94: Set up and management of an integrated information system on Linux

94

BroadcastNetwork

Questo parametro contiene esattamente un indirizzo di rete/maschera di rete. Specifica la rete sulla

quale verrà inviato il broadcast. Di solito questo parametro corrisponde al proprio indirizzo di

rete/maschera di rete.

Ad esempio: 192.168.0.0/255.255.0.0

SearchingUsingNmblookup

Si può inserire 0 o 1, il default è 0.

1 significa che LISa eseguirà nmblookup ed elaborerà l’output da questo comando. Questo

produce minor traffico sulla rete rispetto al ping, ma rivelerà solo gli host che hanno un smb service

attivo (macchine Windows od altre macchine che utilizzano samba). nmblookup invierà un

broadcast NetBIOS e le macchine che utilizzano smb risponderanno. Questo non raggiungerà altre

reti. Abilitando questa opzione verranno assegnati anche gli indirizzi IP su cui effettuare il ping,

quindi prima verrà eseguito nmblookup, poi inizierà la fase di ping. Sarà effettuato il ping solo

sugli indirizzi che non sono già stati determinati da nmblookup. Questo dovrebbe diminuire

leggermente il carico della rete.

FirstWait

Se LISa effettua dei ping (ad esempio se invia richieste echo ICMP, invia un mucchio di richieste in

una volta sola e poi attenderà per i centesimi di secondo specificate in questo campo. Di solito

dovrebbero andare bene valori compresi fra 5 e 50, il massimo impostabile è 99 (cioè un’attesa di

0,99 secondi, un periodo piuttosto lungo). Bisogna cercare di impostare un valore più piccolo

possibile per il quale è possibile trovare tutti gli host funzionanti. Il default è 5.

SecondWait

Dopo che LISa ha inviato tutte le richieste echo per la prima volta, è possibile che qualche host non

venga trovato. Per migliorare i risultati, LISa può effettuare il ping per la seconda volta. Questa

volta manderà dei ping solo agli host dai quali non ha ricevuto alcuna risposta.. Se sono stati

ottenuti buoni risultati dopo un solo ping, è possibile disabilitare SecondWait impostando un valore

pari a –1.

Altrimenti potrebbe essere una buona idea impostare un valore di poco più grande di quello del

FirstWait, dato che gli host che non sono stati trovati durante il primo tentativo, sono probabilmente

più lenti o momentaneamente non disponili e quindi potrebbero necessitare di alcuni millisecondi in

più per poter rispondere.

Page 95: Set up and management of an integrated information system on Linux

95

Di solito dovrebbero andare bene valori compresi fra 5 e 50 o –1 per disabilitare la seconda

scansione. Il massimo impostabile è 99 (cioè un’attesa di 0,99 secondi, un periodo piuttosto lungo).

Il default è 15.

UpdatePeriod

Questo è un intervallo in secondi dopo il quale LISa effettuerà l’update della sua lista degli host

attivi (ad esempio effettuerà ping o nmblookup o preleverà la lista degli host dal server LISa che sta

già effettuando il ping). I valori validi sono compresi fra 30 secondi e 1800 secondi (mezz’ora). Se

si dispone di una grande rete, è consigliabile impostare un intervallo non troppo piccolo, così da

mantenere basso il carico sulla rete. Impostare valori da 300 a 900 secondi (da 5 a 15 minuti) può

esse una buona scelta. Bisogna tenere in mente che il periodo di update viene raddoppiato se

nessuno accede al server, fino a 4 volte, così l’intervallo diventerà 16 volte più grande del valore

qui impostato e verrà resettato al valore impostato quando qualcuno accede di nuovo al server. Il

valore di default è 300.

DeliverUnnamedHosts

Se è stata ricevuta una risposta ad una richiesta echo da un indirizzo IP, per il quale LISa non può

determinare un nome, questo verrà visualizzato solo se tale valore è impostato a –1. Questo

parametro non sembra essere di una qualche utilità, ma ci possono essere alcune periferiche

all’interno della rete che non hanno un nome assegnato e quindi non devono essere visualizzate.

Bisogna impostare tale valore a 0 se si vogliono mantenere segrete. In caso di dubbio lasciare il

valore 0 impostato di default.

MaxPingsAtOnce

Quando si inviano i ping (richieste echo), LISa invia un mucchio di richieste in una sola volta e poi

attende le risposte. Di default ci sono 256 ping inviati in una sola volta, di solito non c’è alcuna

necessità di cambiare questo valore. Se questo viene impostato troppo grande, i buffer di ricezione

interna per le risposte alle richieste di echo possono diventare troppo piccoli. Se invece viene

impostato un valore troppo piccolo, l’update sarà lento.

5.7. Quattro differenti esempi di file di configurazione:

1. Appartenenza ad una piccola rete con 24 bit di maschera di rete, ad esempio fino a 256 host:

PingAddresses = 192.168.100.0/255.255.255.0

AllowedAddresses = 192.168.100.0/255.255.255.0

BroadcastNetwork = 192.168.100.0/255.255.255.0

Page 96: Set up and management of an integrated information system on Linux

96

FirstWait = 20 #20 hundredth

seconds

SecondWait = 30 #30 hundredth

seconds on the seconds try

UpdatePeriod = 300 #update after 300

secs

2. Considerazione dei soli host su cui sono avviati servizi samba senza che ci sia un router

all’interno della rete:

AllowedAddresses = 192.168.100.0/255.255.255.0

BroadcastNetwork = 192.168.100.0/255.255.255.0

SearchUsingNmblookup = 1 #use nmblookup

UpdatePeriod = 300 #update after 300 secs

3. Stessa rete, ma utilizzando sia nmblookup che ping. Viene inoltre controllato l’host con nome

“bb_mail”:

PingAddresses = 192.168.100.0/255.255.255.0

PingNames = bb_mail

AllowedAddresses = 192.168.0.0/255.255.0.0

BroadcastNetwork = 192.168.100.0/255.255.255.0

SearchUsingNmblookup = 1 #also try nmblookup

FirstWait = 30 #30 hundredth seconds

SecondWait = -1 #only one try

UpdatePeriod = 300 #update after 300 secs

MaxPingsAtOnce = 256 #send up to 256 ICMP echo

requests at once

4. Configurazione per resLISa, né PingAddresses né BroadcastNetwork sono utilizzati da resLISa:

PingNames = bb_mail;some_host;some_other_host

AllowedAddresses = 192.168.0.0/255.255.0.0

SearchUsingNmblookup = 1 # use nmblookup

FirstWait = 30 #30 hundredth seconds

SecondWait = -1 #only one try

UpdatePeriod = 300 #update after 300 secs

DeliverUnnamedHosts = 1 #also publish hosts

without name

MaxPingsAtOnce = 256 #send up to 256 ICMP echo

requests at once

5.8. Opzioni e Segnali della riga di comando

Opzioni

Sono supportate le seguenti opzioni della riga di comando:

-v, --version

stampa una breve informazione sulla versione.

-h, --help

fornisce una aiuto sulla linea di comando.

Page 97: Set up and management of an integrated information system on Linux

97

-p, --port PORTNR

inizializza il server sul numero di porta specificato (PORTNR) invece che sulla porta di

default 7741. Utilizzando questa opzione, LISa non sarà capace di cooperare con altri LISa

sulla rete. E’ disponibile solo per LISa ma non per resLISa.

Alcune opzioni che riguardano l’ordine di ricerca per i file di configurazione. Per resLISa il file si

chiama reslisarc anziché lisarc.

-u, -unix

ricerca prima nella directory $HOME/.lisarc, poi /etc/lisarc, questo per default

-k, --kde1

ricerca prima nella directory $HOME/.kde/share/config/lisarc, poi

$KDEDIR/share/config/lisarc

-K, --kde2

ricerca il file lisarc in ogni directory fornita dal comando kde-config –path config

-c, --config=/SOME/PATH/FILE

legge il file nel percorso specificato

Segnali

Inviando il segnale di Hangup al LISa od al resLISa, questi rileggeranno il loro file di

configurazione. La riga di comando è la seguente:

killall –HUP lisa

Inviando il segnale User1 al LISa od al resLISa, verranno stampate delle informazioni di stato

sull’output standard:

killall –USR1 lisa

Non verrà visualizzato alcun messaggio se la console da cui erano stati lanciati LISa o resLISa è

terminata.

Page 98: Set up and management of an integrated information system on Linux

98

6. X-WIN32 v.5.5.2

La Versione 5.5.2 di X-Win32 è la più recente applicazione X terminal di StarNet per i computer

Windows, che includono Windows 95, 98, ME, NT 4.0 e Windows 2000. X-Win32 consente agli

utenti di Windows di connettersi ai server Linux/Unix su una rete locale o tramite Internet.

Le applicazioni X che vengono eseguite su questi server vengono visualizzate sul desktop di

Windows. Le applicazioni X possono essere eseguite facilmente insieme alle applicazioni Windows

e si possono effettuare operazioni di copia-incolla di dati tra applicazioni X e applicazioni

Windows. Grazie all'opzione di connessione XDMCP, è possibile importare un intero desktop Unix

o Linux, come ad esempio CDE, KDE o Gnome, e convertire efficacemente Windows PC in una

potente stazione di lavoro Unix o Linux.

Con X-Win32 possono essere eseguite sul desktop Windows molteplici applicazioni X

Page 99: Set up and management of an integrated information system on Linux

99

6.1. Nuove Caratteristiche

Le nuove caratteristiche includono per esempio:

X-Config, un'interfaccia amichevole basata su pulsanti selezionabili da tastiera per

configurare Windows PC, per impostare le sessioni che connettono ad un server Unix/Linux.

Windows Terminal Server Support che permette agli amministratori del sistema di

impostare X-Win32 su un server terminale per consentire ai terminali Windows, perfino ai

terminali client leggeri privi di unità disco, di connettersi a un server Linux o Unix.

Un SSH Connect Module, primo nel settore, che permette di impostare sessioni basate su

SSH quando il software client SSH “SSH per Windows” di F-Secure viene installato sul PC.

Sessioni Multiple XDMCP, che consentono agli utenti di connettersi a molteplici server

Linux/Unix e di selezionare e accedere dal desktop ai differenti server.

Una Sessione Guidata sviluppata per i nuovi utenti al fine di semplificare la configurazione

delle sessioni che connettono a un server Linux o Unix.

Individual User Settings Support su Windows NT e 2000.

Multiple Monitor Support per Windows 98 e per Windows 2000.

Le finestre di dialogo a comparsa presentano ora un bottone di aiuto amichevole che

rimanda alle pagine corrispondenti nell'Help system.

Sono ora supportate schede di rete multiple per gli utenti che usano più di una scheda di rete

nei loro Windows PC.

La funzionalità per l'editing della tastiera, che consente agli utenti di personalizzare le

proprie tastiere, è stata ridisegnata per essere più versatile e semplice da usare.

6.2. X-Win32 + SSH

X-Win32 è l'unico X server per PC disponibile con un'opzione incorporata di connessione SSH che

cripta automaticamente i dati trasmessi tra il PC e il server.

SSH Connect Module è stato sviluppato in collaborazione con F-Secure, un importante sviluppatore

di soluzioni a gestione centralizzata per la sicurezza delle imprese. Il modulo di connessione

funziona con SSH di F-Secure per Windows Versione 4.3. Acquistando il prodotto X-Win32 + SSH

sono inclusi sia l'X server per PC X-Win32 5.1.1, sia il client F-Secure SSH 4.3.

6.3. Lingue

X-Win32 è attualmente disponibile in Inglese e Tedesco. Una versione Francese è in fase di

realizzazione e saranno prese in considerazione versioni in altre lingue.

Page 100: Set up and management of an integrated information system on Linux

100

6.4. Altre importanti caratteristiche

Sia X-Win32 sia X-Win32 + SSH offrono le seguenti importanti caratteristiche aggiuntive:

Supporto LBX

Help System avanzato e interattivo

Hide Windows tiene in ordine il desktop e la barra delle applicazioni mettendo le finestre

delle applicazioni X in "stand-by".

Last Session Terminate chiude automaticamente X-Win32 quando l'utente finisce di usarlo.

Mouse Wheel Support

Use/Send Xauth è una funzionalità per la sicurezza, consistente nell'invio di dati di X

authorization attraverso una connessione rsh o rexec.

Auto Restart riavvia automaticamente l'ultima sessione XDMCP dopo aver chiuso la

connessione X.

6.5. Filosofia del Prodotto

X-Win32 è stato progettato per essere un X server estremamente mirato, veloce, facile da usare e

conveniente. Funzioni periferiche come condivisione dei file, FTP e Telnet non fanno parte del

programma. Questi programmi si possono ottenere gratuitamente da Internet o presso altri editori a

prezzi molto competitivi. In molti casi, l'utente finale non richiede queste funzioni o ha già accesso

ad esse.

Aggiungere funzioni periferiche renderebbe X-Win32 inutilmente pesante, difficile da usare, e più

costoso. La sua semplicità e la sua elevata prestazione rappresentano la ragione fondamentale per la

quale 1,5 milioni di utenti Windows nel mondo stanno utilizzando X-Win32. X-Win32 si installa

velocemente e si avvia quasi all'istante.

Una copia di valutazione di X-Win32, pienamente funzionante, è disponibile al download sul sito

http://www.starnet.com. Quando si scarica X-Win32 per la prima volta, il produttore invia in

automatico via e-mail una chiave di licenza valida per 45 giorni in modo da poter valutare il

prodotto senza la limitazione di due ore di tempo o senza dover sopportare i messaggi di avviso

della versione demo.

6.6. Font aggiuntivi

Per utilizzare X-Win32 con certe applicazioni X, potrebbero essere necessari font aggiuntivi.

Bisogna controllare la serie di font, che è possibile scaricare dalla Pagina Download.

Page 101: Set up and management of an integrated information system on Linux

101

6.7. Configurazione di X-Win32

I requisiti richiesti dal sistema per installare X-Win32 sono:

Microsoft Windows 95, 98, ME, NT, 2000

TCP/IP

Disk space: A minimum of 8 MB free

Ci sono tre possibili modi per far partire l’X client X-Win32 su una macchina remota: rsh, rexec e

XDMCP. Sia rsh (remote shell) che rexec (remote execution) permettono la connessione ad una

macchina remota (sul quale si trova un sistema operativo Unix) ed eseguono un comando su quella

macchina, di solito un’applicazione X. XDMCP (X Display Manager Control Protocol) permette

una connessione ai processi xdm o CDE sulla macchina remota per effettuare una sessione di login.

In X-Win32 si utilizza una sessione per mantenere informazioni su rsh, rexec e XDMCP. Le

sessioni vengono create con l’utility X-Config e richiamate dal menu Sessions di X-Win32.

Sotto sono riportati alcuni esempi di sessione:

rsh

Connect mode: rsh

Login: jsmith

Command: /usr/bin/X11/xterm -ls -display $DISPLAY

XDMCP

Connect mode: XDMCP

Host name: sun1.StarNet.com

XDMCP mode: Query

rexec

Connect mode: rexec

Login: jsmith

Command: xterm -ls -display 184.237.104.23:0 (IP address of PC)

Le applicazioni rsh e rexec permettono di richiedere che un file di comandi o un programma

eseguibile siano eseguiti su un elaboratore remoto invece che sull'elaboratore locale.

Poiché è un sistema client/server, il sistema X Windows ha importanti differenze se comparato con

altri software client/server del tipo mail o HTTP. Un utente alle prime armi potrebbe rimanere

confuso dal fatto che le applicazioni X (come xterm e mailtool) sono client, mentre un X display

(come X-Win32) è un server. Questo significa che quando si avvia X-Win32, si avvia un X server

che deve attendere che i client si connettano ad esso.

Page 102: Set up and management of an integrated information system on Linux

102

Di solito un utente si connette ad un client (tipicamente una macchina Unix) che è chiamata host

remoto. Tutti i comandi o programmi che vengono eseguiti sull’host remoto sono un’applicazione X

(per esempio xterm, xclock, netscape, ecc.)

La prima richiesta X Window fatta da un programma è una connessione DISPLAY

dall’applicazione X al server X (X-Win32) avviata sul pc dell’utente.

Quando si utilizzano connessioni del tipo rsh o rexec, è necessario un comando che dica a X di

utilizzare la variabile $DISPLAY per segnalare dove deve essere visualizzata la connessione

remota. La variabile $DISPLAY contiene il nome del pc sul quale sta girando X-Win32 seguito da

due punti e dal numero del display “:0” (NomePC:0 : $DISPLAY). Se l’host remoto riporta che il

nome nella variabile $DISPLAY non è valido, può essere usata la dicitura $MYIP:$DNUM. E’

necessario che sul server Linux siano avviati i servizi rsh e rexec.

Nel nostro caso abbiamo scelto di creare una sessione rexec.

Una connessione rexec invia un comando per inizializzare un’applicazione X. Il comando viene

inviato quando l’host remoto ha riconosciuto il nome dell’host, il nome di login e il comando.

Per creare la connessione:

1. Avviare l’utility X-Config.

2. Cliccare sulla scheda Session.

3. Premere il bottone Add

4. Scegliere “rexec” come metodo di connessione nella finestra di dialogo Metodo di

Connessione.

5. Nella nuova finestra di dialogo Session, inserire il nome della sessione.

6. Inserire il nome dell’host. L’host name è il nome o l’indirizzo IP dell’host remoto a cui

ci si vuole connettere (ad esempio Linux01 oppure 192.9.200.211).

7. (Opzionale) Inserire un login. Questo è il nome che è stato assegnato per accedere

all’host remoto. Se non è stato inserito, viene comunque richiesto una volta aperta la

sessione. Il login deve essere presente sulla macchina Linux a cui si accede e non può

essere quello di root.

8. Inserire un comando. Come riferimento si può utilizzare il comando già impostato per

default.

9. (Opzionale) Inserire la propria password. Se nessuna password è stata inserita, viene

comunque richiesta una volta aperta la sessione (non può essere inserita la password di

root).

10. Cliccare sul pulsante Save.

Page 103: Set up and management of an integrated information system on Linux

103

Una volta avviato X-Win32, compare una finestra con la shell. A questo punto digitare startkde

per far partire Linux con l’interfaccia grafica KDE.

Per avviare una connessione come root è necessario scrivere su prima di digitare startkde. Sarà

richiesto di inserire la password di root. Aprendo una shell dopo l’avvio dell’interfaccia grafica sarà

quindi visualizzato il prompt: [root@my_computer root]#. Nel caso in cui l’utente diventi

superuser dopo l’avvio dell’interfaccia grafica sarà invece visualizzato il prompt

[root@my_computer nome_utente]#. Nel primo caso l’utente entra effettivamente come

se root, mentre nel secondo l’utente può utilizzare i privilegi di root nella shell, ma è possibile che

per altre applicazioni sia comunque negato l’accesso.

Page 104: Set up and management of an integrated information system on Linux

104

7. Web Server Linux

Non ci sono dubbi sul fatto che se esiste un oggetto responsabile di ciò che internet è oggi questo è

il browser Web. Per la maggior parte delle persone, la parola “Internet” è sinonimo di quello che è

in effetti il World Wide Web o i suoi browser. E’ ovvio che i browser sarebbero inutili senza i Web

server.

7.1. Quale Web Server scegliere: Apache, NCSA o Netscape

Di solito requisiti diversi portano alla scelta di prodotti differenti, ma in questo caso la scelta è quasi

sempre la stessa: Apache.

Il server NCSA è il più vecchio dei tre, non viene più sviluppato e non contiene funzionalità

importanti che non siano offerte anche da Apache, quindi ci sono ben pochi motivi per utilizzarlo.

Netscape fornisce una varietà di Web server commerciali per un assortimento di piattaforme. La

versione minima dei suoi web server, FastTrack, è stato adattato a Linux, ma ci vuole tutta per

trovarlo. I server Netscape forniscono facili funzionalità d’installazione e configurazione basate su

HTML. Esistono strumenti di configurazione basati sui GUI anche per Apache, ma non sono facili

da utilizzare quanto quelli di Netscape.

Secondo un’indagine Apache è da molto tempo il Web server più diffuso su internet (oltre la metà

dei Web server ospitano Apache). Un tale risultato si spiega in parte con la grande popolarità di cui

Apache gode praticamente da sempre presso le società di Web hosting e gli Isp (Internet Service

Provider). Apache gira su un’ampia varietà di piattaforme: è disponibile sia come eseguibile binario

precompilato per Windows, Mac OS X e molte varianti di Unix, sia in forma di codice sorgente per

chi volesse adattarlo per l’uso su altre piattaforme. Il progetto modulare di questo server significa

che è facile dotarlo di nuove funzionalità senza dover intervenire in profondità sul nocciolo del

prodotto.

E’ possibile scaricare la versione base del server Apache dal sito www.apache.org, ma il corredo

funzionale di questa release è piuttosto limitato. Chi ha bisogno di moduli di espansione come l’Ssl

dovrà ricercare gli opportuni moduli di espansione, che variano anche di molto in quanto a maturità

e raffinatezza, oppure acquistare una versione commerciale di Apache come Stronghold Secure

Web Server 3 di Red Hat (www.redhat.it). Un vantaggio del progetto modulare di Apache è che

rende possibile espanderlo solo con i componenti strettamente necessari, rendendo il server meno

complesso e quindi più affidabile, sicuro e gestibile. Un ulteriore vantaggio deriva dal fatto che è

Page 105: Set up and management of an integrated information system on Linux

105

possibile scegliere da un vasto assortimento di moduli prodotti sia dalla comunità open-source sia

da società commerciali: esistono plug-in praticamente per tutto quello che può servire,

dall’abilitazione delle estensioni FrontPage fino all’esecuzione di sofisticati reindirizzamenti basati

su regole e, naturalmente, è anche possibile espandere Apache con moduli personalizzati scritti ad

hoc.

I server Web, in ogni caso, sono quasi sempre espandibili tramite componenti di terze parti; noi

abbiamo utilizzato la versione base fornita nel pacchetto di Red Hat. Nonostante il suo retaggio e la

crescente abbondanza di moduli di espansione, Apache inizia a mostrare la sua età. Questo server è

rimasto essenzialmente statico, mentre gli altri prodotti guadagnavano in termini sia di funzioni sia

di prestazioni.

La configurazione richiede la modifica a mano delle direttive presenti in una serie di file di testo. Si

tratta di un approccio che può essere apprezzato dagli amministratori che preferiscono intervenire

tramite programma (tipicamente con un linguaggio di scripting), ma non è certo molto comodo per

chi invece è abituato ad usare un’interfaccia grafica o basata su browser. Abbiamo comunque

potuto constatare che le varie impostazioni sono ben documentate, e che lo svolgimento di attività

quali l’impostazione di un nuovo server virtuale, la modifica delle restrizioni sull’accesso in base

all’indirizzo IP del client e l’aggiunta di tipi Mime è molto lineare. In ogni caso per la

configurazione di Apache esistono plug-in ad interfaccia grafica, come Comanche. Questo server

non supporta però la configurazione dinamica, quindi una modifica alle impostazioni richiede il

riavvio manuale.

Nella versione base di Apache le opzioni per la sicurezza è l’autenticazione sono piuttosto limitate.

L’autenticazione utente e il controllo dell’accesso sono gestiti principalmente tramite il file

htaccess (/usr/share/doc/mrtg-2.9.6/contrib/servers/htaccess); il

supporto di Ldap è disponibile soltanto per mezzo di un modulo di espansione e non è prevista la

capacità di effettuare transazioni sicure.

Ancora, la versione base del server non offre funzioni quali il throttling della banda passante, la

rotazione dinamica dei log, la suddivisione dei server virtuali in classi e il clustering, tutte

prerogative molto apprezzate dalle aziende più grandi e dai siti di hosting.

Come piattaforma di sviluppo, Apache gestisce direttamente gli script Cgi ed i comandi server-side

include (commenti Html che indicano al server di generare dinamicamente dei dati per la pagina

Web). Tramite plug-in è poi disponibile il supporto del Perl, di Php, di Asp (in emulazione) e di

altri linguaggi di scripting e di generazione di pagine. Anche il supporto di Nsapi e servlet java può

essere ottenuto con un plug-in.

Page 106: Set up and management of an integrated information system on Linux

106

A livello di prestazioni Apache si comporta leggermente meglio sotto Linux nei test basati sulla

fornitura di pagine statiche.

Apache 2.0, attualmente in fase di test (non è stata ancora fissata la data di rilascio) si appoggerà ad

un nuovo strato di run time che, secondo gli sviluppatori, tra l’altro permetterà di migliorare sia le

prestazioni sia l’affidabilità del server in ambiente Windows. In attesa della nuova versione, Apache

1.3 rimane la scelta valida per chi vuole un server Web gratuito sotto Unix, in particolare per i

creatori di siti Web che intendono sfruttare la sua espansibilità modulare.

La via verso il Web che abbiamo scelto è quella open source:

Sistema operativo: Linux

Server Web: Apache

Api: Cgi

Standard per le pagine dinamiche: Php

Linguaggio di programmazione: Perl, Pike, Python

Modello a componenti: Corba

Server applicativo: Jboss, Tomcat, Zope

Connettore ai database: Odbc

Gestore di database: MySQL, Postgres

Apache è gratuito, estremamente potente ed estensibile e viene fornito praticamente con tutte le

versioni di Linux.

7.2. Installazione del Web Server

La maggior parte delle installazioni offre la possibilità di installare il Web server Apache nel corso

dell’installazione. Nelle distribuzioni che utilizzano RPM è possibile controllare se Apache è

installato o meno digitando il seguente comando:

# rpm –q apache

Se Apache non è installato probabilmente basta installare il pacchetto rpm che si può trovare sul

CD-ROM oppure basta scaricarlo da internet.

7.3. Configurazione

Secondo quale versione viene installata, si dispone di uno o tre file di configurazione che si possono

modificare. I file si trovano nella directory /etc/httpd/conf/.

Le versioni più vecchie di Apache utilizzano tre file di configurazione separati, httpd.conf per

la configurazione dei demoni del Web server, access.conf per il controllo dell’accesso, e delle

Page 107: Set up and management of an integrated information system on Linux

107

directory e srm.conf per la configurazione delle risorse. Per evitare confusione, questi tre file

sono stati combinati tutti in httpd.conf.

Anche se Apache è fornito senza nessuno strumento di configurazione con interfaccia grafica,

esistono prodotti di terze parti per la sua gestione. Il pacchetto linuxconf può fornire alcune

funzionalità, come anche il progetto Comanche. Il pacchetto comanche-0.6a-1.noarch.rpm

può essere scaricato direttamente dal sito di Red Hat.

Se non si vogliono modificare manualmente i file di configurazione, è possibile utilizzare un

programma grafico come Comanche.

Come tutte le utility grafiche di Linux, non si riesce ad avere un completo controllo delle modifiche

apportate ai file di configurazione da parte di questi programmi. In caso di modifiche indesiderate

risulta difficile ritornare alla configurazione precedente.

Page 108: Set up and management of an integrated information system on Linux

108

7.4. Ottimizzazione del Web Server

Ci sono molte piccole cose che è possibile fare per ottenere maggiori prestazioni dal Web server,

incluso l’aumento o la diminuzione della quantità di processi in esecuzione, il frequente controllo

dei log file, il cambiamento dei permessi e così via.

Il web server Apache mantiene un log di tutti gli accessi al sito Web. Gli host che vi si collegano

sono identificati soltanto tramite il loro indirizzo IP, quindi anche Apache deve effettuare una

ricerca inversa dei DNS per trovare l’hostname, un processo che può richiedere da un secondo a

molti secondi, tempo durante il quale l’host remoto deve attendere con il risultato che l’accesso al

nostro sito appare lento. La cosa peggiore è che di solito la ricerca dei DNS è un’operazione di

blocco e questo significa che altri processi httpd possono essere costretti ad attendere, cosa che

può rallentare il sistema in maniera incredibile. Questo problema non è per noi molto rilevante in

quanto gli accessi in ambito aziendale risultano molto ridotti. E’ preferibile in ogni caso lasciare

disattivata la risoluzione degli hostname. Se si vuole comunque ricercare un hostname, basta

utilizzare il programma nslookup. Per disattivare la ricerca degli hostname è necessario accertarsi

che la direttiva Hostnamelookups sia impostata ad off nel file httpd.conf.

Apache tenta di mantenere un server pool, pronto a rispondere a molti accessi simultanei, e lo fa

attraverso il controllo di quanti processi httpd stanno aspettando richieste e dell’aumento e della

diminuzione delle dimensioni di pool, a seconda del carico e delle impostazioni di configurazione

predeterminate nel file httpd.conf. Le seguenti sono direttive che dovrebbero essere impostate:

StartServers 10

MinSpareServers 10

MaxSpareServers 20

StartServers determina quanti processi Apache eseguirà non appena sarà avviato. Controllerà

periodicamente quanti di questi processi sono impegnati e si accerterà che il numero di quelli di

riserva sia almeno pari a quello definito in MaxSpareServers e non superi quello definito in

MaxSpareServers.

Apache contiene un gestore predefinito che permette di visualizzare ondine lo stato del server.

Bisogna aggiungere (o decommentare) la seguente sezione nel file access.conf:

#<Location /server-status>

#SetHandler server-status

#Order deny,allow

#Deny from all

#Allow from your_domain.com

#</Location>

Page 109: Set up and management of an integrated information system on Linux

109

Questo permette di accedere all’URL http://NomeServerLinux/server-status tramite un server

appartenente al domino your_domain.com e di ottenere informazioni in merito al Web server

attualmente in esecuzione. Queste informazioni includono la versione di Apache, l’ora e la data in

cui il server è stato avviato, il traffico totale, lo stato del processo httpd ed altro ancora.

7.5. Apache Server Status

La pagina visualizzata è del tipo:

Apache Server Status for _default_

Server Version: Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b DAV/1.0.2

PHP/4.0.6 mod_perl/1.24_01

Server Built: Sep 5 2001 23:12:29

Current Time: lunedì, 08-apr-2002 16:19:03 CEST

Restart Time: lunedì, 08-apr-2002 16:18:59 CEST

Parent Server Generation: 0

Server uptime: 4 seconds

1 requests currently being processed, 7 idle servers W_______........................................................

................................................................

................................................................

................................................................

Scoreboard Key:

"_" Waiting for Connection, "S" Starting up, "R" Reading Request,

"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,

"L" Logging, "G" Gracefully finishing, "." Open slot with no current process

PID Key:

3798 in state: W , 3799 in state: _ , 3800 in state: _

3801 in state: _ , 3802 in state: _ , 3803 in state: _

3804 in state: _ , 3805 in state: _ ,

To obtain a full report with current status information you need to use the ExtendedStatus On

directive.

Apache/1.3.20 Server at _default_ Port 80

E’ possibile determinare quanti accessi il nostro Web server sta ricevendo digitando quanto segue:

# tail –f /var/log/httpd/access_log

E’ possibile visualizzare gli errori che si sono verificati digitando quanto segue:

# tail –f /var/log/httpd/error_log

Page 110: Set up and management of an integrated information system on Linux

110

Questo comando visualizza le ultime 10 righe del log file e continua ad aggiungerne finché non

viene interrotto. La velocità con cui il Web server scrive sul suo log file indica la quantità d’accessi

che sta ricevendo.

Per visualizzare la lista completa degli accessi e degli errori basta aprire i rispettivi file con un

editor di testo.

7.6. La Sicurezza del Web Server

Anche chi non ha la responsabilità di proteggere una montagna di dati aziendali riservati, ma si

ritrova solo sporadicamente a vestire i panni dell’amministratore di un sito Web, non può fare a

meno di interessarsi delle problematiche di sicurezza. Gli errori di programmazione che possono dar

luogo ad una falla di sicurezza sono di fatto inevitabili in qualunque programma complesso,

compresi i server Web. Proteggere i dati e le risorse aziendali da intrusioni, sguardi indiscreti ed

utilizzi non autorizzati è un problema non solo di prodotti ma anche di persone e di processi.

Esistono alcune misure di base che dovrebbero essere considerate essenziali da chiunque operi un

server Web.

1. Disabilitare i servizi non necessari. Se non c’è bisogno del server FTP (File Transfer

Protocol) fornito a corredo del server Web, è necessario assicurarsi che non sia in

esecuzione, evitare di installarlo o disinstallarlo nel caso sia stato automaticamente

installato. In questo modo si evita di fornire ai potenziali attaccanti un altro bersaglio che

può rivelarsi ancora più facile di quello principale. Similmente, disabilitare i linguaggi di

scripting e gli script d’esempio a meno che non siano assolutamente necessari.

2. Mantenersi aggiornati sui problemi di sicurezza. La prima cosa da fare è abbonarsi al

servizio di notifica di chi produce il server Web. Non sempre però le comunicazioni sono

tempestive: una risorsa indispensabile da usare in parallelo è la mailing list Bugtraq,

mantenuta da SecurityFocus (www.securityfocus.com). Un’altra fonte utile d’informazioni

sono i bollettini del Cert (Computer Emergency Response Team), consultabili all’indirizzo

www.cert.org/advisories/. E’ essenziale tenere sott’occhio non solo gli allarmi e le patch

relativi al server Web ma anche quelli per il sistema operativo sul quale gira.

3. Usare politiche sensate per le password. Evitare di impostare parole chiave troppo

semplici e quindi facili da indovinare, in particolare per gli account degli amministratori, ma

non definire nemmeno regole talmente complicate da costringere gli utenti ad annotarsi le

password nell’impossibilità di mandarle a memoria. Modificare sempre le password di

default ed eliminare gli account non necessari (come guest). Assicurarsi che le password

siano effettivamente abilitate per aree sensibili e le funzioni d’amministrazione.

Page 111: Set up and management of an integrated information system on Linux

111

4. Tenere sotto controllo cosa accade sulla propria rete. Molti server Web sono gratuiti e

facili da installare, ma possono creare una falla di sicurezza. Bisogna dunque fare attenzione

al software che installano gli utenti della Lan.

5. Sfruttare il sistema d’autorizzazioni del sistema operativo. Di solito il server Web lavora

con i permessi di un utente specifico. E’ necessario assicurarsi quindi che i diritti d’accesso

di un certo utente siano opportunamente limitati.

6. Monitorare i log. Il server Web tiene traccia di tutte le richieste che gli pervengono: cercare

periodicamente nei log eventuali indizi d’attività anomale.

7. Separare i dati pubblici da quelli privati. Non memorizzare i dati riservati su sistemi usati

anche come server Web, a meno che non sia assolutamente necessario. Per un’extranet, si

potrebbe prendere in considerazione l’idea di adottare un server Web posto esternamente al

firewall in modo da non mettere a rischio i dati aziendali dietro al firewall.

8. Prestare molta attenzione alla configurazione del server. Mettere i file eseguibili

all’interno di directory specifiche e fare in modo che non sia possibile scaricarne il codice

sorgente. Disattivare funzionalità quali l’indicizzazione automatica delle directory e il

supporto di WebDAV, se non se ne ha davvero bisogno. Procurarsi e mettere in funzione

tutti i tool di sicurezza messi a disposizione dal produttore del server Web o dal sistema

operativo.

9. Controllare le falle di sicurezza dei programmi. Gli script Cgi sui server Web sono

spesso soggetti a violazioni di sicurezza, in particolare se non convalidano i parametri forniti

dall’utente prima di accedere ai file o ai servizi del sistema operativo.

7.7. Hosting virtuale

L’hosting virtuale permette di ospitare più siti Web sulla stessa macchina e questa di solito è una

soluzione migliore che non procurarsi una nuova macchina dedicata per ogni sito Web che si

intende ospitare. Questo significa naturalmente che tutti i siti Web condivideranno le risorse, quindi

può darsi che questa soluzione non sia appropriata in tutti i casi. Ci sono due metodi per l’hosting

virtuale: basato su indirizzo IP e basato sul nome.

7.7.1. Hosting basato su indirizzo IP

Questo è il metodo più affidabile perché non richiede nessuna caratteristica speciale sul lato

browser e richiede soltanto che la macchina abbia un indirizzo IP separato per ciascun sito Web che

si intende ospitare. E’ possibile fare ciò installando schede di rete aggiuntive o utilizzando l’IP

aliasing.

Page 112: Set up and management of an integrated information system on Linux

112

Supponiamo che una certa macchina abbia due indirizzi IP: 192.168.0.1 che risolve come

www.domain1.com e 192.168.0.2 che risolve come www.domain2.com. Ci sono due metodi per

impostare host virtuali su IP: daemon multipli o daemon singoli.

DAEMON MULTIPLI

Anche se impostare i file di configurazione per questo metodo è molto più semplice, esso richiede

un’installazione completamente separata di Apache per ciascun host virtuale. Questo significa che

bisogna installare dal pacchetto di codice sorgente perché è necessario modificare alcune delle

directory predefinite. Inoltre bisogna aggiungere la direttiva Listen al file httpd.conf. Per

esempio, il file httpd.conf, per www.domain1.com conterrà la riga:

Listen 192.168.0.1:80

DAEMON SINGOLI

Questo metodo richiede una sola installazione di Apache ma esige una maggiore configurazione del

file httpd.conf. La direttiva VirtualHost viene utilizzata per definire i valori di ognuno degli

host virtuali. E’ possibile impostare diverse directory document root, amministratori di server e log

file per ciascun host. Quanto segue è un esempio della sezione del file httpd.conf richiesta per

impostare i due host virtuali www.domain1.com e www.domain2.com:

<VirtualHost 192.168.0.1>

ServerAdmin [email protected]

DocumentRoot /usr/local/web/domain1

ServerName www.domain1.com

ErrorLog logs/domain1_error_log

TransferLog logs/domain1_access_log

</VirtualHost>

<VirtualHost 192.168.0.2>

ServerAdmin [email protected]

DocumentRoot /usr/local/web/domain2

ServerName www.domain2.com

ErrorLog logs/domain2_error_log

TransferLog logs/domain2_access_log

</VirtualHost>

7.7.2. Hosting virtuale basato su nome

Per quanto più affidabile, l’hosting virtuale basato su IP può non essere sempre disponibile. Per

esempio può darsi che non siano immediatamente disponibili nuovi indirizzi IP. Il protocollo

HTTP/1.1 supporta metodi che permettono al server di sapere quale indirizzo il browser stia

richiedendo, rendendo possibile a più server la condivisione di un indirizzo IP.

L’impostazione dell’hosting virtuale basato su nome è molto simile a quella dell’hosting virtuale

basato su IP a daemon singolo. La maggiore differenza consiste nel fatto che bisogna utilizzare la

Page 113: Set up and management of an integrated information system on Linux

113

direttiva NameVirtualHost nel file httpd.conf. Anche con questo metodo è possibile

specificare diverse directory document root, amministratori di server e log file.

Quanto segue è un esempio della sezione del file httpd.conf necessaria per impostare host

virtuali basati sul nome. Consideriamo che www.domain1.com e www.domain2.com vengano

risolti in 192.168.0.1 e 192.168.0.2.

NameVirtualHost 192.168.0.1

<VirtualHost 192.168.0.1>

ServerAdmin [email protected]

DocumentRoot /usr/local/web/domain1

ServerName www.domain1.com

ErrorLog logs/domain1_error_log

TransferLog logs/domain1_access_log

</VirtualHost>

<VirtualHost 192.168.0.2>

ServerAdmin [email protected]

DocumentRoot /usr/local/web/domain2

ServerName www.domain2.com

ErrorLog logs/domain2_error_log

TransferLog logs/domain2_access_log

</VirtualHost>

7.7.3. Hosting virtuale basato sulla porta

Nel nostro caso abbiamo sfruttato la possibilità di utilizzare porte differenti per siti web diversi. La

nostra macchina ha un solo indirizzo IP che, sulla nostra rete viene risolto con il nome

linux01.grupposervizi.it. Immettendo il numero della porta dopo il nome si accede al

sito web assegnato a quella data porta. Questa opzione è comoda nel caso in cui non si abbia la

possibilità di avere un altro indirizzo IP od un alias per il nostro server. E’ necessario andare a

modificare il file /etc/httpd/conf/httpd.conf aggiungendo, attraverso il comando

listen, le porte sulle quali il server web dovrà restare in ascolto. Bisogna poi specificare gli host

virtuali assegnando loro il numero di porta desiderato. Ogni host virtuale va poi configurato

specificando la directory nella quale vanno cercati i file e la sequenza di ricerca. Ad ogni directory

utilizzata dal server Web è possibile impostare alcuni permessi. Il file httpd.conf conterrà

quindi delle linee simili alle seguenti:

...

Listen 80

Listen 8080

ServerName www.domain.tld

DocumentRoot /www/domain

Page 114: Set up and management of an integrated information system on Linux

114

<VirtualHost 111.22.33.44:8080>

DocumentRoot /www/domain2

...

</VirtualHost>

...

7.7.4. File httpd.conf

Riportiamo di seguito il file httpd.conf modificato per utilizzare la porta 80 e la 8080 in modo da

accedere a due siti web differenti:

## httpd.conf - configuration for the Apache web server

#

# Generated automatically... if you edit manually, the changes will be lost

# the next time you run "apacheconfig".

#

# What we listen to

#

ServerType StandAlone

ServerRoot /etc/httpd/

# We don't handle this yet...

#

# Dynamic Shared Object (DSO) Support

#

# To be able to use the functionality of a module which was built as a DSO you

# have to place corresponding `LoadModule' lines at this location so the

# directives contained in it are actually available _before_ they are used.

# Please read the file README.DSO in the Apache 1.3 distribution for more

# details about the DSO mechanism and run `httpd -l' for the list of already

# built-in (statically linked and thus always available) modules in your httpd

# binary.

#

# Note: The order is which modules are loaded is important. Don't change

# the order below without expert advice.

#

# Example:

# LoadModule foo_module modules/mod_foo.so

#LoadModule mmap_static_module modules/mod_mmap_static.so

LoadModule vhost_alias_module modules/mod_vhost_alias.so

LoadModule env_module modules/mod_env.so

LoadModule config_log_module modules/mod_log_config.so

LoadModule agent_log_module modules/mod_log_agent.so

LoadModule referer_log_module modules/mod_log_referer.so

#LoadModule mime_magic_module modules/mod_mime_magic.so

LoadModule mime_module modules/mod_mime.so

LoadModule negotiation_module modules/mod_negotiation.so

LoadModule status_module modules/mod_status.so

LoadModule info_module modules/mod_info.so

LoadModule includes_module modules/mod_include.so

LoadModule autoindex_module modules/mod_autoindex.so

LoadModule dir_module modules/mod_dir.so

LoadModule cgi_module modules/mod_cgi.so

LoadModule asis_module modules/mod_asis.so

LoadModule imap_module modules/mod_imap.so

LoadModule action_module modules/mod_actions.so

#LoadModule speling_module modules/mod_speling.so

LoadModule userdir_module modules/mod_userdir.so

Page 115: Set up and management of an integrated information system on Linux

115

LoadModule alias_module modules/mod_alias.so

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule access_module modules/mod_access.so

LoadModule auth_module modules/mod_auth.so

LoadModule anon_auth_module modules/mod_auth_anon.so

LoadModule db_auth_module modules/mod_auth_db.so

#LoadModule digest_module modules/mod_digest.so

#LoadModule proxy_module modules/libproxy.so

#LoadModule cern_meta_module modules/mod_cern_meta.so

LoadModule expires_module modules/mod_expires.so

LoadModule headers_module modules/mod_headers.so

#LoadModule usertrack_module modules/mod_usertrack.so

#LoadModule example_module modules/mod_example.so

#LoadModule unique_id_module modules/mod_unique_id.so

LoadModule setenvif_module modules/mod_setenvif.so

#LoadModule bandwidth_module modules/mod_bandwidth.so

#LoadModule put_module modules/mod_put.so

<IfDefine HAVE_PERL>

LoadModule perl_module modules/libperl.so

</IfDefine>

<IfDefine HAVE_PHP>

LoadModule php_module modules/mod_php.so

</IfDefine>

<IfDefine HAVE_PHP3>

LoadModule php3_module modules/libphp3.so

</IfDefine>

<IfDefine HAVE_PHP4>

LoadModule php4_module modules/libphp4.so

</IfDefine>

<IfDefine HAVE_DAV>

LoadModule dav_module modules/libdav.so

</IfDefine>

<IfDefine HAVE_ROAMING>

LoadModule roaming_module modules/mod_roaming.so

</IfDefine>

<IfDefine HAVE_SSL>

LoadModule ssl_module modules/libssl.so

</IfDefine>

# Reconstruction of the complete module list from all available modules

# (static and shared ones) to achieve correct module execution order.

# [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]

ClearModuleList

#AddModule mod_mmap_static.c

AddModule mod_vhost_alias.c

AddModule mod_env.c

AddModule mod_log_config.c

AddModule mod_log_agent.c

AddModule mod_log_referer.c

#AddModule mod_mime_magic.c

AddModule mod_mime.c

AddModule mod_negotiation.c

AddModule mod_status.c

AddModule mod_info.c

AddModule mod_include.c

AddModule mod_autoindex.c

AddModule mod_dir.c

AddModule mod_cgi.c

AddModule mod_asis.c

AddModule mod_imap.c

AddModule mod_actions.c

#AddModule mod_speling.c

AddModule mod_userdir.c

Page 116: Set up and management of an integrated information system on Linux

116

AddModule mod_alias.c

AddModule mod_rewrite.c

AddModule mod_access.c

AddModule mod_auth.c

AddModule mod_auth_anon.c

AddModule mod_auth_db.c

#AddModule mod_digest.c

#AddModule mod_proxy.c

#AddModule mod_cern_meta.c

AddModule mod_expires.c

AddModule mod_headers.c

#AddModule mod_usertrack.c

#AddModule mod_example.c

#AddModule mod_unique_id.c

AddModule mod_so.c

AddModule mod_setenvif.c

#AddModule mod_bandwidth.c

#AddModule mod_put.c

<IfDefine HAVE_PERL>

AddModule mod_perl.c

</IfDefine>

<IfDefine HAVE_PHP>

AddModule mod_php.c

</IfDefine>

<IfDefine HAVE_PHP3>

AddModule mod_php3.c

</IfDefine>

<IfDefine HAVE_PHP4>

AddModule mod_php4.c

</IfDefine>

<IfDefine HAVE_DAV>

AddModule mod_dav.c

</IfDefine>

<IfDefine HAVE_ROAMING>

AddModule mod_roaming.c

</IfDefine>

<IfDefine HAVE_SSL>

AddModule mod_ssl.c

</IfDefine>

ServerName linux01

ServerAdmin root@localhost

Listen 80

Listen 8080

Port 80

ScoreBoardFile /var/run/httpd.scoreboard

# Where do we put the lock and pif files?

LockFile /var/lock/httpd.lock

PidFile /var/run/httpd.pid

CoreDumpDirectory "/etc/httpd"

# Documents

DocumentRoot /var/www/html

UserDir public_html

IndexOptions FancyIndexing

# Who runs the server?

Page 117: Set up and management of an integrated information system on Linux

117

User apache

Group apache

# Performance parameters

MaxClients 150

TimeOut 300

KeepAlive false

MaxKeepAliveRequests 100

MaxRequestsPerChild 100

KeepAliveTimeout 15

MinSpareServers 5

MaxSpareServers 20

StartServers 8

# Error documents

# Misc

AccessFileName .htaccess

UseCanonicalName on

TypesConfig /etc/mime.types

DefaultType "text/plain"

# Defaults for virtual hosts

ServerSignature on

# Logs

ErrorLog /var/log/httpd/error_log

LogLevel warn

HostNameLookups Off

# Need to fix this

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

CustomLog /var/log/httpd/access_log common

Alias /icons/ "/var/www/icons/"

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

#

# ScriptAlias: This controls which directories contain server scripts.

# ScriptAliases are essentially the same as Aliases, except that

# documents in the realname directory are treated as applications and

# run by the server when requested rather than as documents sent to the client.

# The same rules about trailing "/" apply to ScriptAlias directives as to

# Alias.

#

#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

#

# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased

# CGI directory exists, if you have that configured.

#

<Directory "/var/www/cgi-bin">

AllowOverride None

Options ExecCGI

Order allow,deny

Allow from all

</Directory>

#

# Redirect allows you to tell clients about documents which used to exist in

Page 118: Set up and management of an integrated information system on Linux

118

# your server's namespace, but do not anymore. This allows you to tell the

# clients where to look for the relocated document.

# Format: Redirect old-URI new-URL

#

#

# Directives controlling the display of server-generated directory listings.

#

#

# FancyIndexing: whether you want fancy directory indexing or standard

#

IndexOptions FancyIndexing

#

# AddIcon* directives tell the server which icon to show for different

# files or filename extensions. These are only displayed for

# FancyIndexed directories.

#

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*

AddIconByType (IMG,/icons/image2.gif) image/*

AddIconByType (SND,/icons/sound2.gif) audio/*

AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe

AddIcon /icons/binhex.gif .hqx

AddIcon /icons/tar.gif .tar

AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv

AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip

AddIcon /icons/a.gif .ps .ai .eps

AddIcon /icons/layout.gif .html .shtml .htm .pdf

AddIcon /icons/text.gif .txt

AddIcon /icons/c.gif .c

AddIcon /icons/p.gif .pl .py

AddIcon /icons/f.gif .for

AddIcon /icons/dvi.gif .dvi

AddIcon /icons/uuencoded.gif .uu

AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl

AddIcon /icons/tex.gif .tex

AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..

AddIcon /icons/hand.right.gif README

AddIcon /icons/folder.gif ^^DIRECTORY^^

AddIcon /icons/blank.gif ^^BLANKICON^^

#

# DefaultIcon: which icon to show for files which do not have an icon

# explicitly set.

#

DefaultIcon /icons/unknown.gif

#

# AddDescription: allows you to place a short description after a file in

# server-generated indexes. These are only displayed for FancyIndexed

# directories.

# Format: AddDescription "description" filename

#

#AddDescription "GZIP compressed document" .gz

#AddDescription "tar archive" .tar

#AddDescription "GZIP compressed tar archive" .tgz

Page 119: Set up and management of an integrated information system on Linux

119

#

# ReadmeName: the name of the README file the server will look for by

# default, and append to directory listings.

#

# HeaderName: the name of a file which should be prepended to

# directory indexes.

#

# The server will first look for name.html and include it if found.

# If name.html doesn't exist, the server will then look for name.txt

# and include it as plaintext if found.

#

ReadmeName README

HeaderName HEADER

#

# IndexIgnore: a set of filenames which directory indexing should ignore

# and not include in the listing. Shell-style wildcarding is permitted.

#

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

#

# AddEncoding: allows you to have certain browsers (Mosaic/X 2.1+) uncompress

# information on the fly. Note: Not all browsers support this.

# Despite the name similarity, the following Add* directives have nothing

# to do with the FancyIndexing customization directives above.

#

AddEncoding x-compress Z

AddEncoding x-gzip gz tgz

#

# AddLanguage: allows you to specify the language of a document. You can

# then use content negotiation to give a browser a file in a language

# it can understand. Note that the suffix does not have to be the same

# as the language keyword --- those with documents in Polish (whose

# net-standard language code is pl) may wish to use "AddLanguage pl .po"

# to avoid the ambiguity with the common suffix for perl scripts.

#

AddLanguage en .en

AddLanguage fr .fr

AddLanguage de .de

AddLanguage da .da

AddLanguage el .el

AddLanguage it .it

#

# LanguagePriority: allows you to give precedence to some languages

# in case of a tie during content negotiation.

# Just list the languages in decreasing order of preference.

#

LanguagePriority en fr de

#

# AddType: allows you to tweak mime.types without actually editing it, or to

# make certain files to be certain types.

#

# The following is for PHP4 (conficts with PHP/FI, below):

<IfModule mod_php4.c>

AddType application/x-httpd-php .php4 .php3 .phtml .php

AddType application/x-httpd-php-source .phps

</IfModule>

# The following is for PHP3:

Page 120: Set up and management of an integrated information system on Linux

120

<IfModule mod_php3.c>

AddType application/x-httpd-php3 .php3

AddType application/x-httpd-php3-source .phps

</IfModule>

# The following is for PHP/FI (PHP2):

<IfModule mod_php.c>

AddType application/x-httpd-php .phtml

</IfModule>

AddType application/x-tar .tgz

#

# AddHandler: allows you to map certain file extensions to "handlers",

# actions unrelated to filetype. These can be either built into the server

# or added with the Action command (see below)

#

# If you want to use server side includes, or CGI outside

# ScriptAliased directories, uncomment the following lines.

#

# To use CGI scripts:

#

#AddHandler cgi-script .cgi

#

# To use server-parsed HTML files

#

AddType text/html .shtml

AddHandler server-parsed .shtml

#

# Uncomment the following line to enable Apache's send-asis HTTP file

# feature

#

#AddHandler send-as-is asis

#

# If you wish to use server-parsed imagemap files, use

#

AddHandler imap-file map

#

# The following directives modify normal HTTP response behavior.

# The first directive disables keepalive for Netscape 2.x and browsers that

# spoof it. There are known problems with these browser implementations.

# The second directive is for Microsoft Internet Explorer 4.0b2

# which has a broken HTTP/1.1 implementation and does not properly

# support keepalive when it is used on 301 or 302 (redirect) responses.

#

BrowserMatch "Mozilla/2" nokeepalive

BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0

#

# The following directive disables HTTP/1.1 responses to browsers which

# are in violation of the HTTP/1.0 spec by not being able to grok a

# basic 1.1 response.

#

BrowserMatch "RealPlayer 4\.0" force-response-1.0

BrowserMatch "Java/1\.0" force-response-1.0

BrowserMatch "JDK/1\.0" force-response-1.0

# If the perl module is installed, this will be enabled.

<IfModule mod_perl.c>

Page 121: Set up and management of an integrated information system on Linux

121

Alias /perl/ /var/www/perl/

<Location /perl>

SetHandler perl-script

PerlHandler Apache::Registry

Options +ExecCGI

</Location>

</IfModule>

#

# Allow http put (such as Netscape Gold's publish feature)

# Use htpasswd to generate /etc/httpd/conf/passwd.

# You must unremark these two lines at the top of this file as well:

#LoadModule put_module modules/mod_put.so

#AddModule mod_put.c

#

#Alias /upload /tmp

#<Location /upload>

# EnablePut On

# AuthType Basic

# AuthName Temporary

# AuthUserFile /etc/httpd/conf/passwd

# EnableDelete Off

# umask 007

# <Limit PUT>

# require valid-user

# </Limit>

#</Location>

#

# Allow server status reports, with the URL of http://servername/server-status

# Change the ".your_domain.com" to match your domain to enable.

#

#<Location /server-status>

# SetHandler server-status

# Order deny,allow

# Deny from all

# Allow from .your_domain.com

#</Location>

#

# Allow remote server configuration reports, with the URL of

# http://servername/server-info (requires that mod_info.c be loaded).

# Change the ".your_domain.com" to match your domain to enable.

#

#<Location /server-info>

# SetHandler server-info

# Order deny,allow

# Deny from all

# Allow from .your_domain.com

#</Location>

# Allow access to local system documentation from localhost

Alias /doc/ /usr/share/doc/

<Location /doc>

order deny,allow

deny from all

allow from localhost

Options Indexes FollowSymLinks

</Location>

#

<IfDefine HAVE_SSL>

##

Page 122: Set up and management of an integrated information system on Linux

122

## SSL Virtual Host Context

##

# Apache will only listen on port 80 by default. Defining the virtual server

# (below) won't make it automatically listen on the virtual server's port.

Listen 443

<VirtualHost _default_:443>

# General setup for the virtual host

DocumentRoot "/var/www/html"

# SSL Engine Switch:

# Enable/Disable SSL for this virtual host.

SSLEngine on

# SSL Cipher Suite:

# List the ciphers that the client is permitted to negotiate.

# See the mod_ssl documentation for a complete list.

#SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

# Server Certificate:

# Point SSLCertificateFile at a PEM encoded certificate. If

# the certificate is encrypted, then you will be prompted for a

# pass phrase. Note that a kill -HUP will prompt again. A test

# certificate can be generated with `make certificate' under

# built time. Keep in mind that if you've both a RSA and a DSA

# certificate you can configure both in parallel (to also allow

# the use of DSA ciphers, etc.)

SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt

#SSLCertificateFile /etc/httpd/conf/ssl.crt/server-dsa.crt

# Server Private Key:

# If the key is not combined with the certificate, use this

# directive to point at the key file. Keep in mind that if

# you've both a RSA and a DSA private key you can configure

# both in parallel (to also allow the use of DSA ciphers, etc.)

SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key

#SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server-dsa.key

# Server Certificate Chain:

# Point SSLCertificateChainFile at a file containing the

# concatenation of PEM encoded CA certificates which form the

# certificate chain for the server certificate. Alternatively

# the referenced file can be the same as SSLCertificateFile

# when the CA certificates are directly appended to the server

# certificate for convinience.

#SSLCertificateChainFile /etc/httpd/conf/ssl.crt/ca.crt

# Certificate Authority (CA):

# Set the CA certificate verification path where to find CA

# certificates for client authentication or alternatively one

# huge file containing all of them (file must be PEM encoded)

# Note: Inside SSLCACertificatePath you need hash symlinks

# to point to the certificate files. Use the provided

# Makefile to update the hash symlinks after changes.

#SSLCACertificatePath /etc/httpd/conf/ssl.crt

#SSLCACertificateFile /etc/httpd/conf/ssl.crt/ca-bundle.crt

# Certificate Revocation Lists (CRL):

# Set the CA revocation path where to find CA CRLs for client

# authentication or alternatively one huge file containing all

# of them (file must be PEM encoded)

Page 123: Set up and management of an integrated information system on Linux

123

# Note: Inside SSLCARevocationPath you need hash symlinks

# to point to the certificate files. Use the provided

# Makefile to update the hash symlinks after changes.

#SSLCARevocationPath /etc/httpd/conf/ssl.crl

#SSLCARevocationFile /etc/httpd/conf/ssl.crl/ca-bundle.crl

# Client Authentication (Type):

# Client certificate verification type and depth. Types are

# none, optional, require and optional_no_ca. Depth is a

# number which specifies how deeply to verify the certificate

# issuer chain before deciding the certificate is not valid.

#SSLVerifyClient require

#SSLVerifyDepth 10

# Access Control:

# With SSLRequire you can do per-directory access control based

# on arbitrary complex boolean expressions containing server

# variable checks and other lookup directives. The syntax is a

# mixture between C and Perl. See the mod_ssl documentation

# for more details.

#<Location />

#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \

# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \

# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \

# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \

# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \

# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/

#</Location>

# SSL Engine Options:

# Set various options for the SSL engine.

# o FakeBasicAuth:

# Translate the client X.509 into a Basic Authorisation. This means that

# the standard Auth/DBMAuth methods can be used for access control. The

# user name is the `one line' version of the client's X.509 certificate.

# Note that no password is obtained from the user. Every entry in the user

# file needs this password: `xxj31ZMTZzkVA'.

# o ExportCertData:

# This exports two additional environment variables: SSL_CLIENT_CERT and

# SSL_SERVER_CERT. These contain the PEM-encoded certificates of the

# server (always existing) and the client (only existing when client

# authentication is used). This can be used to import the certificates

# into CGI scripts.

# o StdEnvVars:

# This exports the standard SSL/TLS related `SSL_*' environment variables.

# Per default this exportation is switched off for performance reasons,

# because the extraction step is an expensive operation and is usually

# useless for serving static content. So one usually enables the

# exportation for CGI and SSI requests only.

# o CompatEnvVars:

# This exports obsolete environment variables for backward compatibility

# to Apache-SSL 1.x, mod_ssl 2.0.x, Sioux 1.0 and Stronghold 2.x. Use this

# to provide compatibility to existing CGI scripts.

# o StrictRequire:

# This denies access when "SSLRequireSSL" or "SSLRequire" applied even

# under a "Satisfy any" situation, i.e. when it applies access is denied

# and no other module can change it.

# o OptRenegotiate:

# This enables optimized SSL connection renegotiation handling when SSL

# directives are used in per-directory context.

#SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire

<Files ~ "\.(cgi|shtml)$">

SSLOptions +StdEnvVars

</Files>

<Directory "/var/www/cgi-bin">

Page 124: Set up and management of an integrated information system on Linux

124

SSLOptions +StdEnvVars

</Directory>

# Notice: Most problems of broken clients are also related to the HTTP

# keep-alive facility, so you usually additionally want to disable

# keep-alive for those clients, too. Use variable "nokeepalive" for this.

SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

# Per-Server Logging:

# The home of a custom SSL log file. Use this when you want a

# compact non-error SSL logfile on a virtual host basis.

CustomLog /var/log/httpd/ssl_request_log \

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

</IfDefine>

# Virtual hosts

# Virtual host Default Virtual Host

<VirtualHost 192.9.200.211:80>

ServerName _default_

ServerSignature email

DocumentRoot /var/www/html/

DirectoryIndex index.php index.html index.htm index.shtml

LogLevel debug

HostNameLookups off

</VirtualHost>

# Virtual host Virtual Host 0

<VirtualHost 192.9.200.211:8080>

. ServerName _default_

. ServerSignature email

. DocumentRoot /home/httpd/twiki/

. DirectoryIndex index.php index.html index.htm index.shtml

LogLevel debug

HostNameLookups off

</VirtualHost>

# Directories...

<Directory "/">

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory "/var/www/html">

Options Indexes Includes FollowSymLinks

AllowOverride None

Allow from from all

Order Deny,Allow

</Directory>

#Directory "/var/www/html2">

# Options Indexes Includes FollowSymLinks

# AllowOverride None

# Allow from from all

# Order Deny,Allow

#</Directory>

<Directory "/var/www/icons">

Options Indexes MultiViews

Page 125: Set up and management of an integrated information system on Linux

125

AllowOverride None

Allow from from all

Order allow,deny

</Directory>

<Directory "/var/www/cgi-bin">

Options ExecCGI

AllowOverride None

Allow from from all

. Order allow,deny

</Directory>

In conclusione, i siti Web sono diventati una delle componenti di maggiore importanza in ogni rete

e una gran quantità dei siti Web pubblici presenti su Internet è in esecuzione sotto Linux. In pratica,

qualsiasi distribuzione di Linux viene fornita con tutto ciò che serve per configurare qualsiasi tipo

di sito, da un piccolo sito Web interno ad un’azienda, fino ad un sito che conti milioni d’accessi al

mese. Installando il pacchetto rpm Apache sotto Red Hat abbiamo un Web server pronto dove è

sufficiente aggiungere il contenuto, e con l’hosting virtuale viene eliminata la limitazione ad un solo

server.

7.8. Sommario delle caratteristiche del Web Server Apache HTTP Server 1.3

Prezzo: gratuito

Installazione

Sistemi operativi (SO) supportati: BSD, Mac OS X; Unix, Windows

Disponibilità di codice sorgente

Supporto: documentazione

Architettura modulare

Modello di elaborazione: multiprocessing

Interfacce di programmazione

Cgi in-progress

Isapi

Scalabilità

Caching dei contenuti statici: funzionalità disponibile tramite un modulo open-source

Negoziazione dei contenuti multilingua

Amministrazione

Tramite linea di comando

Standard supportati

Estensioni server per Front Page: funzionalità disponibile tramite un modulo open-source

Logging e monitoraggio

Page 126: Set up and management of an integrated information system on Linux

126

Log di tipo “reliable piped”

Condivisione dei file di log tra i server virtuali

Filtri per dominio/utente/indirizzo IP

Siti virtuali

Regolazione individuale della banda: funzionalità disponibile tramite un modulo open-

source

Controllo di accesso individuale per i siti virtuali

Impostazioni di sicurezza per i siti virtuali

Monitoraggio dell’utilizzo dei siti virtuali: funzionalità disponibile tramite un modulo open-

source

Porte multiple/reindirizzamento degli Url

Sicurezza

Certificati per il server Web/certificati Ssl: funzionalità disponibile tramite un modulo open-

source

Supporta htaccess

Page 127: Set up and management of an integrated information system on Linux

127

8. TWiki

8.1. Introduzione

TWiki è un tool con licenza GPL di collaborazione basato su Web flessibile, potente e di semplice

utilizzo. TWiki è utilizzabile come uno spazio di sviluppo di progetti, gestione documenti e

database di informazioni o come altro strumento di sviluppo di gruppo, su una rete intranet o su

internet. Il contenuto Web può essere creato in modo collaborativi utilizzando un browser. Gli

sviluppatori possono creare nuove applicazioni Web basate su plugin API.

TWiki sembra un normalissimo sito Web intranet o internet. In ogni caso ha un link “Edit” in ogni

pagina dove ognuno, se abilitato, può cambiare una pagina o aggiungere nuovo contenuto usando

un browser.

TWiki è mantenuto e sviluppato sul sito TWiki.org. Su questo sito è possibile navigare e

aggiungere/modificare il contenuto per avere un’idea di come funziona TWiki.

TWiki è un sistema di collaborazione Web maturo e pieno di funzioni.

Qualsiasi web browser: E’ possibile editare o creare nuove pagine usando qualsiasi

browser. Non c’è alcuna necessità di ftp o http per effettuare l’upload delle pagine.

Link “Edit”: Per editare una pagina basta cliccare semplicemente sul bottone in fondo ad

ogni pagina.

Link automatici: Le pagine web vengono linkate automaticamente. Non c’è bisogno di

imparare comandi HTML per creare link.

Formattazione del testo: Le regole di formattazione del testo sono semplici, potenti e facili

imparare. Semplicemente il testo va scritto come quando si scrive un’email.

Webs: Le pagine sono raggruppate in siti web (o collezioni). Questo permette di organizzare

gruppi di collaborazione separati.

Search: Funzione che permette la ricerca con/senza espressioni regolari.

Page 128: Set up and management of an integrated information system on Linux

128

E-mail notification: Quando è stato cambiato qualcosa su un sito web, l’utente viene

informato automaticamente.

Contenuto strutturato: Si possono utilizzare i form TWiki per classificare pagine web non

strutturate e creare l'automatizzazione di un processo (parziale o completa) nel corso del

quale dei documenti, delle informazioni o dei compiti passano da un partecipante all'altro,

all'interno del gruppo di lavoro, conformemente ad un insieme di regole predefinite.

File allegati: E’ possibile effettuare upload e download di qualsiasi file come allegati

utilizzando il browser. Ciò è simile a quando si allegano dei file alle e-mail, ma su una

pagine web.

Controllo delle revisioni: Tutti i cambiamenti su una pagina e gli allegati vengono

controllati. E’ possibile vedere le revisioni e le differenze precedenti. Scoprire chi e quando

ha effettuato delle modifiche.

Controllo degli accessi: Si possono definire gruppi e impostare restrizioni in modo preciso

sia in lettura sia in scrittura, basati su gruppi e utenti.

Variabili: E’ possibile usare delle variabili per creare pagine dinamicamente. Questo

permette per esempio di costruire una tabella di contenuti dinamica: includere altre pagine o

mostrare risultati di ricerca concatenati in una pagina.

Plugins di TWiki: Sono programmi che permettono il miglioramento di TWiki e facilmente

installabili. Gli sviluppatori possono creare i plugin in Perl, con il TWiki plugin API.

Templates e skins: Un flessibile sistema di template separa la logica e la presentazione del

programma. Gli skin sovrascrivono le intestazioni dei template e delle cartelle, il contenuto

delle pagine rimane invariato.

Gestione delle pagine: le pagine possono essere rinominate, spostate e cancellate attraverso

il browser.

Gestione degli utenti: La registrazione e la variazione delle password degli utenti possono

essere effettuati via web.

Statistiche: Vengono create automaticamente statistiche dei siti web, in questo modo è

possibile sapere quali sono le pagine più popolari ed i relatori più frequenti.

Preferenze:Esitono tre livelli di preferenze: “TwikiPreferences” a livello del sito;

“WebPreferences” per ogni sito web; e quelle a livello d’utente.

Bloccaggio pagine: Gli utenti sono avvisati se la pagine viene editata da un'altra persona.

Questo serve a prevenire che due o più utenti editino la stessa pagina simultaneamente.

Referred-By: In questo modo è possibile trovare i link che puntano alla pagina.

… altre funzioni che non vengono elencate.

Page 129: Set up and management of an integrated information system on Linux

129

TWiki è uno script cgi-bin scritto in Perl. Legge un file di testo, collegamenti ipertestuali e li

converte al volo in HTML.

TWiki è installato su molti siti, solitamente dietro un firewall aziendale. TWiki viene usato da molte

delle maggiori compagnie perché è veramente user friendly rispetto ad altri sistemi commerciali

come Lotus Notes.

Le compagnie stanno schierando TWiki in vari campi e TWiki è piuttosto flessibile per adattarsi

alle più svariate necessità. Di seguito una lista non esaustiva di come TWiki può essere utilizzato:

Per rimpiazzare una intranet statica. Il contenuto è mantenuto dagli impiegati, così da

eliminare la sindrome “del solo ed unico webmaster” così da avere contenuti sempre

aggiornati.

Come un sistema knowledge base e di FAQ.

Per progettare e documentare progetti software.

Per tenere traccia di oggetti come bachi o altro. TWiki stesso funziona in questo modo.

Come tool per la gestione di documenti.

Per collaborare ad obiettivi comuni.

Come archivio software.

Come una message board interna della compagnia.

8.2. Requisiti di sistema di TWiki

I bassi requisiti di sistema sono il punto di forza di TWiki, che gli permette di funzionare su una

vasta gamma di piattaforme e versioni browser.

8.3. Requisiti del server

TWiki è scritto in Perl 5, utilizza un numero di comandi shell, e richiede RCS (Revision Control

System), ed un pacchetto software GNU. TWiki è sviluppato per funzionare sulla base di

Linux/Apache, ma funziona anche con Microsoft Windows, e non dovrebbe avere alcun problema

su qualsiasi altra piattaforma compatibile con i suoi requisiti.

Page 130: Set up and management of an integrated information system on Linux

130

Requisiti Richiesti

Risorsa Unix Windows

Perl 5.005_03 o superiore

Non standard Perl modules Net::SMTP (o sendmail) Net::SMTP,MIME::Base64,Digest::SHA1

RCS 5.7 o superiore

Altri programmi esterni ls, fgrep, egrep

Cron/scheduler cron equivalente cron

Web server Apache; altri con supporto CGI, autenticazione, path esteso

8.4. Requisiti dei client

L’installazione standard di TWiki richiede requisiti del browser molto bassi:

compatibilità HTML 3.2

genera pagine XHTML 1.0 che sono compatibili con HTML 3.2

utilizzo minimo di JavaScript nell’interfaccia utente

nessun utilizzo di cookies

nessun utilizzo di CSS

E’ possibile aggiungere delle funzionalità facilmente personalizzando “TWikiTemplates”, in modo

da adattare il browser alle proprie esigenze.

8.5. Guida di installazione di TWiki

Questi passi di installazione sono basati sul Web Server Apache su Linux. In caso si voglia

installare TWiki sotto Windows è consigliabile controllare il sito: http://twiki.org/cgi-

bin/view/Codev/TWikiOnWindows.

1. Creare & Configurare le Directory

E’ necessario innanzi tutto aver effettuato il login come root.

Creare la directory /home/httpd/twiki e unzipppare l’archivio TWiki in questa

directory.

La directory twiki/bin di TWiki deve essere settata come directory cgi-bin. Aggiungere

la directory /home/httpd/twiki/bin al file /etc/httpd/httpd.conf con

l’opzione ExecCGI.

La directory twiki/pub di TWiki deve essere settata in modo tale che sia visibile come URL.

Aggiungere /home/httpd/twiki al file httpd.conf con le opzioni di accesso

normali (copiarle da /home/httpd/html).

Page 131: Set up and management of an integrated information system on Linux

131

Aggiungere ScriptAlias per /twiki/bin/ e Alias per /twiki al file

httpd.conf. NOTA: ScriptAlias deve essere scritto prima di Alias, altrimenti

Apache non riuscirà a settare /twiki/bin, considerandola come un’altra subdirectory

dell’alias /twiki/.

Le directory twiki/data e twiki/templates devono essere configurate per non

essere visibili come url. Aggiungerle ad httpd.conf con l’opzione deny from all.

Sotto riportiamo un esempio delle righe da aggiungere al file httpd.conf:

ScriptAlias /twiki/bin “/home/httpd/twiki/bin/”

Alias /twiki/ “/home/httpd/twiki/”

<Directory “/home/httpd/twiki/bin”>

Options +ExecCGI

SetHandler cgi-script

Allow from all

</Directory>

<Directory “/home/httpd/twiki/pub”>

Options FollowSymLinks +Includes

Allow from all

AllowOverride All

</Directory>

<Directory “/home/httpd/twiki/data”>

deny from all

</Directory>

<Directory “/home/httpd/twiki/templates”>

deny from all

</Directory>

Riavviare Apache tramite la riga /etc/rc.d/rc5.d/S58httpd restart nel caso di

Apache 1.3 oppure /etc/local/apache2/bin/httpd restart nel caso di Apache

2.0.

Controllare che la directory twiki/bin sia abilitata CGI cercando di visitarla dal browser:

o Inserire l’URL per la directory bin,

http://yourdomain.com/twiki/bin/.

o Se i settaggi sono giusti sarà visualizzato un messaggio come: “Forbidden. You

don’t have the permission to access /twiki/bin/ on this

server”.

o I settaggi non sono corretti se viene visualizzato un messaggio del tipo “Index of

/twiki/bin”. In questo caso ricontrollare il file httpd.conf.

2. Impostare i permessi dei file

Controllare che Perl 5 e le librerie Perl CGI siano installate sul sistema. La posizione di

default del Perl è /usr/bin/perl. Se è altrove, cambiare il path al Perl nella prima linea

Page 132: Set up and management of an integrated information system on Linux

132

di ogni script nella directory twiki/bin o creare un link simbolico da

/usr/bin/perl. In alcuni casi gli script Perl CGI richiedono l’estensione .cgi per

funzionare. Altri sistemi necessitano dell’estensione .pl, la normale estensione del Perl. Se

necessario modificare tutti i nomi degli script in twiki/bin.

Impostare i permessi di tutti gli script Perl nella directory twiki/bin come eseguibili a –

rwxr-xr-x (755).

Perché sia possibile editare gli script Perl ed i file .tmpl è necessario utilizzare il comando

chown e chgrp –R twiki così che tutti i file abbiano il proprietario desiderato. Per

default, tutti i file utilizzati dagli script CGI (eseguiti dal Web server) hanno come

proprietario l’utente nobody; mentre per quanto riguarda tutti gli altri file, il proprietario è

twiki. Bisogna cambiare nobody con un altro utente se il server esegue gli script con un

nome utente differente. Avviare lo script testenv dal browser:

http://yourdomain.com/twiki/bin/testenv. Verrà mostrato il nome utente degli script CGI,

una tabella che lista tutte le variabili d’ambiente CGI ed un test del file di configurazione

twiki/lib/TWiki.cfg. Cambiare l’utente twiki con il proprio username.

Impostare i permessi dei file sotto twiki/data così che siano scrivibili dall’utente

nobody. Un modo semplice è di utilizzare chmod ed impostarli a -rw-rw-r-- (664) e

chown ed impostarli a nobody.

Impostare i permessi della directory twiki/data e le sue sottodirectory in modo tale che i

file siano scrivibili da nobody. Un modo semplice è usare chmod ed impostarli a

drwxrwxr-x (775) e chown per impostarli a nobody.

Impostare i permessi della directory twiki/pub e tutte le sue sottodirectory in modo tale

che tutti i file siano scrivibili da nobody. Un modo semplice è usare chmod ed impostarli a

drwxrwxr-x (775) e chown per impostarli a nobody.

I file RCS twiki/data/*/*.txt,v nel pacchetto di installazione sono bloccati

dall’utente nobody. Se gli script CGI non stanno funzionando come utente nobody, non è

possibile di effettuare controlli nei file (si nota dal fatto che il numero di revisione non viene

incrementato dopo il salvataggio di una pagina). In questo caso è necessario sbloccare i file

e ribloccarli con un utente diverso. Altrimenti è possibile cancellare questi file, che verranno

ricreati automaticamente quando una pagina viene editata e verranno bloccati dall’utente

attualmente in uso. Un modo semplice per cambiare proprietario è utilizzare un comando di

ricerca/sostituzione in tutti i file, per esempio utilizzando sed:

cd twiki/data

Page 133: Set up and management of an integrated information system on Linux

133

for f in */*,v; do sed ‘s/nobody\:/apache\:/’ $f > x; mv –f x

$f; done

3. Impostare il File di Configurazione Principale

Editare il file twiki/lib/TWiki.cfg, settare le variabili secondo le proprie esigenze.

Impostare le estensioni a cgi o pl nella variabile $scriptSuffix se richiesto.

Controllare che sia installato RCS. Impostare $rcsDir in twiki/lib/TWiki.cfg in

modo che il path sia il medesimo dei file binari RCS. E’ possibile controllare ciò tramite il

comando rcs nella shell. Il risultato dovrebbe essere del tipo “rcs: no input file”.

Per motivi di sicurezza le directory twiki/data, twiki/templates e tutte le

sottodirectory devono essere impostate in modo tale che non siano visibili come url. Per fare

ciò bisogna aggiungere la riga “deny from all” a tali directory nel file httpd.conf.

Oppure spostare le directory in una locazione in cui non sono visibili e cambiare di

conseguenza le variabili nel file twiki/lib/TWiki.cfg.

Per controllare le nuove impostazioni utilizzare lo script testenv dal browser:

http://yourdomain.com/twiki/bin/testenv. Controllare che tutti i settaggi del file

twiki/lib/TWiki.cfg siano corretti.

4. Concludere dal browser

Far puntare il Web browser all’indirizzo http://yourdomain.com/twiki/bin/view ed iniziare

ad utilizzare TWiki. Oppure puntare all’indirizzo http://yourdomain.com/twiki/ per ottenere

il pre-Twiki index.html, con un link allo script view. Personalizzare questa pagina in

caso si voglia un’introduzione pubblica con un link di login, invece di richiamare la finestra

di dialogo login di .htaccess richiamando direttamente lo script view.

Editare la pagina TWikiPreferences nel sito Web TWiki:TWiki per impostare

l’email WIKIWEBMASTER e altre preferenze.

Editare la pagina WebPreferences in ogni sito web, se necessario: impostare i singoli

messaggi WEBCOPYRIGHT e altre preferenze.

Abilitare la notifica via email dei cambiamenti delle pagine.

Editare la pagina WebNotify in tutti i siti Web ed aggiungere gli utenti che si vogliono

notificare.

E’ possibile aggiungere nuove %VARIABLES%. Definire le variabili a livello di sito nella

pagina TWikiPreferences. Vedere anche TWikiVariables.

Page 134: Set up and management of an integrated information system on Linux

134

8.6. Abilitare l’autenticazione degli utenti

HTAccess è un metodo per fornire una protezione tramite password per documenti HTML e le

directory su un Web server. Una volta implementato, HTAccess chiederà all’utente (attraverso il

browser) di inserire un username e una password. L’utente sarà abilitato a vedere le pagine Web

richieste solamente se sono stati inseriti un username ed una password validi.

HTAccess può essere implementato da qualsiasi utente del sistema su qualsiasi directory nella

directory public_html dell’utente. L’implementazione richiede solamente due semplici passi:

1. Creazione del file .htaccess nella directory da proteggere.

2. Creazione di un file .htpasswd.

Il file .htaccess è il file di controllo per l’interfaccia HTAccess. Specifica il path al file

.htpasswd oltre alle istruzioni di accesso (che determinano chi è abilitato ad accedere alle

pagine Web nella directory).

Il file .htpasswd contiene la lista di coppie degli username validi e delle password criptate per

essere utilizzate dal file .htaccess. Solo perché le pagine Web sono protette correttamente

dall’utente con HTAccess, non è detto che tali pagine siano accessibili solo dall’utente medesimo.

Il file .htaccess dovrebbe essere creato nella directory che si vuole proteggere. Questa potrebbe

essere tutta la directory public_html o una sottodirectory della directory public_html. Una volta che

il file .htaccess è stato posizionato in una directory, tutti gli oggetti all’interno di tale directory

(incluse tutte le sottodirectory e loro contenuto) saranno protetti.

Il file .htaccess contiene le istruzioni per determinare chi è abilitato ad accedere alla directory.

Esistono due sezioni nel file .htaccess:

1. La prima sezione di .htaccess deve contenere 3 linee:

AuthUserFile {path al file .htpasswd}

AuthName {titolo della finestra di dialogo}

AuthType Basic

2. La seconda sezione deve contenere 3 parti:

<Limit GET>

{istruzione di accesso che deve essere eseguita}

</Limit>

Il set di istruzioni che sono poste tra <Limit GET> e </Limit> determina le modalità di

accesso alla directory, ad esempio chi è abilitato all’accesso delle pagine Web nella directory e chi

non lo è.

Ci sono alcuni tipi di istruzioni di accesso che possono essere usate:

Per permettere l’accesso ad un utente specifico digitare l’istruzione:

require user {username}

Page 135: Set up and management of an integrated information system on Linux

135

Per permettere l’accesso ad ogni utente all’interno di un determinato dominio digitare

l’istruzione:

order deny,allow

deny from all

allow from {nome dominio}

dove nome dominio è il nome del dominio al quale si vuole abilitare l’accesso. Notare che

non ci sono spazi tra re parole “deny” e “allow” nella prima riga.

Da notare anche che si vuole abilitare o negare l’accesso a specifici domini, le prime quattro

linee “Auth” del file .htaccess possono essere omesse (queste linee vengono utilizzate

solo per l’autenticazione di gruppi o utenti).

Per negare l’accesso ad ogni utente all’interno di un determinato dominio digitare

l’istruzione:

order allow,deny

allow from all

deny from {nome dominio}

dove nome dominio è il nome del dominio al quale si vuole negare l’accesso.

8.6.1 File .htaccess

Riportiamo come esempio il nostro file .htaccess.

Redirect /twiki/index.html http://localhost/twiki/bin/view

AuthUserFile /home/httpd/twiki/data/.htpasswd

AuthName ByPassword

AuthType Basic

SetHandler cgi-script

ErrorDocument 401 /twiki/bin/oops/TWiki/TWikiRegistration?template=oopsauth

<Files ~ "[^/]*\.html$">

SetHandler blabla

allow from all

</Files>

<Files "edit">

require valid-user

</Files>

<Files "preview">

require valid-user

</Files>

<Files "save">

require valid-user

</Files>

Page 136: Set up and management of an integrated information system on Linux

136

<Files "attach">

require valid-user

</Files>

<Files "upload">

require valid-user

</Files>

<Files "rename">

require valid-user

</Files>

<Files "installpasswd">

require valid-user

</Files>

<Files "*">

allow from all

</Files>

<Files "view">

require valid-user

</Files>

Il file .htpasswd contiene tutti gli username e password validi per il sito. Il path completo del file

.htpasswd deve essere specificato nel file .htaccess alla voce AuthUserFile.

E’ importante considerare che username e password sono completamente arbitrarie, non c’è

assolutamente alcuna corrispondenza tra gli username e le password utilizzate nel file .htaccess

con quelle di sistema utilizzate dei medesimi utenti.

Il comando htpasswd serve per creare le coppie di username e password. Il path completo del

completo del comando è /usr/local/apache2/bin/htpasswd. Da notare che il comando

htpasswd cripta immediatamente ogni password prima di scrivere nel file .htpasswd.

Per creare il file .htpasswd, utilizzare il comando htpasswd con il seguente formato:

htpasswd –c .htpasswd {username}

Il comando chiederà una password per quell’utente e poi chiederà di confermare tale password. La

password appena digitata non verrà riportata sullo schermo durante la digitazione e verrà criptata

immediatamente.

L’output del comando htpasswd è un .htpasswd con una voce della forma:

{user}:{password criptata}

Quando si aggiunge un altro utente, utilizzare il comando .htpasswd senza l’opzione –c:

htpasswd .htpasswd {username}

Il metodo di seguito descritto permette di autenticare gli utenti nel caso in cui si disponga di un

server non autenticato e/o che non utilizza SSL.

Page 137: Set up and management of an integrated information system on Linux

137

1. Rinominare il file .htacces.txt in .htaccess nella directory twiki/bin e

modificarlo secondo le proprie esigenze. In particolare devono essere ben configurate le

seguenti righe:

Redirect /urlpathto/twiki/index.html

http://yourdomain.com/urlpathto/twiki/bin/view

AuthUserFile /filepathto/twiki/data/.htpasswd

ErrorDocument 401

/urlpathto/twiki/bin/oops/Twiki/TWikiRegistration?template=oopsa

uth

Il browser chiederà un login name ed una password quando si clicca sul link Edit. Nel caso in

cui il file .htaccess non abbia l’effetto desiderato bisogna abilitarlo aggiungendo la riga

AllowOverride All

nella sezione Directory nel file httpd.conf per la directory twiki/bin.

2. Copiare la pagina TWikiRegistrationPub nella pagina TWikiRegistration. Par fare

ciò editare le pagine nel TWiki Web oppure rinominare i file .txt e .txt,v nella directory

twiki/data/TWiki.

E’ possibile personalizzare il form di registrazione cancellando od aggiungendo i tag. Il

parametro name=“ ” del tag deve iniziare con: “Twk0…” se è un campo opzionale o

“Twk1…” se è un campo obbligatorio. Ciò assicura che i campi siano elaborati correttamente.

3. Registrarsi nella pagina TWikiRegistration. Quando un utente si registra viene aggiunta

una nuova linea nel file data/.htpasswd con username e password criptata. Il file

.htpasswd fornito con l’installazione di TWiki include degli account utenti dei membri del team

di TWiki, che vengono utilizzati per effettuare test su TWiki.org. E’ possibile editare e

cancellare queste linee.

4. Creare una nuova pagina per verificare il corretto funzionamento dell’autenticazione.

5. Editare la pagina TWikiAdminGroup nel web TWiki:Main per includere un utente con i

permessi di amministratore.

6. Editare la pagina TWikiPreferences nel web TWiki:TWiki per impostare i privilegi di

accesso.

7. Editare la pagina WebPreferences in ogni web, se necessario, ed impostare i privilegi di

accesso.

Page 138: Set up and management of an integrated information system on Linux

138

8.7. Aggiungere un sito web

Per creare un nuovo sito web:

1. Creare una nuova directory sotto twiki/data e controllare i permessi dei file della directory.

Utilizzare un nome composto dai caratteri A…Z, a…z ma che non siano in WikiNotation. Il

nome dovrebbe iniziare con una o più maiuscole, ma non avere altre maiuscole dopo il primo

gruppo.

2. Copiare tutti i file dalla directory twiki/data/_default nella nuova directory,

mantenendo i proprietari originali dei file, gruppi e permessi. I file devono essere scrivibili dal

proprietario degli script CGI utilizzati. E’ possibile impostare i permessi dei file .txt e

.txt,v a -rw-rw-rw- (666) e poi editare la pagina utilizzando il browser; RCS ripristinerà

correttamente i permessi dei file quando la pagina verrà salvata.

3. Aggiungere un nuovo sito web alla lista dei siti (visibile nell’angolo in alto a destra di ogni

pagina) editando le preferenza a livello di sito, TWikiPreferences. Aggiungere il nuovo

Web alla variabile %WIKIWEBLIST%.

4. Aggiornare le impostazioni Web editando la pagina WebPreferences nel nuovo Web.

Personalizzare la variabile %WEBTOPICLIST% in modo che contenga i link Web specifici da

utilizzare. Impostare la variabile %WEBBGCOLOR% ad un colore. Il numero rappresenta il colore

unico per il sito Web. Impostare i Plugins, privilegi di accesso, variabili personalizzate ed altre

opzioni a livello di sito.

5. Aggiungere il nuovo Web alla tabella colorata della directory Web editando la pagina

TWikiWebsTable.

6. Testare il nuovo Web: visitare le pagine e crearne di nuove.

Le home page degli utenti sono situate nel Web TWiki.Main. Non cercare di spostarle o crearle

in altri Web. Da ogni altro Web, la firma dell’utente deve puntare al Web TWiki.Main, usando il

formato Main.UserName o %MAINWEB%.UserName. La variabile %MAINWEB% è vantaggiosa

se viene cambiato il nome del Web Main.

8.8. TWiki Access Control

TWikiAccessControl permette di restringere l’accesso alle singole pagine e ad interi Web, da

parte di un solo utente o gruppo di utenti, in tre aree principali: view; edit & attach;

rename/move/delete. Questi controlli, combinati con TWikiUserAuthentication, permettono

di creare e mantenere facilmente un’estrema flessibilità dei privilegi di sistema.

Page 139: Set up and management of an integrated information system on Linux

139

Un’importante considerazione sul controllo.

L’editing libero ed aperto è l’essenza della WikiCulture. Questo fa sì che TWiki sia diverso e

spesso molto più potente di altri applicativi di collaborazione. Perciò è fortemente raccomandabile

che la decisione di restringere i permessi di lettura e scrittura ad un Web o ad una pagina sia fatta

con cautela. L’esperienza insegna che un accesso di scrittura non ristretto funziona molto bene

perché:

La parità influenza è sufficiente ad assicurare che sia inviato solo il contenuto rilevante.

La parità di editing, la capacità di modificare tutti gli oggetti di una pagina, mantiene le

pagine focalizzate.

Tutto il contenuto è mantenuto sotto un controllo di revisione. Le versioni precedenti

possono essere cancellate dal TWikiAdminGroup.

Gli utenti sono incoraggiati ad editare e concentrare una lunga pagina, poiché c’è una rete di

sicurezza.

Utenti e gruppi

Il controllo d’accesso è basato su utenti e gruppi. Gli utenti sono definiti dai loro WikiNames, e

successivamente organizzati sotto una combinazione illimitata sotto differenti gruppi utente.

Amministrazione Utenti

Un utente viene creato tramite il form TWikiRegistration. Il processo genera una pagina nel

Web Main con il nuovo WikiName dell’utente. Il nome di default del visitatore è TWikiGuest.

Gli utenti possono essere autenticati usando una Basic Authentication o SSL. E’ richiesta

TWikiUserAuthentication per tener traccia delle identità degli utenti.

Amministrazione Gruppi

I gruppi sono definiti dalle pagine dei gruppi nel Web Main, come TWikiAdminGroup. Per

creare un nuovo gruppo:

1. Creare una nuova pagina con un nome che finisce con Group, SomeGroup.

2. Definire due variabili:

a. Set GROUP=<lista degli utenti e gruppi>

b. Set ALLOWTOPICCHANGE=<lista degli utenti e gruppi>

GROUP è una lista di utenti e gruppi separati da una virgola, mentre ALLOWTOPICCHANGE

definisce chi è abilitato a cambiare la pagina del gruppo. Anch’essa è una lista di utenti e gruppi

separati da una virgola.

Page 140: Set up and management of an integrated information system on Linux

140

Restringere i permessi di scrittura.

E’ possibile definire chi è abilitato a fare cambiamenti di un sito web o di una pagina.

Vietare l’editing di una pagina.

Vietare l’editing di una pagina toglie anche la possibilità di allegarvi file; entrambi i privilegi

vengono assegnati insieme. Per fare ciò bisogna definire in una pagina una o entrambe delle

seguenti variabili, preferibilmente alla fine della pagina:

Set DENYTOPICCHANGE=<lista degli utenti e gruppi>

Set ALLOWTOPICCHANGE=<lista degli utenti e gruppi>

La prima definisce gli utenti ed i gruppi che non sono abilitati ad effettuare cambiamenti nella

pagina. E’ una lista di utenti e gruppi separati da una virgola e viene definita per prima. La seconda

definisce utenti e gruppi che invece sono abilitati ad apportare cambiamenti ad una pagina. Anche

questa è una lista di utenti e gruppi separati da una virgola. L’accesso e consentito se le variabili

sono lasciate vuote.

Vietare l’editing dell’intero sito.

Vietare l’editing a livelli di web blocca anche il permesso di creare nuove pagine, cambiarle o

allegarvi file. Per fare ciò bisogna definire nella pagina WebPreferences una o entrambe delle

seguenti variabili:

Set DENYWEBCHANGE=<lista degli utenti e gruppi>

Set ALLOWWEBCHANGE=<lista degli utenti e gruppi>

Le medesime regole vengono applicate per restringere pagine, con queste aggiunte:

DENYTOPICCHANGE (nella pagina) ha priorità su DENYWEBCHANGE (in

WebPreferences);

ALLOWTOPICCHANGE (nella pagina) ha priorità su ALLOWWEBCHANGE (in

WebPreferences).

Vietare la rinominazione delle pagine

E’ possibile definire chi è abilitato a rinominare, spostare o cancellare una pagina o rinominare un

Web.

Page 141: Set up and management of an integrated information system on Linux

141

Vietare rinominazione di una pagina

Per permettere ad un utente di rinominare una pagina, spostare o cancellarne una, questo deve avere

permessi di scrittura (editing). Per fare ciò bisogna definire in una pagina una o entrambe delle

seguenti variabili, preferibilmente alla fine della pagina:

Set DENYTOPICRENAME=<lista degli utenti e gruppi>

Set ALLOWTOPICRENAME=<lista degli utenti e gruppi>

La prima definisce gli utenti ed i gruppi che non sono abilitati a rinominare la pagina. E’ una lista di

utenti e gruppi separati da una virgola e viene definita per prima. La seconda definisce utenti e

gruppi che invece sono abilitati a rinominare la pagina. Anche questa è una lista di utenti e gruppi

separati da una virgola. L’accesso e consentito se le variabili sono lasciate vuote.

Vietare rinominazione di un web

E’ possibile definire restrizioni per chi è abilitato a rinominare un Web TWiki. Per fare ciò definire

una o entrambe delle seguenti variabili nella pagina WebPreferences:

Set DENYWEBRENAME=<lista degli utenti e gruppi>

Set ALLOWWEBRENAME=<lista degli utenti e gruppi>

Le solite regole si possono applicare alle pagine con queste aggiunte:

DENYTOPICRENAME (nella pagina) ha priorità su DENYWEBRENAME (in

WebPreferences);

ALLOWTOPICRENAME (nella pagina) ha priorità su ALLOWWEBRENAME (in

WebPreferences).

Restringere l’accesso in lettura

E’ possibile definire chi è abilitato a vedere un Web TWiki. Per fare ciò definire una o entrambe le

seguenti variabili nella pagina WebPreferences:

Set DENYWEBVIEW=<lista degli utenti e gruppi>

Set ALLOWWEBVIEW=<lista degli utenti e gruppi>

La restrizione di accesso in lettura non è consigliabile in caso di contenuto molto importante poiché

c’è un modo per aggirare la restrizione di accesso in lettura.

La restrizione di accesso in lettura funziona solamente se lo script view è autenticato, questo

significa che gli utenti devono effettuare il login anche solo per vedere una pagina.

Page 142: Set up and management of an integrated information system on Linux

142

Accesso Web Selettivo Non Ristretto

C’è un’alternativa nel caso si preferisca avere un accesso non ristretto per vedere delle pagine

situate nei normali Web e per autenticare gli utenti solamente per il Web dove sono abilitate le

restrizioni di lettura.

1. Togliere lo script view dal file .htaccess.

2. Abilitare il flag %DoRememberRemoteUser nel file lib/TWiki.cfg come

descritto in TWikiUserAuthentication. A questo punto TWiki ricorderà

l’indirizzo IP di un utente autenticato.

3. Copiare lo script view in viewauth (o meglio creare un link simbolico).

4. Aggiungere viewauth alla lista degli script autenticati nel file .htaccess. Quando

un utente accede ad un Web dove è stata abilitata la restrizione in lettura, TWiki

reindirizzerà una volta dallo script view allo script viewauth (questo accede

solamente se l’utente non ha mai editato una pagina): Facendo ciò verrà richiesta

l’autenticazione. Lo script viewauth mostrerà la pagina richiesta se l’utente può

effettuare il login e se è autorizzato a vedere quel Web. Se è stato abilitata la restrizione

in lettura di un Web è consigliato restringere la funzione di ricerca in modo che questa

non elenchi i Web che non devono essere visibili. Per fare ciò impostare la seguente

variabile in WebPreferences:

Set NOSEARCHALL = on

Non è consigliato restringere l’accesso in lettura per una determinata pagina poiché il

suo contenuto è ricercabile all’interno di un Web.

8.9. Nascondere i settaggi di controllo

Per nascondere i settaggi di controllo quando si visita una pagina, basta scriverli fra i marcatori di

commento.

<!--

Set DENYTOPICCHANGE = Main.SomeGroup

-->

8.10. Il SuperAdminGroup

Nel caso si sbagli a scrivere il nome di un utente o di un gruppo per la variabile

ALLOWTOPICCHANGE, è possibile che questa pagina rimanga bloccata in modo tale che

nessuno possa editarla dal browser. Per evitare ciò impostare la variabile $superAdminGroup

Page 143: Set up and management of an integrated information system on Linux

143

nel file lib/TWiki.cfg con il nome di un gruppo di utenti che sono sempre abilitati ad

editare/vedere le pagine. Per default non esiste nessun superAdminGroup.

8.11. Gestione File Allegati

Ogni pagina può avere file allegati, come nelle email. Utilizzare il browser per effettuare l’upload o

il download dei file. Gli allegati sono soggetti a controllo di revisione, così gli upload non possono

essere perduti ed i cambiamenti sui file possono essere effettuati con un’opzione che permette di

recuperare tutte le precedenti versioni. Gli allegati possono essere utilizzati per creare soluzioni di

gruppo(condivisione di file, gestione documenti) è per velocizzare la creazione del Web.

8.12. Sistema di gestione dei documenti

E’ possibile utilizzare gli allegati per immettere o recuperare documenti (in qualsiasi formato, con

grafica associata ed altri file multimediali); allegare documenti ad una specifica pagina di TWiki;

collaborare sui documenti con pieno controllo delle revisione; distribuire documenti in modo

semplice; creare una libreria centrale di riferimento che sai facilmente accessibile a gestibile da un

intero gruppo di utenti.

8.13. Condivisione File

Per la condivisione file, FileAttachments può essere utilizzato su una serie di pagine per creare

velocemente un centro di download ben documentato ed ordinato per qualsiasi tipo di file:

documenti, grafica ed altri file multimediali; driver e patch; applicazioni; qualsiasi altra cosa possa

essere caricata.

8.14. Web Authoring

Attraverso il Web browser, si può facilmente effettuare l’upload di file grafici (o musicali, o

qualsiasi altra cosa si voglia mettere all’interno di una pagina) e posizionarli nel posto desiderato su

ogni singola pagina o per l’utilizzo attraverso un Web o su tutto il sito. Da notare che è possibile

aggiungere file grafici direttamente, tipicamente utilizzando l’upload via FTP. Questo metodo

richiede l’accesso al server e risulta più conveniente se bisogna caricare un gran numero di file o se

questi vanno posizionati in una directory specifica. Questi file non possono essere gestiti utilizzando

i controlli di attachment basati su browser.

Page 144: Set up and management of an integrated information system on Linux

144

8.15. Upload dei file

Per effettuare l’upload di un file sulla pagina cliccare su Attach in fondo ad essa. Verrà visualizzato

un form dove è possibile specificare il percorso del file che si vuole allegare. Il file appena caricato

viene quindi visualizzato all’interno di una tabella. Può essere caricato qualsiasi tipo di file. Alcuni

file che possono creare falle nella sicurezza vengono rinominati aggiungendo l’estensione .txt. Al

momento non c’è alcuna limitazione sulla dimensione del file se non lo spazio libero sul server. Per

semplicità viene mantenuto il percorso precedente di upload. Nel caso si effettui qualche

cambiamento al file locale e si vuole effettuare l’upload, di nuovo si può copiare il percorso del

precedente upload nel campo Local del file.

8.16. Download dei file

Per scaricare un file è sufficiente cliccare sul relativo link all’interno della tabella contente i file.

Non esiste alcun controllo individuale sugli allegati. Se si necessita di questo tipo di controllo

bisogna creare una pagina separata e definire le restrizioni di accesso per pagina.

8.17. Spostare i file allegati

Un allegato può essere spostato da una pagina all’altra. Per far ciò è sufficiente cliccare sulla voce

Action vicino al file. Sulla pagina di controllo, selezionare il nuovo Web e la nuova pagina e

cliccare su Move. L’allegato e la sua lista delle revisioni vengono spostati. La posizione originale è

memorizzata come pagina Meta Data.

8.18. Eliminare gli allegati

Nella versione corrente di TWiki non è possibile cancellare gli allegati. In ogni caso possono essere

spostati su un’altra pagina. E’ sufficiente creare una pagina Trash.TrashAttachments e spostarvi gli

allegati che non sono più necessari.

8.19. Link ai file allegati

Una volta che un file è stato allegato è possibile creare un riferimento a questo in una pagina. Ad

esempio:

1. Allegare un file con Attach: Sample.txt

2. Effettuare l’Edit della pagina e scrivere: %ATTACHURL%/Sample.txt

3. La Preview di %ATTACHURL% appare come un link

http://twiki.org/p/pub/TWiki/FileAttachment/Sample.txt

Page 145: Set up and management of an integrated information system on Linux

145

Per riferire un allegato situato in un’altra pagina scrivere:

%PUBURL%/%WEB%/OtherTopic/Sample.txt (per lo stesso Web);

%PUBURL%/OtherWeb/OtherTopic/Sample.txt (per un Web diverso).

File allegati HTML e di testo possono essere inseriti in una pagina. Ad esempio:

1. Allegare un file con Attach: Sample.txt

2. Effettuare l’Edit della pagina e scrivere:

%INCLUDE{“%ATTACHURL%/Sample.txt”}%

Immagini GIF, JPG e PNG possono essere allegate e mostrate in una pagina. Ad esempio:

1. Allegare un file con Attach: Smile.gif

2. Effettuare l’Edit della pagina e scrivere: %ATTACHURL%/Smile.gif

3. Nella preview appare un’immagine .

Qui sotto è riportato un esempio della tabella che viene creata automaticamente dopo che sono stati

inseriti degli allegati.

Attachment: Action: Size: Date: Who: Comment:

Sample.txt action 30 22 Jul 2000 - 19:37 AdminAdmin Just a sample

Smile.gif action 94 22 Jul 2000 - 19:38 AdminAdmin Smiley face

Cliccando su Action compaiono le due tabelle sottostanti.

La prima è una lista di tutti gli allegati, inclusi i loro attributi. Una h significa che l’allegato è

nascosto e non è visibile quando si consulta la pagina che lo contiene.

Attachment: Action: Size: Date: Who: Comment: Attribute:

Sample.txt action 30 22 Jul 2000 - 19:37 AdminAdmin Just a sample

Smile.gif action 94 22 Jul 2000 - 19:38 AdminAdmin Smiley face

La seconda mostra tutte le versioni degli allegati. Cliccando su view è possibile vedere la versione

specifica. Se è la versione più recente, l’utente verrà riportato ad un URL che mostra sempre

l’ultima versione, che è quella che di solito si desidera.

Version: Action: Date: Who: Comment:

1.1 view 2001.08.30.09.28.56 AdminAdmin

Page 146: Set up and management of an integrated information system on Linux

146

E’ possibile cambiare il commento ad un allegato inserendo un nuovo commento nell’apposito

campo. Per nascondere/mostrare l’allegato, spuntare la casella “Hide file”.

Previous

upload: C:\DATA\Sample.txt (AdminAdmin)

Local file:

Comment: Just a sample

Link: Create a link to the attached file at the end of the topic.

Hide file: Hide attachment in normal topic view.

Diversamente dalle pagine, gli allegati non sono bloccati durante l’editing. Per aggirare l’ostacolo

basta cambiare il commento per indicare un allegato su cui si sta lavorando. Il commento sulla

versione specifica non viene perso, ma ricompare nella lista delle versioni dell’allegato.

8.20. Form TWiki

E’ possibile strutturare le pagine con categorie illimitate, facilmente ricercabili, aggiungendo dei

form al loro contenuto. Quando i form sono abilitati per un Web e selezionati in una pagina,

compare un singolo form durante l’edit, ed il suo contenuto è formattato come una tabella quando

viene visto nella pagina. E’ possibile definire un numero di form illimitato per ogni Web. Per ogni

pagina è possibile selezionare un template se ne sono stati definiti più di uno o rimuovere

interamente i form. I valori d’input del form (nome della pagina, campi e valori) sono memorizzati

come TWkiMetaData; l’ordine delle coppie campo/valore sono le stesse di quelle nel template.

TWikiForms accetta dati dall’utente. Meta data contiene anche informazioni sui cambiamenti,

sugli allegati, ecc., generate dal programma.

8.21. Templates TWiki

Il nuovo sistema modulare di template offre controllo semplice e flessibile sul layout di tutte le

pagine TWiki. Il master template avvicina gruppi d’oggetti che sono condivisi da più template

(come le intestazioni e le note a piè di pagina) in un file comune. Variabili speciali permettono

layout individuali per includere parti dal master template. Le variabili sono mescolate con normali

marcatori HTML per quanto riguarda il contenuto specifico dei template.

Esistono tre tipi di template:

Master Template

Memorizza parti comuni, incluse da altri template. Parti comuni, che compaiono in due o più

template, possono essere definite in un master template e poi condivise dagli altri:

twiki.tmpl è il master template di default.

Page 147: Set up and management of an integrated information system on Linux

147

HTML Page Templates

Definisce il layout delle pagine TWiki. TWiki utilizza file di template HTML per tutte le

azioni, come la consultazione delle pagine, l’editing e le preview. Questo permette all’utente

di cambiare il look di tutte la pagine editando solamente pochi file template. I template si

trovano nella directory twiki/templates.

Template Topics

Definisce il testo di default quando viene creata una nuova pagina. Esistono tre tipi di questo

template: WebTopicViewTemplate (pagina d’errore visualizzata quanto si cerca di

visualizzare una pagina inesistente), WebTopicNonWikiTemplate (pagina

d’avvertimento mostrata quando si tenta di visualizzare una pagina inesistente con un nome

non WikiName), WebTopicEditTemplate (testo di default visualizzato quando viene

creata una nuova pagina). Tutte la pagine di template sono situate nel Web TWiki.

Page 148: Set up and management of an integrated information system on Linux

148

9. Java 2 SDK, Standard Edition Versione 1.4.0 Linux

9.1. Presentazione di Java

Con la maturazione del linguaggio, la tecnologia diventa sempre più stabile ed affidabile e le

aspettative si riducono a livelli accettabili. Java viene sempre più utilizzato come “middleware” per

la comunicazione tra i client ed i database o le altre risorse dei server. Anche se poso appariscente,

questa è un’area importante in cui Java, principalmente grazie alla sua portabilità ed alle sue

funzionalità di multithreading e di rete, può aggiungere valore reale. Java si sta insinuando con

grande successo nei sistemi embedded, dove ha tutte le carte per diventare uno standard per i

dispositivi tascabili, i chioschi internet, i computer di bordo delle automobili e così via. Tuttavia, i

primi tentativi di riscrivere i consueti programmi per PC in Java non sono stati incoraggiati: le

applicazioni risultavano lente e scarsamente potenti. Con la versione attuale di Java, alcuni di questi

problemi potrebbero essere risolti, ma in ogni caso agli utenti generalmente non interessa quale

linguaggio di programmazione sia stato impiegato per scrivere le applicazioni: i vantaggi di Java si

riveleranno nei nuovi tipi di dispositivi e programmi, non nella rielaborazione di quelli esistenti.

9.2. Java come strumento di programmazione

Java è sicuramente un buon linguaggio di programmazione, senza dubbio uno dei migliori a

disposizione dei programmatori professionisti. Potenzialmente avrebbe potuto essere un grande

linguaggio di programmazione, ma probabilmente ormai è troppo tardi: una volta che il linguaggio

è immesso sul mercato, bisogna fare i conti con la brutta realtà della compatibilità con il codice

esistente. Inoltre, anche qualora sia possibile apportare modifiche senza distruggere il codice

esistente, è difficile che i creatori di un linguaggio apprezzato come Java possano riconoscere di

aver sbagliato e proporre con disinvoltura una nuova alternativa. In sintesi, anche se sono

prevedibili alcuni miglioramenti nel tempo, essenzialmente la struttura futura del linguaggio sarà

analoga a quella attuale.

In che cosa consistono i sensazionali miglioramenti di Java? La risposta è che essi derivano non

tanto dalla modifica del linguaggio della programmazione di base, quanto dai sensibili cambiamenti

Page 149: Set up and management of an integrated information system on Linux

149

nelle librerie Java. Nel corso del tempo Sun Microsystems ha cambiato tutto, dai nomi di molte

funzioni delle librerie (per uniformarli) alla modalità di funzionamento della grafica (modificando il

modello di gestione degli eventi e riscrivendone ex novo alcune parti), fino all’aggiunta di funzioni

importanti quali la stampa che non esistevano in Java 1.0. Ne è risultato uno strumento di

programmazione molto più utile e, anche se non ancora completamente robusto, molto meno fragile

rispetto alle versioni precedenti.

Ogni versione di Java ha cambiato radicalmente le librerie del predecessore e la versione attuale

non fa eccezione. Le innovazioni apportate alle librerie in Java 2 sono anzi di gran lunga le più

estese.

Microsoft sta creando un prodotto dal nome J++ affine a Java. Come Java, J++ è interpretato da una

macchina virtuale compatibile con la Java Virtual Machine per l’esecuzione di bytecode Java, ma

presenta differenze sostanziali nell’interfaccia con il codice esterno. La sintassi essenziale del

linguaggio è quasi identica a quella di Java. Microsoft ha peraltro aggiunto costrutti linguistici di

dubbia utilità, se non per l’interfaccia con le API di Windows. Oltre a condividere una sintassi

comune, Java e J++ possiedono librerie di base (stringhe, utilità, collegamenti in rete,

multithreading, matematica, ecc.) essenzialmente identiche. Le librerie per la grafica, le interfacce

utente e l’accesso agli oggetti remoti sono invece completamente differenti.

9.3. Java virtual machine

La Java virtual machine è la pietra miliare della piattaforme Java e Java 2. E’ il componente della

tecnologia che ha la caratteristica d’essere indipendente dall’hardware e dal sistema operativo, di

avere un codice compilato di dimensioni ridotte e di proteggere gli utenti da programmi

malintenzionati.

La Java virtual machine è un calcolatore astratto. Come un calcolatore reale, ha un set d’istruzioni e

manipola varie aree di memoria. E’ molto comune implementare un linguaggio di programmazione

usando una virtual machine; la più conosciuta virtual machine può essere la P-Code machine di

UCSD Pascal.

Il primo prototipo di implementazione della Java virtual machine, fatta dalla Sun Microsystem, Inc.,

emulava in software il set di istruzioni della Java virtual machine contenuto in un apparecchio

portatile che assomigliava ad un Personal Digital Assistant (PDA) contemporaneo. Le attuali

implementazioni della virtual machine di Java, componenti di Java 2 SDK e Java 2 prodotti

dell’ambiente runtime, emulano la Java virtual machine su host Win32 e Solaris in modi molto più

sofisticati. In ogni caso, la Java virtual machine non comporta alcuna implementazione tecnologica

particolare, host hardware o sistemi operativi host. Non è intrinsecamente interpretata, ma può

Page 150: Set up and management of an integrated information system on Linux

150

essere velocemente implementata compilando il suo set di istruzioni su una CPU di silicio. Può

anche essere implementata in microcode o direttamente in silicio.

La Java virtual machine non conosce niente del linguaggio di programmazione Java, ma solo un

formato binario particolare, il formato file class. Un file class contiene le istruzioni della Java

virtual machine (o bytecodes) una tabella di simboli e altre informazioni aggiuntive.

Per motivi di sicurezza, la Java virtual machine utilizza un formato forte ed una soggezione

strutturale sul codice in un file class. Comunque, ogni linguaggio con una funzionalità che può

essere espressa in termini di un file class valido, può essere gestito dalla Java virtual machine.

Attratti da una disponibilità generale e dalla piattaforma indipendente, gli implementatori di altri

linguaggi sono portati ad utilizzare la Java virtual machine come veicolo di consegna per i loro

linguaggi.

9.4. Struttura della Java virtual machine

Per implementare la Java virtual machine, c’è bisogno solo di essere capaci di leggere il formato del

file class e comprendere correttamente le operazioni scritte al suon interno. I dettagli

dell’implementazione che non fanno parte delle specifiche della Java virtual machine non limitano

necessariamente la creatività dell’implementatore. Per esempio, il layout di memoria delle aree dati

run-time, l’algoritmo usato garbage-collection e ogni ottimizzazione interna delle istruzioni della

Java virtual machine (per esempio, la loro traduzione in codice macchina) sono lasciate alla

discrezione dell’implementatore.

Il codice compilato che deve essere eseguito dalla virtual machine è rappresentato da un formato

binario indipendente dall’hardware e dal sistema operativo, tipicamente (ma non necessariamente)

inserito in un file, conosciuto come formato file class. Il formato file class definisce esattamente

la rappresentazione di una classe o interfaccia, includendo dettagli come l’ordinamento byte che

potrebbero essere presi per scontato in un formato di file oggetto specifico della piattaforma.

La Java virtual machine si avvia creando una classe iniziale, che è specificata in un modo

dipendente dall’implementazione, utilizzando il bootstrap class loader. La Java virtual machine

quindi collega la classe iniziale, la inizializza e richiama public< class method

voidmain(String[]). Il richiamo di questo metodo guida tutte le esecuzioni successive.

L’esecuzione delle istruzioni della Java virtual machine che costituiscono in metodo principale

possono causare collegamenti (e conseguentemente creazione) di classi o interfacce aggiuntive,

oltre a richiamare metodi aggiuntivi.

Page 151: Set up and management of an integrated information system on Linux

151

9.5. Vantaggi di Java

Un vantaggio evidente è una libreria runtime che auspica di conseguire l’indipendenza dalla

piattaforma, consentendo di utilizzare lo stesso codice in Windows 95/98/NT/2000/XP, Solaris,

Unix, Macintosh e così via. Questo è sicuramente necessario per la programmazione in Internet

tuttavia, le implementazioni su altre piattaforme solitamente non sono all’altezza di quelle di

Windows e Solaris.

Un altro vantaggio per la programmazione è che Java ha una sintassi simile a quella di C++ ed è

pertanto un linguaggio economico ma non complicato. I programmatori avvezzi a Visual Basic

(VB) probabilmente non troveranno di loro gradimento la sintassi ed avvertiranno la mancanza di

alcuni dei più simpatici costrutti sintattici di VB, come Select Case.

Java è inoltre completamente ad oggetti, perfino più di C++. Tutto in Java, ad eccezione di alcuni

tipi basilari come i numeri, è un oggetto: la progettazione ad oggetti ha sostituito le prime tecniche

strutturate perché presenta molti vantaggi nel gestire progetti sofisticati. Per quanti non hanno

confidenza con la programmazione ad oggetti (OOP, Object Oriented Programming).

Tuttavia, avere un ulteriore dialetto di C++, alquanto migliorato non sarebbe abbastanza. Il punto

essenziale è questo: è molto più facile produrre un codice privo di bug con Java che con C++.

Page 152: Set up and management of an integrated information system on Linux

152

Gli autori di Java hanno, infatti, meditato a fondo su quello che provoca così tanti errori nel codice

C++ ed hanno aggiunto in Java funzioni che eliminano la possibilità di creare codice con i tipi più

frequenti di bug (secondo alcune stime, circa una riga ogni 50 di codice C++ contiene almeno un

bug).

L’allocazione e la deallocazione manuali della memoria sono state eliminate in Java.

La memoria in Java viene automaticamente sottoposta a garbage collection (ripulitura di

spazio). Gli sprechi di memoria non devono mai costituire una preoccupazione.

Sono stati introdotti veri array ed è stata eliminata l’aritmetica dei puntatori. Non bisognerà mai

preoccuparsi di sovrascrivere un’area di memoria essenziale a causa di un errore quando si

lavora con un puntatore.

E’ stata eliminata la possibilità di confondere un’assegnazione con una verifica dell’uguaglianza

in un’istruzione condizionale. Non è neanche possibile compilare: if (ntries = 3)… I

programmatori in VB forse non ne vedranno il problema, ma si tratta di una causa frequente di

confusione nel codice C/C++.

E’ stata eliminata l’ereditarietà multipla, sostituita dal nuovo concetto di interfaccia, trattato da

Object C. Le interfacce presentano i vantaggi dell’ereditarietà multipla senza la complessità che

comporta la gestione di più gerarchie di ereditarietà.

La specifica del linguaggio Java è pubblica. E’ possibile trovarla nel Web accedendo alla home

page Java e seguendo i collegamenti presenti in essa (http://java.sun.com).

9.6. Caratteristiche di Java

Semplice

Si desiderava costruire un sistema che potesse essere programmato facilmente, senza richiedere una

formazione pesante e riservata a pochi adepti, e che facesse leva sull’attuale pratica standard. Così,

anche se il C++ non è stato ritenuto idoneo, Java è stato progettato attenendosi quanto più possibile

a C++, per rendere il sistema più comprensibile. In Java sono state omesse molte funzioni raramente

utilizzate, mal comprese e fuorvianti di C++ che, secondo l’esperienza, arrecano più dolori che

benefici.

La sintassi di Java è, in effetti, una versione “ripulita” di quella di C++. Non richiede file di

intestazione, un’aritmetica dei puntatori (né peraltro una sintassi dei puntatori), strutture, unioni,

ridefinizione degli operatori, classi e basi virtuali e così via. Gli autori non hanno tuttavia migliorato

alcune caratteristiche poco pratiche di C++, quali l’istruzione switch. Chi conosce C++ passerà

agevolmente alla sintassi Java.

Page 153: Set up and management of an integrated information system on Linux

153

I programmatori VB non troveranno invece semplice il linguaggio Java. Vi sono molti elementi

strani nella sintassi (anche se non è richiesto molto tempo per impararli). Ancora più importante, in

Java è necessaria molta più programmazione. Il lato positivo di VB è che il suo ambiente visivo

fornisce quasi automaticamente buona parte dell’infrastruttura per un’applicazione. La funzionalità

equivalente in Java deve essere programmata manualmente, di norma con abbondante codice. Allo

stato attuale, Java è piuttosto semplice, come tutti i linguaggi ad oggetti. Esistono tuttavia molte

sottigliezze che occorre conoscere per risolvere problemi reali. Con il passare del tempo, un numero

crescente di questo dettagli sarà demandato alle librerie ed agli ambienti di sviluppo. Prodotti come

Java WorkShop, Symantec Visual Cafè e Inprise Jbuilder possiedono generatori di form che

facilitano l’impostazione dell’interfaccia dei programmi. Questi componenti sono tutt’altro che

preferiti ma rappresentano un passo avanti. Una dotazione in costante crescita di librerie di classi di

terze parti e numerosi esempi di codice (tra cui molte librerie) sono disponibili gratuitamente sulla

rete. Un altro aspetto della semplicità è la dimensione limitata. Uno degli obiettivi di Java consiste

nel consentire la costruzione di software “stand alone” in piccoli computer. La dimensione

dell’interprete di base e del supporto delle classi è di circa 40Kb; aggiungendo le librerie standard di

base ed il supporto dei thread (essenzialmente un microkernel autonomo), la dimensione aumenta di

altri 175Kb.

Questo è un grande risultato. Si noti tuttavia che le librerie di GUI sono significativamente più

voluminose.

Ad oggetti

In termini semplici, la progettazione ad oggetti è una tecnica di programmazione che si concentra

sui dati (oggetti) e sulle relative interfacce. Per seguire un’analogia con la falegnameria, un

falegname “orientato agli oggetti” si preoccuperebbe principalmente della sedia che sta costruendo

e secondariamente degli strumenti impiegati per crearla, mentre un falegname “non orientato agli

oggetti” penserebbe prima agli strumenti. I servizi ad oggetti di Java sono essenzialmente quelli di

C++. La programmazione ad oggetti ha dimostrato il suo valore negli ultimi 30 anni ed è

inconcepibile che un linguaggio moderno non l’adotti. Le funzioni ad oggetti di Java sono di fatto

paragonabili a quelle di C++. Le differenze principali tra Java e C++ risiedono nell’ereditarietà

multipla, che in Java è stata sostituita da una soluzione migliore, e nel modello di metaclassi di

Java. Il meccanismo di riflessione e la funzione di serializzazione degli oggetti facilitano

sensibilmente l’implementazione di oggetti persistenti e costruttori di GUI che possono integrare

componenti pronti all’uso.

Page 154: Set up and management of an integrated information system on Linux

154

Distribuito

Java possiede un’estesa libreria di routine per gestire i protocolli TCP/IP quali http e FTP. Le

applicazioni Java possono aprire oggetti ed accedere ad essi attraverso la rete tramite URL con la

stessa agevolezza con cui accedono ad un file system locale.

Le funzionalità di rete di Java sono risultate solide e facili da usare. Chiunque abbia cercato di

programmare in internet, avvalendosi di un altro linguaggio, potrà confermare quanto Java

semplifichi le operazioni onerose quali l’apertura di una connessione socket. Java facilità perfino la

creazione di script CGI (Common Gateway Interface). Un meccanismo elegante, dal nome servlet,

rende estremamente efficienti le elaborazioni per i server in Java. Molti diffusi server Web

supportano il meccanismo servlet. Il meccanismo di chiamata con metodo remoto consente la

comunicazione tra oggetti distribuiti.

Robusto

Java è destinato a scrivere programmi che devono essere affidabili in vari modi. Java insiste molto

sul controllo iniziale degli eventuali problemi, al successivo controllo dinamico (runtime) e

sull’eliminazione di situazioni che possano comportare errori. La principale differenza tra Java e

C/C++ è che Java ha un modello di puntatori che esclude la possibilità di sovrascrivere la memoria

e rovinare i dati.

Anche questa funzione è molto utile. Il compilatore Java (sia nella versione originale, sia nelle varie

versioni perfezionate di terze parti) riscontra molti problemi che, in altri linguaggi, si rivelano solo

in fase di esecuzione (e forse neanche allora). Per quanto riguarda il secondo punto, chiunque abbia

perso ore intere alla ricerca del danno alla memoria causato da un bug di un puntatore apprezzerà

molto questa funzione di Java.

Chi proviene da un linguaggio come VB, che non usa esplicitamente i puntatori, probabilmente si

chiederà perché ciò sia tanto importante. I programmatori in C sono meno fortunati: necessitano,

infatti, dei puntatori per accedere a stringhe, array, oggetti e perfino file. In VB non vengono

utilizzati puntatori per alcuna di queste entità, né occorre preoccuparsi della loro allocazione di

memoria. Viceversa, se vengono realizzate alcune delle strutture di dati più complesse di VB che

richiedono i puntatori con i moduli di classi, occorre gestire manualmente la memoria. Java offre il

meglio di entrambi i sistemi: i puntatori non sono necessari per i costrutti quotidiani quali le

stringhe e gli array, ma la loro potenza è disponibile all’occorrenza, per esempio per gli elenchi

collegati. Inoltre, la sicurezza assoluta è sempre garantita, in quanto non è mai possibile accedere ad

un puntatore pericoloso o commettere errori di allocazione della memoria, né ci si deve mai

preoccupare degli sprechi di memoria.

Page 155: Set up and management of an integrated information system on Linux

155

Sicuro

Java è destinato all’impiego in ambienti di rete/distribuiti. A questo fine si è molto insistito sulla

sicurezza. Java consente la costruzione di sistemi privi di virus ed al sicuro da interferenze

indesiderate, anche se questo non è possibile al cento per cento. Infatti, un gruppo di esperti di

sicurezza ha continuato a riscontrare dei bug nei meccanismi di sicurezza di tutte le versioni di Java.

E’ consigliabile visitare l’indirizzo http://www.cs.princeton.edu/sip/ (URL del gruppo di Princeton)

ed il newsgroup comp.risks per conoscere opinioni di consulenti esperti riguardo allo stato

attuale dei meccanismi di sicurezza di Java.

Il lato positivo è che l’equipe di Java ha affermato di avere una “tolleranza zero” nei confronti delle

lacune in materia di sicurezza e che pertanto si metterà immediatamente all’opera per correggere gli

eventuali bug rilevati nel meccanismo di sicurezza delle applet (anche i produttori di browser si

sono messi subito al lavoro). In particolare, rendendo pubbliche le specifiche interne della modalità

di funzionamento dell’interprete Java, Sun facilità sensibilmente il reperimento dei bug nelle

funzioni di sicurezza di Java, coinvolgendo la comunità esterna nel delicatissimo compito di

rilevamento dei bug di sicurezza. Questo consente di sperare che presto si riuscirà ad ovviare agli

errori della sicurezza. In ogni caso, è estremamente difficile ingannare i meccanismi di sicurezza di

Java: i bug trovati finora sono impercettibili e relativamente scarsi. L’URL di Sun per le questioni

legate alla sicurezza è attualmente http://java.sun.com/sfaq.

Riportiamo un esempio delle operazioni che le funzioni di sicurezza di Java impediscono ad un

programma Java di compiere:

1. Overrun dello stack runtime, come ha fatto lo scellerato “worm” di Internet.

2. Danneggiamento della memoria all’esterno del suo spazio di elaborazione.

3. Lettura o scrittura di file locali richiamati tramite un’applicazione di caricamento di classi

sensibili alla sicurezza, come un browser Web programmato per impedire questo tipo di

accesso.

Tutte queste funzioni sono installate e per lo più sembrano conformi alle aspettative. Java è

sicuramente il linguaggio di programmazione finora più sicuro, ma la cautela è sempre d’obbligo:

anche se i bug finora riscontrati nel meccanismo di sicurezza non sono risultati banali da trovare

neanche se i dettagli completi sono soventemente tenuti segreti, può essere comunque impossibile

dimostrare che Java è sicuro. Non resta quindi che ribadire che nessun software è sicuro al cento per

cento.

Al momento le classi sono firmate: una classe firmata consente di sapere con certezza chi è l’autore.

Una volta installato un meccanismo di firma, le classi di un autore ritenuto affidabile possono

ricevere più privilegi in un computer.

Page 156: Set up and management of an integrated information system on Linux

156

Un meccanismo concorrente di trasmissione di codice, elaborato da Microsoft e basato sulla

tecnologia ActiveX, affida la sicurezza esclusivamente alle firme digitali. Evidentemente, questo

non è sufficiente: come può confermare qualsiasi utente dei prodotti Microsoft, i prodotti di case

costruttrici famose si bloccano e creano in tal modo danni. Java possiede un modello di sicurezza

molto più forte di ActiveX, in quanto controllo l’applicazione mentre viene eseguita e le impedisce

di compiere scempi (per esempio, è possibile impedire l’input e l’output di file locali anche per le

classi firmate).

Indipendente dall’architettura

Il compilatore genera un formato di file oggetto indipendente dall’architettura: il codice compilato è

eseguibile in molti processori, data la presenza del sistema runtime Java. Il compilatore Java genera,

infatti, istruzioni di bytecode che non hanno nulla a che vedere con una specifica architettura di

computer e che sono invece progettati per risultare facilmente interpretabili in qualsiasi computer e

facilmente traducibili “al volo” nel codice macchina nativo.

Questa idea non è nuova: più di 20 anni fa, il sistema UCSD Pascal svolgeva la stessa funzione in

un prodotto commerciale; ancora prima, l’implementazione originale di Pascal realizzata da Niklaus

Wirth adottava lo stesso concetto. Con l’impiego dei bytecode, le prestazioni risultano

sensibilmente peggiori (ma i compilatori just in time riducono in molti casi questo effetto). Gli

autori di Java hanno sviluppato un ottimo set di istruzioni di bytecode, ben funzionante nelle

architetture di computer attualmente più diffuse. Il codice è stato progettato in modo tale da essere

facilmente traducibile in vere e proprie istruzioni macchina.

Portabile

Contrariamente a C e C++, la specifica di Java non prevede aspetti “dipendenti

dall’implementazione”. Le dimensioni dei tipi di dati primitivi sono specificate, così come il

comportamento della loro aritmetica. Per esempio, in Java un int è sempre un intero a 32 bit,

mentre in C/C++ può significare un intero a 16 bit, un intero a 32 bit o qualsiasi altra dimensione

che il produttore del compilatore desidera. L0unico limite è che il tipo int deve avere un numero

di byte almeno pari a quello di short int e non superiore a quello di long int. La

dimensione fissa dei tipi di numeri ovvia ad un serio inconveniente relativo alla portabilità: i dati

binari vengono memorizzati in un formato fisso, eliminando la confusione tra “estremità grande” e

“estremità piccola”. Le stringhe vengono salvate in formato Unicode standard.

Le librerie appartenenti al sistema definiscono interfacce portabili. Per esempio, esiste una classe

Window astratta e una sua implementazione per Unix, Windows e Macintosh.

Page 157: Set up and management of an integrated information system on Linux

157

Scrivere un programma che si presenti bene in Windows, Macintosh e in 10 varianti di Unix è uno

sforzo di proporzioni immense. Java ha compito la prodezza epica, fornendo un toolkit semplice che

mappava gli elementi comuni dell’interfaccia utente in numerose piattaforme. Sfortunatamente ne è

scaturita una libreria che, oberata di lavoro, riusciva a dare risultati appena accettabili nei diversi

sistemi (si verificavano inoltre bug diversi sulle implementazioni grafiche delle diverse

piattaforme). In molte applicazioni la portabilità è più importante del grado eccelso di abilità: queste

applicazioni hanno tratto vantaggio dalle prime versioni di Java. Il toolkit dell’interfaccia utente è

stato ormai completamente riscritto in modo tale da non basarsi più sull’interfaccia utente dell’host.

Il risultato è molto più uniforme e più gradevole di quello delle versioni iniziali di Java.

Interpretato

L’interprete Java può eseguire bytecode Java direttamente in qualsiasi computer in cui sia stato

trasportato l’interprete. Poiché il linking è un processo più incrementale è leggero, il processo di

sviluppo può essere molto più rapido ed esplorativo.

Questo è forse un vantaggio mentre si sviluppa un’applicazione, ma è chiaramente espresso in

termini esagerati. In ogni caso, sì è riscontrato che il compilatore Java è piuttosto lento. Chi è

abituato alla velocità del ciclo di sviluppo di VB p di Delphi probabilmente rimarrà deluso.

Ad alte prestazioni

Anche se le prestazioni dei bytecode interpretati sono solitamente più che adeguate, vi sono

situazioni in cui sono necessarie prestazioni superiori. I bytecode possono essere tradotti al volo (in

fase di esecuzione) nel codice macchina della CPU specifica in cui l’applicazione è in esecuzione.

Se si usa l’interprete Java standard per tradurre i byte code, “alte prestazioni” non sembra essere il

termine esatto: “da mediocre a scarso” è probabilmente la definizione più precisa. Anche se è

sicuramente vero che la velocità dei bytecode interpretati può essere accettabile, non si può dire che

essi siano veramente rapidi (nel migliore dei casi, Java nel corso delle prove è risultato solo

leggermente più veloce di VB4 e non altrettanto veloce quanto le ultime versioni di VB). Viceversa,

può essere utile eseguire molti programmi Java tramite un vero compilatore e non limitarsi

all’interpretazione dei bytecode. Per esempio, questo sarà quasi sicuramente necessario per

qualsiasi programma destinato a diventare applicazione autonoma in una macchina specifica. In

definitiva, occorrerà un compilatore per ogni piattaforma.

Sono disponibili alcuni compilatori di codice nativo per Java, prodotti per esempio da Asymetrics,

Symantec e IBM. Esiste anche un’altra forma di compilazione, quella dei compilatori just in time

(JIT), che funzionano compilando una volta i bytecode nel codice nativo, inserendo in una cache i

Page 158: Set up and management of an integrated information system on Linux

158

risultati e quindi richiamandoli nuovamente all’occorrenza. Questa impostazione accelera

sensibilmente i loop, in quanto l’interpretazione deve essere eseguita una sola volta. Sebbene sia

sempre leggermente più lento di un vero e proprio compilatore di codice nativo, un compilatore just

in time può accelerare di 10 o perfino di 20 volte l’esecuzione di alcuni programmi e quasi sempre

risulta significativamente più veloce dell’interprete Java. Questa tecnologia è in continuo

miglioramento e potrebbe finire per dare risultati non raggiungibili dai sistemi di compilazione

tradizionali. Per esempio, un compilatore just in time può verificare quale codice viene eseguito

frequentemente ed ottimizzare solo tale codice per la velocità.

Multithreaded

I vantaggi del multithreading sono una migliore risposta interattiva ed un comportamento in tempo

reale.

Chi ha già provato a realizzare il multithreading in un altro linguaggio rimarrà piacevolmente

sorpreso nel riscontrare quanto esso sia facile in Java. I thread in Java hanno anche la possibilità di

avvalersi dei sistemi multiprocessore, se il sistema operativo di base è in grado di gestirli. Il lato

negativo è che le implementazioni dei thread sulle principali piattaforme differiscono sensibilmente

e Java non compie alcuno sforzo per ottenere l’indipendenza dalla piattaforma a questo proposito.

Solo il codice per chiamare il multithreading rimane invariato in tutte la macchine; Java demanda la

realizzazione del multithreading al sistema operativo sottostante. Tuttavia, l’agevolezza del

multithreading è uno dei motivi principali per cui Java è un linguaggio che esercita una forte

attrattiva nei riguardi dello sviluppo dei server.

Dinamico

Da molti punti di vista, Java è un linguaggio più dinamico di C o C++. E’ studiato per adattarsi ad

un ambiente in evoluzione. Le librerie possono aggiungere liberamente nuovi metodi e nuove

variabili istanza senza alcun effetto sui rispettivi client. In Java è semplice trovare informazioni sui

tipi runtime.

Questa è una funzione importante nelle situazioni in cui occorre aggiungere codice ad un

programma in esecuzione. Un ottimo esempio è il codice prelevato da internet per essere eseguito in

un browser. In Java 1.0, il reperimento di informazioni sui tipi runtime era tutt’altro che semplice,

ma le versioni attuali di Java danno al programmatore un quadro approfondito sia della struttura sia

del comportamento dei suoi oggetti. Questo è estremamente utili per i sistemi che richiedono di

analizzare gli oggetti in fase di esecuzione, quali i costruttori di GUI, i debugger intelligenti, i

componenti plugin ed i database di oggetti.

Page 159: Set up and management of an integrated information system on Linux

159

Appendice

Red Hat: disponibile la versione 7.3 Professional

Durante la stesura di questa tesi, Red Hat ha rilasciato la versione 7.3 Professional della sua

distribuzione Linux. Abbiamo quindi pensato di scrivere una breve recensione in modo da

evidenziarne le novità e le migliorie rispetto alla precedente versione.

L’offerta di Red Hat nel campo delle distribuzioni Linux si compone di un prodotto, Red Hat Linux

7.3, rilasciato in due edizioni destinate a fasce di pubblico differenti: Red Hat Linux 7.3 Personal,

distribuzione adatta all’uso personale e indirizzata a tutti coloro che fossero interessati a provare

Linux, e Red Hat Linux 7.3 Professional, più adatta a un uso aziendale e in grado di ospitare server

Web, di posta elettronica o firewall di piccole e medie dimensioni.

Occorre notare come Red Hat abbia recentemente affiancato a questi prodotti una distribuzione che

si rivolge al mercato hi-end: Red Hat Linux Advanced Server è il primo componente di una

piattaforma che intende offrire una valida per le medie e le grosse aziende che attualmente

utilizzano i sistemi Unix di Sun e HP. Il prodotto, rilasciato nel mese di Aprile 2001, include

funzionalità destinate ai server di fascia alta, come il supporto alle interfacce di connessione a banda

larga, funzionalità di bilanciamento del carico, capacità di clustering e software par la gestione dei

failover, inoltre a questo prodotto sono associati servizi di supporto adatti al mercato enterprise

(assistenza 24 ore su 24, garanzia di tempi minimi di risposta e così via).

> I contenuti

La confezione di Red Hat Linux 7.3 Professional è composta da 9 Cd-Rom (3 contenenti il sistema

operativo, 2 i codici sorgenti, 1 per le applicazioni commerciali di produttività e 1 per le

applicazioni server, 1 con la documentazione e infine 1 per StarOffice 5.2) cui aggiungerne uno

ulteriore di dimensioni ridotte, contenente gli strumenti per l’amministratore di sistema. Inoltre sono

presenti 3 manuali in lingua italiana e una Quick Installation Guide che guida l’utente in 19

passaggi fino al completamento dell’installazione del prodotto.

Fra i contenuti dei Cd-Rom contenenti le applicazioni commerciali di produttività citiamo Acrobat

Reader per Linux, Forte per Java e Java2 Platform di Sun Microsystems per gli sviluppatori e

l’utility di compressione Stuffit Expander; inoltre si trovano le versioni dimostrative del sistema di

modellazione tridimensionale AC3D, del fax server Fax2Send 2.1, dello strumento per l’analisi dei

dati Dataplore di Datan, di Compupix di Photodex per l’editing delle immagini e infine il pacchetto

Cad 2D/3D VediCad 8.1. Il Cd-Rom delle applicazioni server contiene invece il sistema di gestione

Page 160: Set up and management of an integrated information system on Linux

160

degli account e dei privilegi Novell eDirectory 8.6.2 (basato su Ldap), Novell Internet Messaging

System 3.0, sistema che offre servizi di posta elettronica di calendaring, oltre che le versioni

dimostrative del sistema di gestione dello storage NetVault 6.5.1 di BackBone Software, il

pacchetto di backup Arkeia 4.2.8 di Knox Software ed infine Coldfusion Server 5 e JRun Server 3.1

di Macromedia per lo sviluppo di e il deployment di applicazioni Web basate sulle tecnologie Java e

ColdFusion. Con l’edizione Personal del prodotto vengono offerti 60 giorni di assistenza telefonica

o via Web all’installazione e un periodo di 60 giorni del servizio di base di Red Hat Network, che

permette di creare un profilo personalizzato per il download e l’aggiornamento automatico del

software installato. Red Hat offre inoltre la possibilità di estendere il periodo di assistenza mettendo

a disposizione diversi tipi di contratti (a questo proposito si faccia riferimento alla pagina Web

www.redhat.it/products/).

L’edizione Personal si distingue dalla Professional per l’assenza del Cd-Rom contenente le

applicazioni server e dei 3 manuali, oltre che per il ridotto periodo di assistenza (fornito

esclusivamente via Web) e di utilizzo di Red Hat Network, ambedue limitati a 30 giorni.

> Installazione

Le procedure d’installazione non hanno subito notevoli modifiche rispetto alle precedenti release

della serie 7.x: dopo le consuete fasi di autorilevamento dell’hardware e di selezione della lingua, in

pochi passi si potrà giungere alla schermata, tipica delle distribuzioni Red Hat, nella quale l’utente

può scegliere la modalità d’installazione. Le opzioni sono, come di consueto, Workstation, che

permette di includere i pacchetti office e i client di rete, Server, per installare la maggior parte dei

servizi di rete quali, ad esempio, Apache, Sendmail, i database server MySql e PostgreSql e così

via, e Laptop, da selezionare nel caso si stia installando il sistema operativo su un portatile.

Selezionando una di queste opzioni, il programma d’installazione tenterà di completare molte

operazioni in maniera automatica: per avere un maggior controllo non solo sui pacchetti da

installare, ma anche sulle procedure di partizionamento del disco e sull’installazione del boot

loader, occorrerà scegliere un’installazione di tipo Custom, più adatta agli utenti esperti e mirata

all’ottenimento di configurazioni particolari. Le procedure di installazione sono prive di inutili

fronzoli e pur non essendo le migliori del lotto per quanto riguarda semplicità d’uso, risultano

comunque di buon livello e ottime per quanto concerne la rilevazione dell’hardware.

> Le prime impressioni

Terminata l’installazione, il sistema viene riavviato e, qualora sia stato installato il server XFree e

un window manager, presenta all’utente la schermata grafica di login. Red Hat 7.3 è corredata da

Page 161: Set up and management of an integrated information system on Linux

161

una discreta quantità di tool e di software: da questo punto di vista la situazione è migliorata rispetto

alle precedenti versioni (soprattutto nell’ambito del software multimediale), ma non è ancora al

livello d’alcune distribuzioni concorrenti. Occorre tuttavia rimarcare come questa scelta rifletta il

pubblico cui questa distribuzione si rivolge: Red Hat ha privilegiato l’utenza aziendale che necessita

di un numero contenuto di pacchetti cui poter affidare alcuni compiti, piuttosto che quella degli

“smanettoni”, che invece sono maggiormente attratti dalla possibilità di provare e adattare il

software alle proprie esigenze.

La distribuzione si basa sul recente kernel 2.4.18, compilato in diverse versioni ottimizzate sia per

piattaforme a singolo processore che multiprocessore, e mette a disposizione dell’utente il

compilatore Gnu C (gcc) e tutti gli strumenti di sviluppo disponibili, così come i demoni per la

maggior parte dei servizi Internet. Sono supportati tutti i principali linguaggi di programmazione.

La gestione del software si basa, come di consueto per le distribuzioni dal cappello rosso, su Rpm

(Red Hat Package Manager), tool in grado di aiutare gli amministratori nel compito di installare,

aggiornare, rimuovere e gestire il software. Occorre notare come la maggior parte del software

precompilato scaricabile da Internet sia fornito in questo formato, che nel corso degli anni è stato

adottato come standard “de facto” da molte distribuzioni.

Red Hat 7.3 Professional offre un aggiornamento per la maggior parte dei pacchetti rispetto alle

precedenti edizioni: notiamo come sia stato scelto di includere l’ultima versione del server Web

Apache release 1.3, serie notevolmente più sperimentata rispetto alla più recente 2.0.

> L’ambiente grafico e il software multimediale

Le più grandi novità rispetto alla versione 7.3 sono relative all’interfaccia grafica: Red Hat 7.3

include infatti la nuova versione 3.0 di Kde. Così come il suo concorrente Gnome 2.0, non ancora

disponibile ma che probabilmente sarà già stato rilasciato al momento in cui leggerete questa

recensione, Kde 3.0 non è un semplice window manager: esso, infatti, oltre all’ambiente grafico

(localizzato in 50 lingue) fornisce un ambiente integrato di sviluppo e applicazioni di ogni genere

(amministrazione, entertainment, ambienti di sviluppo, giochi, applicazioni multimediali e così via).

Una delle principali nuove funzionalità integrate in Kde 3.0 è il nuovo framework per la stampa, in

grado di supportare differenti sistemi di stampa, quali Cups, Lprng, Lpr, Lpd ed altri. Le principali

novità di Kde 3 rispetto alle release precedenti si trovano comunque in Konqueror, il browser/file

manager. Il motore di rendering di Konqueror, che dispone finalmente di un’implementazione

integrale del modello Dom, supporta ora in maniera completa JavaScript e DHtml (così come Java).

E’ compatibile con gli standard Xml 1.0 e Html 4.0 e supporta i fogli di stile (CCS-1 e CCS-2). E’

inoltre compatibile con i plug-in di Netscape Communicator (per esempio Flash, RealAudio e

Page 162: Set up and management of an integrated information system on Linux

162

RealVideo) e, grazie ad add-on commerciali di Codeweavers (www.codeweavers.com), anche con i

plug-in Windows come, ad esempio, Macromedia Shockwave Player, Quicktime e Windows Media

Player 6.5. Come file manager, il nuovo Konqueror è in grado di visualizzare una serie di

informazioni addizionali riguardo ai file (come il tag ID3 dei file Mp3 oppure i commenti per le

immagini Jpeg). Inoltre è in grado di fornire “preview” dei file multimediali al semplice passaggio

del mouse sulle icone.

Le caratteristiche multimediali di Kde 3 sono ulteriormente arricchite dai numerosi strumenti di cui

era già dotata la release precedente dell’ambiente grafico. In particolare il player multimediale

noatun supporterà un maggior numero di formati: oltre a .wav ed .mp3, noatun può essere utilizzato

per ascoltare musica in formato OggVorbis e vedere filmati in formato DivX.

> Il software da ufficio

L’aggiornamento di Gnome alla versione 1.4, e conseguentemente la presenza di Nautilus in

versione 1.0, ha portato all’inclusione nella distribuzione delle più recenti versioni degli altri

pacchetti di Ximian, e nello specifico del Pim (Personal Information Manager) Evolution. Il

pacchetto integra funzionalità relative alla gestione della posta elettronica, all’organizzazione degli

appuntamenti e alla gestione del calendario. Evolution è compatibile con i protocolli Smtp (anche

con autorizzazione), Pop3 e Imap4; è inoltre disponibile un add-on (non gratuito) per l’integrazione

del client con i server Microsoft Exchange 2000 (Ximian Connector – si consulti a questo proposito

la pagina Web www.ximian.com/products/connector/). Evolution è in grado di importare mailbox

create con Netscape, Outlook Express, Eudora e altri software per la gestione della posta

elettronica. Gli utenti abituati all’utilizzo di Microsoft Outlook si troveranno a proprio agio nel

nuovo ambiente, dotato in pratica d’ogni funzionalità propria della controparte per i sistemi

operativi della casa di Redmond.

Per quanto riguarda la suite per ufficio, segnaliamo KOffice, la suite integrata in Kde, e il più

evoluto StarOffice 5.2. KOffice, di cui è attualmente disponibile la beta della versione 1.2 ed è

incluso in Red Hat 7.3 nella versione 1.1, si compone di tutti gli strumenti essenziali al lavoro da

ufficio: KWord è il word processor, KSpread il foglio elettronico, KPresenter il programma di

presentazione, Kivio è il tool per la creazione di diagrammi, Kontour l’applicazione di disegno

vettoriale, Krita il programma di fotoritocco, Kougar server per la creazione dei report e infine

KChart per la creazione di grafici. Occorre segnalare l’ottima integrazione della suite con ambiente

grafico Kde e la buona maturità dei prodotti patisce il grosso limite di non essere compatibile con il

formato dei file della suite Microsoft Office, ormai uno standard con il quale le suite per ufficio si

devono confrontare se vogliono sperare di essere adottate in ambiente aziendale.

Page 163: Set up and management of an integrated information system on Linux

163

StarOffice di Sun Microsystems, l’altra suite inclusa nell’offerta di Red Hat 7.3, si è invece

dimostrata molto valida, anche se non perfetta, nel trattare i documenti di Word ed Excel, ma

risente invece del difetto di non essere per nulla integrata negli ambienti grafici Kde o Gnome. La

suite, inclusa nella versione 5.2 in luogo della recentissima 6.0 che è ora disponibile solo a

pagamento, suscita da tempo interesse da parte di moltissimi utenti in quanto alternativa al già citato

pacchetto Microsoft Office: StarOffice è infatti disponibile non solo per Linux, ma anche per i

sistemi operativi Windows. La suite si compone di diversi applicativi: StarOffice Writer, il word

processor; StarOffice Calc, il foglio elettronico; StarOffice Impress, il programma di presentazione;

StarOffice Draw, il modulo per il disegno vettoriale; StarOffice Base, il tool di gestione delle basi di

dati. Infine sono presenti i moduli di StarOffice Schedule e StarOffice Mail and Discussion per la

gestione degli appuntamenti (organizer) e della posta elettronica e dei messaggi Usenet.

Gli applicativi di StarOffice si dimostrano certamente validi per il normale lavoro da ufficio: gli

utenti già abituati a Microsoft Office o ad altre suite si troveranno prevedibilmente a proprio agio e

non avranno alcuna difficoltà nel nuovo ambiente di lavoro.

> Gli strumenti d’amministrazione

Uno dei settori nei quali maggiormente le distribuzioni si differenziano le une dalle altre, oltre alle

routine d’installazione, è quello degli strumenti d’amministrazione. Molti dei “guru” di Linux

preferiscono usare tool a linea di comando per portare a termine compiti di amministrazione, così da

poter creare script per l’automatizzazione delle procedure ed evitare inoltre di installare sui propri

server interfacce grafiche che appesantirebbero inutilmente il sistema e potrebbero essere causa di

bug e problemi di sicurezza. Tuttavia Linux non avrebbe alcuna speranza di conquistare sempre

maggiore attendibilità per gli utenti aziendali se non offrisse strumenti d’amministrazione più

semplici, amichevoli e dotati di un’interfaccia grafica.

Red Hat offre all’utente e all’amministratore molti strumenti che garantiscono la possibilità di

configurare e personalizzare ogni aspetto del sistema e dei servizi di rete senza che sia necessario

ricorrere a criptici comandi da digitare alla console. L’ottima qualità dei molti strumenti non ci

impedisce tuttavia di avanzare qualche annotazione in merito alla mancanza di un unico tool di

gestione centralizzata che integri l’amministrazione di ogni aspetto del sistema, sul modello

dell’eccellente YaST2 di cui è da tempo dotata la distribuzione SuSE Linux.

> Conclusioni

Red Hat 7.3 non tradisce le attese, fornendo un upgrade dei pacchetti inclusi nella versione 7.2 e

introducendo, tra le principali novità, la nuova versione 3.0 dell’interfaccia grafica Kde che offre

Page 164: Set up and management of an integrated information system on Linux

164

rinnovati e potenziati strumenti soprattutto nell’ambito del software multimediale. Una citazione

particolare merita l’eccellente documentazione cartacea fornita nella confezione. I tre manuali in

lingua italiana coprono ogni argomento in maniera precisa ed esaustiva: la Getting stated guide è

indirizzata all’utente alle prime armi che viene guidato nelle più semplici operazioni quali l’utilizzo

del software e degli ambienti grafici e le prime configurazioni del sistema.

Il manuale intitolato Customization guide copre gli aspetti della configurazione del sistema (rete,

stampanti, procedure di avvio, moduli del kernel) con l’ausilio degli stumenti di amministrazione.

Infine la Reference guide si rivolge all’amministratore e copre aspetti quali, ad esempio, la struttura

del file system/proc, il file system journaled ext3, Pam, Kerberos, l’installazione e la configurazione

del pacchetto Tripwire oltre che l’attivazione dei principali servizi di rete, quali Nfs, Ldap e Bind.

> Requisiti Hardware

Si consulti l’hardware compatibility list all’indirizzo segnalato per informazioni sull’hardware

supportato. I requisiti minimi per la versione destinata alle piattaforme Intel o compatibili sono una

Cpu Intel di classe Pentium o superiore (è raccomandata una Cpu con frequenza di clock superiore a

200 MHz), almeno 650 MByte di spazio su disco (sono raccomandati 2,5 GByte per

un’installazione tipica e 4,5 GByte per l’installazione completa), almeno 32 MByte di memoria

Ram per l’utilizzo del sistema operativo in modalità testuale ed almeno 64 MByte per disporre

dell’interfaccia grafica (sono raccomandati almeno 96 MByte).

> Indirizzi Internet utili

Hardware compatibility list: http://hardware.redhat.com/

Download: www.redhat.com/download/howto_download.html

Red Hat Network: http://rhn.redhat.com

StarOffice 6.0: http://wwws.sun.com/software/product_family/staroffice.html

Upgrade per gli utenti di Red Hat Linux 6.2 o successiva, SuSE Linux 7.3 o 8.0, Mandrake Linux

8.1 o 8.2: www.europe.redhat.com/upgrade_rebate/

> I costi

Red Hat 7.3 Personal: € 117,01

Red Hat 7.3 Professional: € 320,43

Red Hat 7.3 Personal Upgrade: € 10,00

Red Hat 7.3 Professional Upgrade: € 20,00

Page 165: Set up and management of an integrated information system on Linux

165

Bibliografia

1. AAVV, PC Professionale n°106 Gennaio 2000, Mondadori Informatica

2. AAVV, PC Professionale n°107 Febbraio 2000, Mondadori Informatica

3. AAVV, PC Professionale n°112 Luglio 2000, Mondadori Informatica

4. AAVV, PC Professionale n°114 Settembre 2000, Mondadori Informatica

5. AAVV, PC Professionale n°138 Settembre 2002, Mondadori Informatica

6. http://www.redhat.com (Sito ufficiale Red Hat inglese) e www.redhat.it/products/ (Info su

prodotti ed assistenza)

7. http://www.redhat.it (Sito ufficiale Red Hat italiano)

8. http://www.linuxdoc.org (Linux Documentation Project versione inglese)

9. http://www.pluto.linux.it/ildp (Linux Documentation Project versione italiana)

10. http://www.samba.org

11. http://lisa-home.sourceforge.net (LAN Browsing)

12. http://www.starnet.com (X-Win32)

13. http://www.apache.org

14. www.securityfocus.com (Mailing list Bugtraq mantenuta da SecurityFocus sulla sicurezza di

Apache)

15. www.cert.org/advisories/ (Bollettini del Cert (Computer Emergency Response Team sulla

sicurezza di Apache)

16. http://www.twiki.org

17. http://java.sun.com e http://java.sun.com/sfaq (Sito ufficiale per le questioni legate alla

sicurezza di Java)

18. Cay S. Horstmann, Gary Cornell, Java 2 I Fondamenti, Mc Graw Hill, 1999

19. http://www.cs.princeton.edu/sip/ (Gruppo di Princeton di esperti sulla sicurezza che cerca di

riscontrare dei bug nei meccanismi di sicurezza di Java)

20. Newsgroup comp.risks (Opinioni di consulenti esperti riguardo allo stato attuale dei

meccanismi di sicurezza di Java)

21. www.codeweavers.com (Add-On commerciali di Codeweavers per Konqueror)

22. www.ximian.com/products/connector/ (Add-On per l’integrazione con i server Microsoft

Exchange 2000)