Amministrazione base dei sistemi Linux

281
Corso su Linux Usare il Pinguino e vivere felici (v. 1.1) Paolo Campegiani [email protected] http://www.paolocampegiani.it – p.

description

Corso per l'amministrazione base di un sistema Linux, della durata di 8-16 ore

Transcript of Amministrazione base dei sistemi Linux

Page 1: Amministrazione base dei sistemi Linux

Corso su LinuxUsare il Pinguino e vivere felici (v. 1.1)

Paolo Campegiani

[email protected]

http://www.paolocampegiani.it

– p.

Page 2: Amministrazione base dei sistemi Linux

Indice per sezioni - 1

Concetti generali, 4

Comandi su file, 56

Operazioni su dischi, 81

Comandi su file di testo, 98

Comandi per l’archiviazione, 114

Bash e linea di comando, 127

Utenti e gruppi, 144

L’ambiente grafico, 157

Stampare, 162

– p.

Page 3: Amministrazione base dei sistemi Linux

Indice per sezioni - 2

Interoperabilitá con Windows, 168

Data ed ora, 175

Informazioni sull’hardware, 182

Controllare il sistema, 185

Rete e networking, 209

Sequenza di boot, 231

Gestione dei pacchetti con RPM, 244

Compilare il Kernel e gestire i moduli, 255

Trovare documentazione, 272

– p.

Page 4: Amministrazione base dei sistemi Linux

Cenni su Unix - 1

Unix viene sviluppato nei Bell Labs a partire dal 1969. Si tratta di

una famiglia di sistemi operativi, sviluppati da costruttori diversi, che

condividono una comune interfaccia di programmazione:

AIX di IBM

Solaris di Sun

HP-UX di Hewlett Packard

FreeBSD università di Berkeley

E’ il primo sistema operativo scritto in un linguaggio di

programmazione ad alto livello, il C, inventato nel 1972 proprio a tal

fine.

– p.

Page 5: Amministrazione base dei sistemi Linux

Cenni su Unix - 2

Unix é stato pensato fin dall’inizio per essere semplice,coerente, efficiente. É un sistema operativo multiutente emultiprogrammato:

multiprogrammato: piú processi si contendono l’uso dellerisorse del sistema;

multiutente: utenti diversi richiedono al sistema dicompiere delle operazioni, e sono autorizzati o meno acompierle.

– p.

Page 6: Amministrazione base dei sistemi Linux

Cenni su Unix - 3

Un sistema Unix consente di eseguire in modo efficientemolte centinaia di processi distinti che operanoconcorrentemente.Unix é particolarmente orientato ad applicazioni server e acompiti di networking: Internet é stata sviluppata su Unix.La compatibilitá tra le diverse versioni di Unix é a livello dicodice sorgente e di comandi di sistema disponibili.Le specifiche di Unix sono pubbliche, le implementazionisono proprietarie oppure liberamente usabili (FreeBSD).

– p.

Page 7: Amministrazione base dei sistemi Linux

Cosa é Linux

Linux é una implementazione di Unix realizzata partendoda zero, e distribuita secondo la licenza GPL (Gnu PublicLicense).Linux nasce nel 1991 ad opera di Linus Torvalds, a cui sisono aggiunti negli anni centinaia di sviluppatori cheoperano gratuitamente e si coordinano tramite una mailinglist pubblicamente accessibile. Torvalds é il responsabileultimo di ogni decisione relativa alle funzionalità da inserirenel kernel e sulla scelta tra le diverse implementazionipossibili.

– p.

Page 8: Amministrazione base dei sistemi Linux

La licenza GPL

La licenza GPL (GNU Public License) rappresental’essenza del software libero. Con una licenza GPL si puó:

ottenere il software gratuitamente ed in formatosorgente, pagando eventualmente delle spese dispedizione;

utilizzarlo in qualsiasi ambito e con qualsiasi finalitá;

ridistribuire anche gratuitamente il software cosíottenuto;

modificare il software ottenuto;

distribuire il software modificato, citando l’autoreoriginale, ma solo sotto licenza GPL;

– p.

Page 9: Amministrazione base dei sistemi Linux

I sistemi GNU/Linux

Linux é il kernel, tutti gli altri programmi necessari alfunzionamento del sistema (il compilatore C, la libreria C) eil software di sistema (i comandi di base) sono sviluppati daun altro organismo, la Free Software Foundation, che neglianni ’80 ha dato il via alla realizzazione di un proprio Unixgratuito (GNU é un anti-acronimo, significando GNU is NotUnix).

E’ quindi piú corretto parlare di sistemi GNU/Linux.

– p.

Page 10: Amministrazione base dei sistemi Linux

Caratteristiche di Linux - 1

Linux é un sistema operativo multipiattaforma, nella suaultima versione gira tra l’altro su:

x86 e compatibili (Intel, Amd, ...) a 32 e 64 bit

PowerPc a 32 e 64 bit

Motorola 68k

Arm

Digital Alpha

MIPS

Sparc

IBM S390

– p. 10

Page 11: Amministrazione base dei sistemi Linux

Caratteristiche di Linux - 2

É una implementazione di UnixMultiutenteMultiprocesso

Multiprocessing simmetrico (SMP), da 2 a 16processori (di piú con il kernel 2.6)

Minime richieste hardware (il kernel occupa meno di 2MB di memoria)

Grande interfacciabilitá verso altri sistemi operativi

Particolarmente ottimizzato per il networking

– p. 11

Page 12: Amministrazione base dei sistemi Linux

La numerazione del kernel - 1

Il kernel di Linux ha un sistema di numerazione a tre cifre:

1. Version: versione del kernel (correntemente é la 2, cisono state la 0 e la 1)

2. Patchlevel: il livello di patchNumeri pari: versioni stabili del kernelNumeri dispari: versioni di sviluppo

3. Sublevel: un numero progressivo che rappresenta levarie sottoversioni.

– p. 12

Page 13: Amministrazione base dei sistemi Linux

La numerazione del kernel - 2

Quindi ad esempio 2.4.24 é una versione stabile, mentre2.5.33 é una versione di sviluppo.Una versione stabile non é necessariamente priva di bug!Se ci sono dei bug, questi vengono segnalati alla mailinglist di sviluppo e corretti in una delle prossime versioni(SubLevel maggiore).

Al 9 Luglio 2004 esistono diversi rami stabili della versione2.0 ( finger @kernel.org ):

2.0.40

2.2.26

2.4.26

2.6.7

– p. 13

Page 14: Amministrazione base dei sistemi Linux

La numerazione del kernel - 3

La versione 2.4.26 é più stabile della versione 2.6.7, che éinvece appena stata rilasciata ed é quindi in corso disviluppo attivo.Progressivamente la versione 2.6 diventerá stabile, e ad uncerto punto si passerá allo sviluppo della versione 2.7, cheincorporerá nuove funzionalitá (nello sviluppo di unaversione pari si correggono sono gli errori presenti). Losviluppo della versione 2.6 si limiterá a correggere problemidi sicurezza.

– p. 14

Page 15: Amministrazione base dei sistemi Linux

Le dimensioni del kernel

Il kernel è costituito da circa 5.6 milioni di righe di codice C(con una piccola parte in assembler specifica per ognipiattaforma) e viene distribuito in formato sorgente (circa200 MB non compressi). Ottenuti i sorgenti, occorrecompilarli sulla propria macchina per avere un kernel dapoter installare, oppure usare un kernel compilato da terzeparti.

Il kernel realizza solo le funzioni essenziali: l’interfacciagrafica e tutti i programmi (compreso il software di sistema)sono indipendenti e sviluppati autonomamente.

– p. 15

Page 16: Amministrazione base dei sistemi Linux

La libreria e il compilatore C

La libreria e il compilatore C sono due componentiessenziali del sistema.Il kernel stesso viene compilato usando il compilatore C, epraticamente tutti i programmi presenti usano direttamenteo indirettamente la libreria C.

– p. 16

Page 17: Amministrazione base dei sistemi Linux

Il compilatore C

Il compilatore C/C++ si chiama gcc (Gnu Cross Compiler)ed é sviluppato da Free Software Foundation.Oggi sono sostanzialmente disponibili due versioni:

2.96 la versione stabile, fortemente consigliata percompilare il kernel

3.3-3.4 la nuova versione, utilizzabile per compilare lamaggior parte dei programmi

Sono disponibili molti altri linguaggi di programmazione: avolte i relativi compilatori operano traducendo il codice inlinguaggio C/C++ e poi invocando il compilatore gcc.

– p. 17

Page 18: Amministrazione base dei sistemi Linux

La libreria C

La libreria C attualmente utilizzata é la libreria glibc (Gnulibc).Implementa POSIX.1 e parte di POSIX.2.La versione corrente é la 2.3.

– p. 18

Page 19: Amministrazione base dei sistemi Linux

Le librerie dinamiche

Le librerie utilizzate dai programmi possono esserecollegate agli stessi in modo statico o dinamico.Il consolidamento statico viene preferito quando occorreavere un programma che possa funzionare in modoindipendente dal resto del sistema, avendo al suo internotutto il codice necessario al funzionamento.Il consolidamente dinamico é di gran lunga il piú usato,permettendo di avere programmi di dimensioni minori.

– p. 19

Page 20: Amministrazione base dei sistemi Linux

Gli standard di Linux

Con la diffusione di Linux, e l’esistenza di molti venditori disoluzioni basate su questo sistema, si é reso necessariodefinire degli standard per garantire uno standard comuneche governi:

le funzioni esportate da alcune delle librerie dinamiche

la dislocazione di alcuni dei file (di configurazioni o dicomandi) presenti nel sistema

i parametri di alcuni dei comandi di sistema

Un consorzio indipendente ha realizzato lo standardrelativo, il Linux Standard Base (LSB):http://www.linuxbase.org.

– p. 20

Page 21: Amministrazione base dei sistemi Linux

Le distribuzioni - 1

Un sistema Linux contiene quindi un kernel, delle libreriedinamiche, del software di sistema, e dei programmiapplicativi. Tutti questi componenti sono variamenteinterdipendenti (ad esempio un certo programma richiedeuna certa versione di una libreria) ed occorre quindi garantireche l’installazione, la rimozione o l’aggiornamento di uno diquesti componenti non comprometta il funzionamentodell’intero sistema.Questo é uno dei compiti svolto una distribuzione.

– p. 21

Page 22: Amministrazione base dei sistemi Linux

Le distribuzioni - 2

Una distribuzione è fondamentalmente, quindi, un sistemadi gestione delle dipendenze, anche se ci sono altrielementi specifici per una distribuzione, come ad esempio ilmodo in cui viene effettuata la configurazione dell’hardwaree come sono attivati i servizi offerti dalla macchina.Esistono centinaia di distribuzioni di Linux, che coprononecessitá molto diverse (e sono quindi fornite anche coninsiemi di software applicativi diversi).

– p. 22

Page 23: Amministrazione base dei sistemi Linux

Le distribuzioni - 3

Le piú diffuse e significative distribuzioni per Linux sono:

RedHat

Debian

SuSe

Mandrake

Slackware

Gentoo

– p. 23

Page 24: Amministrazione base dei sistemi Linux

La distribuzione RedHat

La piú diffusa distribuzione per Linux, é oggi presente in piúversioni:

Red Hat Linux/Red Hat Fedora la versione gratuita eprelevabile da Internet;

Red Hat Enterprise Linux WS per workstation;

Red Hat Enterprise Linux ES per server web;

Red Hat Enterprise Linux AS per server Oracle;

La differenza sostanziale tra la versione gratuita e quelle apagamento é l’assistenza fornita. Il sistema di gestionedelle dipendenze si basa in ogni caso sul software rpm(RedHat Package Manager).

– p. 24

Page 25: Amministrazione base dei sistemi Linux

Le distribuzioni SuSe e Mandrake

Queste due distinte distribuzioni usano lo stesso packagemanager di RedHat, e si differenziano sul modo in cui isingoli pacchetti sono organizzati.Sono anch’esse disponibili in due versioni, una gratuita eprelevabile da Internet, ed una a pagamento in cui siaggiungono dei software proprietari e/o dell’assistenzatecnica.

– p. 25

Page 26: Amministrazione base dei sistemi Linux

La distribuzione Debian

Questa distribuzione é completamente gratuita, realizzatada un gruppo di volontari. Utilizza un proprio sistema digestione dei pacchetti (il cui nucleo é il software dpkg ).E’ divisa in tre filoni:

stable che viene aggiornata ogni 2 anni circa, econtiene software ampiamente testato;

testing che contiene quella che diventerá la prossimaversione Stable;

unstable che contiene software instabile o sottosviluppo attivo;

– p. 26

Page 27: Amministrazione base dei sistemi Linux

La distribuzione Gentoo

Ultima arrivata tra le distribuzioni piú famose, haguadagnato rapidamente popolaritá per l’idea innovativa sucui si basa: tutto il software installato viene ricompilato inlocale, in modo da ottimizzarlo al massimo dal punto divista delle prestazioni.

In questo modo é inoltre sempre immediatamentedisponibile l’ultima versione di ogni programma.

– p. 27

Page 28: Amministrazione base dei sistemi Linux

La distribuzione Slackware

E’ la distribuzione piú essenziale: il sistema di gestionedelle dipendenze é spartano (ed é stato introdotto in tempirecenti, prima era compito dell’amministratore del sistemacapire se e come era possibile installare o rimuovere undato programma).E’ anche la distribuzione che permette il massimo grado dicontrollo su ció che viene installato nel sistema.

– p. 28

Page 29: Amministrazione base dei sistemi Linux

Quale é la migliore distribuzione?

Non esiste una distribuzione migliore delle altre. Ognibuona distribuzione ha un suo campo d’elezione:

Suse/Mandrake per avere un Linux molto user friendly

Fedora per una distribuzione RedHat ma di sviluppo (edinstabile)

Debian per avere la massima stabilitá e semplicitá diamministrazione;

Gentoo quando le prestazioni e l’efficienza sono critiche(ad esempio sui portatili);

Slackware per server Internet molto specializzati

In questo corso ci baseremo su RedHat.

– p. 29

Page 30: Amministrazione base dei sistemi Linux

Utenti

Gli utenti presenti nel sistema (sia le persone che i processidi sistema) sono univocamente identificati da un numerodetto UID (User ID). A questo numero é associata poi unastringa identificativa, ma il kernel considera sempre e solol’UID.É sempre presente un utente, root , identificato da UID paria 0 che non ha alcuna restrizione nelle operazioni checompie sul sistema.

– p. 30

Page 31: Amministrazione base dei sistemi Linux

Processi - 1

Un processo é l’esecuzione di un programma. Lo stessoprogramma puó quindi essere eseguito piú volte anchecontemporaneamente, dando luogo a piú processi distinti.Ogni processo é identificato univocamente da un numerodetto PID (Process ID). Il PID é unico in un dato momento,ma puó essere riutilizzato in seguito per un altro processo.

– p. 31

Page 32: Amministrazione base dei sistemi Linux

Processi - 2

I processi sono organizzati gerarchicamente: ogni processoha un processo padre (che é il processo che ne ha chiestol’attivazione), ad eccezione del processo init . Due processifigli dello stesso padre sono detti fratelli. Un processo figliodiventa orfano quando il processo padre termina (magariinaspettatamente), e viene “adottato” dal processo init.

– p. 32

Page 33: Amministrazione base dei sistemi Linux

File - 1

Sotto Linux, come in ogni Unix, tutto é un file.Tutti i dispositivi fisici collegati al sistema sono visti comedei file a cui si puó accedere in lettura o in scrittura.I nomi dei file sono sensibili al maiuscolo (filename édiverso da FILENAME). I file sono contenuti in directory, ela directory radice é indicata con /. Nei nomi di file ledirectory sono separate dal simbolo /.

– p. 33

Page 34: Amministrazione base dei sistemi Linux

File - 2

Tutti i filesystem e i dispositivi montati sono visti comesottodirectory della directory radice.Ad esempio, il contenuto di un floppy potrebbe esserepresente nella directory /mnt/floppy : quindi le operazioni dilettura e scrittura dei file in quella directoryleggeranno/modificheranno i file sul floppy.

– p. 34

Page 35: Amministrazione base dei sistemi Linux

File - 3

Ad ogni file sono associate molte informazioni, come adesempio:

Data di creazione, ultimo accesso, ultima modifica

Proprietario del file

Permessi sul file

La combinazione dei permessi sul file, sulla directory in cuiil file é contenuto (e sulle superdirectory in cui é contenutala directory) definiscono quali operazioni un utente puócompiere sul file.

– p. 35

Page 36: Amministrazione base dei sistemi Linux

File - 4

Esistono diversi tipi di file:

(regular) file

directory

link

socket

named pipe (FIFO)

block device

character device

– p. 36

Page 37: Amministrazione base dei sistemi Linux

Gerarchia dei file - 1

Gli standard di Linux prevedono una specifica gerarchia di /:

/etc Contiene la configurazione del sistema

/bin Contiene programmi eseguibili (per utenti)

/sbin Contiene programmi eseguibili che possonorichiedere permessi speciali)

/home Contiene le home directory degli utenti

/root Contiene l’home directory dell’utente root

/tmp Directory temporanea

– p. 37

Page 38: Amministrazione base dei sistemi Linux

Gerarchia dei file - 2

/usr Contiene eseguibili e dati per gli utenti

/opt Riservata a software proprietario

/dev Contiene i device del sistema

/proc Contiene il proc filesystem

/var File di log e informazioni varie

– p. 38

Page 39: Amministrazione base dei sistemi Linux

La directory /dev - 1

I file presenti in /dev rappresentano tutti i dispositivicollegati o collegabili al sistema. La lettura o scrittura suquesti file si concreta nella lettura o nella scritturadirettamente sui dispositivi che rappresentano.Quindi ad esempio scrivere sulla scheda audio significamandare in play un file, e leggere dal file che rappresenta latastiera significa acquisire il carattere premuto dall’utente(se c’é).

– p. 39

Page 40: Amministrazione base dei sistemi Linux

La directory /dev - 2

I dischi EIDE sono rappresentati secondo questanumerazione:

/dev/hda Il master della catena primaria

/dev/hdb Lo slave della catena primaria

/dev/hdc Il master della catena secondaria

/dev/hdd Lo slave della catena secondaria

Questi nomi possono essere seguiti da un numero cheindica la partizione (primaria od estesa):

/dev/hda1 Prima partizione di /dev/hda

/dev/hdb2 Seconda partizione di /dev/hdb

– p. 40

Page 41: Amministrazione base dei sistemi Linux

La directory /dev - 3

Altri elementi in questa directory sono:

/dev/sd... i dischi SCSI (adottano un analogo schema<disco><partizione> di quelli EIDE)

/dev/tty<...> sono associati alle console

/dev/fd... floppy disk

/dev/usb la directory per i dispositivi USB

– p. 41

Page 42: Amministrazione base dei sistemi Linux

La directory /dev - 4

/dev/par... le porte parallele

/dev/ttyS... le porte seriali (compreso il mouse)

/dev/zero la lettura da questo file ritorna sempre e solo 0

/dev/null un file di dimensione nulla su cui ognioperazione di scrittura ha successo

/dev/random un file che si comporta come un generatoredi numeri casuali

– p. 42

Page 43: Amministrazione base dei sistemi Linux

Il filesystem /proc - 1

La directory /proc contiene il filesystem /proc. I filecontenuti in questa directory permettono di:

1. acquisire informazioni sul sistema

2. fare il tuning del kernel

La directory /proc risiede tutta in memoria, e il contenutodei file viene creato dinamicamente quando vengono letti.

– p. 43

Page 44: Amministrazione base dei sistemi Linux

Il filesystem /proc - 2

Il tuning dinamico dei parametri del kernel viene effettuatoscrivendo i valori desiderati all’interno di file contenuti nelladirectory /proc/sys .I parametri correnti sono visualizzabili leggendo gli stessifile.I file del tipo /proc/<nnnn> contengono informazioni sulprocesso con PID pari a nnnn.

– p. 44

Page 45: Amministrazione base dei sistemi Linux

Il filesystem swap

Linux utilizza di solito una partizione del disco come area diswap. In questa area vengono allocate le pagine dimemoria dei processi attualmente sospesi, in modo tale dalasciare spazio libero a processi in esecuzione che hannobisogno di piú memoria.É possibile avere piú partizioni di swap per aumentare leprestazioni, e viceversa avere un file come file di swap.Lo swap dovrebbe avere una dimensione pari ad 1-2 voltela memoria disponibile, ma comunque non oltre i 2 GB.

– p. 45

Page 46: Amministrazione base dei sistemi Linux

Il filesystem tmpfs

Originariamente chiamato shmfs (Shared Memory FS), éun filesystem che risiede completamente in memoria (siacentrale che di swap), aumentando o riducendo le propriedimensioni a seconda della quantitá di dati in esso presenti.

– p. 46

Page 47: Amministrazione base dei sistemi Linux

Gli inode

Per ogni file presente viene definito un inode, che é lastruttura in cui sono memorizzati i metadati associati al file(nome, proprietá, permessi, timestamp) e delle ulterioristrutture per consentire un accesso diretto veloce ai dati delfile.

– p. 47

Page 48: Amministrazione base dei sistemi Linux

I filesystem di Linux

Linux ha diversi filesystem nativi a disposizione:

1. ext2/ext3

2. Reiserfs

3. JFS

4. XFS

Tutti questi filesystem offrono le funzionalitá di base di unfilesystem Unix (proprietá e permessi dei file, gestione deimetadati per ogni file con gli inode).

– p. 48

Page 49: Amministrazione base dei sistemi Linux

Il filesystem ext2/ext3 - 1

Il primo filesystem sviluppato per Linux è stato il filesystemext2. La sua evoluzione ext3 é con esso del tuttocompatibile, aggiungendo solo un file che utilizza comejournal: le operazioni di modifica dei dati e dei metadati sudisco vengono prima scritte nel journal e solo in unsecondo tempo trasferite su disco.

– p. 49

Page 50: Amministrazione base dei sistemi Linux

Il filesystem ext2/ext3 - 2

In questo modo si evita che una interruzione forzata delsistema costringa a scansionare tutto il disco perripristinare la correttezza dei metadati (se possibile): in uncaso del genere é sufficiente riapplicare le modifichepresenti nel journal file.Si puó sempre passare da un filesystem ext2 ad uno ext3 eviceversa.

– p. 50

Page 51: Amministrazione base dei sistemi Linux

Il filesystem Reiserfs

É stato il primo filesystem di tipo journaled per Linux. Ledue funzionalitá aggiuntive piú importanti rispetto adext2/ext3 sono:

liste di controllo degli accessi a livello di file

gestione efficiente delle directory con molti file

– p. 51

Page 52: Amministrazione base dei sistemi Linux

I filesystem XFS e JFS

Sono entrambi filesystem di tipo journaled:

XFS é sviluppato da Sun. Ottimo nei file server, richiedeindispensabilmente un gruppo di continuitá poichéeffettua un notevole caching dei dati e dei metadati inmemoria

JFS sviluppato da IBM

– p. 52

Page 53: Amministrazione base dei sistemi Linux

I filesystem non nativi

Linux puó accedere in lettura (e in scrittura) a molti altrifilesystem, quali ad esempio:

FAT, VFAT, NTFS, HPFS

ISO9660, UDF

BeOS, QNX

– p. 53

Page 54: Amministrazione base dei sistemi Linux

Quale filesystem usare?

La scelta del filesystem dipende molto dal tipo di utilizzodella macchina:

PC personali, piccoli server : ext3 oppure Reiserfs.

mail server e file server : Reiserfs, XFS, JFS.

server Oracle : ext3 (per suggerimento di Oraclestessa), OCFS, raw devices

– p. 54

Page 55: Amministrazione base dei sistemi Linux

Come partizionare il disco?

Un buon partizionamento del disco prevede sempre unapiccola partizione di boot, di tipo ext2 oppure ext3, in cuiallocare le immagini dei kernel da lanciare, posizionataall’inizio del disco e con una dimensione di 100 MB.Si possono quindi avere piú partizioni per le varie parti delfilesystem (ad esempio, una partizione per i dati degliutenti), ed una partizione di swap.L’installazione di tutti i programmi forniti con RedHat nonrichiede piú di 5 GB. Oltre a questo bisogna aggiungere lospazio per applicativi esterni e per i dati utente.

– p. 55

Page 56: Amministrazione base dei sistemi Linux

Comandi su file: ls

Il comando ls (list) visualizza il contenuto di una directory.ls senza parametri oppure ls . fa riferimento alla directorycorrente, mentre ls .. della sovradirectory ..ls dirname riporta il contenuto della directory dirname (ilparametro passato può essere assoluto o relativo).Alcuni parametri:

-l per avere informazioni estese sui file;

-R per visualizzare ricorsivamente il contenuto dellesottodirectory;

-a per visualizzare anche i file che hanno un nome checomincia con .

-i visualizza il numero dell’inode di ogni file;

I parametri sono combinabili in un unico switch (ls -lR ).

– p. 56

Page 57: Amministrazione base dei sistemi Linux

Comandi su file: pwd

Il comando pwd (Print Working Directory) mostra ladirectory corrente.

pwd Mostra la directory corrente.

– p. 57

Page 58: Amministrazione base dei sistemi Linux

Comandi su file: cd

Il comando cd permette di cambiare directory.

cd dirname per spostarsi nella directory dirname.cd .. per spostarsi nella directory superiore (lo spazio éimportante!).cd . rimane nella directory corrente.cd torna nella home directory dell’utente (equivale cioé acd $HOME ).

– p. 58

Page 59: Amministrazione base dei sistemi Linux

Comandi su file: mkdir

Il comando mkdir crea una directory.

mkdir dirname crea la directory dirname.mkdir -p piu/livelli/insieme crea la directory piu se nonesiste, quindi la sottodirectory livelli se non esiste, quindi ladirectory insieme se non esiste.

– p. 59

Page 60: Amministrazione base dei sistemi Linux

Comandi su file: rm

Il comando rm permette di rimuovere uno o piú file.rm file rimuove il file senza chiedere conferma.rm -i file rimuove il file chiedendo una conferma interattiva.E’ conveniente definire un alias in modo tale che ogni voltache viene invocato il comando rm si aggiunga inautomatico questo switch.rm dirname -fR rimuove una directory e tutti i file in essacontenuti.

I file cosí cancellati non sono recuperabili.

– p. 60

Page 61: Amministrazione base dei sistemi Linux

Comandi su file: rmdir

Il comando rmdir rimuove una directory purché sia vuota (ameno di uno switch che lo forzi altrimenti).

rmdir dirname rimuove la directory dirname se questa évuota.

– p. 61

Page 62: Amministrazione base dei sistemi Linux

Comandi su file: cp

Il comando cp permette di copiare un file.

cp sorgente destinazione copia il file sorgente in destinazione. I

nomi possono essere assoluti o relativi.

cp -R dirsor dirdest copia ricorsivamente la directory dirsor nella

directory dirdest.

cp -Rs dirsor dirdest invece di creare i file produce dei link.

cp -p sorgente destinazione copia e mantiene gli stessi

permessi, proprietá e timestamp del file.

Il parametro destinazione deve sempre essere presente; puó

essere il . per indicare la directory corrente.

– p. 62

Page 63: Amministrazione base dei sistemi Linux

Comandi su file: mv

Il comando mv rinomina un file o lo sposta in un’altradirectory.

mv vecchio nuovo cambia il nome del file da vecchio anuovo.mv *.c backup sposta tutti i file *.c nella directory backup.mv dir1 dir2 sposta la directory dir1 in dir2.Se il file destinazione esiste giá, viene sovrascritto. É quindiconsigliabile aggiungere lo switch -i che chiede nel casoconferma dell’operazione (anche con un alias).

– p. 63

Page 64: Amministrazione base dei sistemi Linux

Comandi su file: du

Il comando du (Directory Usage) permette di determinarequanto spazio é occupato dai file di una directory e dallesue sottodirectory.

du dirname riporta lo spazio (in KB) usato dalla directorydirname e da tutte le sottodirectory.du -sh dirname riporta le informazioni in modo sintetico ein formato piú humano.

– p. 64

Page 65: Amministrazione base dei sistemi Linux

Comandi su file: ln - 1

Il comando ln crea un link (hard o soft). Un hard link é a tuttigli effetti lo stesso oggetto con un altro nome, quindicancellando l’hard link si cancella anche l’oggetto dipartenza.

ln file nome-link Il file file risulta accessibile anche con ilnome nome-link.ln -s file nome-link Come sopra, ma il link creato é un softlink.

– p. 65

Page 66: Amministrazione base dei sistemi Linux

Comandi su file: ln - 2

ln -s dir1 nome-link la directory dir1 é ora accessibileanche via nome-link.

Solo l’utente root puó creare hard link tra directory.

– p. 66

Page 67: Amministrazione base dei sistemi Linux

Comandi su file: fuser

Il comando fuser (File USER) riporta, per un file passatocome parametro sulla riga di comando, i PID dei processiche hanno quel file aperto.

$ fuser CorsoLinux.psCorsoLinux.ps 3890 4500

– p. 67

Page 68: Amministrazione base dei sistemi Linux

Comandi su file: file

Il comando file riporta, per ogni file passatocome parametro sulla linea di comando, il tipo del file stesso.

file *CorsoLinux.out: emptyCorsoLinux.ps: PostScript document text conforming at lev el 2.0CorsoLinux.tex: LaTeX 2e document textarchiviazione.tex: ISO-8859 text, with CRLF line terminat orsmyprog ELF 32-bit LSB executable, Intel 80386 [...]foto.jpg JPEG image data, JFIF standard 1.02, [...]

– p. 68

Page 69: Amministrazione base dei sistemi Linux

Comandi su file: touch

Il comando touch imposta l’ora di ultima modifica di un fileall’ora corrente, se il file passato come parametro esiste.Altrimenti crea un file con il nome dato di dimensione nulla.

touch filename aggiorna l’ora di ultimo accesso a filenameall’ora attuale, ovvero lo crea se non esiste.

Questo comando si rivela utile quando si vuole forzare laricompilazione di un sorgente che make non effettua inquanto il corrispondente file .o é piú recente.

– p. 69

Page 70: Amministrazione base dei sistemi Linux

Comandi su file: locate, updatedb

Questo comandi permettono di ricercare un file (locate )consultando un database di nomi di file aggiornato conupdatedb che deve quindi essere eseguito periodicamente.

locate tex ricerca tutti i file che hanno la stringa tex nelnome o nel percorso.locate "*d*.tex” é un criterio di ricerca piú complesso cheutilizza le virgolette per evitare l’espansione dei parametrieseguita dalla shell.

– p. 70

Page 71: Amministrazione base dei sistemi Linux

Comandi su file: slocate

Il problema di locate é che permette ad un utente dicontrollare quali file possiede un altro utente. Questa falladi sicurezza é stata superata con slocate (secure-locate).locate é un link verso slocate.slocate -u crea il database.slocate pippo ricerca tutti i file che hanno pippo nel nomeo nel percorso, e che sono accessibili all’utente che hainvocato slocate.

E’ possibile non indicizzare alcune directory.

– p. 71

Page 72: Amministrazione base dei sistemi Linux

Comandi su file: find - 1

Il comando find permette di ricercare tutti i file chesoddisfano uno o piú criteri, ad esempio che abbiano unacerta dimensione, una stringa nel nome o nel percorso,alcuni permessi, siano stati creati o modificati in un certoarco di tempo, ... Sui file ottenuti é possibile compiere unaoperazione specifica, che di default é stampare il nome delfile.

find / -name “*.c” ricerca tutti i file che si trovano sotto / eche terminano in .c.

– p. 72

Page 73: Amministrazione base dei sistemi Linux

Comandi su file: find - 2

find / -perm 0777 ricerca tutti i file che hanno tutti ipermessi di scrittura, lettura ed esecuzione impostati. Lo 0iniziale indica che si é adottata la notazione ottale.find / -name “*.[ch]” ricerca tutti i file sotto / cheterminano in .c oppure in .hfind / -name “*.txt” -print -exec cat { } \; ricerca tutti i fileche terminano in .txt, ne stampa il nome (-print) e suognuno di essi esegue il comando cat, con parametro ilnome del file.

– p. 73

Page 74: Amministrazione base dei sistemi Linux

Comandi su file: grep - 1

Il comando grep permette di ricercare delle stringheall’interno di uno o piú file di testo. Se la stringa vienetrovata viene mostrato il nome del file che la contiene e lariga.

grep saluti filename ricerca la stringa saluti all’interno delfile filename.grep inode *.c cerca la stringa inode in tutti i file .c delladirectory corrente.

– p. 74

Page 75: Amministrazione base dei sistemi Linux

Comandi su file: grep - 2

grep -v inode source.c mostra tutte le righe di source.cche non contengono la stringa inode. grep -lv inode *.cmostra tutti i nomi di file .c che non contengono la stringainode.grep -5 inode *.c scrive, per ogni occorrenza della stringainode all’interno di un file .c, le 5 righe seguenti.grep -B 10 inode *.c come sopra, ma mostra 10 righeprecedenti.

– p. 75

Page 76: Amministrazione base dei sistemi Linux

Comandi su file: chmod - 1

Il programma chmod consente di impostare i permessi suuno o più file. I permessi sono r per la lettura, w per lascrittura e x per l’esecuzione, e si applicano al proprietariodel file (u per user), al gruppo del proprietario (g per group)e al resto del mondo (o per others).

chmod ugo+r file1 file2 assegna il permesso di lettura alproprietario del file, al suo gruppo e a tutti gli altri.chmod o-r file revoca il permesso di lettura del file al restodel mondo.

– p. 76

Page 77: Amministrazione base dei sistemi Linux

Comandi su file: chmod - 2

chmod u=rw file imposta il permesso di lettura e scritturadel file al proprietario, ma non quello di esecuzione. Gli altripermessi non sono toccati.chmod o-rwx file toglie i permessi di lettura, scrittura edesecuzione al resto del mondo.

– p. 77

Page 78: Amministrazione base dei sistemi Linux

Comandi su file: chmod - 3

Le modalita’ possono anche essere espresse con lanotazione ottale, usando 3 cifre (una per user, group edother). Ogni cifra indica il totale dei permessi cheuser/group/other ha sul file, pesati come:

1 esecuzione

2 scrittura

4 lettura

quindi per dare il permesso di lettura (2) e scrittura (4) auser, group ed other il comando sará: chmod 666 file

– p. 78

Page 79: Amministrazione base dei sistemi Linux

Comandi su file: chmod - 4

Invece per dare lettura, scrittura ed esecuzione alproprietario, lettura al gruppo e nessun permesso agli altri ilcomando sará: chmod 740 file .

chmod -R <permessi> opera ricorsivamente sulledirectory.

– p. 79

Page 80: Amministrazione base dei sistemi Linux

Comandi su file: chown

Il comando chown permette di cambiare l’utenteproprietario o il gruppo proprietario di un file.chown pippo:pluto file Il file file diventa di proprietádell’utente pippo e del gruppo pluto.chown pippo file Il file file diventa di proprietá dell’utentepippo.chown -R pippo * Tutti i file della directory corrente e dellesubdirectory diventano di proprietá dell’utente pippo.

– p. 80

Page 81: Amministrazione base dei sistemi Linux

Operazioni su dischi: /etc/fstab - 1

Il file /etc/fstab contiene la corrispondenza tra dispositivi fisici epunti di montaggio (mount point), specificando inoltre il tipo del filesystem e le opzioni di montaggio.Il formato delle righe presenti in questo file é:

DispositivoFisico MountPoint TipoDiFilesystem Opzioni D ump OrdineCheck

– p. 81

Page 82: Amministrazione base dei sistemi Linux

Operazioni su dischi: /etc/fstab - 2

Dove si ha:

DispositivoFisico é il nome del dispositivo (es: /dev/hda);

MountPoint é la directory che mapperá il contenuto deldispositivo fisico;

TipodiFilesystem é il tipo del file system (ext2, ext3, swap,VFAT, iso9660,proc);

Dump specifica se il contenuto della partizione deveessere processato da dump;

OrdineCheck specifica l’ordine in cui il file system deveessere analizzato al boot;

– p. 82

Page 83: Amministrazione base dei sistemi Linux

Operazioni su dischi: fstab - 3

Esempio di /etc/fstab:

/dev/hdb1 / ext3 defaults 1 1/dev/hda1 /msdos vfat noauto 0 0/dev/hdb2 swap swap defaults 0 0/dev/hda2 swap swap defaults 0 0/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0/dev/scd0 /mnt/cdrw iso9660 noauto,user 0 0none /dev/pts devpts gid=5,mode=620 0 0none /proc proc defaults 0 0none /dev/shm tmpfs defaults 0 0L’elenco completo delle opzioni é nella pagina di manuale dimount .

– p. 83

Page 84: Amministrazione base dei sistemi Linux

Operazioni su dischi: mount - 1

Il comando mount permette di montare un file system.mount /msdos monta la directory /msdos se esiste unaentrata nel file /etc/fstab che la descrive.mount -t FSType -o options device dir monta ildispositivo device nella directory dir con le relative opzionied il filesystem previsto. Puó essere usato quando in/etc/fstab non é presente l’entrata desiderata.In ogni caso é possibile montare un file system solo se ladirectory corrispondente esiste giá, altrimenti bisognacrearla con mkdir .

– p. 84

Page 85: Amministrazione base dei sistemi Linux

Operazioni su dischi: mount - 2

Una opzione particolarmente utile di mount permette dimontare un file come se fosse un disco: in questo modo sipuó ad esempio montare una immagine ISO9660 perverificarne il contenuto prima di procedere allamasterizzazione.

mount -t iso9660 -o loop prova.iso /mnt/cdrom/ monta ilfile prova.iso nella directory /mnt/cdrom.

mount mostra tutti i file system montati.

– p. 85

Page 86: Amministrazione base dei sistemi Linux

Operazioni su dischi: umount - 1

Il comando umount (scritto senza la n, é un errore diortografia che si tramanda da decenni) smonta un filesystem. Affinché questo sia possibile occorre che nessunprocesso stia lavorando con quel file system (ad esempioavendo dei file aperti in lettura o scrittura oppure avendouna delle directory del file system come directory corrente).

umount /mnt/cdrom smonta il file system mappato su/mnt/cdrom.

– p. 86

Page 87: Amministrazione base dei sistemi Linux

Operazioni su dischi: umount - 2

Quindi se si vuole montare un floppy per leggerne omodificare il contenuto occorre:

1. Inserire il floppy nel lettore

2. Montare il floppy (mount /mnt/floppy )

3. Compiere le operazioni dovute

4. Smontare il floppy (umount /mnt/floppy )

L’ultimo punto é essenziale. Linux puó tenere in memoria (escrivere in un secondo tempo) i dati modificati e solosmontando il dispositivo si forza il trasferimento degli stessisu disco.

– p. 87

Page 88: Amministrazione base dei sistemi Linux

Operazioni su dischi: sync

Con questo comando si chiede al sistema di sincronizzare ilcontenuto della memoria con i dati su disco, ovvero discrivere fisicamente su disco ogni dato (contenuto di file) emetadato (superblocchi, inodes,...) modificato.

sync sincronizza la cache di tutti i dischi.

– p. 88

Page 89: Amministrazione base dei sistemi Linux

Operazioni su dischi: /etc/mtab

Il file /etc/mtab contiene l’insieme dei file systemcorrentemente montati. É quindi un file aggiornatodinamicamente dal sistema operativo.$ cat /etc/mtab

/dev/hdb1 / ext3 rw 0 0none /proc proc rw 0 0/dev/hdb6 /tmp var ext2 rw 0 0none /dev/pts devpts rw,gid=5,mode=620 0 0none /dev/shm tmpfs rw 0 0

– p. 89

Page 90: Amministrazione base dei sistemi Linux

Operazioni su dischi: fdformat

Con questo comando si puó formattare a basso livello unfloppy.

fdformat /dev/fd0 per formattare il primo floppy.fdformat /dev/fd0h720 formatta il floppy a 720 KB dicapacitá.

– p. 90

Page 91: Amministrazione base dei sistemi Linux

Operazioni su dischi: mkfs

Il comando mkfs crea un file system di tipo specificato suun dispositivo fisico.mkfs -t FSType <opzioni> dispositivo crea un file systemdi tipo FSType con le eventuali opzioni nel dispositivodispositivo.mkfs -t ext3 /dev/hdb3 crea un file system di tipo ext3 neldispositivo fisico /dev/hdb3.Il contenuto del dispositivo viene perso per sempre.

– p. 91

Page 92: Amministrazione base dei sistemi Linux

Operazioni su dischi: mkisofs

Il comando mkisofs viene utilizzato per creare una immagine ISO9660(con eventuali estensioni Joliet e/o Rock Ridge).mkisofs -o immagine.iso /home/user/ crea un file immagine.isocontenenente tutti i file della directory /home/user, comprese lesottodirectory. L’immagine ottenuta puó essere poi trasferita su CD-RWcon cdrecord . Alcune opzioni sono:

-f segue i link simbolici, sostituendo quindi al link il contenuto effettivo.

-l consente nomi di file fino a 31 caratteri (viola ISO9660).

-J aggiunge informazioni per Joliet.

-R usa le estensioni Rock Ridge.

-r come sopra ed imposta proprietari e permessi dei file in modoconveniente.

– p. 92

Page 93: Amministrazione base dei sistemi Linux

Operazioni su dischi: dd - 1

Il comando dd (Data Dump) permette di leggere econvertire il contenuto di un file.

dd if=/dev/hda count=4 mostra i primi quattro settori deldisco /dev/hda (if sta per input file).dd if=/dev/hda of=/dev/hdb copia tutto il contenuto di/dev/hda in /dev/hdb (of sta per output file).

– p. 93

Page 94: Amministrazione base dei sistemi Linux

Operazioni su dischi: dd - 2

dd if=/dev/zero of=/dev/hda sostituisce il contenuto di/dev/hda con una sequenza di 0.dd if=immagine of=/dev/fd0 bs=512 count=2880conv=sync Copia una immagine di 1.44MB sul floppy/dev/fd0; si tratta di 2880 settori da 512 byte l’uno, ecompleta ogni blocco con degli spazi (sync).dd if=dati-iniziali.txt of=dati-finali.txt CONV=lcaseconverte il file dati-iniziali.txt in dati-finali.txt sostituendo atutte le maiuscole le minuscole.

– p. 94

Page 95: Amministrazione base dei sistemi Linux

Operazioni su dischi: dump

Il comando dump permette di effettuare backupincrementali di un intero filesystem.dump -0u / -f /dev/st0 effettua un dump completo (0)scrivendo in /etc/dumpdates l’esito della operazione (u) edusando come dispositivo di backup /dev/st0 (cartuccia anastro).dump -1u -f /dev/st0 come sopra, ma copiando solo i filecambiati dall’ultimo backup completo.dump -2u -f /dev/st0 come sopra, ma copiando solo i filecambiati dall’ultimo backup di livello 1.

– p. 95

Page 96: Amministrazione base dei sistemi Linux

Operazioni su dischi: restore

Il comando restore ripristina i file prodotti con un backup dalcomandorestore rf /dev/st0 ricrea il file system leggendolo da/dev/st0Il programma puó operare in modo interattivo, e crea il filerestoresymtable per passare informazioni tra i vari ripristini.

– p. 96

Page 97: Amministrazione base dei sistemi Linux

Operazioni sui dischi: fsck

Il programma fsck verifica e controlla un file system Linux.fsck -t FSType dispositivo <opzioni> verifica il file systemmontato su dispositivo considerandolo di tipo FSType e conle eventuali opzioni. Si tratta di un front-end per i variprogrammi fsck.<FSType>.Mentre l’operazione di verifica di un file system ext2 puórichiedere anche ore (dipendendo dalla dimensione del filesystem) su un file system ext3 occorrono pochi secondi (iltempo di riapplicare il journal).

– p. 97

Page 98: Amministrazione base dei sistemi Linux

Comandi su file di testo: cat

Il comando cat (concatenate) visualizza il contenuto di unoo piú file di testo.

cat file.txt visualizza il file file.txt.cat file1 file2 file3 visualizza file1 e subito a seguire file2 esubito a seguire file3.cat - -number file.txt visualizza il file file.txt numerandonele righe.

– p. 98

Page 99: Amministrazione base dei sistemi Linux

Comandi su file di testo: zcat

Il comando zcat mostra il contenuto di un file di testocompresso.

zcat file.txt.gz file2.txt.gz

– p. 99

Page 100: Amministrazione base dei sistemi Linux

Comandi su file di testo: tac

Il comando tac visualizza uno o piú file di testo in ordineinverso, partendo dall’ultima riga e procedendo verso laprima.

tac file.txt visualizza le righe del file file.txt in ordineinverso partendo dall’ultima.

– p. 100

Page 101: Amministrazione base dei sistemi Linux

Comandi su file di testo: more

Il comando more mostra il contenuto di uno o piú file ditesto, mostrando una pagina per volta. Premendo invio siavanza di una riga, premendo spazio si va avanti di unapagina.

more file.txt

– p. 101

Page 102: Amministrazione base dei sistemi Linux

Comandi su file di testo: less

Il comando less permette non solo di avanzare (comemore) ma anche di tornare indietro. Si usano a tal fine i tasticursore e i PgUp e PgDown. Con il tasto / si puó effettuareuna ricerca di testo all’interno del file visualizzato (andandoin avanti con n e all’indietro con N).

less file.txt

– p. 102

Page 103: Amministrazione base dei sistemi Linux

Comandi su file di testo: tail

Il comando tail permette di vedere le ultime righe ( o gliultimi bytes) di un file di testo. Se il file cresce, con l’opzione-f si visualizzano le aggiunte.

tail -30 file.txt visualizza le ultime 30 righe del file file.txt.tail -f file.txt visualizza la parte finale del file file.txt e laaggiorna una volta al secondo.

L’opzione -f é particolarmente utile per monitorare i file dilog del sistema.

– p. 103

Page 104: Amministrazione base dei sistemi Linux

Comandi su file di testo: head

Il comando head visualizza le prime righe (o i primi bytes)di un file di testo.

head pippo.txt visualizza le prime 10 righe (10 é il valoredi default) del file pippo.txt.head -50 pippo.txt visualizza le prime 50 righe del filepippo.txt.

– p. 104

Page 105: Amministrazione base dei sistemi Linux

Comandi su file di testo: wc

Il comando wc conta quanti caratteri, parole o righecompongono un file di testo.

wc -l pippo.txt Ritorna di quante righe é costituito il filepippo.txt.wc -m pippo.txt Ritorna di quanti caratteri é costituito il filepippo.txt.wc -w pippo.txt Ritorna di quante parole é costituito il filepippo.txt.

– p. 105

Page 106: Amministrazione base dei sistemi Linux

Comandi su file di testo: uniq

Il comando uniq sostituisce a piú righe uguali consecutiveuna sola riga.

uniq pippo.txt Produce in output il file pippo.txt con unasola riga al posto di piú righe uguali consecutive.uniq -c pippo.txt Per ogni riga in output visualizza aquante righe uguali consecutive corrisponde.E’ possibile fare il confronto anche su parti di una riga.

– p. 106

Page 107: Amministrazione base dei sistemi Linux

Comandi su file di testo: sort

Il comando sort ordina uno o piú file di testo secondo varicriteri (lessicografico,numerico,mensile), distinguendo omeno tra maiuscole e minuscole, considerando tutte lerighe oppure solo una porzione delimitata.

sort -g valori.txt Produce in output il file valori.txt ordinatoin modo numerico, considerando tutta la riga.sort -n - -key 5,5 Ordina numericamente in base al valoredel quinto campo (i campi sono separati da un delimitatore,di default é lo spazio)

– p. 107

Page 108: Amministrazione base dei sistemi Linux

Comandi su file di testo: split

Il comando split scompone un file in piú componenti, aventiuna dimensione massima specificata (come numero dibytes o numero di righe).

split grande.dat - -bytes=1400000 Scompone il filegrande.dat in file xaa xab xac ognuno avente dimensionemassima di 1400000 bytes.

– p. 108

Page 109: Amministrazione base dei sistemi Linux

Comandi su file di testo: paste

Il comando paste produce un file di testo le cui righe sonola concatenazione delle righe dei file di input.cat primoabcat secondo12

paste primo secondoa 1b 2

– p. 109

Page 110: Amministrazione base dei sistemi Linux

Comandi su file di testo: join

Il comando join effettua il join di due o piú file di testo,permettendo di specificare quale é la chiave da usare.

$ cat primoa a1b b1c c1$ cat secondoa aaaab bbbbd dddd$ join primo secondoa a1 aaaab b1 bbbb

– p. 110

Page 111: Amministrazione base dei sistemi Linux

Comandi su file di testo: tr - 1

Il comando tr (translate) sostituisce una sequenza dicaratteri con un’altra. Il file su cui operare viene passato sustandar input, e l’output é su standard output.tr a A < file.txt Produce in output il file file.txt dove ogni a éstata sostituita con A.tr abc ABC < file.txt Come sopra, ma in piú sostituendo bcon B e c con C.tr a-z A-Z < file.txt Come sopra ma facendo il maiuscolo ditutte le lettere dell’alfabeto.

– p. 111

Page 112: Amministrazione base dei sistemi Linux

Comandi su file di testo: tr - 2

Con la notazione [:CLASS:] si intende una classe dicaratteri, ad esempio:

alpha caratteri alfabetici

alnum caratteri alfanumerici

lower caratteri minuscoli

upper caratteri maiuscoli

blank spazi

digit cifre

– p. 112

Page 113: Amministrazione base dei sistemi Linux

Comandi su file di testo: tr - 3

Lo switch - -d cancella i caratteri passati come parametro,mentre - -s sostituisce un carattere ripetuto piú volteconsecutivamente con una sola copia.tr -d [:blank:] < file.txt cancella tutti gli spazi dal file file.txttr -s [:alpha:] < file.txt sostisuisce alle sequenze AA, AAA,AAA, ... Z, ZZ, ZZZ le sequenze A, ... Ztr -d aeiou < file.txt cancella le vocali dal file file.txt.

– p. 113

Page 114: Amministrazione base dei sistemi Linux

Comandi per archiviazione: compress

Il comando compress comprime un file. Il file ottenuto ha unnome dato dal nome del file originario seguitodall’estensione .Z, ed il file originario viene rimosso.compress file.dat Comprime il file file.dat sostituendolocon il file compresso file.dat.Z

L’algoritmo di compressione utilizzato é il meno efficientetra quelli disponibili.

– p. 114

Page 115: Amministrazione base dei sistemi Linux

Comandi per archiviazione: uncompress

Il comando uncompress decomprime un file compresso concompress, sostituendo al file compresso la versionedecompressa.

uncompress file.dat.Z decomprime il file file.dat.Zsostituendolo con il decompresso file.dat.

– p. 115

Page 116: Amministrazione base dei sistemi Linux

Comandi per archiviazione: gzip

Il comando gzip comprime un file usando lo stessoalgoritmo di PKZIP/WinZip, con cui i file prodotti sonocompatibili. I file compressi hanno l’estensione .gz

gzip file.dat comprime il file file.dat producendo il filefile.dat.gz e rimuovendo il file originario.

– p. 116

Page 117: Amministrazione base dei sistemi Linux

Comandi per archiviazione: gunzip

Il comando gunzip decomprime un file compresso con gzip.

gunzip file.dat.gz decomprime file.dat.gz sostituendolocon la versione decompressa file.dat.gunzip -l file.dat.gz riporta informazioni sul contenuto delfile compresso file.dat.gz.

– p. 117

Page 118: Amministrazione base dei sistemi Linux

Comandi per archiviazione: zip ed unzip

Questi due comandi permettono di comprimere edecomprimere un file in modo tale da essere compatibilicon PKZIP/Winzip.

unzip -l file.zip Riporta il contenuto del file compressofile.zip

– p. 118

Page 119: Amministrazione base dei sistemi Linux

Comandi per archiviazione: bzip2

Questo é il piú efficiente compressore disponibile, al costodi un tempo necessario per comprimere il file moltomaggiore rispetto a gzip. I file prodotti hanno l’estensione.bz2.

bzip2 file.dat Comprime il file file.dat sostituendolo con laversione compressa file.dat.bz2bzip -9 file.dat Come sopra, comprimendo al massimo (edimpiegando piú tempo)

– p. 119

Page 120: Amministrazione base dei sistemi Linux

Comandi per archiviazione: bunzip2

Il comando bunzip2 decomprime un file compresso conbzip2.

bunzip2 file.dat.bz2 Decomprime il file file.dat.bz2sostituendolo con la versione decompressa file.dat.

– p. 120

Page 121: Amministrazione base dei sistemi Linux

Comandi per archiviazione: tar - 1

Il comando tar (Tape ARchiver) raggruppa piú file in ununico archivio o viceversa espande un archivio nei suoi filecostituenti. L’archivio ottenuto puó essere compresso concompress, gzip o bzip2.Tipicamente il nome dei file di archivio ha l’estensione .tar,seguito da:

.Z se il l’archivio é stato compresso con compress

.gz se l’archivio é stato compresso con gzip

.bz2 se l’archivio é stato compresso con bzip2

ottenendo quindi ad esempio un archivio dal nomefile.tar.gz (nel caso di compressione con gzip si usa anchela forma contratta file.tgz).

– p. 121

Page 122: Amministrazione base dei sistemi Linux

Comandi per archiviazione: tar - 2

Per visualizzare il contenuto di un archivio si usa lo switch- -list (forma contratta: t).

tar - -list - -file archivio.tartar tf archivio.tarL’opzione - -file indica come l’archivio sia passato comeparametro su linea di comando e non da standard input. Ilnome del file é in tal caso il parametro immediatamentesuccessivo.

– p. 122

Page 123: Amministrazione base dei sistemi Linux

Comandi per archivazione: tar - 3

Se l’archivio é compresso con gzip, si aggiunge l’opzione- -gzip (forma contratta: z).

tar - -list - -gzip - -file archivio.tar.gztar tfz archivio.tar.gz

L’opzione - -verbose (v) mostra ulteriori informazioni sui fileche fanno parte dell’archivio (dimensione, proprietà,permessi).

– p. 123

Page 124: Amministrazione base dei sistemi Linux

Comandi per archiviazione: tar - 4

Per estrarre un archivio si usa l’opzione - -extract (formacontratta: x).

tar - -extract - -file archivio.tartar xf archivio.tar.gztar - -extract - -gzip - -file archivio.tar.gztar xfz archivio.tar.gz

– p. 124

Page 125: Amministrazione base dei sistemi Linux

Comandi per archiviazione: tar - 5

Se l’archivio é stato compresso con bzip2 lo switch dautilizzare é - -bzip2 (forma contratta: j).

tar - -extract - -bzip2 - -file archivio.tar.bz2tar xfj archivio.tar.bz2

– p. 125

Page 126: Amministrazione base dei sistemi Linux

Comandi per archiviazione: tar - 6

Per creare un archivio si usa l’opzione -create (formacontratta: c). I file che compongono l’archivio vengonopassati da linea di comando. Le directory sono processatericorsivamente.tar - -create - -gzip - -file archivio.tar.gz file1 file2 mydirtar czf archivio.tar.gz file1 file2 mydir

In questo caso l’opzione - -verbose (v) mostra i nomi deifile mano mano sono aggiunti.

– p. 126

Page 127: Amministrazione base dei sistemi Linux

Shell: introduzione - 1

La shell é una interfaccia tra il sistema operativo e l’utente,il quale sottomette al sistema dei programmi da eseguiretramite la shell.Esistono numerose shell per Unix/Linux:

Bourne Shell (sh)

C-Shell (csh)

Korn Shell (ksh)

Bourne Again Shell (bash)

Queste shell hanno molti punti in comune, differenziandosiper come impostano le variabili di ambiente e le funzionipredefinite.

– p. 127

Page 128: Amministrazione base dei sistemi Linux

Shell: introduzione - 2

In tutti i casi, le shell operano a riga di comando: l’utentescrive una riga in cui specifica il programma da eseguire, glieventuali parametri, la modalità di esecuzione, e la inviaalla shell.

$ programma param1 param2 param3

– p. 128

Page 129: Amministrazione base dei sistemi Linux

Shell: introduzione - 3

Il programma da eseguire puó essere interno alla shell(come ad esempio alias per Bash) o meno. Se é esternopuó essere specificato per percorso assoluto (/sbin/ifconfig)oppure solo con il nome: in tal caso viene ricercato tra tuttele directory presenti nel percorso di ricerca, definito dallavariabile di ambiente PATH.

– p. 129

Page 130: Amministrazione base dei sistemi Linux

Shell: introduzione - 4

Due funzionalitá presenti in Bash sono:

Completion Tab: se si preme il tasto tab mentre si stascrivendo un nome di file o un comando la shell locompleta, se c’é una scelta univoca; altrimentiripremendo tab mostra tutte le alternative possibili;

history: usando i tasti cursore su e giù é possibile vederel’elenco dei comandi impartiti. Tale elenco é riportatonel file .bash_history dell’home directory.

– p. 130

Page 131: Amministrazione base dei sistemi Linux

Shell: variabili di ambiente

Le variabili di ambiente sono impostate con il comandoexport.export CORSO=linux

e se ne puó accedere al valore premettendo al nome ilsimbolo $:$ echo $CORSOlinux

– p. 131

Page 132: Amministrazione base dei sistemi Linux

Shell: alias

Un alias del tipo:alias rm=”rm -i”

fa sì che ogni volta che si esegue il comando rm venga inrealtá eseguito il comando rm -i , quindi ad esempio rm a bc diventerá un piú sicuro rm -i a b c .

Alias e variabili di ambiente sono specifati nei file .bashrc e.bash_profile dell’home directory.

– p. 132

Page 133: Amministrazione base dei sistemi Linux

Shell: caratteri speciali: ? e * - 1

I caratteri * e ? sono utilizzati quando, nello specificare deinomi di file come parametri di un comando, si voglionoindicare tutti quei file che hanno una certa struttura nelnome.

Se l’utente chiede di eseguire $ programma *.txt la shellchiederá al sistema operativo di eseguire $ programmaprimo.txt secondo.txt lettera.txt ... se nella directorycorrente esistono i file primo.txt, secondo.txt, lettera.txt,...

– p. 133

Page 134: Amministrazione base dei sistemi Linux

Shell: caratteri speciali: ? e * - 2

In modo analogo $ programma dati*dat potrebbe essereespansa in $ programma dati1.dat dati2.dat dati.datdati-finali.dat se questi file esistono nella directorycorrente.

In modo analogo $ programma /usr/l*/a viene espanso in$ programma /usr/lib/a /usr/local/a /usr/libexec/a

– p. 134

Page 135: Amministrazione base dei sistemi Linux

Shell: caratteri speciali: ? e * - 3

Il carattere ? invece sostituisce un solo carattere.

$ programma dati?.dat viene espanso in$ programma dati1.dat dati2.dat

– p. 135

Page 136: Amministrazione base dei sistemi Linux

Shell: caratteri speciali: ? e * - 4

Se si vuole evitare l’espansione effettuata dalla shell,occorre racchiudere il parametro contenente i caratterispeciali tra doppi apici.$ programma *tex viene espanso in$ programma archiviazione.tex hardware.tex ...mentre $programma “*tex” non viene espanso, quindi ilprogramma invocato riceve come primo parametro lastringa *tex

– p. 136

Page 137: Amministrazione base dei sistemi Linux

Shell: redirezione - 1

La redirezione é un meccanismo per cui l’output (o l’input)di un comando viene inviato (prelevato) da un file, o da unaltro comando.$programma > risultato Invia l’output di programma al filerisultato; questo file viene azzerato se giá esistente.$programma » risultato Aggiunge l’ouput di programma alfile risultato.

– p. 137

Page 138: Amministrazione base dei sistemi Linux

Shell: redirezione - 2

In modo analogo si puó fornire come input di un programmaun file giá esistente.$programma < argomentoUn caso tipico di utilizzo di questa funzionalitá si ha quandoprogramma é un server a cui si vogliono inviare i comandidefiniti in argomento.

– p. 138

Page 139: Amministrazione base dei sistemi Linux

Shell: redirezione - 3

Si puó scegliere di redirezionare non lo standard output diun programma ma il suo standard error.

$ programma 2> /dev/null esegue il programma inviandolo standard error sul file /dev/null, ovvero senza mostrare avideo i messaggi di errore.É possibile redirezionare due o piú tra standard input,standard output e standard error in contemporanea:$programma > risultato < argomenti 2> errori .

– p. 139

Page 140: Amministrazione base dei sistemi Linux

Shell: redirezione - 4

L’ultima e piú potente possibilitá é quella che prevede diutilizzare l’output di un programma come l’input di un altroprogramma.

$ programma1 | programma2 l’output del programma1diventa l’input del programma programma2. E’ possibileconcatenare piú programmi in questo modo, ognuno con ipropri parametri.

– p. 140

Page 141: Amministrazione base dei sistemi Linux

Shell: esecuzione in background

Per eseguire un processo in background occorre terminarela riga di comando con il simbolo &. In questo modo laconsole continua ad essere disponibile per eseguire altriprogrammi.$ programma & esegue programma in background.La redirezione non viene effettuata automaticamente,quindi potrebbe essere necessario specificare l’output el’input, per non “sporcare” la console.

– p. 141

Page 142: Amministrazione base dei sistemi Linux

Shell: esecuzione con && e ;

Una riga del tipo:$ programma1 && programma2causerá l’esecuzione di programma1, e solo se questoprogramma termina con successo verrá quindi eseguitoprogramma2.$ programma1 ; programma2causa l’esecuzione di programma1 e quindi di programma2.

– p. 142

Page 143: Amministrazione base dei sistemi Linux

Shell: umask

Con il comando umask si puó leggere od impostare lamodalitá con cui vengono creati i file. I valori restituiti sonoespressi secondo la stessa sintassi di chown.umask mostra la modalitá di creazione standard dei file.umask -S come sopra, ma in modo simbolico.umask o-rwx toglie tutti i permessi al resto del mondo.

– p. 143

Page 144: Amministrazione base dei sistemi Linux

Utenti: /etc/passwd - 1

Il file /etc/passwd contiene l’elenco degli account presentinel sistema. La struttura del file é la seguente:

account password UID GID GECOS directory shellL’utente root ha sempre UID e GID pari a 0.Gli utenti con UID inferiore a 99 sono account di sistema.

– p. 144

Page 145: Amministrazione base dei sistemi Linux

Utenti: /etc/passwd - 2

Il significato dei campi é il seguente:

account identificativo dell’utente

password la password (se non si usano shadowpassword)

UID lo User ID dell’utente

GID il Group ID del gruppo primario dell’utente

GECOS informazioni descrittive (es. nome completo)

directory l’home directory dell’utente

shell la shell attivata con il login

Se come shell é indicata /sbin/nologin, /bin/false o simili,l’utente non puó mai accedere al sistema con un login.

– p. 145

Page 146: Amministrazione base dei sistemi Linux

Utenti: /etc/passwd - 3

Esempio di file /etc/passwd:root: x: 0: 0: root: /root: /bin/bashbin: x: 1: 1: bin: /bin: /sbin/nologindaemon: x: 2: 2: daemon: /sbin: /sbin/nologin...ftp: x: 14: 50: FTP User: /var/ftp: /sbin/nologin...apache: x: 48: 48: Apache: /var/www: /bin/false...paolo: x: 500: 500: : /home/paolo: /bin/bashmario: x: 501: 501: Mario Rossi: /home/mario: /bin/bash(gli spazi sono stati aggiunti per chiarezza).

– p. 146

Page 147: Amministrazione base dei sistemi Linux

Utenti: /etc/passwd - 3

Nell’esempio precedente le password cifrate sono indicatecon delle x. Questo perché é presente il meccanismo delleshadow password : le password (cifrate) sono riportate nelfile /etc/shadow, in modo da impedire attacchi a forza brutaper decifrare le password ( /etc/passwd deve essereleggibile a tutti, mentre /etc/shadow è accessibile solo apochi processi).É fortemente consigliato attivare il meccanismo delleshadow password.

– p. 147

Page 148: Amministrazione base dei sistemi Linux

Utenti: passwd

Con il comando passwd si puó definire la propria password,oppure modificare quella di un dato utente il cui usernameé passato come parametro (avendo i permessi per farlo).

– p. 148

Page 149: Amministrazione base dei sistemi Linux

Utenti: su

Il comando su (Set User) permette di cambiare la propriaidentitá con quella di un altro utente, specificato su linea dicomando come parametro. Se non c’é alcun parametro siintende root. Occorre fornire la password dell’utentedesiderato perché l’operazione possa compiersi.Con su user si chiede di assumere l’identitá dell’utenteuser, mentre con su - user si esegue inoltre tutta la fase dilogin.

– p. 149

Page 150: Amministrazione base dei sistemi Linux

Utenti: /etc/group - 1

Il file /etc/group contiene l’elenco di tutti i gruppi presenti nelsistema. Per ogni gruppo viene riportato l’elenco degliutenti che ne fanno parte.

groupname password GID user-list

– p. 150

Page 151: Amministrazione base dei sistemi Linux

Utenti: /etc/group - 2

Il significato dei campi é il seguente:

groupname il nome del gruppo

password la password associata al gruppo (se presente ese non si usano le shadow password)

GID il Group ID

user-list l’elenco, separato da virgole, degli account chefanno parte del gruppo.

– p. 151

Page 152: Amministrazione base dei sistemi Linux

Utenti: /etc/group - 3

Esempio di un file /etc/group:root: x: 0: rootbin: x: 1: root,bin,daemon...wheel: x: 10: rootpaolo: x: 500:In caso di shadow password le password dei gruppi sonoriportate cifrate in /etc/gshadow.(tipicamente non si usano password per i gruppi).RedHat usa, per ogni utente non di sistema, un gruppo cheha l’utente come unico partecipante, e con GID ugualeall’UID.

– p. 152

Page 153: Amministrazione base dei sistemi Linux

Utenti: useradd

Il comando useradd consente di aggiungere un utente alsistema.useradd <-s shell> <-d home_dir> <-u UID> <-ppasswd> account

– p. 153

Page 154: Amministrazione base dei sistemi Linux

Utenti: userdel

Il comando userdel rimuove un utente dal sistema.

userdel accountSe si aggiunge lo switch -r viene rimossa anche la homedirectory dell’utente e la mailbox.

– p. 154

Page 155: Amministrazione base dei sistemi Linux

Utenti: groupadd

Il comando groupadd aggiunge un gruppo al sistema.

groupadd <-g GID> group-name

– p. 155

Page 156: Amministrazione base dei sistemi Linux

Utenti: groupdel

Il comando groupdel rimuove un gruppo dal sistema, se nonci sono piú utenti nel sistema appartenenti a quel gruppo.

groupdel <group-name>

– p. 156

Page 157: Amministrazione base dei sistemi Linux

L’ambiente grafico: X

La gestione dell’ambiente grafico viene realizzata mediantepiú programmi. Alla base c’é l’X Server, che realizzal’astrazione dall’hardware grafico e mette a disposizione diulteriori programmi delle primitive come la gestione difinestre a video.L’ambiente si chiama X Window System, o anche X11, oX11R6.

– p. 157

Page 158: Amministrazione base dei sistemi Linux

L’ambiente grafico: X server e X client

X é progettato per operare su rete, con un server cheaccetta le richieste dell’utente inviandole a dei programmiclient di cui mostra l’output.Il server puó operare su piattaforme diverse da Linux.

– p. 158

Page 159: Amministrazione base dei sistemi Linux

L’ambiente grafico: desktop manager

Sulle funzionalitá offerte da X sono poi definiti dei desktopmanager, come ad esempio Gnome e KDE. Ne esistonomolti altri, che hanno ad esempio richieste di memoria e diprocessore meno esose.

É importante ricordare che il kernel, X, il desktop managersono tutte componenti distinte tra loro: gli ultimi due sonosolo degli insiemi di programmi applicativi a cui il kerneloffre dei servizi come a tutti gli altri.

– p. 159

Page 160: Amministrazione base dei sistemi Linux

L’ambiente grafico: /etc/X11/XF86Config

Il file /etc/X11/XF86Config contiene la configurazione di X,specificando informazioni quali la scheda video, il monitor, idispositivi di input, e l’uso o meno di alcune funzionalitàcome ad esempio i caratteri freetype.

– p. 160

Page 161: Amministrazione base dei sistemi Linux

L’ambiente grafico: xf86config

E’ il programma che permette di generare il file diconfigurazione per X. Le schede disponibili sono riportatenella directory /usr/share/hwdata.

– p. 161

Page 162: Amministrazione base dei sistemi Linux

Stampare: /etc/printcap e printtool

Questo file contiene la descrizione di tutte le stampanticollegate al sistema, insieme ad un loro nome simbolico dautilizzare per indicarle.Questo file puó essere modificato sia a mano che tramiteredhat-config-printer (printtool ).

– p. 162

Page 163: Amministrazione base dei sistemi Linux

Stampare: CUPS

Il Common Unix Printing System é il nuovo sistema diconfigurazione delle stampanti, che gestisce molto megliole stampanti non laser rispetto a printtool. La suaconfigurazione avviene tramite una interfaccia web.

– p. 163

Page 164: Amministrazione base dei sistemi Linux

Stampare: lpr

Una volta che si é configurata la stampante, per stampareda linea di comando si puó utilizzare il comando lpr, cheopera anche come uno spooler di stampa.lpr -P laser file.ps stampa il file file.ps utilizzando lastampante di nome laser.

– p. 164

Page 165: Amministrazione base dei sistemi Linux

Stampare: lpq

Il comando lpq mostra lo stato della coda di stampa per unaspecificata stampante.

lpq -P laser mostra la coda di stampa per la stampante dinome laser.

– p. 165

Page 166: Amministrazione base dei sistemi Linux

Stampare: lprm

Il comando lprm consente di rimuovere un dato job dallacoda di stampa di una stampante.

lprm -P laser 2 Rimuove il secondo job dalla coda.lprm -P laser all Rimuove tutti i job dalla coda.

– p. 166

Page 167: Amministrazione base dei sistemi Linux

Stampare: lpd

Il demone lpd é il processo che si occupa della gestionedella stampa, gestendo lo spool di stampa.Tramite i suoi file di configurazione si puó stabilire chi hadiritto di stampare e su quali stampanti, gestire l’accountingdelle stampe, ecc..

– p. 167

Page 168: Amministrazione base dei sistemi Linux

Interoperabilitá: SCP

Per trasferire file da e verso una macchina Linux su cui siha un account si puó usare il comando scp:scp file user@host:percorsoEsistono implementazioni di scp per tutti i sistemi operativi.Inoltre per Windows esiste una versione grafica, WinScp:http://winscp.sourceforge.net, che é open source.

– p. 168

Page 169: Amministrazione base dei sistemi Linux

Interoperabilitá: FTP e ssh

Se sulla macchina Linux é installato un server FTP épossibile prelevare (ed eventualmente depositare) fileadottando un qualsiasi client FTP.

Un client SSH per Windows open source é ad esempioPUTTY.

– p. 169

Page 170: Amministrazione base dei sistemi Linux

Interoperabilità: VNC - 1

Se sulla macchina Linux viene installato e configurato unserver VNC, si puó accedere in modalitá grafica con unclient VNC, utilizzando ad esempio:

RealVnc, http://www.realvnc.com

TightVnc, http://www.tightvnc.com

– p. 170

Page 171: Amministrazione base dei sistemi Linux

Interoperabilitá: VNC - 2

Il vantaggio principale di VNC é che il client è di dimensioniminime (100 Kb). Il limite principale é rappresentato dalfatto che tutti i dati viaggiano in chiaro!

VNC non deve mai essere usato in un ambiente diproduzione o per controllare un server non in una retelocale.

– p. 171

Page 172: Amministrazione base dei sistemi Linux

Interoperabilitá: VNC - 3

Per utilizzare VNC occorre specificare sia l’hostname dellamacchina remota che l’utente con cui ci si vuole collegare.La sintassi adottata in genere é host:utente, per cui10.2.3.60:0 potrebbe essere l’utente X della macchina10.2.3.60, mentre 10.2.3.60:1 potrebbe essere l’utente Y.Ciascuno di questi utenti ha una propria password ed unproprio desktop.

– p. 172

Page 173: Amministrazione base dei sistemi Linux

Interoperabilitá: Server X - 1

E’ possibile installare un server X che consenta quindi diavere una modalitá grafica e di avere il traffico cifrato conSSH.Non esistono server X per Windows gratuiti. Tra quelli apagamento citiamo HummingBird Exceed.

– p. 173

Page 174: Amministrazione base dei sistemi Linux

Interoperabilitá: Server X - 2

Per attivare una sessione X sotto Windows occorretipicamente:

1. Attivare il server X sotto Windows, eventualmentespecificando che deve accettare connessioni dallamacchina Linux (remota);

2. Collegarsi via SSH alla macchina Linux, ed impostarela variabile di ambiente DISPLAY in questo modo:export DISPLAY=<ip-macchina-windows>:0.0 ;

3. Comunicare al server X (locale) che si accettanoconnessioni da remoto, ad esempio con il comandoxhost +

4. Lanciare l’applicazione richiesta, o l’intero ambientegrafico (ad esempio con gnome-session);

– p. 174

Page 175: Amministrazione base dei sistemi Linux

Data ed ora: date

Il comando date riporta che ora é. É possibile specificarediversi formati con cui visualizzare l’ora, cosí comechiedere di visualizzare una data ora in un certo formato.

date Mostra l’ora correntedate - -date=”08:00:00 PST” mostra l’ora passata comeparametro nell’ora corrente

– p. 175

Page 176: Amministrazione base dei sistemi Linux

Data ed ora: hwclock - 1

Per determinare che ora é, Linux utilizza una struttura alivelli. Alla base c’é l’hardware clock, ovvero l’orologioaggiornato dalla batteria tampone. Il comando hwclockpermette di leggere od impostarne il valore.L’unica funzione di questo orologio hardware é di tenereconto dell’ora quando Linux non é in funzione.

– p. 176

Page 177: Amministrazione base dei sistemi Linux

Data ed ora: hwclock - 2

L’orologio hardware non é molto accurato, ma la maggiorparte degli errori che compie sono predicibili: va avanti odindietro di una quantitá quasi costante, che puó esserecalcolata e di cui il kernel puó tenere conto per correggerel’ora.Questa correzione viene eseguita con l’opzione - -adjust

– p. 177

Page 178: Amministrazione base dei sistemi Linux

Data ed ora: Timezone

All’ora contenuta nell’hwclock bisogna aggiungere lequantitá dovute al fuso orario e all’ora legale: in questomodo quando cambia l’ora legale non occorre interveniresul clock hardware.La timezone é configurabile tramite il programmaredhat-config-date

– p. 178

Page 179: Amministrazione base dei sistemi Linux

Data ed ora: NTP

É spesso necessario che tutti i computer presenti in reteabbiano la stessa ora. Per questo esiste un protocollo disincronizzazione apposito, il Network Time Protocol.Il protocollo NTP si basa sull’utilizzo di server NTP, cheforniscono l’ora, e su client NTP, che vi si adeguano.

– p. 179

Page 180: Amministrazione base dei sistemi Linux

Data ed ora: ntpdate

Il comando ntpdate regola l’ora secondo quella riportata daun server ntp passato come parametro. L’adeguamento éimmediato.ntpdate ntp.ien.it Usa il server dell’Istituto ElettrotecnicoNazionale (l’ora ufficiale italiana). Altri server sono:

ntp2.ien.it

ntps.net4u.it

ntpdate 10.16.0.62 (Fastweb)

ntpdate 10.96.0.62 (Fastweb)

É sempre consigliato (e dovuto) utilizzare i server NTP delproprio provider.

– p. 180

Page 181: Amministrazione base dei sistemi Linux

Data ed ora: ntpd

Il demone ntpd sincronizza costantemente l’ora con quelladi uno o piú server NTP, e puó a sua volta operare comeclient. La sua configurazione é riportata nel file/etc/ntp.conf. Gli aggiornamenti che effettua sonoprogressivi, quindi conviene procedere una prima volta conntpdate e poi lasciare il compito delle correzioni minime antpd.

– p. 181

Page 182: Amministrazione base dei sistemi Linux

Hardware: lspci

Il comando lspci mostra l’elenco dei dispositivi presenti sulbus pci.lspci -v riporta piú informazioni.lspci -vv riporta ulteriori informazioni.

– p. 182

Page 183: Amministrazione base dei sistemi Linux

Hardware: /proc/cpuinfo

Il file /proc/cpuinfo contiene informazioni su tutti i processoripresenti nel sistema.

cat /proc/cpuinfoprocessor : 0vendor id : GenuineIntelcpu family : 5model : 4model name : Pentium MMXstepping : 3cpu MHz : 200.458...

– p. 183

Page 184: Amministrazione base dei sistemi Linux

Hardware: /proc/interrupts

Il file /proc/interrupts riporta, per ogni IRQ di ogniprocessore presente nel sistema, quante volte é scattato ea quale dispositivo é associato.

CPU00: 3152659 XT-PIC timer1: 135243 XT-PIC keyboard2: 0 XT-PIC cascade4: 327829 XT-PIC serial5: 1 XT-PIC soundblaster8: 1 XT-PIC rtc12: 0 XT-PIC eth0...

– p. 184

Page 185: Amministrazione base dei sistemi Linux

Controllare il sistema: df

Il comando df (disk free) mostra per ogni partizione montataquanto spazio é stato usato, quanto é ancora disponibile(tutto in blocchi da 1 KB) e il mount point.

df riporta lo spazio utilizzatodf -i riporta quanti inode sono stati usati e quanti sono liberi.df -h usa MB E GB come abbreviazioni.

– p. 185

Page 186: Amministrazione base dei sistemi Linux

Controllare il sistema: free

Il comando free riporta informazioni sull’occupazione dellamemoria.$ free

total used free shared buffers cachedMem: 94964 88188 6776 0 8708 43308-/+ buffers/cache: 36172 58792Swap: 532268 7164 525104

– p. 186

Page 187: Amministrazione base dei sistemi Linux

Controllare il sistema: whereis

Il comando whereis ricerca i sorgenti, i binari e le pagine dimanuale per un dato comando. Non considera il PATHcorrente! Il suo scopo é quello di mostrare se un comandoé installato nella locazione standard.

$ whereis lsls: /bin/ls /usr/share/man/man1/ls.1.gz

– p. 187

Page 188: Amministrazione base dei sistemi Linux

Controllare il sistema: which

Il comando which ricerca, nel PATH corrente, il/i parametripassato come argomento, permettendo quindi di vederecosa viene invocato in caso di esecuzione dell’argomentostesso. Se non trova nulla mostra il PATH corrente.$ which lsalias ls=’ls –color=tty -a -F -v’/bin/lsOvvero il comando eseguito é /bin/ls e sonoautomaticamente aggiunti i parametri riportati nell’alias.

– p. 188

Page 189: Amministrazione base dei sistemi Linux

Controllare il sistema: ps - 1

Il comando ps mostra i processi in corso di esecuzione sulsistema. Sono possibili diverse opzioni combinabili tra loro,sia per selezionare i processi da mostrare che per lemodalitá di visualizzazione.ps mostra i processi interattivi associati alla consoledell’utenteps -A oppure ps -e mostra tutti i processi del sistema.ps a mostra tutti i processi del terminale corrente.ps x seleziona solo i processi senza terminale (i demoni).

– p. 189

Page 190: Amministrazione base dei sistemi Linux

Controllare il sistema: ps - 2

ps -f Output esteso.ps -v Mostra la quantitá di memoria usata.ps -e Mostra l’ambiente usato dal comando.ps - -cols 100 pone a 100 la dimensione di una riga(mostra solo i primi 100 caratteri per riga)Combinazioni tipiche:

ps acxfu

ps -ef

– p. 190

Page 191: Amministrazione base dei sistemi Linux

Controllare il sistema: top

Il comando top mostra lo stato del sistema e i processi inesecuzione, ordinati per quantitá di CPU utilizzata. I datisono aggiornati ogni 5 secondi. Lanciato il comando si puó:

cambiare l’intervallo di aggiornamento con s

ordinare per memoria usata con M

uccidere un processo con k

ottenere l’help con h

uscire con q

– p. 191

Page 192: Amministrazione base dei sistemi Linux

Controllare il sistema: w e whoami

Il comando w (Who) riporta l’elenco degli utenti collegati alsistema.

Il comando whoami riporta l’identitá dell’utente che lolancia.

– p. 192

Page 193: Amministrazione base dei sistemi Linux

Controllare il sistema: watch

Il comando watch permette di eseguire un comando(passato come parametro) periodicamente, mostrandonel’output a schermo.watch ls /var/log esegue ogni 2 secondi il comando ls/var/logwatch -n 10 - -differences esegue ogni 10 secondi ilcomando uptime e enfatizza le differenze tra esecuzioniconsecutive.Si termina il comando premendo Ctrl-c (con Ctrl-z si metteil programma in background).

– p. 193

Page 194: Amministrazione base dei sistemi Linux

Controllare il sistema: nice

Il comando nice esegue un programma con una prioritáimpostata. (ogni programma viene per default eseguito conla stessa prioritá del programma che l’ha lanciato).nice -20 program esegue program con la massima prioritá.nice 19 program esegue program con la prioritá minima.nice Mostra la prioritá corrente.nice program Esegue il programma con un aggiustamentopari a 10 (ovvero con meno prioritá!)

– p. 194

Page 195: Amministrazione base dei sistemi Linux

Controllare il sistema: renice

Il comando renice permette di cambiare la prioritá di uno opiú processi in esecuzione. I processi sono specificati perPID, gruppo o utente.renice +1 1234 Riduce la prioritá del processo con PID paria 1234.renice -2 -u root Aumenta di 2 la prioritá dei processi conowner pari a root.

– p. 195

Page 196: Amministrazione base dei sistemi Linux

Controllare il sistema: kill - 1

Il comando kill invia un segnale ad un dato processo. Se il segnale

viene omesso il segnale é TERM (terminazione dolce). Questo

comando é localizzato in /bin/kill, molte shell hanno una funzione

kill interna che viene eseguita al posto del comando se non viene

specificato il PATH completo. Ad esempio, la shell Bash ha una

funzione kill che accetta anche il nome del programma a cui inviare

il segnale, mentre il programma kill vuole il PID.

kill program Esegue il kill della shell (se presente), altrimenti il

programma /bin/kill mandando in entrambi i casi il segnale TERM al

programma program.

– p. 196

Page 197: Amministrazione base dei sistemi Linux

Controllare il sistema: kill - 2

/bin/kill -9 program Invia il segnale KILL (terminazioneimmediata) al programma programma. Se l’utente éautorizzato ad inviare questo segnale il risultato é che ilprogramma program termina immediatamente, tutte lerisorse (di memoria, di processore ecc) ad esso associatesono rilasciate.É opportuno inviare prima un kill senza parametri, in mododa permettere al programma di terminare dolcemente(chiudendo i file aperti, svuotando i buffer). Se ilprogramma, dopo qualche secondo, non termina, lo si puóammazzare.

– p. 197

Page 198: Amministrazione base dei sistemi Linux

Controllare il sistema: kill - 3

Spesso questo comando puó essere usato per forzare unserver (ovvero un demone in esecuzione) a leggere un filedi configurazione che é stato cambiato, senza riavviare ildemone stesso.

kill -SIGUSR2 xinetd Forza il programma xinetd a rileggerela configurazione.

– p. 198

Page 199: Amministrazione base dei sistemi Linux

Controllare il sistema: nohup - 1

Il segnale HUP (Hang UP) viene inviato ad un programmaquando il processo padre é terminato oppure il terminaleche lo controlla viene rilasciato, quindi ad esempio quandoun utente fa il logout. Se si vuole che il programma continuia girare (in background) lo si deve lanciare con il comandonohup.nohup program param1 ... paramN Esegue il comandoprogram con parametri param1 ... paramN immunizzandoloagli hang-up.

– p. 199

Page 200: Amministrazione base dei sistemi Linux

Controllare il sistema: nohup - 2

nohup wget -t 0 -c -q ftp://URL Preleva il file ftp://URL inmodalitá silenziosa (-q), continuando ogni volta da dove siera interrotto (-c) finché non lo ottiene tutto (-t 0). Sel’utente che ha lanciato il programma effettua il logout iltrasferimento prosegue.

– p. 200

Page 201: Amministrazione base dei sistemi Linux

Controllare il sistema: jobs

É un comando di shell che mostra quali processi sono inbackground. I processi in background, oltre ad esserecomunque identificati dal loro PID, sono identificati danumero intero progressivo dalla shell, preceduto dal segno%.$ jobs[1]+ Stopped watch ls

– p. 201

Page 202: Amministrazione base dei sistemi Linux

Controllare il sistema: fg

Il comando di shell fg (foreground) riporta in primo piano ilprocesso in background indicato.

fg %1 riporta in background il processo indicato dalla shellcome %1.

– p. 202

Page 203: Amministrazione base dei sistemi Linux

Controllare il sistema: bg

Il comando di shell bg (background) manda in background ilprocesso indicato.

bg %1 manda in background il processo indicato dalla shellcome %1. Se il processo é quello che controlla il terminalecorrente, si ottiene (in genere) lo stesso effetto premendoCtrl-Z.

– p. 203

Page 204: Amministrazione base dei sistemi Linux

Controllare il sistema: uname

Il comando uname riporta una serie di informazioni sulsistema.

uname Riporta il nome del sistema operativo (Linux).$ uname -aLinux my.computer.tld 2.4.22 #8 Wed Oct 15 13:17:49CEST 2003 i586 unknown

– p. 204

Page 205: Amministrazione base dei sistemi Linux

Controllare il sistema: swapon e swapoff

Questi due comandi attivano (swapon) e disattivano(swapoff) una o piú partizioni di swap. Le partizioni di swapsono attivate all’avvio del sistema. Con il flag -s siottengono informazioni sull’uso delle partizioni medesime.

– p. 205

Page 206: Amministrazione base dei sistemi Linux

Controllare il sistema: vmstat

Il comando vmstat mostra informazioni sull’uso dellamemoria virtuale ( principale e di swap).

vmstatSotto le colonne si ed so sono riportati (in KB/s) i dati diswap in (da disco) e swap out (su disco). La descrizione ditutti i dati mostrati é nella pagina di manuale.

vmstat n ricalcola e mostra i dati ogni n secondi.

– p. 206

Page 207: Amministrazione base dei sistemi Linux

Controllare il sistema: dmesg

Il comando dmesg riporta quanto stampato dal sistemadurante l’ultimo boot. Puó quindi essere usato per vederese tutto l’hardware é stato rilevato e configuratocorrettamente.

– p. 207

Page 208: Amministrazione base dei sistemi Linux

Controllare il sistema: /var/log/messages

Il file /var/log/messages contiene numerose informazionisull’attivitá del sistema, come ad esempio il login e il logoutdegli utenti, l’installazione e rimozione di moduli del kernel,la partenza di alcuni programmi.

– p. 208

Page 209: Amministrazione base dei sistemi Linux

Networking: ping

Il comando ping permette di verificare se un host o unrouter (specificato per nome o per indirizzo IP sulla riga dicomando) é raggiungibile o meno.

ping hostname-or-address

– p. 209

Page 210: Amministrazione base dei sistemi Linux

Networking: traceroute

Il comando traceroute mostra il percorso seguito daipacchetti per raggiungere un host.

/usr/sbin/traceroute hostname-or-address

– p. 210

Page 211: Amministrazione base dei sistemi Linux

Networking: telnet

Il comando telnet apre una connessione TCP con l’hostspecificato sulla linea di comando e sulla porta specificata;se la porta non viene specificata si intende la 23 (remoteshell o telnet).

telnet hostname-or-address <port>

É il modo piú semplice di verificare se un certo servizio direte é attivo o meno (porta 110 per POP3, 80 per HTTP, 25per SMTP, 21 per FTP...)

– p. 211

Page 212: Amministrazione base dei sistemi Linux

Networking: ssh - 1

I dati spediti via telnet sono tutti in chiaro, e questo rende ilprotocollo non sicuro (ed é il motivo per cui l’accesso inremoto via telnet é di solito disabilitato).Il programma ssh consente di accedere in remoto ad unamacchina via il protocollo SSH, quindi con tutto il trafficocifrato.

ssh username@macchina

– p. 212

Page 213: Amministrazione base dei sistemi Linux

Networking: ssh - 2

Il nome della macchina remota deve essere semprespecificato. Se lo username non viene specificato si utilizzalo stesso della sessione della macchina locale.

ssh -X username@macchina esporta la modalità grafica.Sulla macchina locale deve essere presente un client X.

– p. 213

Page 214: Amministrazione base dei sistemi Linux

Networking: scp

Il comando scp (secure cp) consente di copiare file da/suuna macchina remota, cifrando il traffico. Puó essere usatocome alternativa sicura (e piú facilmente configurabile) diun ftp server e client.

scp sorgente destinazioneSe sorgente o destinazione sono locali si usa la normalesintassi per i nomi di file. Altrimenti occorre specificareanche lo username e la macchina sorgente/destinazione:username@macchina:percorso-file

– p. 214

Page 215: Amministrazione base dei sistemi Linux

Networking: ftp

Il comando ftp apre una sessione FTP con un’host remoto.

ftp hostname-or-address

Una volta aperta la sessione occorre autenticarsi(tipicamente con username uguale ad anonymous epassword un indirizzo di e-mail). Ciò fatto si naviga nelserver FTP con i comandi ls, cd, pwd analoghi a quelli diUnix, e si preleva un file con get <nomefile>.

– p. 215

Page 216: Amministrazione base dei sistemi Linux

Networking: whois

Il comando whois interroga un database whois, e permettequindi di ottenere informazioni sui gestori di un dominio osul proprietario di un indirizzo IP.

whois <-h whois-server> domain-or-address

– p. 216

Page 217: Amministrazione base dei sistemi Linux

Networking: nslookup

Il comando nslookup risolve un nome simbolicointerrogando il DNS server di default o uno specificato sulinea di comando. Con lo switch -r effettua l’operazioneinversa (da indirizzo IP a nome simbolico).

nslookup <-r> name-or-address

E’ possibile interrogare i DNS per tutte le informazioni diloro pertinenza.

– p. 217

Page 218: Amministrazione base dei sistemi Linux

Networking: dig

Il comando dig é la sostituzione del comando nslookup.

dig hostname-or-address

– p. 218

Page 219: Amministrazione base dei sistemi Linux

Networking: netstat

Il comando netstat mostra le connessioni attive sullamacchina locale. Opzioni possibili:

-n non risolve gli indirizzi

-a mostra tutte le porte

-p mostra anche il processo in ascolto

netstat <-n> <-a>

– p. 219

Page 220: Amministrazione base dei sistemi Linux

Networking: ifconfig - 1

Il comando ifconfig mostra o imposta la configurazione diuna interfaccia di rete.

ifconfig eth0 mostra la configurazione della prima schedaEthernet.ifconfig eth0 10.2.2.251 netmask 255.255.252.0 upconfigura la prima scheda Ethernet con l’indirizzo e lanetmask specificati.ifconfig eth0 down disattiva la prima scheda Ethernet.

– p. 220

Page 221: Amministrazione base dei sistemi Linux

Networking: ifconfig - 2

É possibile inoltre effettuare l’alias delle schede di rete,ovvero assegnare ad una scheda piú indirizzi (anche di retidistinte).Le interfacce aliased sono indicate come eth0:0, eth0:1, ...eth1:0, eth1:1.ifconfig eth0:0 81.208.39.118 netmask 255.255.255.240up crea un alias per eth0.

– p. 221

Page 222: Amministrazione base dei sistemi Linux

Networking: route

Il comando route mostra od imposta le tabelle di routingdella macchina.

$ routeDestination Gateway Genmask Flags Metric Ref Use Iface10.2.0.0 10.2.0.2 255.255.252.0 U 0 0 0 eth0127.0.0.0 * 255.0.0.0 U 0 0 0 lo

– p. 222

Page 223: Amministrazione base dei sistemi Linux

Networking: arp

Il comando arp mostra o modifica il contenuto della tabelladi ARP.

arp

– p. 223

Page 224: Amministrazione base dei sistemi Linux

Networking: hostname

Il comando hostname mostra (se non ha parametri) il nomedell’host, altrimenti lo imposta al nome passato comeparametro. Questa impostazione é locale, non vienepropagata al resto della rete.

hostname yoda.example.it imposta il nome dell’host ayoda.example.itIl nome dell’host impostato al boot é riportato in/etc/sysconfig/network. Il nome dell’host deve esserecompleto di dominio.

– p. 224

Page 225: Amministrazione base dei sistemi Linux

Networking: /etc/resolv.conf

Il file /etc/resolv.conf contiene gli indirizzi IP dei server DNS.

$ cat /etc/resolv.conf

nameserver address-1nameserver address-2

– p. 225

Page 226: Amministrazione base dei sistemi Linux

Networking: /etc/hosts

Il file /etc/hosts contiene la corrispondenza tra nomisimbolici ed indirizzi IP per quelle voci di DNS che nondevono essere risolte interrogando il server DNS. Questofile contiene almeno la risoluzione dell’indirizzolocalhost.localdomain.

$ cat /etc/hosts127.0.0.1 localhost.localdomain localhost

– p. 226

Page 227: Amministrazione base dei sistemi Linux

Networking: ipchains

Il comando ipchains mostra od imposta il firewall software.

$ipchains - -list mostra la configurazione del firewallsoftware.

– p. 227

Page 228: Amministrazione base dei sistemi Linux

Networking: xinetd

Il demone xinetd é il super-server di rete: permette diassociare a delle richieste di connessioni TCP che arrivanosu certe porte uno specifico server, che viene attivatoall’occorrenza, con un forte controllo d’accesso.

– p. 228

Page 229: Amministrazione base dei sistemi Linux

Networking: NIS

Il NIS (Network Information Service) é un sistema costituitoda un server, zero o piú slave e dei client. Le identitá degliutenti presenti sul server (e sugli slave) sono diffuse aiclient, permettendo cosí allo stesso utente di poteraccedere a piú macchine distinte a paritá di account.

– p. 229

Page 230: Amministrazione base dei sistemi Linux

Networking: NFS

Il NFS (Network File System) é il piú diffuso file system direte. Una macchina puó permettere l’accesso inlettura/scrittura ad altre macchine.

Sicurezza, affidabilitá e prestazioni di questo file systemsono assai modeste.

– p. 230

Page 231: Amministrazione base dei sistemi Linux

Boot: i bootloader - 1

Il bootloader é un programma che, all’avvio del sistema,permette di scegliere quale sistema operativo attivare.I due piú diffusi bootloader per Linux sono LILO e GRUB.Entrambi permettono sia di utilizzare diversi sistemioperativi su diverse partizioni, sia di avere (nel caso diLinux) diverse versioni del kernel a paritá di partizione. Ilbootloader utilizza in genere il MBR (Master Boot Record),e permette di passare al kernel dei parametri (il piúimportante dei quali é dove si trova la directory /).

– p. 231

Page 232: Amministrazione base dei sistemi Linux

Boot: LILO

LILO (LInux LOader) é stato il primo bootloader per Linux, econtinua ad essere ampiamente utilizzato. Il file diconfigurazione (/etc/lilo.conf ) contiene una mappa, ovverouna corrispondenza tra i nomi dei sistemi operativi dalanciare e la partizione su cui risiedono.Se si usa LILO, ogni volta che si modifica il file diconfigurazione occorre lanciare il programma lilo peraggiornare le informazioni utilizzate al boot.

– p. 232

Page 233: Amministrazione base dei sistemi Linux

Boot: GRUB - 1

GRUB (GRand Unified Bootlader) é un bootlader ormaiinstallato di default nelle architetture x86 perché e’ in gradodi lanciare un numero maggiore di diversi sistemi operativi.A differenza di LILO, il contenuto del file di configurazione(/boot/grub/grub.conf ) viene letto al boot.

– p. 233

Page 234: Amministrazione base dei sistemi Linux

Boot: GRUB - 2

GRUB adotta una convenzione diversa da quella di Linuxper indicare i dischi e le partizioni.I dischi (EIDE e SCSI) sono sempre indicati con hd<n> ,dove n é un numero che parte da zero. La prima partizionedel disco hd0 viene indicata come (hd0,0) .

– p. 234

Page 235: Amministrazione base dei sistemi Linux

Boot: i bootloader - 2

La regola d’oro per evitare problemi con i bootloader équella di aggiungere sempre delle entrate nelle mappe, madi non rimuovere mai quella definita in fase di installazionedel sistema, che é sintatticamente corretta e lancia unkernel funzionante.

– p. 235

Page 236: Amministrazione base dei sistemi Linux

Boot: il kernel

Se il bootloader funziona correttamente, viene caricata inmemoria una immagine del kernel che inizia a rilevarel’hardware.Quando il kernel parte il BIOS del computer non viene piúutilizzato.Le informazioni riportate a schermo sono richiamabili in unsecondo tempo con il comando dmesg .

– p. 236

Page 237: Amministrazione base dei sistemi Linux

Boot: init - 1

Dopo aver rilevato l’hardware (non necessariamenteconfigurandolo!) il kernel lancia il programma /sbin/init .Si tratta di un programma particolare, poiché é il padre(nonno...) di tutti i processi che verranno successivamenteeseguiti nel sistema, ed é l’unico processo che non puó maiessere ucciso, nemmeno da root.É init ad attivare i vari servizi presenti sulla macchina, e aconfigurare l’hardware.

– p. 237

Page 238: Amministrazione base dei sistemi Linux

Boot: INIT - 2

Il programma init opera in termini di runlevel.Un runlevel é una configurazione software del sistema checonsente solo ad un definito insieme di processi di esistere,ed é tipicamente indicato da un numero.

0 reboot del sistema

1 modalitá single user

2 multiuser senza rete

3 multiuser

4 non usato

5 modalitá grafica

6 reboot

– p. 238

Page 239: Amministrazione base dei sistemi Linux

Boot: init - 3

Il passaggio da un runlevel ad un altro é governato dalcomando telinit, che richiede come parametro il runlevel incui portarsi.Nelle directory /etc/rc<n>.d sono contenuti i servizi attivatio disattivati in un certo runlevel, come link simbolici agliscript di attivazione o disattivazione.I nomi dei link cominciano con S o K, sono quindi seguiti daun numero e da una stringa descrittiva. Se il nome del linké S... indica l’attivazione, se é K... indica la disattivazione.

– p. 239

Page 240: Amministrazione base dei sistemi Linux

Boot: init - 4

I link sono verso script di configurazione presenti nelladirectory /etc/init.d. Questi script possono essere invocatidirettamente se necessario:

/etc/init.d/network stop disattiva le interfacce di rete/etc/init.d/network start attiva le interfacce di rete

– p. 240

Page 241: Amministrazione base dei sistemi Linux

Boot: init - 4

I servizi da attivare in ogni runlevel possono anche essereconfigurati usando ad esempio tksysv oppure chkconfig .

Il file /etc/inittab contiene la descrizione dei runlevel. Inparticolare la voce initdefault stabilisce quale é il runlevel daattivare per primo (e quindi ad es. se attivare subito lamodalitá grafica o meno).

– p. 241

Page 242: Amministrazione base dei sistemi Linux

Boot: init - 5

I parametri di configurazione letti dagli script presenti in/etc/init.d sono tipicamente riportati in /etc/sysconfig esono impostabili o direttamente o tramite dei programmi diconfigurazione.

– p. 242

Page 243: Amministrazione base dei sistemi Linux

Boot: shutdown

Il comando shutdown permette di arrestare o rebootare ilsistema:shutdown -h now Arresta il sistemashutdown -r now Reboota il sistemashutdown -r <time> Reboota all’ora indicata

– p. 243

Page 244: Amministrazione base dei sistemi Linux

RPM: introduzione - 1

Il programma rpm (Redhat Package Manager) permette diinstallare, rimuovere ed aggiornare programmi dal sistema,garantendo che ogni operazione compiuta non renda ilsistema instabile, permettendo tra l’altro di verificare cosa éinstallato nel sistema, quale è il contenuto di ogni pacchettoinstallato, e da quale pacchetto proviene un dato file.

– p. 244

Page 245: Amministrazione base dei sistemi Linux

RPM: introduzione - 2

I pacchetti sono dei file contenenti tutti i programmi e i datida installare e le informazioni di controllo e gestione. Ladirectory /var/lib/rpm contiene le informazioni su quantoinstallato nel sistema.Il nome dei pacchetti in genere é cosí strutturato:

nome-versione-<architettura>-<src>.rpm

– p. 245

Page 246: Amministrazione base dei sistemi Linux

RPM: introduzione - 3

Dove:

nome é il nome del pacchetto: una volta installato ci sipuó riferire ad esso con il solo nome

versione é la versione

architettura se presente indica l’architettura per il quale ilprogramma é compilato (oppure riporta noarch perindicare che si tratta di dati)

src se presente e’ la stringa src che indica si tratta disorgenti, che vengono in tal caso installati sotto/usr/src/redhat/SOURCES

– p. 246

Page 247: Amministrazione base dei sistemi Linux

RPM: installare un pacchetto

L’installazione di un pacchetto richiede lo switch -i.

rpm -i file.rpm installa (se possibile) il pacchetto file.rpm.L’installazione avviene solo se il pacchetto non confliggecon quelli giá presenti nel sistema.Si puó sempre forzare l’installazione con lo switch- -nodeps :rpm -i - -nodeps file.rpm .

– p. 247

Page 248: Amministrazione base dei sistemi Linux

RPM: aggiornare un pacchetto

L’aggiornamento di un pacchetto richiede lo switch -U

rpm -U file.rpm aggiorna (se possibile) il pacchettofile.rpm.L’aggiornamento avviene solo se questo non causa unconflitto. Si puó forzare l’aggiornamento con lo switch- -nodeps .

– p. 248

Page 249: Amministrazione base dei sistemi Linux

RPM: rimozione di un pacchetto

La rimozione di un pacchetto richiede lo switch -e

rpm -e pacchetto rimuove (se possibile) il pacchettopacchetto.La rimozione avviene solo se questo non rende altriprogrammi non funzionanti. Si puó forzare la rimozione conlo switch - -nodeps .

– p. 249

Page 250: Amministrazione base dei sistemi Linux

RPM: informazioni sui pacchetti - 1

E’ possibile ottenere informazioni su pacchetti, sia quelliinstallati che quelli non installati. Lo switch per ottenereinformazioni é -q a cui bisogna far seguire p se si analizzaun file non installato, e quindi la specifica richiesta.

rpm -qpi file.rpm richiede informazioni generali sul filefile.rpm.rpm -qi pacchetto richiede informazioni generali sulpacchetto pacchetto.

– p. 250

Page 251: Amministrazione base dei sistemi Linux

RPM: informazioni sui pacchetti - 2

Con lo switch -l si ottiene l’elenco dei file che fanno partedel pacchetto.

rpm -qpl file.rpm richiede l’elenco dei file che sarannoinstallati dal file file.rpm.rpm -ql pacchetto richiede l’elenco dei file installati dalpacchetto pacchetto.

– p. 251

Page 252: Amministrazione base dei sistemi Linux

RPM: informazioni sui pacchetti - 3

In modo analogo, con lo switch - -scripts vengono mostratigli script che saranno eseguiti dopo l’installazione e dopo ladeinstallazione.

rpm -qp - -scripts file.rpm mostra gli script che sarannoeseguiti a seguito dell’installazione (e della deinstallazione)del file file.rpmrpm -qp - -scripts pacchetto mostra lo script che é statoeseguito con l’installazione del pacchetto pacchetto equello che verrá eseguito in caso di deinstallazione.

– p. 252

Page 253: Amministrazione base dei sistemi Linux

RPM: proprietario di un file

Con lo switch -qf si puó vedere a chi appartiene un file:

$ rpm -qf /bin/lsfileutils-4.1-4

– p. 253

Page 254: Amministrazione base dei sistemi Linux

RPM: pacchetti installati

Con lo switch -qa si ha l’elenco di tutti i pacchetti installatinel sistema.

$ rpm -qaperl-5.6.0-17at-3.1.8-20time-1.7-14pciutils-2.1.8-23...

– p. 254

Page 255: Amministrazione base dei sistemi Linux

Compilare il kernel - 1

La compilazione del kernel richiede di procurarsi i relativisorgenti presso un mirror di ftp.kernel.org , come adesempio ftp.it.kernel.org .

– p. 255

Page 256: Amministrazione base dei sistemi Linux

Compilare il kernel - 2

Ci si posiziona quindi nella directory /usr/src e si procede adecomprimere il file ottenuto.tar xfvz kernel-2.6.2.tar.gzSi deve creare a questo punto il link simbolico linux:ln -s linux-2.6.2 linux

– p. 256

Page 257: Amministrazione base dei sistemi Linux

Compilare il kernel - 3

Entrando nella directory linux si lancia il comando:

make menuconfigper iniziare la configurazione del kernel.In ambiente grafico si puó usare:

make xconfig

– p. 257

Page 258: Amministrazione base dei sistemi Linux

Compilare il kernel - 4

Il menú mostrato viene percorso con i tasti cursore. Alcunevoci portano ad altri menú che si aprono premendo invio,mentre altre sono le opzioni di compilazione vere e proprie.Le opzioni di compilazione sono attivabili, disattivabili, inalcuni casi impostabili come moduli (premendo il tasto mquando si é sulla relativa voce).

– p. 258

Page 259: Amministrazione base dei sistemi Linux

Compilare il kernel - 5

Terminata la configurazione, si termina selezionando lavoce Exit dal menú principale. E’ possibile salvare laconfigurazione ottenuta in un file diverso da quello standard(.config).A questo punto per i kernel 2.6 e superiori é sufficiente dareil comando:make

– p. 259

Page 260: Amministrazione base dei sistemi Linux

Compilare il kernel - 6

Per i kernel fino a 2.4 occorrono invece i seguenti passi:

1. make dep (calcola dipendenze)

2. make clean (rimozione .o precedenti)

3. make bzImage (immagine del kernel)

4. make modules (moduli)

5. make modules_install (installazione moduli)

– p. 260

Page 261: Amministrazione base dei sistemi Linux

Compilare il kernel - 7

Terminata la fase precedente, l’immagine del kernelprodotta si trova nella sottodirectory arch/i386/boot con ilnome vmlinuz. Va innanzitutto copiata nella directory /boot:cp vmlinuz boot/vmlinuz-<nome>

– p. 261

Page 262: Amministrazione base dei sistemi Linux

Compilare il kernel - 8

Quindi occorre aggiornare il bootloader (LILO o GRUB) percomunicare che c’é una nuova immagine da poter utilizzare.

Fatto ció, si riavvia il sistema e si vede cosa succede. Incaso di errori si ripetono i passi da make menuconfig inpoi.

– p. 262

Page 263: Amministrazione base dei sistemi Linux

Compilare il kernel: asm

Una porzione dei sorgenti del kernel contiene i file includeche vengono utilizzati dalla libreria C.Occorre sempre che sia presente il link/usr/src/linux/include/asmverso /usr/src/linux/include/asm-i386 .

Se il link non esiste i programmi C non potranno esserecompilati. Il link viene creato durante la compilazione delkernel.

– p. 263

Page 264: Amministrazione base dei sistemi Linux

Compilare il kernel: patch - 1

Una patch é l’insieme delle modifiche da apportare ai filesorgenti in modo tale da passare da una subversion aquella immediatamente successiva (e viene prodotta con ilcomando diff -ruN vecchia-directory nuova-directory )La patch si applica con il comando patch, ad esempiocome:

patch -p0 < patch-file

– p. 264

Page 265: Amministrazione base dei sistemi Linux

Compilare il kernel: patch - 2

Se la patch non viene applicata correttamente, si genera unfile .rej. Si puó provare la patch a freddo, ovvero con ilcomando:

patch -p0 - -dry-run < patch-file

– p. 265

Page 266: Amministrazione base dei sistemi Linux

Moduli: lsmod

Questo comando riporta i moduli del kernel presenti inmemoria.Module Size Used by Not taintedsoundcore 6532 0 (autoclean)mousedev 5524 1 (autoclean)input 5888 0 (autoclean) [mousedev]binfmt misc 7524 1autofs 13348 0 (autoclean) (unused)8139too 17704 1mii 2156 0 [8139too]iptable filter 2412 0 (autoclean) (unused)ip tables 14936 1 [iptable filter]ext3 70368 2jbd 52212 2 [ext3]

– p. 266

Page 267: Amministrazione base dei sistemi Linux

Moduli: insmod

Il comando insmod inserisce un modulo nel kernel,passandogli eventualmente dei parametri. Il modulo vieneindicato come il nome del file presente in/lib/modules/<versione>.insmod pcmcia_core Inserisce nel kernel il modulo/lib/modules/<versione>/kernel/drivers/pcmcia/pcmcia_core.o

Questo comando viene utilizzato quando si vuole caricare,ad esempio, un driver per una periferica utilizzata.

– p. 267

Page 268: Amministrazione base dei sistemi Linux

Moduli: rmmod

Il comando rmmod rimuove un modulo dal kernel. Il nomedel modulo viene passato come parametro, e l’operazione éeseguita solo se non ci sono altri moduli che utilizzano ilmodulo selezionato per la rimozione.rmmod pcmcia_core Rimuove dal kernel il modulopcmcia_core.

– p. 268

Page 269: Amministrazione base dei sistemi Linux

Moduli: modinfo

Il comando modinfo riporta informazioni su un modulo,come ad esempio l’elenco dei parametri che possonoessere impostati.modinfo udf Riporta informazioni sul modulo udf.

– p. 269

Page 270: Amministrazione base dei sistemi Linux

Moduli: /etc/modules.conf

Con questo file é possibile dare un alias al nome di unmodulo.$ cat /etc/modules.confalias eth0 8139too

Il modulo 8139too puó essere indicato come eth0.

– p. 270

Page 271: Amministrazione base dei sistemi Linux

Moduli: depmod e modprobe

Questo comando crea un file che descrive le dipendenzetra i vari moduli, memorizzandolo in/lib/modules/<versione>/modules.dep.

Questo file viene consultato da modprobe, che permette dicaricare un modulo e tutti quelli necessari al suofunzionamento.

– p. 271

Page 272: Amministrazione base dei sistemi Linux

Documentazione: man - 1

Il comando man mostra la pagina di manuale relativa alcomando (o file) passato come primo parametro.man ls mostra la pagina di manuale del comando ls.Se ci sono piú pagine di manuale che sono indiciate dallostesso nome, viene mostrata solo la prima. Per averle tutteoccorre premettere lo switch -a: man -a while

– p. 272

Page 273: Amministrazione base dei sistemi Linux

Documentazione: man - 2

All’interno di una pagina di manuale sono disponibili glistessi comandi del comando less (che é il viewer di defaultdelle pagine di manuale).

man -K vmstat ricerca tutte le pagine di manuale in cui c’éla stringa vmstat.

– p. 273

Page 274: Amministrazione base dei sistemi Linux

Documentazione: man - 3

Le pagine di manuale sono organizzate in sezioni. Adesempio la sezione 1 contiene i comandi utente, la sezione2 la libreria c, ecc.E’ possibile specificare in quale sezione cercare la paginadi manuale premettendone il numero al nome del comando:man 1 ls ricerca la pagina di manuale di ls nella sezione 1.Questo viene fatto per evitare ambiguitá (piú pagine dimanuale con lo stesso nome in sezioni diverse).Un modo sintetico per indicare che ci si riferisce al comandols cosí come riportato nella sezione 1 del manuale é: ls(1).

– p. 274

Page 275: Amministrazione base dei sistemi Linux

Documentazione: whatis

Il comando whatis riporta una sintetica descrizione delcomando passato come parametro, consultando unapposito database.

$ whatis ls$ ls (1) - list directory contents

– p. 275

Page 276: Amministrazione base dei sistemi Linux

Documentazione: apropos

Il comando apropos ricerca all’interno del database usatodal comando whatis per una stringa passata comeparametro.

– p. 276

Page 277: Amministrazione base dei sistemi Linux

Documentazione: info

Il comando info permette di accedere ad un helpipertestuale. I collegamenti sono indicati da una coppia diasterischi e possono essere visitati spostando il cursoreall’inizio del collegamento e premendo invio. Se vienespecificato un parametro viene aperta la sezione relativa(info libc ).

– p. 277

Page 278: Amministrazione base dei sistemi Linux

Documentazione: HOWTO

Gli HOWTO sono dei documenti che spiegano con grandedettaglio come compiere delle specifiche operazioni sulsistema (configurare la rete, masterizzare un CD, farecalcoli paralleli, configurare un RAID). Se installati sitrovano a partire dalla directory /usr/share/doc/HOWTO.

– p. 278

Page 279: Amministrazione base dei sistemi Linux

Link -1 tldp.org

www.tldp.org é il sito del The Linux DocumentationProject. Contiene tutti gli HOWTO e alcune guide etutorial.

freshmeat.net é un archivio di software per Linux/Unix.Contiene di tutto, da programmi egregi a sempliciesperimenti.

sourceforge.net offre hosting gratuito a progetti opensource. E’ possibile avere forum, CVS, mailing list.

www.kernel.org Il sito www.kernel.org contiene i sorgentidel kernel di tutte le versioni di linux. É consigliatoaccedere via ftp ad uno dei mirror, come ad esempioftp.it.kernel.org (o ftp.es.kernel.org, ...)

– p. 279

Page 280: Amministrazione base dei sistemi Linux

Link - 2

www.linuxtoday.com riporta le notizie che riguardano ilmondo Linux presenti su giornali anche nonspecialistici.

slashdot.org é, per definizione dei suoi autori “stuff fornerds”. É talmente popolare che é stato coniato iltermine slashdotted per dire di un sito che, citato suslashdot, é stato sovraccaricato di visitatori.

www.gnu.org Il sito del progetto GNU

www.groklaw.net Il sito di informazioni legali allacomunitá Linux nella vicenda SCO.

– p. 280

Page 281: Amministrazione base dei sistemi Linux

Link - 3

oss.oracle.com I progetti Open Source di Oracle

www.openoffice.org La suite per ufficio OpenOffice.

www.linuxfromscratch.org Una distribuzione Linux eduna guida a creare una propria distribuzione partendoda zero, ottimo per imparare molti aspetti misconosciutidel sistema

– p. 281