Manuale Corso Linux Milano Linate

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Manuale Corso Linux Milano Linate"

Transcript

1 Manuale Corso Linux Milano Linate 1

2 Manuale Corso Linux basato su Linux Redhat 5.0 Kernel , come documentazione per il corso Linux Base tenuto a Milano Acc. nel novembre 2011, scritto e realizzato da: Bertani Roberto, Franzoni Luca, Nosotti Roberto Convenzioni utilizzate: Formato comandi: theo:~> ls Risposta sistema: /oriental /pop /sixties Configurazioni all interno di un file User_Alias ADMINS = neo, led 2

3 Stampato e distribuito sia in formato cartaceo che in formato sorgente.doc nella filosofia dell Open Source. Chiunque volesse contribuire ad arricchire tale manuale, è pregato di aggiornare questo documento, così da condividere con tutti le informazioni raccolte. Modalità di numerazione della release: E importante modificare questo numero quando si fanno delle modifiche al file, così un utente, può verificare immediatamente se il file on line è stato modificato e se le modifiche sono sostanziali. La release di base è la Il primo numero verrà incrementato, qualora vengano aggiunti nuovi argomenti o capitoli Il secondo, verrà incrementato quando nello stesso argomento, viene implementato un paragrafo legato ad esempio ad un comando. Il terzo infine, aumenterà di una unità quando viene specificata una nuova opzione o una spiegazione più dettagliata di un argomento già descritto. Ovviamente l aumento di una unità superiore provoca anche l azzeramento di quelle inferiori es. un inserimento di un nuovo argomento su una release porterà la release a Mentre se la modifica riguarda un comando porterà la release a Nel contenitore dovrà essere lasciata la vecchia versione (non sovrascritta!) ed inserita la nuova. Aggiornare il documento sotto riportato. Nota. Evitare di incrementare la release per una semplice correzione grammaticale o di sintassi, per evitare di arrivare ad una release TABELLA AGGIORNAMENTI Release Data Nominativo Agg. indice SI/NO Note /11/2011 R.Bertani L.Franzoni R.Nosotti -- 1 stesura /03/2012 R.Bertani NO Aggiunta Tabella INODE /03/2012 L.Franzoni NO Flow Partenza 3

4 INDICE DEGLI ARGOMENTI 1. Introduzione a Linux La filosofia di Linux e l'open Source Scegliere la distribuzione più adatta alle esigenze Hardware per Linux Il kernel Kernel Monolitico Vs Kernel Modulare Il File System Il File System di Linux La vera natura dei file: hard link e inode Files di configurazione La partenza di Linux LILO Global Options in /etc/lilo.conf GRUB Global Options in /etc/grub.conf Inittab inizializzazione del sistema Parametri RUNLEVEL File: /etc/inittab (da D51 TB) File: /etc/rc.local (da D51 TB) La SHELL: operare da riga di comando Cos è una shell Tipi di shell Il comando man Il comando cat Il comando which Il comando whereis La SHELL: operare da riga di comando Il percorso Percorsi assoluti e relativi Il comando ls Controllare la propria posizione con il comando pwd Creare o Rimuovere directory Come muoversi attraverso le directory Creare un Link con il comando ln Spostare un file con il comando mv Rimuovere un file con il comando rm Copiare un file con il comando cp I permessi e i privilegi in un sistema Linux Permessi sui file Come cambiare i privilegi di un file Configurazione permessi con umask La modalità SUID SGID - Sticky l comando su per cambiare utente Gestione utenti Creare Utenti e Gruppi il comando groups

5 6.3 Il comando passwd Il file passwd Il file shadow Eliminare Utenti o Gruppi Altri comandi di personalizzazione di uno user Introduzione a sudo L editor visudo Il file sudoers Informazioni dell utente connesso con il comando who Gestione file di testo L editor vi il comando dos2unix Visualizzare le prime righe di un file con head Visualizzare le ultime righe di un file con tail Dividere un file con split Visualizzare una schermata alla volta di un file con less Visualizzare una schermata alla volta di un file con more Il comando diff numerare le linee di un file di testo con il comando nl Altri comandi utili La ricerca di un file con il comando find Il comando grep per ricercare una stringa all interno di un file Il controllo dell integrità di un file con il comando md5sum Un calendario sempre a disposizione con il comando cal Le variabili di ambiente Il comando alias per creare pseudonimi e facilitare il lavoro L esportazione delle variabili di ambiente La Rete Acenni sul protocollo TCP/IP Configurazione di una rete TCP/IP (nozioni di base) Configurazione di una rete su Linux Il comando ifconfig ethtool - manipolazione degli strumenti e le interfacce di rete richiesta File di configurazione di una rete Altri file di configurazione rete Il comando route Rendere permanente una rotta statica Wake on lan Tips & Tricks Il comando rcp Il comando ftp per trasferire files Manutenzione del sistema Log di sistema Controllo dei processi in esecuzione con il comando ps Priorità nell esecuzione di un programma usando il comando nice

6 10.4 Terminazione di un processo usando il comando kill Visualizzare gli accessi al sistema con il comando last Visualizzare la sequenza dei comandi digitati da un utente Eventi schedulati /etc/crontab Controllo della memoria con vmstat Controllo della memoria con free Controllo occupazione dei file system Il comando netstat Visualizzare e impostare la data/ora del sistema con il comando date Il comando finger per le informazioni sulla macchina Conoscere le informazioni sul sistema operativo con Il comando uname Visualizzare l elenco dei moduli installati Il comando du per conoscere la dimensione di un file in Kb Il comando file per determinarne il tipo Fermare il sistema con halt o shutdown Backup & Restore Backup WS FDP Restore WS FDP Programma: mkisofs Backup CWP Selex Effettuare un backup di un nodo Restore dei nodi Linux Il comando tar Preparazione per l'installazione Installazione: Installare GRUB su memoria USB Configurazione di GRUB Installazione di programmi su Linux con RPM Gestione dischi Partizioni Partizioni estese e partizioni logiche Creazione Partizioni Logical Volume Manager (LVM) Creazione di un PV Creazione dei LV Creazione dei File Systems Creazione dei punti di Mount Ridurre un Volume Group Ridurre un LV Il comando mount I Devices Configurare una scheda grafica Masterizzare un CD con il comando cdrecord Lanciare una stampa Configurare e montare una chiavetta USB

7 14.5 Configurare una scheda PCMCIA Xterm l interfaccia grafica I menu di Xterm Modifiche al volo: opzioni da riga di comando Modifiche permanenti: agire sul file di configurazione L opzione geometry L opzione background L opzione foreground L opzione title Settare un alias per l ambiente di root X1. Comandi FTP X2. Comandi editor vi X3. Elenco variabili di ambiente più comuni X4. Relazione Nomi-colori e Formato rgb X5. il file di configurazione.xresources X6. il file di configurazione.mwmrc

8 1. Introduzione a Linux Ci sono differenti modi per avere ed utilizzare un programma che sia questo un sistema operativo o un software applicativo. 1.1 La filosofia di Linux e l'open Source Linux `e un sistema operativo Unix Like creato from scratch, da Linus Torvalds e cresciuto con il supporto della comunità open source, strettamente connesso alla suite GNU (compilatore, linker, debugger, etc.), il sistema può essere correttamente chiamato GNU/Linux Cos è GNU? Prima che il nostro kernel Linux venisse ideato, esisteva già l idea di creare un Sistema Operativo aperto. Questo era proprio il progetto GNU dove GNU è un acronimo ricorsivo in stile hacker che vuol dire (Gnu is Not Unix), questo voleva sottolineare il fatto che si trattava di un Sistema Operativo aperto (Open Source) simile a Unix ma che in realtà non era affatto Unix. Sviluppato sotto la GNU General Public License (GPL). Il codice sorgente è gratuitamente e liberamente disponibile per chiunque. Inizialmente sviluppato per microprocessori Intel 386, adesso è disponibile su tutte le architetture di calcolo più diffuse. Gamma di software: Licenza a tempo : Si ottiene un codice eseguibile ed è possibile utilizzarlo per un tempo limitato. Se si smette di pagare si deve rendere/distruggere il codice. Non è possibile modificarlo ne rivenderlo. Acquisto di licenza : Si riceve il codice eseguibile ed è possibile utilizzarlo per un tempo illimitato, eventualmente potrebbe per contratto esserci una licenza per manutenzione e aggiornamenti. Esistono contratti chiamati "campus" che permettono di installare il software su un certo numero di macchine. Non è possibile eseguire modifiche ne rivenderlo. Shareware : Acquisizione (da Supporto magnetico o da rete) di un programma che funziona in modalità limitata o per un tempo definito (30g, 60g) come periodo di prova, dopo di che se è soddisfacente è possibile acquistare la versione completa o la chiave di sblocco della versione demo, Si ha l'autorizzazione a copiare e/o distribuire solo la versione "demo". Freeware : Acquisizione (da Supporto magnetico o dalla rete) di un programma completamente funzionante che è possibile usare, copiare, distribuire gratuitamente ad altri. Non è possibile modificarlo perchè non si possiede il codice sorgente. (anche se chi lo ha scritto è di solito molto disponibile!). Free-Software : E' possibile acquisire via rete, o acquistare al solo costo del supporto, software in formato sorgente o binario di cui si diventa completamente proprietari. E' possibile modificarlo, regalarlo, ma non venderlo o accamparvi diritti esclusivi. (progetto GNU) Open Source : Il software viene fornito (gratuitamente o dietro pagamento) in formato sogente, e chi lo ottiene ha il diritto di utilizzarlo, copiarlo e modificarlo. Alcune licenze (GPL) prevedono che si possa rivendere il prodotto, ottenuto a partire da software "open source", purchè sia sempre accompagnato dai sorgenti. 8

9 1.2 Scegliere la distribuzione più adatta alle esigenze Distribuzioni Generali : Si possono acquistare nei negozi di informatica, scaricare da Internet, oppure si trovano in edicola: ( 1 o 2 CD allegati alle riviste di informatica.) Slakware : Debian : RedHat : Mandrake : Suse : E' la distribuzione più antica, molto spartana, oggi è poco usata Ha la più attiva e vivace comunità supporto, soprattutto nel mondo universitario. Dispone di ottimi tools di aggiornamento e allineamento versioni. Indicata per chi sviluppa applicazioni di sistema. La versione più diffusa e conosciuta, adottata anche da industrie che hanno scelto di supportare Linux (quale IBM). Di semplice installazione, indicata per realizzare server di calcolo e rete Presenta una struttura molto simile a RedHat, ma cura maggiormente gli aspetti di grafica e suono. di semplice installazione ed Indicata nelle stazioni di lavoro individuali. Distribuzione Europea. Cura particolarmente gli aspetti di sicurezza ed è utilizzata anche in ambiente gestionale. Estremamente completa, indicata per realizzare server di calcolo e rete 1.3 Hardware per Linux Linux non supporta tutte le periferiche che vengono viste normalmente da Windows! Solo una piccola percentuale dei produttori di hardware rilasciano i driver dei loro prodotti anche per Linux, anche se col passare del tempo stanno aumentando. Molti dei driver oggi disponibili sono stati realizzati da utenti/programmatori di Linux, quindi è più probabile che sia disponibile il driver per un prodotto economico piuttosto che per un prodotto costoso e sofisticato, ed è anche più probabile trovare driver per prodotti maturi, che sono cioè sul mercato da parecchi mesi piuttosto che un prodotto di ultima generazione. A "parita' di prestazioni", Linux richiede meno risorse di Windows, la configurazione minima/ottimale consigliata per installare una distribuzione recente è: CPU con frequenza 400 MHz Memoria RAM 512 MByte Spazio su disco 5 GByte 1.4 Il kernel Per kernel si intende il cuore di un sistema operativo, il codice che gestisce le risorse presenti sul nostro sistema e le rende disponibili alle applicazioni. Il kernel si occupa principalmente di gestire: - le comunicazioni con l'hardware del sistema, - i file system, la memoria, - l'accesso a queste risorse da parte dei processi (le applicazioni che girano sul sistema)... Le versioni del kernel Linux sono identificate con numeri dal significato ben preciso. Per esempio il kernel ha: 2 - Il major number. I kernel della serie 1.x sono ormai piuttosto vecchi e pochissimo usati. 4 - Il minor number. Se è pari il kernel viene considerato stable e pronto per sistemi in produzione, se è dispari lo si considera in development e da usare con cautela o per sperimentazione. Le release stable sono sempre figlie delle devel precedenti. Per esempio al momento in cui si scrive, il kernel stable è alla versione , mentre quello in sviluppo è alla (da cui deriverà la 2.6.x o direttamente la 3.0.x). Solitamente nei kernel stable si tende a fare maintenance ed a implementare solo le features strettamente necessarie, lasciando a quello in development lo sviluppo di nuove funzionalità E' la revisione (patch) corrente. Questo è un numero progressivo che parte da 0. Da una revisione alla successiva possono passare da pochi giorni a varie settimane. Esistono inoltre varie patch temporanee, anche non di Torvalds (ideatore del primo kernel) stesso (comuni sono le -ac patch, di Alan Cox) che rappresentano stadi intermedi prima della release di una revisione definitiva. Ha senso utilizzarle subito solo in caso di utilizzo di kernel con gravi problemi di sicurezza o stabilità (sul proprio sistema) che vengono risolte con le relative patch parziali. 9

10 1.5 Kernel Monolitico Vs Kernel Modulare Esistono diversi tipi di kernel: Monolitico E' un singolo file binario eseguibile in modalità "kernel" che contiene il gestore del processo, della memoria, del sistema e tutto il resto. Esempi di tali sistemi sono UNIX, Linux, MS-DOS. Microkernel E' un piccolo nucleo ridotto ai minimi termini che ha il compito di gestire le comunicazioni fra i gestori di sistema, processi separati eseguiti al di fuori dal kernel. Esempi di tali sistemi sono BE OS, GNU HURD, MINIX. Modulare Per kernel Modulare si intende un' estensione del kernel monolitico, con la capacità di caricare/scaricare parti di codice (moduli) secondo necessità e richieste. Può esserlo Linux se lo si definisce in fase di configurazione precompilazione. Il kernel monolitico è più veloce, poichè tutto il codice è già stato caricato al bootstrap dell'os, ma di contro occupa maggiori risorse del sistema. Un altro punto a favore è la maggiore stabilità: non richiede moduli evitando così pericolose dipendenze. Il kernel modulare è quello utilizzato da tutte le distribuzioni in fase di installazione di LINUX su una macchina. 10

11 2. Il File System 2.1 Il File System di Linux il File System, è un modulo del S.O. dedicato all archiviazione delle informazioni sulle memorie di massa, ne esistono diversi tipi e su linux possono essere utilizzati contemporaneamente - semplificare gli accessi alle memorie di massa - offrire all utente una modalità strutturata ed efficiente per organizzare i propri dati - gestire i vari dischi collegati al sistema In Linux non esiste il concetto di "disco fisico" ma le partizioni vengono "montate" come directory. La partizione che contiene il sistema verrà montata, alla partenza, sulla directory / ( root o radice). Le altre partizioni possono essere montate su qualunque directory. Se nelle directory erano presenti dei dati questi rimarranno inaccessibili fino a che la partizione non viene montata. Il file che definisce come sono montati di dischi di un sistema si chiama : fstab e si trova nella directory di sistema /etc esempio di fstab # # Disco Directory tipo opzioni fsck # LABEL=/ / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode= none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/hda6 /work ext3 defaults 1 2 /dev/hda5 swap swap defaults 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0 /dev/hda1 /C vfat defaults 0 0 A seconda dell'amministratore di sistema, il sistema operativo e la missione della macchina, la struttura può cambiare e le directory possono mancare oppure essere aggiunte a piacere. I nomi non sono neanche richiesti: sono solo una convenzione. L'albero del file system inizia dal tronco o sbarra, rappresentato da una sbarra (/). Tale directory, contenente tutti i file e le directory sottostanti, è chiamata root directory (directory radice) o radice del file system. Le directory che si trovano solo ad un livello al di sotto di quella di root sono spesso precedute da una sbarra (slash) per indicare la loro posizione e per evitare di confonderle con altre directory che potrebbero avere lo stesso nome. Quando si inizia con un nuovo sistema è sempre una buona idea dare un'occhiata alla directory radice. Vediamo come si può accedere: > cd / > ls /bin /dev /home /lib /misc /opt /root /tmp /var /boot /etc /initrd /lost+found /mnt /proc /sbin /usr 11

12 Sottodirectory della directory radice: /bin /boot /dev /etc /home /initrd /lib Comuni programmi condivisi dal sistema, dall'amministratore di sistema e dagli utenti. I file di avvio e del kernel, vmlinuz. In alcune recenti distribuzioni ci sono anche i dati di grub. Grub è il GRand Unified Boot loader e rappresenta un tentativo di sbarazzarsi di molti bootloader differenti che conosciamo oggi. Contiene i riferimenti a tutto l'hardware periferico della CPU, che viene rappresentato come file con particolari caratteristiche. In /etc si trovano file di configurazione di sistema molto importanti. Questa directory contiene dati simili a quelli del Pannello di Controllo di Windows Directory home [personale] dei normali utenti. (in alcune distribuzioni) Informazioni per l'avvio. Non rimuovere! File di libreria, comprende file per tutti i tipi di programmi necessari al sistema ed agli utenti. /lost+found Ogni partizione possiede lost+found nella directory più alta: vi si trovano i file salvati durante un guasto. /misc /mnt /net /opt /proc /root /sbin /tmp /usr /var Per usi diversi. Punto di montaggio standard per file system esterni, ad es. un CDROM o una fotocamera digitale. Punto di montaggio standard per interi file system remoti. Contiene tipicamente software extra e di terze parti. Un file system virtuale contenente informazioni sulle risorse di sistema. Maggiori informazioni sul significato dei file in proc si ottengono dando il comando man proc in una finestra di terminale. Il file proc.txt tratta in dettaglio del file system virtuale. La directory home dell'utente amministratore. Tenete presente la differenza tra /, la directory root o radice, e /root, la home directory dell'utente root. Programmi utilizzati dal sistema e dall'amministratore di sistema. Spazio temporaneo usato dal sistema, ripulito ad ogni riavvio: da non usare per salvare alcun lavoro! Programmi, librerie, documentazione, ecc... per tutti i programmi a disposizione degli utenti. Deposito di tutti i file variabili e temporanei creati dagli utenti, come i file di log, le code di posta, l'area per lo spooler di stampa, spazio per l'archiviazione temporanea dei file scaricati da internet, o per conservare l'immagine di un CD prima di masterizzarlo. 12

13 Come si può scoprire in quale partizione si trova una directory? Usando il comando df con un punto (.) come opzione mostra la partizione a cui appartiene la directory corrente e informa sulla quantità di spazio usato in tale partizione: /lib> df -h. Filesystem Size Used Avail Use% Mounted on /dev/hda7 980M 163M 767M 18% / Come regola generale, ogni directory sotto la directory root si trova nella partizione di root, a meno che non esista una voce separata nell'elenco completo prodotto da df (o df h senza altre opzioni). Ogni qualvolta si crea un nuovo file, questo ottiene un inode libero; nei sistemi Unix un inode è una struttura dati sul file system che archivia le informazioni base dei file, delle directory o di qualsiasi altro oggetto. Le informazioni includono: la dimensione del file e la sua locazione fisica (se risiede su un dispositivo a blocchi come, ad es., un hard disk) il proprietario e il gruppo di appartenenza le informazioni temporali di modifica (mtime), ultimo accesso (atime) e di cambio di stato (ctime). il numero di collegamenti fisici che referenziano l'inode i permessi d'accesso Il termine inode normalmente si usa sui dispositivi a blocchi che gestiscono file, directory e collegamenti simbolici. Il concetto è particolarmente importante quando è necessario ripristinare un file system danneggiato. 13

14 Ogni inode ha associato un numero univoco all'interno del dispositivo e ogni file presente è identificato come un collegamento fisico all'inode tramite il suo numero. Quando un programma cerca di accedere ad un file tramite un nome (es. documento.txt), il sistema operativo cerca l'inode corrispondente e recupera tutte le informazioni sopra descritte per operare correttamente con il file. Per recuperare le informazioni sull'inode dei file si può usare la chiamata di sistema stat. $ stat /etc/passwd File: `/etc/passwd Size: 1988 Blocks: 8 IO Block: 4096 regular file Device: 341h/833d Inode: Links: 1 Access: (0644/-rw-r r ) Uid: ( 0/ root) Gid: ( 0/ root) Access: :26: Modify: :26: Change: :26: L'unica informazione non inclusa in un inode è il nome del file e della directory. Questi sono conservati in speciali file di directory. Confrontando i nomi dei file e i numeri di inode, il sistema è in grado di costruire una struttura ad albero comprensibile per l'utente. Gli utenti possono vedere i numeri di inode utilizzando l'opzione -i con ls. Gli inode dispongono di un proprio spazio separato nel disco. inode 1 (/) bin 2 dev 3 etc 4... sbin 7... Directory inode arch 100 architet 901 getty init Directory (/sbin) inode arch 100 bash 101 cat cp Directory (/bin) inode 910 (/sbin/architet) /bin/arch 100 Directory Collegamenti. In questa figura si può notare che: i file /bin/arch e /sbin/arch sono la stessa cosa, in quanto corrispondono allo stesso inode; il file /sbin/architett è un collegamento simbolico a /bin/arch. inode 100 (/bin/arch) File di Dati 14

15 2.1.1 La vera natura dei file: hard link e inode Ogni file sul sistema è rappresentato da un inode (da "Information Node"; pronunciato "ainod"): un inode contiene tutte le informazioni riguardanti un file. Tuttavia, l'inode non è visibile direttamente. Invece ciascun inode è collegato nel filesystem da uno o più hard link. Gli hard link contengono il nome del file e il numero di inode. L'inode contiene il file medesimo, cioè la posizione in cui sono archiviate le informazioni sul disco, i suoi permessi di accesso, il tipo di file e così via. Il sistema può trovare ogni inode una volta che conosca il numero di inode. Un singolo file può avere più di un hard link. Ciò significa che più nomi di file possono riferirsi allo stesso file (cioè, essi sono associati con lo stesso numero di inode). Tuttavia, non si possono creare hard link tra filesystem differenti: tutti i riferimenti di tipo hard ad un file particolare (inode) devono essere sullo stesso filesystem. Questo perché ciascun filesystem possiede il proprio insieme di inode e ci possono essere duplicati di numeri di inode tra i diversi filesystem. Siccome tutti gli hard link ad un dato inode si riferiscono al medesimo file, si possono fare modifiche al file, riferendosi ad esso tramite un nome, e poi vedere questi cambiamenti quando ci si riferisce ad esso con un nome differente. Provare questo: 1. cd; echo "hello" > primolink Usare il comando cd verso la propria directory home e creare un file chiamato primolink contenente la parola "hello". Quello che si è fatto in realtà è redirigere l'output di echo (echo restituisce semplicemente ciò che gli si dà), posizionando l'output in primolink. Si veda il capitolo sulla shell per una spiegazione completa. 2. cat primolink Verificare il contenuto di primolink. 3. ln primolink secondolink Creare un hard link: secondolink ora punta allo stesso inode di primolink. 4. cat secondolink Verificare che secondolink è uguale a primolink. 5. ls -i Si noti che il numero di inode è identico sia per primolink che per il secondo link. 6. echo "cambiamento" >> secondolink Questo è un altro trucco di redirezione della shell; non ci si preoccupi dei dettagli. Si è aggiunta la parola "cambiamento" a secondolink. Verificarlo con cat secondolink. 7. cat primolink Anche primolink ha la parola "cambiamento" in aggiunta! Questo perché primolink e secondolink fanno riferimento al medesimo file. Non importa come lo si chiama quando lo si modifica. 8. chmod a+rwx primolink 15

16 Cambiare i permessi di primolink. Digitare ls -l per confermare che i permessi di secondolink siano cambiati anch'essi. Ciò significa che le informazioni sui permessi sono registrate nell'inode, non nei link. 9. rm primolink Cancellare questo link. Questa è una raffinatezza di rm; in realtà rimuove i link, non i file. Digitare ora ls -l e si noti che secondolink c'è ancora. Si noti anche che il numero di hard link per secondolink si è ridotto a uno. 10. rm secondolink Cancellare l'altro link. Quando non ci sono altri link a un file, Linux cancella il file stesso, cioè il suo inode. Tutti i file funzionano così: perfino alcuni tipi speciali di file come i device (per esempio /dev/hda). Una directory è semplicemente un elenco di nomi di file e numeri di inode, cioè un elenco di hard link. Quando si crea un hard link, si sta solo aggiungendo una coppia nome-numero a una directory. Quando si cancella un file, si sta solo rimuovendo un hard link da una directory. 2.2 Files di configurazione Molti files di configurazione sono presenti nella directory /etc : aliases apache bashrc cshrc crontab default filesystems fstab group hosts inittab issue logrotate.conf mail Il file degli alias di posta utilizzato dai server di posta Sendmail e Postfix I file di configurazione del web server Apache Il file di configurazione globale della Bourne Again SHell. Definisce le funzioni e gli alias per tutti gli utenti. Le altre shell possono avere il proprio file di configurazione globale, come cshrc. come quello sopra ma relativo alla cshell (e le directory cron.*) Configurazione delle operazioni da eseguirsi periodicamente backup,aggiornamenti dei database di sistema, pulizia del sistema, rotazione dei log, ecc... (DIR) Le opzioni di base per certi comandi, come per useradd. File system noti: ext3, vfat, iso9660, ecc... Elenca le partizioni con i relativi punti di montaggio (mount point). File di configurazione dei gruppi di utenti. Utilizzate le utility ombra groupadd, groupmod e groupdel per modificare questo file. Modificatelo manualmente solo se realmente sapete cosa state facendo. Un elenco di macchine che possono essere contattate tramite rete, ma senza la necessità di un servizio di risoluzione dei nomi di dominio (DNS). Questo non ha nulla a che fare con la configurazione di rete del sistema, che si attua con /etc/sysconfig. Informazioni per l'avvio: modalità, numero delle console di testo, ecc... Informazioni sulla distribuzione (versione di rilascio e/o info sul kernel) Rotazione dei log, un sistema che previene la raccolta di una quantità eccessiva di file di log. (DIR logrotate.d) (DIR) Directory contenente istruzioni per il comportamento del mail server. 16

17 motd mtab nsswitch.conf pam.d passwd printcap profile rc.d resolv.conf sendmail.cf sndconfig o sound ssh sysconfig X11 xinetd.* o inetd.conf Message Of The Day: mostrato a chiunque si colleghi al sistema (in modo testuale),può essere usato dall'amministratore di sistema per annunciare servizi/manutenzioni ecc... File system correntemente montati. Si avvisa di non modificare mai questo file. Ordine secondo cui contattare i risolutori dei nomi quando un processo richiede la risoluzione di un nome di host. (DIR) Configurazione dei moduli di autenticazione Elenca gli utenti locali. Utilizzate le utility ombra useradd, usermod e userdel per modificare questo file. Modificatelo manualmente solo quando sapete veramente cosa state facendo. File di configurazione di stampa sorpassato ma spesso ancora frequentemente utilizzato. Non modificatelo manualmente a meno che non sappiate realmente cosa state facendo. Estesa configurazione di sistema dell'ambiente di shell: variabili, proprietà basiche dei nuovi file, limitazioni delle risorse, ecc... (DIR) Directory che definiscono i servizi attivi per ogni run level. Ordine da seguire per contattare i server DNS (solo Domain Name Server). Principale file di configurazione del server Sendmail. Configurazione della scheda sonora e degli eventi sonori. (DIR) Directory contenente i file di configurazione del client e del server secure shell (DIR) Directory contenente i file di configurazione del sistema: mouse, tastiera, rete, desktop, orologio di sistema, gestione dell'alimentazione elettrica, ecc... (specifico di RedHat). (DIR) Impostazioni del server grafico X. RedHat usa Xfree che è richiamato nel nome del principale file di configurazione, Xfree86Config. Contiene inoltre le direttive generali per i window manager disponibili nel sistema, per esempio gdm, fvwm, twm, ecc... (DIR) I file di configurazione dei servizi Internet avviati dal daemon di sistema dei servizi (estesi) Internet (server che non avviano daemon indipendenti). 17

18 2.3 La partenza di Linux Dopo che la macchina viene accesa ed il POST è stato completato, il BIOS identifica la periferica impostata per il boot e passa il controllo al settore di avvio (Master Boot Record) della periferica. Su una macchina GNU/Linux, spesso viene installato sul MBR del disco un bootloader come GRUB o LILO. Il bootloader offre diverse opzioni di avvio, come Arch Linux e Windows configurati in dual-boot. Una volta che viene selezionata Arch, il bootloader carica il kernel (vmlinuz-linux) ed Il ramdisk iniziale (initramfs-linux.img) in memoria e dopo avvia il kernel, passando all'indirizzo di memoria dell'immagine. Dopo essere stato caricato, il kernel decomprime l'initramfs (initial RAM filesystem), che diventa il file system di root iniziale. Il kernel successivamente esegue /init come primo processo. Dopo il montaggio del file system viene eseguito il processo init. Il processo INIT (/sbin/init) è il processo padre di tutti i processi; è un file eseguibile che parte automaticamente all'avvio del sistema. Init determina quali siano i processi da avviare in base al contenuto di /etc/initab, il quale a sua volta fa riferimento a una serie di script contenuti solitamente nella directory /etc/rc.d/. 18

19 BIOS MBR LILO ( Basic Input Output System ) programma residente nella memoria interna del computer, e serve per inizializzare il PC esegue il test delle periferiche collegate, cerca il boot sector da cui far partire il Sistema Operativo ( Master Boot Record ) settore di partenza di un disco, è una piccola partizione di 512 byte e contiene le istruzioni in codice macchina per l'avvio del computer oltre alla tabella delle partizioni. ( Linux Loader ) LILO è il Linux loader più diffuso, permette il boot sia di Linux che di altri sistemi operativi. Generalmente l'installazione di Linux provvede a creare ed installare LILO sulla macchina (se si è scelto di installare il loader direttamente sull'hard disk e non su floppy) ma in caso di kernel upgrade o aggiunta di un nuovo sistema operativo sulla macchina è necessario modificare le impostazioni di Lilo. Tutte le impostazioni di LILO sono definite nel file /etc/lilo.conf che contiene una parte globale e una o più parti relative alle diverse immagini del kernel o sistemi operativi che si vogliono poter caricare. Il comando /sbin/lilo installa sul MBR o sul settore di boot di una partizione il LILO secondo le indicazioni date in /etc/lilo.conf. Al momento del boot LILO inoltre presenta la possibilità di dare comandi vari e di scegliere cosa lanciare. ATTENZIONE: Operare maldestramente con LILO e il MBR può impedire il boot del sistema operativo, si suggerisce sempre di avere un dischetto di boot disponibile da utilizzare in caso di danni o problemi con l'mbr. GRUB (GRand Unifield Bootloader) viene utilizzato in sostituzione di LILO, GRUB è un boot loader multipiattaforma estremamente flessibile e potente. Ha un propria CLI in cui inserire a mano i parametri di boot o può presentare un'interfaccia a menu configurabile tramite il file /etc/grub.conf. Per installare grub sul settore di avvio basta dare il comando: grub-install /dev/hda (o altro nome di device valido) A differenza di LILO non c'è bisogno di ridare il comando ogni volta che si cambia la configurazione. Segue un esempio di /etc/grub.conf che fa le stesso cose del /etc/lilo.conf commentato sopra. KERNEL Il kernel è il programma principale del sistema operativo, che controlla tutti gli altri programmi. La prima cosa che Linux fa quando parte, è commutare il sistema in modalità protetta. Poi si occupa di controllare tutte le periferiche associate, caricandone i driver, questa operazione è evidenziata a video ogni volta che si avvia il sistema. Alla fine il kernel lancia un programma chiamato init. Una volta che init si è avviato, il kernel diventa un gestore di risorse, non più un programma attivo. Init questo programma non lavora in modo uguale per tutte le versioni di Linux, potrebbe occuparsi dei File System, oppure lanciare speciali programmi di controllo e configurazione della rete, rimuovere i file temporanei. Questo programma si occupa anche di lanciare ove previsto, l interfaccia grafica X-Window avviando xdm oppure la shell di sistema con getty. Arrivando in entrambi i casi al programma login. 19

20 2.4 LILO Global Options in /etc/lilo.conf prompt Fa visualizzare un prompt in cui l'utente, al boot, può scegliere cosa bootare, come bootare e dare parametri al kernel. timeout=50 Definisce il tempo in decimi di secondi che lilo aspetta prima di caricare l'immagine di default. default=linux Definisce quale immagine del kernel (o partizione di un altro OS) LILO carica di default. boot=/dev/hda Definisce dove LILO viene installato (in questo caso nell'mbr del primary master). map=/boot/map Definisce la posizione del map file, che contiene la posizione fisica dei kernel in un formato interpretabile da LILO. /boot/map è il valore di default. install=/boot/boot.b Definisce il file che il comando /sbin/lilo installa sul settore di boot. Di fatto è il binario vero e proprio di LILO. /boot/boot.b è il valore di default. message=/boot/message Definisce un file contenente del testo personabilizzabile da visualizzare al boot. linear Genera indirizzi di settore lineari invece di indirizzi di settore/head/cilinder, che possono dare problemi. In breve, è meglio che ci sia. # Label Options image=/boot/vmlinuz Indica dove risiede l'immagine del kernel da caricare. label=linux Definisce il nome della label associato a questa immagine, è quello che si deve scrivere nel LILO command prompt all'avvio. initrd=/boot/initrd img Definisce la posizione dell'immagine dell'initial RAM disk. Il kernel questo file system come RAM disk, ne esegue il file linuxrc e poi monta il vero file system su Hard Disk. Serve, per esempio, per installare un kernel modulare su Hard Disk SCSI, per i quali i driver sono disponibili come moduli e non possono essere caricati direttamente. read-only Indica al kernel di montare la root, sotto definita, in Read-Only durante la fase di boot. In questo modo è possibile eseguire un file system check durante il boot senza rischi. Prima di passare il controllo delle operazioni all'init, il kernel monta la root in Read-Write. root=/dev/hda3 Definisce in quale partizione sta la root del sistema. # Label Options other=/dev/hda1 Indica la partizione in cui risiede un sistema operativo diverso da Linux. optional Omette l'immagine del kernel se non è disponibile at momento della creazione del map file. label=dos Definisce il nome della label associata a questo OS (nello specifico era Window 2000) 20

21 2.5 GRUB Global Options in /etc/grub.conf default=0 Imposta come default la prima "label" sotto indicata timeout=10 Imposta a 10 secondi il tempo di attesa prima di caricare automaticamente l'entry di default. splashimage=(hd0,2)/boot/grub/splash.xpm.gz Indica dove trovare l'immagine che visualizza nella schermata di boot.grub gestisce un immagine con caratteristiche max di 640x colori. NOTA: per cambiare l immagine in ambiente root, digitare i seguenti comandi: #convert geometry 640x480 colors <file_sorgente> splash.xpm #gzip splash.xpm #cp splash.xpm.gz /boot/grub password --md5 $1$6ðòüZßXÈ$bXTLL8IbDhnwmjyaNNcPG. Imposta una password, criptata, da fornire per poter accedere al menu o alla command-line. title Red Hat Linux ( ) Il titolo della prima scelta del menu ("label") root (hd0,2) Hard disk (primary master) e partizione (terza) del device di root. kernel /boot/vmlinuz root=/dev/hda3 Il path per il kernel initrd /boot/initrd img Il path per il file system da montare su Ram Disk al boot. title DOS Il titolo della seconda scelta del menu rootnoverify (hd0,0) Hard disk (primary master) e partizione (prima) del device di root. Non tenta di montare la partizione. chainloader +1 Prova a caricare in cascata il primo blocco della partizione sopra definita. dare parametri al kernel. 21

22 2.6 Inittab inizializzazione del sistema /etc/inittab e' il file di configurazione di init, il primo processo che viene lanciato al boot, dopo il caricamento del kernel. Esso contiene gli script che vengono lanciati per l'inizializzazione del sistema, configurazioni come il runlevel di default e alcune impostazioni come i comandi abbinati ad una sequenza di tasti oppure ai messaggi inviati dall'ups. Analizzare e comprendere la logica di questo file è molto utile per conoscere un sistema Unix con cui si ha poca familiarità: di fatto, analizzando i comandi e gli script che vengono eseguiti è possibile ricostruire tutto il processo di start-up del sistema. Ogni entry del file segue la seguente sintassi: id : runlevels : action : process ID RUNLEVELS ACTIONS PROCESS Sequenza di 4 caratteri o meno che identifica in modo univoco la entry. Per quanto riguarda le entry relative alle getty, l'id deve corrispondere al suffisso della getty stessa. 1:2345:respawn:/sbin/mingetty tty1 La lista dei run level per cui questa entry e' valida. La modalita' con cui viene eseguito il comando vero e proprio. Le action principali: respawn: Ri-esegue il comando se termina. Tipicamente usato per i getty sulla console. wait: Esegue lo script o il comando ed aspetta la sua conclusione prima di procedere. once: Esegue il comando una sola volta quando il sistema entra nel runlevel configurato boot: Esegue il processo durante il boot ed ignora la entry relativa al runlevel Il comando o script che effettivamente viene lanciato. Vediamo un esempio tipico di una distribuzione RedHat Linux. Su altri sistemi Unix questo file può cambiare nella forma (ma non nella sintassi) Parametri RUNLEVEL Per modificare la modalità di partenza in modo permanente agire con l editor sul file /etc/inittab modificare la riga: id : 5 : initdefault : 0 - Shutdown server 1 - Take server to single-user mode 2 - Start X Window (used by Debian) 3 - Full multi-user text mode 5 - Start X Window 6 - Reboot server Attenzione a non mettere 0 oppure 6 si avrebbe una condizione instabile del sistema. Per cambiare l interfaccia in modo non permanente utilizzare il comando # init 1 per l utenza di root oppure $ sudo init 1 per l utente non di root previa configurazione file sudoers 22

23 2.6.2 File: /etc/inittab (da D51 TB)... # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:3:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6... pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" # Run gettys in standard runlevels 1:245:respawn:/sbin/mingetty tty1 2:245:respawn:/sbin/mingetty tty2 3:245:respawn:/sbin/mingetty tty3 4:245:respawn:/sbin/mingetty tty4 5:245:respawn:/sbin/mingetty tty5 6:245:respawn:/sbin/mingetty tty6 # Run xdm in runlevel 5 x:5:respawn:/etc/x11/prefdm -nodaemon La prima linea non commentata definisce il runlevel di default del sistema(3). Cosa succede quando il kernel richiama init: Per prima cosa vine eseguito lo script di inizializzazione, /etc/rc.sysinit (uno script Bash). Se si avvia in single user mode(runlevel 1 o S), verrà eseguito lo script /etc/rc.single. Se viene avviato un altro runlevel(2-5), verrà lanciato invece lo script /etc/rc.multi. L'ultimo script ad essere eseguito sarà /etc/rc.local (tramite /etc/rc.multi) che di default è vuoto. 23

24 /etc/rc.sysinit Il file /etc/rc.sysinit è un grande script che si occupa di tutta la configurazione dell'hardware, e di alcuni compiti di inizializzazione. Può essere identificato dal suo primo compito, inviare al video le linee: Arch Linux Copyright Judd Vinet Copyright Aaron Griffin Distributed under the GNU General Public License (GPL) Una veloce visione di alcuni suoi compiti: Includere il file /etc/rc.conf. Includere il file /etc/rc.d/functions. Visualizzare un messaggio di benvenuto. Montare vari filesystem virtuali. Creare i file per le periferiche. Avviare "minilogd". Inviare i messaggi a "dmesg". Configurare l'orologio del bios. Svuotare il file /proc/sys/kernel/hotplug. Avviare udev e controlla la presenza degli eventi di udev(udev events). Avviare l'interfaccia di "loopback". Caricare i moduli presenti all'interno dell'array MODULES dal file /etc/rc.conf. Configurare eventuali array RAID, file system criptati o LVM. Effettuare controlli forzati dei filesystem (fsck) delle partizioni secondo le impostazioni di /etc/fstab. Montare le partizioni locali e la swap(le condivisioni di rete non verranno montate fino a che un profilo di rete non sarà attivo). Attivare la swap. Impostare il nome macchina(hostname), la lingua(locale) e l'orologio di sistema secondo le impostazioni di /etc/rc.conf. Rimuovere vari residui dei file temporanei come /tmp/*. Configurare la lingua, la console e la mappatura della tastiera. Impostare i caratteri per la console. Scrivere gli output dei comandi in /var/log/dmesg.log. /etc/rc.sysinit è uno script e non un file di configurazione. Esso include (quindi ottiene le variabili da) rc.conf per le configurazioni e /etc/rc.d/functions per le funzioni che producono l'output grafico(colori, allineamento, ad esempio il passaggio dei demoni da 'busy' a 'done' ecc.). Non c'è bisogno di modificare questo file, salvo non si voglia farlo per provare a velocizzare il processo di boot (a proprio rischio e pericolo). /etc/rc.single La modalità a singolo utente(single-user mode) si avvierà come utente root, e dovrebbe essere usata se il sistema non riesce ad avviarsi normalmente o in caso di manutenzione del sistema. Questo script assicura che non siano in esecuzione altri demoni se non quelli essenziali: syslog-ng ed udev. La modalità single-user è utile per la manutenzione del sistema essa infatti impedisce agli utenti di connettersi da remoto evitando quindi che vengano effettuate operazioni che possano portare a perdite di dati o danneggiamenti. Dalla modalità single-user gli utenti possono tornare ad effettuare l'accesso alla normale sessione (multiuser) digitando "exit" nel prompt dei comandi. 24

25 /etc/rc.multi /etc/rc.multi viene eseguito per tutti i runlevel multiutente (es. 2,3,4 e 5), cioè ad ogni normale avvio. Normalmente, gli utenti non si accorgono del passaggio da rc.sysinit a rc.multi perché anche esso usa le stesse funzioni per mandare messaggi a video. Questo script ha tre compiti: 1. Innanzitutto, esegue sysctl(per modificare i parametri del kernel a runtime) facendo riferimento alle configurazioni presenti in /etc/sysctl.conf. Arch prevede già alcune opzioni all'interno del file; principalmente si tratta di opzioni di rete. 2. Secondo, e più importante, si occupa di avviare i demoni, secondo la disposizione nell'array DAEMONS in rc.conf. 3. Infine, esegue /etc/rc.local. /etc/rc.local /etc/rc.local è lo script di avvio locale per le sessioni multiutente. È vuoto di default, è un ottimo posto dove inserire eventuali comandi che devono essere eseguiti alla fine del processo di boot. Alcune configurazioni (caricamento di moduli, cambiamenti nei font della console, accensione di periferiche) solitamente hanno un apposito file dove poter essere inserite. NOTA: Per evitare confusione, assicurarsi che qualsiasi comando si voglia aggiungere al file rc.local non sia possibile inserirlo in /etc/profile.d, o in qualsiasi altro file di configurazione. Mentre si modifica questo file, tenere presente che verrà eseguito dopo il setup di base (moduli/demoni), verrà eseguito come utente root, e sia che il server grafico (X) sia avviato o meno File: /etc/rc.local (da D51 TB) touch /var/lock/subsys/local modprobe prcspkr ethtool -s eth0 speed 100 duplex full autoneg off ethtool -s eth1 speed 100 duplex full autoneg off ethtool -s eth2 speed 100 duplex full autoneg off /usr/barco_x/bin/xbarco -ac -cf pvs6600d_2048x2048_usb -auth etc/x11/xdm/authdir/authfiles/a:0-2alx77 & sleep 2 su linate -c "/usr/x11r6/bin/xterm -e /usr2/linate/startup_menu/startup_menu" && su - linate 25

26 3. La SHELL: operare da riga di comando 3.1 Cos è una shell Una shell può essere meglio paragonata ad un mezzo per parlare con il computer, un linguaggio. Molti utenti conoscono quell'altro linguaggio, il linguaggio punta e clicca del desktop, ma con esso il computer guida la conversazione, mentre l'utente assume il ruolo passivo di selezionare le funzioni che questo gli presenta. E' molto difficile per un programmatore includere tutte le opzioni e gli usi possibili di un comando in un formato GUI. Così le GUI sono quasi sempre meno potenti del comando o dei comandi che formano il backend [cioè su cui queste si appoggiano per svolgere le varie funzioni]. La shell, d'altro canto, è una maniera evoluta di dialogare con il sistema poiché consente la conversazione nei due sensi e di assumere l'iniziativa. Entrambe le parti della comunicazione sono uguali, così si possono sperimentare nuove idee. La shell permette all'utente di gestire un sistema in modo piuttosto flessibile e, come ulteriore vantaggio, di automatizzare i compiti. 3.2 Tipi di shell Come la gente conosce linguaggi e dialetti differenti, così il computer conosce tipi diversi di shell: - sh o Bourne Shell: la shell originale ancora utilizzata su sistemi UNIX e in ambienti collegati a UNIX. E' la comune shell, un piccolo programma con poche funzioni. Quando è in modalità POSIXcompatibile bash emula questa shell. - bash Shell: la shell GNU standard, intuitiva e flessibile. Probabilmente molto consigliabile sia ai principianti sia, contemporaneamente, agli esperti e professionisti essendo uno strumento molto potente. In Linux bash è la shell standard per i comuni utenti. Tale shell viene anche detta superinsieme della shell Bourne, un insieme di aggiunte e plugin. Ciò significa che la shell Bourne Again è compatibile con quella Bourne: i comandi che funzionano con sh, funzionano pure con bash. Comunque non è sempre vero il contrario. Questa è la shell che si andrà ad analizzare. - csh o C shell: la sintassi di questa shell assomiglia a quella del linguaggio di programmazione C. Qualche volta viene richiesta dai programmatori. - tcsh o Turbo C shell: un superinsieme della comune C shell, che aumenta la semplicità e la velocità. - ksh o Korn shell: apprezzata qualche volta da persone con esperienze di UNIX. E' un superinsieme della Bourne shell: in configurazione base è un incubo per i principianti. # > cat /etc/shells Si possono visualizzare tutte le shell conosciute da Linux. Mentre per conoscere la shell in uso digitare echo $SHELL In fase di login, il sistema legge nell ultimo campo presente in /etc/passwd lanciare. la shell da 26

27 Caso csh Una shell di login inizia eseguendo i comandi dal sistema i file /etc/csh.cshrc. e /etc/csh.login. Quindi esegue comandi dai file nella home directory dell'utente: prima ~/.tcshrc (+) o se ~/.tcshrc non viene trovato, ~/.cshrc, poi ~/.history (o il valore della variabile shell histfile ), poi ~/.login e infine ~/.cshdirs (o il valore della variabile di shell dirsfile ) (+). La shell può leggere /etc/csh.login prima anziché dopo /etc/csh.cshrc. e ~/.login prima invece di dopo ~/.tcshrc o ~/.cshrc e ~/.history, se così compilato vedere la versione variabile shell. (+) Caso bash Una shell di login inizia eseguendo i comandi dal sistema i file /etc/profile /etc/bashrc Quindi esegue comandi dai file nella home directory dell'utente: prima ~/.bash_profile ~/.bash_login ~/.bashrc 3.3 Il comando man man mostra la guida in linea relativa al comando con qui e' stato richiamato man. es: man ls Questo comando mostra l'help in linea relativa al comando ls. 3.4 Il comando cat cat concatena i suoi ingressi e li scrive sullo standard output. Se vengono specificati dei file, cat considera questi come ingressi; altrimenti prende lo standard input. -n --number le righe vengono numerate -v --show-nonprinting vengono visualizzati i caratteri di controllo presenti negli ingressi esempi cat pippo.txt cat -n pippo.txt Visualizza il contenuto di pippo.txt come prima, ma le righe vengono numerate cat pippo.txt pluto.txt Concatena i file nell'ordine in cui vengono proposti e li visualizza cat solemare.tgz.1 solemare.tgz.2 > solemare.tgz cat solemare.tgz.1 > solemare.tgz cat solemare.tgz.2 >> solemare.tgz 27

28 3.5 Il comando which Il comando which simula la ricerca che farebbe la shell per avviare i programmi indicati negli argomenti e determina la posizione di quelli che verrebbero scelti. Ciò è utile per sapere: sia dove si trova un comando determinato, sia quale programma viene scelto effettivamente nel caso ne esistano diversi con lo stesso nome collocati in posizioni differenti nell albero di directory. #> which [programma] es.) which more In pratica, invece di essere un programma vero e proprio, potrebbe trattarsi semplicemente di un alias a un comando di shell. In effetti, which compie lo stesso ruolo del comando type -path della shell Bash. 3.6 Il comando whereis IIl programma whereis individua i file binari, i sorgenti e le pagine di manuale dei file specificati nell argomento. #> whereis [opzioni ] [file] Si veda eventualmente la pagina di manuale whereis per le eventuali opzioni 28

29 4. La SHELL: operare da riga di comando 4.1 Il percorso Quando si vuole che il sistema esegua un comando, non bisogna quasi mai digitarne anche il percorso (path) completo di quel comando. Per esempio, sappiamo che il comando ls si trova nella directory /bin (controllare con which a ls), cosicché non dobbiamo inserire il comando /bin/ls affinché il computer elenchi il contenuto della corrente directory. La variabile d'ambiente PATH si occupa di ciò. Tale variabile elenca le directory del file system in cui si possono trovare i file eseguibili e così risparmia all'utente molte battiture di caratteri e memorizzazioni delle posizioni dei comandi. Così PATH contiene solitamente molte directory aventi bin da qualche parte nel loro nome, come mostra l'utente qui sotto. Il comando echo si usa per vedere il contenuto ( $ ) della variabile PATH: # echo $PATH /opt/local/bin:/usr/x11r6/bin:/usr/bin:/usr/sbin:/bin In questo esempio, le directory /opt/local/bin, /usr/x11r6/bin, /usr/sbin, /usr/sbin e /bin vengono scandite alla ricerca del programma richiesto. Non appena c'è una corrispondenza, la ricerca viene terminata, anche se non tutte le directory nel percorso sono state passate. 4.2 Percorsi assoluti e relativi Un percorso (path), cioè la strada da seguire nella struttura ad albero per raggiungere un certo file, può essere descritto partendo dal tronco dell'albero (la / o directory radice). In tal caso, il percorso inizia con una sbarra e viene chiamato percorso assoluto, dal momento che non possono esserci errori: nel sistema solo un file potrà corrispondervi. Nell'altro caso, il percorso non inizia con una sbarra ed è possibile confondere tra ~/bin/wc (nella directory home dell'utente) e bin/wc in /usr/bin. I percorsi che non iniziano con una sbarra sono sempre relativi. Nei percorsi relativi usiamo anche. e.. per indicare la directory corrente e quella genitrice. Una coppia di esempi pratici: - Quando volete compilare del codice sorgente, spesso la documentazione di installazione vi dice di avviare il comando./configure, che lancia il programma configure collocato nella directory corrente (creata con il nuovo codice) invece di eseguire un altro programma configure presente altrove nel sistema. - Nei file HTML i percorsi relativi sono spesso utilizzati per creare un insieme di pagine facilmente trasferibili in altri posti: <img alt= Garden with trees src=../images/garden.jpg > - Notate la differenza ancora una volta: theo:~> ls /mp3 ls: /mp3: No such file or directory theo:~> ls mp3/ oriental/ pop/ sixties/ 29

30 4.3 Il comando ls Oltre a visualizzare il nome del file, ls può fornire una quantità di ulteriori informazioni, ad esempio il tipo di file. E' inoltre capace di mostrare i permessi di un file, la sua dimensione, il numero di inode, data e ora di creazione, proprietari e quantità di collegamenti ad esso. Con l'opzione -a di ls possono essere visualizzati i file che normalmente sono nascosti alla vista. questi sono i file che hanno il nome iniziante con un punto. Una coppia di esempi tipici include i file di configurazione della vostra home directory. Se avete lavorato per un po' con un certo sistema, avrete notato che decine di file e directory sono stati creati senza essere stati elencati in un indice di directory. Oltre a ciò, ogni directory contiene un file chiamato solo con un punto (.) ed un altro con due punti (..) che sono utilizzati in combinazione con il loro numero di inode per determinare la posizione della directory nella struttura ad albero del file system. In realtà dovreste leggere le pagine Info di ls, dal momento che si tratta di un comando molto frequente con molte opzioni utili. Le opzioni si possono combinare, come succede con molti comandi UNIX e le loro opzioni. Una combinazione comune è ls -al: mostra un lungo elenco di file e le loro proprietà così come le destinazioni a cui punta ciascun collegamento simbolico. $> ls -latr Mostra gli stessi file, ma ora in ordine di ultima modifica inverso in modo che i file modificati più di recente appaiono alla fine dell'elenco. Ecco qui un paio di esempi: $> ls $> ls Albums/ Radio/ Singles/ gene/ index.html./.thumbs Radio gene/../ Albums/ Singles/ index.html $> ls -l Radio/ total 8 drwxr-xr-x 2 krissie krissie 4096 Oct Carolina/ drwxr-xr-x 2 krissie krissie 4096 Sep Slashdot/ $> ls -ld Radio/ drwxr-xr-x 4 krissie krissie 4096 Oct Radio/ $> ls -ltr total 20 drwxr-xr-x 4 krissie krissie 4096 Oct Radio/ -rw-r--r-- 1 krissie krissie 453 Jan index.html drwxrwxr-x 30 krissie krissie 4096 Oct 20 17:32 Singles/ drwxr-xr-x 2 krissie krissie 4096 Dec 4 23:22 gene/ drwxrwxr-x 13 krissie krissie 4096 Dec 21 11:40 Albums/ $> ls las esegue una lista ordinata per dimensione del file In molte versioni Linux ls è normalmente un alias di ls --color. Questa caratteristica permette di vedere il tipo dei file senza applicare nessuna opzione a ls. Per fare ciò, ogni tipo di file ha un proprio colore. Lo schema standard si trova in /etc/dir_colors per personalizzare lo schema di colori, è necessario copiare questo file nella propria directory $HOME chiamandolo.dir_colors (attenzione agli attributi). Nota: La variabile $LS_COLORS contiene i colori in uso 30

31 $> dircolors p per visualizzare lo schema dei colori Schema di default dei colori in color-ls Colore Tipo di file Colore Tipo di file blu directory azzurro collegamenti rosso archivi complessi giallo dispositivi bianco file di testo verde file eseguibile rosa immagini rosso lamp. collegamenti interrotti Maggiori indicazioni si trovano nella pagina man. Nei primi tempi le stesse informazioni [sul tipo di file] venivano rappresentate applicando dei suffissi ad ogni nome di file non standard. Per l'uso in monocromatico (come la stampa di un elenco di directory) e per una leggibilità generale, è ancora utilizzato questo schema: Schema base dei suffissi per ls Carattere Tipo di file Carattere Tipo di file Nessuno File collegamento / directory = dispositivo/socket * file eseguibile Named pipe Una descrizione completa delle funzionalità e caratteristiche del comando ls può essere letta con: info coreutils ls. Nota: in linux esistono già due comandi semplificati per poter visualizzare i file sullo schermo; il primo è dir che visualizza i file in senso orizzontale senza attributi, può servire per trovare in modo immediato il nome di un file mentre il comando vdir visualizza i file in modo verticale inserendo anche gli attributi. Entrambi i comandi non visualizzano i file legati allo user cioè che iniziano con un punto. 4.4 Controllare la propria posizione con il comando pwd Muovendosi su o giù per le directory spesso si perde la cognizione di dove ci si trova, specialmente prima di eseguire un comando importante che potrebbe compromettere il funzionamento dei programmi. Per questo motivo esiste un comando chiamato pwd che permette di sapere in quale directory ci si trova visualizzando tutta la path partendo da root. 4.5 Creare o Rimuovere directory Una maniera per tenere le cose in ordine è quella di assegnare a certi file locazioni specifiche di base creando directory e sottodirectory (o cartelle e sottocartelle se preferite). Ciò si fa con il comando mkdir crea una o più directory. E' necessario avere permessi di scrittura nella directory in cui si vogliono creare nuove sotto directory. Comune in tutti gli Unix. mkdir [opzioni] nomedirectory -m ### Specifica i permessi della directory creata (di default sono 777). -p Crea le directory padre intermedie, nel caso non esistano. es: mkdir -p /usr/local/test/magazzino/strumenti crea la directory strumenti e anche le directory magazzino, test, local, usr nel caso non esistano. Senza l'opzione -p la directory "nuova" si poteva creare se esistevano già tutte le precedenti. 31

32 Il comando rmdir rimuove directory (ma non il loro contenuto). Quindi non cancella directory non vuote, a meno di usare l opzione -R rmdir [opzioni] directory -p Rimuove la directory specificata e ogni directory genitore che dovesse essere rimasta vuota chiedendo la conferma. -verbose per ogni directory rimossa stampa un messaggio 4.6 Come muoversi attraverso le directory Il comando cd è forse il primo comando da imparare, serve per muoversi attraverso le directory. Esempio: albero delle directory: /home/antonio/documenti/personali/fattura10.txt posizione corrente: /home/antonio per portarsi nella directory dove si trova il documento fattura 10.txt, digitare il comando: cd documenti/personali. Per portarsi nella propria directory home digitare il comando cd mentre per portarsi nel primo livello dell'albero delle directory digitare il comando cd / per risalire di una posizione nell albero, digitare il comando cd.. attenzione tra la parola cd e i due punti c è uno spazio! N.B. il punto o punto punto, sono due directory ben definite. il primo si riferisce alla directory corrente mentre il secondo a quella padre. Se esiste una directory settata come variabile, è possibile trasferire il controllo in essa, con il comando: cd $CONFIG dove sia stata precedentemente dichiarata la variabile CONFIG con un export export CONFIG = /home/archivio/config 4.7 Creare un Link con il comando ln modo1: (l'ultimo argomento è una directory esistente) Per ogni file specificato crea nella directory un hard link collegato a quel file, avente lo stesso nome del file. ln [OPZIONE...] FILE_ORIGINE... DIRECTORY modo2: Crea un hard link di nome LINK_DA_CREARE collegato a FILE_ORIGINE. Se non è specificato LINK_DA_CREARE, viene creato un link nella directory corrente avente lo stesso nome del file di origine. 32

33 ln [OPZIONE...] FILE_ORIGINE [LINK_DA_CREARE] opzioni -b, --backup -f, --force -i, --interactive -s, --symbolic -v, --verbose effettua una copia di sicurezza di eventuali file che stanno per essere rimossi effettua eventuali sovrascitture di file esistenti senza fare domande chiedi conferma, prima di procedere con eventuali sovrascritture viene creato un link simbolico invece che hard elenca i collegamenti che sono stati effettuati Questo esempio esegue un link del file pluto nel file pippo.lnk es) ln pluto /home/pluto/pippo.lnk 4.8 Spostare un file con il comando mv Sposta i file specificati con [FILE_ORIGINE...] nella directory DIRECTORY. mv [OPZIONE...] FILE_ORIGINE... DIRECTORY mv [OPZIONE...] FILE_ORIGINE FILE_DESTINAZIONE opzioni -b, --backup -i, --interactive -v, --verbose crea copie di backup dei file che stanno per essere mossi -f, --force non chiede conferma quando l'operazione indicata richiede la sovrascrittura (con conseguente perdita) di file esistenti prima di procedere ad eventuali sovrascritture di file esistenti chiede conferma mentre sposta i file visualizza in uscita i loro nomi esempi: mv jane.png giungla.png /home/tarzan mv libro.txt libro.old 4.9 Rimuovere un file con il comando rm rm rimuove i file specificati, non però le directory. opzioni -f, --force -i, --interactive -r, -R, --recursive es. rm pippo.txt cancella senza fare domande chiede all'utente la conferma di ogni rimozione se viene specificata questa opzione vengono rimosse ricorsivamente anche eventuali directory e il loro contenuto 33

34 4.10 Copiare un file con il comando cp Copia i file specificati con [FILE_ORIGINE...] nella directory DIRECTORY. o in un file FILE_DESTINAZIONE. cp [OPZIONE...] FILE_ORIGINE FILE_DESTINAZIONE opzioni -b, --backup -f, --force -i, --interactive -R, --recursive -v, --verbose crea copie di backup dei file che stanno per essere sovrascritti non chiede conferma quando l'operazione indicata richiede la sovrascrittura (con conseguente perdita) di file esistenti prima di procedere ad eventuali sovrascritture di file esistenti chiede conferma copia ricorsivamente directory e sottodirectory mentre copia i file visualizza in uscita i loro nomi -p, --preserve Mantiene i diritti,la data,lo user/group del file origine esempi cp bianca.txt neve.txt /home/skywalker cp p claudia claudia.prova 34

35 5. I permessi e i privilegi in un sistema Linux 5.1 Permessi sui file Un sistema multiutente necessita di una soluzione per la protezione dei file e per garantire la sicurezza delle attività degli utenti come quella del sistema stesso. In sistemi operativi Unix, ogni cosa è un file con annesse le informazioni necessarie per la gestione. Analizziamo le informazioni di alcuni file: $ ls -l -rw-r--r-- 2 utente gruppo 0 Nov 23 01:54 fileuno lrwxrwxrwx 1 utente gruppo 4 Nov 23 01:55 link -> file drwxr-xr-x 2 utente gruppo 1024 Nov 23 01:57 Directory Utilizzando il comando ls come indicato visualizziamo i file nella directory mostrando i permessi relativi espressi dalle prime 10 combinazioni di lettere visualizzate. La prima lettera può variare come segue: - un file comune d c p s l una directory un character special file un named pipe un file socket un link simbolico Nell esempio visto abbiamo riscontratato un file link, una directory e un file comune. Le rimanenti 9, prese a 3 a 3, rappresentano i permessi rispettivamente per l utente proprietario, il gruppo e agli altri, gli utenti nel sistema non considerati nelle prime due classi. Per modificare i permessi sui file è necessario utilizzare il comando chmod utilizzando determinate combinazioni numeriche presentate sotto: Se desideriamo cambiare i permessi sul file fileuno dovremo digitare una combinazione di numeri nella forma seguente: Numero Ottale Permesso Descrizione Nessuna autorizzazione 1 --x Esecuzione 2 -w- Scrittura 3 -wx Scrittura, Esecuzione 4 r-- Lettura 5 r-x Lettura, Esecuzione 6 rw- Lettura, Scrittura 7 rwx Lettura, Scrittura, Esecuzione 35

36 5.2 Come cambiare i privilegi di un file chgrp il proprietario o root può cambiare il gruppo associato ad un certo file. chgrp documenti fattura10.txt definisce che il file fattura10.txt fa parte del gruppo documenti chgrp -R users /home/m.rossi/archivio Opzione -R cambia ricorsivamente la proprietà group di tutte le directory richiamate nel percorso. chown Il proprietario o root può cambiare utente o gruppo del file specificato. $ > chown pippo documento.txt modifica il nome del proprietario del file documento.txt in pippo $ > chown pippo:parenti documento.txt modifica il nome del proprietario del file documento.txt in pippo e il gruppo in parenti $ > chown :parenti documento.txt modifica il nome del gruppo del file documento.txt in parenti Opzione -R cambia ricorsivamente la proprietà proprietario e group di tutte le directory richiamate nel percorso. chmod 36 Mediante questo comando e' possibile cambiare i permessi di lettura, scrittura o esecuzione, ad un file. chmod +w fattura15.txt Abilita il permesso di scrittura da parte dell'utente sul file fattura15.txt. chmod -r-w-x pippo Non permette l'accesso al file pippo in lettura, scrittura ed esecuzione. chmod +r+w+x Abilita l'esecuzione e la lettura da parte di tutti e la scrittura da parte del solo utente. chmod -R ugo+w Documenti abilita l'accesso alla directory Documenti, all'utente (user u), al gruppo (group g) e agli altri utenti (other o) in scrittura. -R cambia ricorsivamente i permessi delle directory e dei file in loro contenuti. E anche possibile utilizzare il codice binario a gruppi di tre per definire i premessi del file o directory. chmod 754 Fattura12.txt scomponiamo il primo numero: 7 = in binario significa r w x abilitati lettura scrittura esecuzione per l utente. 5 = significa r - x abilitati solo lettura scrittura per il gruppo 4 = significa r - - abilitata solo la lettura per tutti gli altri utenti nell insieme si leggerà : -rwxr-xr- 1 M.Rossi Documenti 124 nov Fattura12.txt

37 5.3 Configurazione permessi con umask Il comando umask crea una maschera di permessi di default, cioè ogni utente, ha per definizione, una configurazione di base della maschera dei permessi, cioè quando crea una directory o un file, esso avrà per configurazione [ r w x r - - r - - ]. Questo significa che ogni sua directory o file, porta essere manipolata completamente da lui mentre gli apparteneti al suo gruppo e tutti gli altri, potranno solo leggere il file o dalla directory, esattamente il valore ottale 755. Questa maschera è settata a 022 Considerando il valore ottale 777 come il massimo di valori per ogni categoria, si deve fare un operazione di sottrazione cioè come nel caso prima, ne risulta 022. La sitassi è la seguente: # > umask presenta la maschera dei permessi selezionata # > umask 022 setta la maschera di default dei permessi Ovviamente ogni utente ha facoltà di definire la propria maschera. NOTA: le modifiche saranno valide per tutti i file/directory creati dopo la variazione. 5.4 La modalità SUID SGID - Sticky Assieme a questi 9 bit ne esistono altri tre, posti all inizio, che permettono di indicare altrettante modalità: SUID, SGID e Sticky. Si tratta di attributi speciali che riguardano prevalentemente i file eseguibili. Solitamente non vengono usati e per lo più gli utenti comuni ignorano che esistano. Come si può osservare sotto, questa indicazione prende il posto del permesso di esecuzione. Nel caso in cui il permesso di esecuzione corrispondente non sia attivato, la lettera (s o t ) appare maiuscola. Di seguito un esempio pratico: 1777 si avrà come risultato r w x r w x r w t 2777 si avrà come risultato r w x r w s r w x 3777 si avrà come risultato r w x r w s r w t 4777 si avrà come risultato r w x r w x r w x 5777 si avrà come risultato r w x r w x r w t 6777 si avrà come risultato r w s r w s r w x 7700 si avrà come risultato r w s - - S - - T 1. Sticky (Save text image), se si tratta di un eseguibile, durante l esecuzione salva l immagine testo nella memoria virtuale (in sistemi Unix recenti questo tipo di richiesta è perfettamente inutile e non viene presa in considerazione), se invece si tratta di una directory, comporta che la cancellazione o la ridenominazione di un file (o di una sottodirectory) sia ammesso solo se eseguita dal proprietario di questo; 2. SGID (Set group identifier), se si tratta di un eseguibile, attiva il numero del gruppo (GID) durante l esecuzione, ovvero, attribuisce all eseguibile in funzione i privilegi del gruppo a cui appartiene, se si tratta invece di una directory, comporta che i file creati al suo interno acquistino l appartenenza al gruppo della stessa directory; 3. SUID(Set user identifier), se si tratta di un eseguibile, attiva il numero dell utente (UID) durante l esecuzione, ovvero, attribuisce all eseguibile in funzione i privilegi dell utente a cui appartiene. 37

38 5.5 Cambiare gli attributi di un file con il comando chattr La stringa che permette di specificare quali attributi attivare o disattivare è analoga a quella usata con chmod per i permessi, ciascun attributo è identificato da una lettera, per attivare un attributo occorrerà farla precedere dal carattere +, mentre se si vuole cancellare un attributo già impostato si dovrà usare il carattere - ; come per chmod si possono specificare insieme anche più attributi, ed usare il carattere = per impostare la lista esatta di quelli che si vogliono impostare. Come accennato alcuni attributi, che solo l'amministratore può impostare, permettono di utilizzare delle speciali restrizioni di accesso, ad esempio con a si attiva l'append ag che consente soltanto di aggiungere dati ad un file mentre il contenuto corrente non può essere modificato; questo può essere utilizzato per salvaguardare i file di log da eventuali modifiche, accidentali o meno. $ > chattr +i documento.txt Il comando appena digitato rende immutevole il file documento.txt da modifiche, aggiunte e non si potranno creare link a quest ultimo. Se volessimo rendere immutevole una directory con tutti i file presenti al suo interno avremmo dovuto digitare: $ > chattr +/- i documenti/ attiva il cosiddetto immutable ag, il file non può essere cancellato o rinominato, non si possono creare hard link, nè modificarne il contenuto; solo l'amministratore può attivare o disattivare questo attributo $ > chattr +/- a documento.txt Attiva o disattiva il cosiddetto append ag, che consente la scrittura solo in coda al file; il contenuto corrente non può essere modificato e solo l'amministratore può attivare o disattivare questo attributo. $ > chattr +/- c documento.txt Un file con l attributo c viene automaticamente compresso sul disco dal kernel. La lettura del file restituisce i dati decompressi mentre in scrittura ogni informazione viene compressa e poi scritta sul disco. $ > chattr +d documento.txt L attributo d candida un file per il backup tramite il comando dump. $ > chattr +s documento.txt Abbiamo visto che per aggiungere attributi è stato utilizzato il carattere +. Per toglierli dobbiamo alternativamente utilizzare il carattere - come nell esempio seguente: $ > chattr -u documento.txt Richiede che alla cancellazione il contenuto del file sia salvato in modo da poterne consentire il recupero. $ > lsattr [nome file] il comando lsattr permette di conoscere gli attributi del file 5.6 l comando su per cambiare utente Il comando su lancia una shell con i privilegi dell'utente indicato. Es: su - fdpmil Questo comando lancia una shell con i privilegi di fdpmil. 38

39 6. Gestione utenti 6.1 Creare Utenti e Gruppi Per inserire nel sistema un nuovo gruppo o un novo utente, è necessario avere i privilegi di root : # > groupadd nome_gruppo Verrà creato il gruppo nome_gruppo ma non essendoci user associati, apparentemente sarà latente.e possibile visualizzare tutti i gruppi inseriti nel sistema visualizzando il file /etc/gshadow. Per inserire uno user nel sistema, si usa il comando useradd o adduser # > useradd [opzioni] nome_user Se si usa il comando senza opzioni, il sistema creerà il nuovo user dandogli i parametri di default ove previsti non assegnerà alcuna password e modificherà solo il file /etc/passwdw e etc/shadow. Creerà un gruppo con lo stesso nome dell user e lo assegnerà ad esso come gruppo primario. Creerà una directory in /home con lo stesso nome dell user e copierà i file da /etc/skel (skeleton = ossatura) in questa. E opportuno quando si definisce il nome di un utente, non utilizzare mai caratteri accentati, segni di punteggiatura o altri caratteri perché potrebbero creare problemi nel riconoscimento. opzioni - d home-directory definisce quale sarà la home-directory, se questa opzione viene omessa la home-directory sarà /home/[nomeutente] copiando al suo interno, i file presenti in /etc/skel. - g gruppo definisce il gruppo primario a cui apparterrà il nuovo utente. - G gruppo, gruppo, etc.. definisce tutti i gruppi secondari a cui il nuovo utente dovrà appartenere, i gruppi devono essere separati da una virgola. - p password cifrata imposta la password di utente ma richiede come parametro una password specificata direttamente in forma cifrata, per cui normalmente non si usa mai questa opzione, ma si provvede ad eseguire il comando passwd in un secondo tempo. - s path_shell Imposta la shell di default per l utente. - e YYYY-MM-DD Imposta una data di scadenza dell utente dopodichè sarà disabilitato anche se in realtà non verrà cancellato dal sistema ma verrà posta una flag nel file etc/passwd (vedere il comando passwd a riguardo. - f giorni_di_inattività Specifica dopo quanti giorni un utente se non si connette, sarà disabilitato. 39

40 6.2 il comando groups Per sapere a quali gruppi appartiene, si usa il comando groups verrà visualizzata la lista dei gruppi a cui appartiene, il primo della lista è quello primario. # > groups root bin daemon sys adm disk wheel Una volta creato un utente è possibile modificarne le proprietà con il comando usermod; il comando è simile a useradd, prende come argomento il nome dell'utente che si vuole modificare e molte opzioni (quelle elencate sopra) sono identiche e hanno lo stesso significato. Nota: si tenga presente però che l'uso dell'opzione -G, che permette di indicare i gruppi aggiuntivi di cui l'utente fa parte, richiede che si passi come parametro la lista completa (sempre separata da virgole) degli stessi. Questo significa che se non si inseriscono nella lista anche i gruppi di cui l'utente fa già parte, esso ne sarà rimosso. #> usermod [opzioni] nome_user opzioni aggiuntive - l nome_user Specifica un diverso username - U Sblocca l account di un utente precedentemente bloccato - L Blocca l account di un utente. Il blocco viene realizzato con l'apposizione del carattere! al campo contenente la password cifrata /etc/shawow, così da far fallire comunque l'autenticazione, per lo sblocco il carattere viene semplicemente rimosso. - G [GROUP1,GROUP2..* per aggiungere l utente a più gruppi - a Append. Consente di usare G per aggiungere un gruppo senza togliere gli altri (attenzione non funziona su le release vecchie) Es.) #> usermod a G Groups1, Groups2 nome_user 6.3 Il comando passwd Una volta creato un utente è possibile assegnarli una password. Se la password non è stata data in fase di installazione l operazione deve essere fatta da root. Dopo l utente può in qualsiasi momento modificarla. # > Passwd [opzioni] nome_user Il sistema chiede di inserire la nuova password e di ripeterla per conferma. E possibile che se la password non soddisfa le caratteristiche di sicurezza, Linux avvisi che è una BAD PASSWORD ma comunque se la si forza la mantiene comunque. opzioni - x giorni Imposta il numero massimo di giorni per cui la password rimane valida, passati i quali l utente sarà forzato a cambiarla. - n giorni Imposta il numero minimo di giorni dopo il quale una password può essere cambiata, l utente non potrà modificarla prima che siano passati detti giorni. - w giorni imposta il numero di giorni per i quali l utente viene avvertito prima della scadenza della password. - i giorni imposta il numero massimo di giorni per cui viene accettato il login dopo che la password è scaduta passati i quali l utente sarà disabilitato. 40

41 Comando: # > passwd -x 90 -n 2 -w 5 -i 10 nome_user Validità 100 gg - x No cambio 2 gg - n Avviso cambio password 15 gg - w Termine 10 gg - i L utente dal momento dell assegnazione non potrà cambiare la password per 2gg potrà avere accesso per 90 giorni più 10 aggiuntivi durante i quali dovrà necessariamente modificare la password altrimenti sarà disabilitato. Il messaggio lo riceverà 5 giorni prima della scadenza quindi 15 giorni prima della disabilitazione definitiva. 6.4 Il file passwd Caratteristiche del file /etc/passwd Il file /etc/passwd è il database degli utenti su ogni sistema Unix. Ad ogni user è dedicata una riga che definisce quali sono i suoi principali attributi. Sui sistemi Unix meno recenti in questo file viene scritta anche la password (criptata), su quelli più recenti viene scritta, generalmente, in /etc/shadow, che ha maggiori restrizioni in termini di sicurezza. Le righe di /etc/passwd si presentano nella seguente forma: Username:Password:UserID:GroupID:Info:HomeDirectory:Shell Username: Password: UserID: GroupID: Info: Nome dell'user, la login con cui può accedere al sistema; Campo riservato alla password dell'utente. Può essere scritta direttamente in forma criptata o esserci semplicemente una x (la password c'è ma è scritta altrove, di solito in /etc/shadow). Se c'è un * (asterisco) significa che l'utente o non ha una password o la password non è valida (in questo caso non gli è permesso di login); ID dell'user; ID del gruppo di appartenenza; Contiene informazioni sull'utente non necessarie al sistema (nome esteso, numero di telefono, mail ecc...); HomeDirectory: Indica la directory della home dell'utente; Shell: Indica la shell di default per quell'utente. root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [...] diego:x:501:503::/home/diego:/bin/bash 41

42 6.5 Il file shadow Storicamente su Unix il file /etc/passwd contiene l'elenco di tutti gli utenti e la loro password in forma criptata.per la stessa natura di Unix tutti gli utenti devono poter aver accesso in lettura a questo file, per cui l'esporre le password di tutti, seppur criptate, risultava rischioso per la sicurezza del sistema. Su tutti i Linux e gli Unix non troppo vecchi, la gestione della password è stata migliorata sia in termini di sicurezza che di versatilità affiancando al normale /etc/passwd la gestione del file /etc/shadow che introduce nuove funzionalità: - Questo file è leggibile solo da root mentre viene lasciato l'accesso il lettura a /etc/passwd per tutti gli utenti; - Le password in /etc/shadow sono criptate con algoritmi più complessi e robusti; - E' possibile gestire il tempo di scadenza, la durata minima e massima e i tempi di notifica della password. Notare che: - se la password è scritta in /etc/shadow, in /etc/passwd c'è solo una x al posto della password criptata. - se in /etc/passwd il campo password è un *, la password è nulla e l'utente non può accedere al sistema 6.6 Eliminare Utenti o Gruppi I comandi userdel e groupdel permettono invece di cancellare rispettivamente un utente e un gruppo, da specificare come argomento. Nel caso di groupdel il comando non ha nessuna opzione specifica, ma non effettuerà la rimozione di un gruppo se questo risulta essere il gruppo primario di un utente; in tal caso occorre prima rimuovere l'utente con userdel. Si tenga conto che userdel si limita a cancellare l'utente se si vuole anche rimuoverne la homedirectory si dovrà usare l'opzione -r. Inoltre il comando prima di operare si assicura che l'utente che si vuole eliminare non sia collegato alla macchina rifiutandosi di proseguire altrimenti, la cancellazione può però essere forzata con l'opzione -f. # > groupdel nome_gruppo # > userdel [opzioni] nome_user opzioni - r nome_user Rimuove oltre all utente anche la sua home-directory e mail - f nome_user Rimuove in modo forzato un utente anche se questo è collegato in quel momento sull host. 42

43 6.6 Altri comandi di personalizzazione di uno user Oltre alle proprietà associate alle password ci sono altri due comandi che consentono di modificare le altre caratteristiche degli utenti. Il primo di questi è chfn che permette di cambiare le informazioni mantenute nel campo chiamato Gecos, in cui si scrivono il nome reale e altri dati relativi all'utente. Un utente può modificare solo i suoi dati previa autenticazione, mentre l'amministratore può modificare tutti i dati di un utente qualunque. Se non si specifica nulla il comando presenta sul terminale i dati attuali richiedendo l'immissione di un nuovo valore, si può però specificare quest'ultimo direttamente a riga di comando come argomento per la rispettiva opzione. Per i dettagli e le singole opzioni si consulti come al solito la pagina di manuale. Il secondo comando è chsh, che permette ad un utente di cambiare la propria shell di login, impostandone una diversa come argomento con l'opzione -s Anche in questo caso un utente normale può operare solo su se stesso invocando il comando senza argomenti, e gli verrà comunque richiesta l'autenticazione; l'amministratore invece può operare su qualunque utente senza restrizioni, passando il relativo username come argomento. Inoltre un utente normale non può indicare come shell un programma qualunque, ma soltanto una shell fra quelle elencate nel file /etc/shells. Benchè sia una caratteristica sostanzialmente inutilizzata e pressochè sconosciuta, è possibile assegnare una password anche ad un gruppo, inoltre con l introduzione delle shadow password è possibile anche definire degli amministratori, cioè dei membri del gruppo a cui è possibile delegare la capacità di aggiungere e rimuovere utenti dallo stesso. Il programma che permette di gestire tutto questo, ed in generale tutte le caratteristiche dei gruppi, è gpasswd. Per una spiegazione dettagliata fare riferimento a man gpasswd 6.7 Introduzione a sudo Sudo (superuser do) è un utility che permette di eseguire comandi con i permessi di un altro utente, tipicamente utilizzato per eseguire comandi che solamente root potrebbe lanciare. Sudo è un ottima soluzione per gestire e controllare gli accessi e le azioni degli utenti, sia perchè permette di eseguire comandi che tipicamente un utente normale non potrebbe sia perchè offre la possibilità di loggare nei minimi dettagli qualsiasi azione. Inoltre se si aggiunge il vantaggio di non dover utilizzare l'account di root per le normali operazioni di amministrazione come ad esempio riavvio di un servizio, assicura un certo vantaggio in ambito sicurezza oltre che limitare in modo ulteriore la conoscenza della password di root. Le principali funzioni di questa utility sono: - Limitare o permettere la possibilità di eseguire un certo comando ad un gruppo o ad un singolo utente - Logging, per ogni comando eseguito. - Ticketing system, ovvero è possibile configurare sudo in modo tale che ogni volta che viene invocato, l'utente possa inserire una sola volta la password anche in caso di una sequenza di comandi. Ovviamente dopo un certo timeout configurabile verrà richiesta nuovamente la password. - La struttura del file di configurazione permette una configurazione centralizzata, un file di configurazione valido per più host. 43

44 Il file di configurazione di sudo è /etc/sudoers modificabile tramite l'utility visudo, che risulta essere un editor con gli stessi comandi di vi con il plus del check della sintassi del file. La sintassi del file di configurazione prevede due parti: - aliases (opzioni e variabili di base): Creazione di gruppi di utenti User_Alias User_Alias Creazione di gruppi di comandi ADMINS = neo, led OPERATORS = pippo, nobody Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown, /usr/bin/halt, /usr/bin/reboot Creazione di gruppi di host Host_Alias Host_Alias SERVERS = ns, www, mail WORKSTATION = saturno, dido, trinity - user specifications (opzioni e variabili specifici dell'utente, chi,cosa e come può eseguire): L'utente root può eseguire qualunque comando, in qualunque host come se fosse qualunque utente: root ALL = (ALL) ALL Tutti gli utenti appartenenti al gruppo ADMINS possono lanciare qualsiasi comando senza inserire una password ADMINS ALL = NOPASSWD: ALL Tutti gli utenti appartenenti al gruppo OPERATOR possono lanciare i comandi relativi al gruppo SHUTDOWN OPERATORS WORKSTATION = SHUTDOWN L editor visudo Utility per l'editing del file di configurazione di sudo: /etc/sudoers. Di fatto è un editor come vi con la possibilità di eseguire controlli sulla sintassi del file sudoers. visudo [ -c ] [ -f sudoers ] [ -q ] [ -s ] [ -V ] -c Abilita solo il check del file di configurazione -f sudoers Specifica il file di configurazione -q Abilita il quiet mode, nemmeno gli errori di sintassi vengono segnalati -s Abilita lo strict check Il file sudoers come editare /etc/sudoers con visudo Il files si edita come root con il comando visudo La struttura del file è semplice: Host alias User alias Command alias User privilege 44

45 Nelle parti Host e User possiamo specificare degli alias per gli utenti oppure per degli indirizzi remoti. Esempio: Host_Alias User_Alias MIEISERVER=pippo,pluto, FAMIGLIA=riccardo,roberto In questo modo impostando un privilegio per FAMIGLIA o per MIEISERVER, questo verrà applicato a chi fa parte di quell alias. Nella parte Command alias possiamo impostare un alias per i comandi invece che per degli utenti: Esempio: Cmnd_Alias SHELLS=/bin/sh,/bin/csh,/bin/tcsh,/bin/ksh Cmnd_Alias SPEGNIMENTO=/sbin/shutdown, /sbin/halt, /sbin/reboot N.B.: Tutti gli alias vanno scritti in MAIUSCOLO La parte User Privilege come possiamo intuire serve per impostare i privilegi agli utenti. Vediamo un esempio: root ALL=(ALL) ALL %local ALL=NOPASSWD: SPEGNIMENTO FAMIGLIA ALL=NOPASSWD: SHELLS Nella prima riga root indica l utente root (ma va?), ALL=(ALL) ALL che può usare tutti i comandi inserendo la password. Nella seconda riga %local indica il gruppo local mentre ALL=NOPASSWD: SPEGNIMENTO che può usare i comandi dell alias SPEGNIMENTO senza password. Nella terza riga il gruppo FAMIGLIA può usare i comandi SHELLS senza inserire la password. 6.8 Informazioni dell utente connesso con il comando who who invocato senza argomenti restituisce in uscita le informazioni per ogni utente collegato al sistema in quel momento. who [OPZIONE...] Le informazioni restituite sono: nome di login, ora e giorno in cui è avvenuto il login, Opzioni principali -a Tutte le informazioni -b data e ora dell ultimo system boot terminale usato dall'utente, nome dell'host remoto o codice dell X display. -q visualizza gli utenti collegati e alla fine il numero totale di utenti -r visualizza il corrente runlevel esempio con due utenti collegati a D51 D51:linate > who q linate root # users=2 Nota: Utente <nome> es. fdpmil Gruppo %<nome> es. %target La forma whoami invece restituisce soltanto le informazioni riguardanti l'utente che ha lanciato il comando. 45

46 7. Gestione file di testo 7.1 L editor vi Il vi è un editor di testo un po retrogrado ma utilizzato per compatibilità di utilizzo con le versioni più vecchie di unix. Il comando per lanciarlo è : vi [nome del file] in appendice X2 si possono vedere i comando principali TUTOR: vimtutor 7.2 il comando dos2unix dos2unix converte un file di testo che segue le convenzioni MSDOS in uno che segue le convenzioni unix dos2unix FILE_ORIGINE FILE_DESTINAZIONE UNIX. esempi $ dos2unix dos.txt unix.txt 7.3 Visualizzare le prime righe di un file con head head fornisce la parte iniziale dei file in ingresso. Se non viene specificato altrimenti l'ingresso viene considerato semplice testo e ne vengono visualizzate le prime 10 righe. head [OPZIONE...] [FILE...] opzioni -c N, --bytes N Vengono forniti i primi N byte; eventualmente si può cambiare l'unità di misura aggiungendo una delle seguenti lettere: b = blocchi da 512 byte, -n N, --lines N Vengono fornite le prime N righe del file. esempi head -n 10 Inbox Richiedo le prime 10 righe del file di testo Inbox. head -c 44 noise.wav Richiedo i primi 44 byte del file binario noise.wav. k = blocchi da 1 kilobyte, m = blocchi da 1 megabyte. 46

47 7.4 Visualizzare le ultime righe di un file con tail Tail fornisce la parte finale dei file in ingresso. Se non viene specificato altrimenti l'ingresso viene considerato semplice testo e ne vengono date le ultime 10 righe. tail [OPZIONE...] [FILE...] opzioni -c N, --bytes N Vengono forniti gli ultimi N byte; eventualmente si può cambiare l'unità di misura aggiungendo una delle seguenti lettere: b = blocchi da 512 byte k = blocchi da 1 kilobyte m = blocchi da 1 megabyte. -f Prova continuamente a leggere nuovi dati dalla fine del file, assumendo che il file si stia ingrandendo. -n N, --lines N Vengono fornite le ultime N righe del file. esempi tail -n 10 Inbox tail -f /var/log/messages 47 Richiedo le ultime 10 righe del file di testo Inbox. Richiedo le ultime righe di /var/log/messages e di rimanere in attesa dell'eventuale arrivo di nuove righe. Questa opzione è utile in generale per monitorare un file di log in crescita. Come al solito Control-C interrompe il comando. tail -c 22k noise.wav 7.5 Dividere un file con split split Richiedo gli ultimi 22 kilobyte del file binario noise.wav. divide il file FILE in più file di dimensioni inferiori. Eventualmente con PREFISSO_FILE si può specificare il prefisso che verrà utilizzato come parte iniziale del nome dei file creati. split [OPZIONE...] [FILE [PREFISSO_FILE]] opzioni -RIGHE, -l RIGHE, -lines=righe Questa opzione si usa quando si processa un file di testo. Il file viene diviso in parti che contengono un numero di linee di testo pari a RIGHE. L'ultima parte generalmente e più piccola per ovvi motivi. -b BYTES[b k m], -bytes=bytes[b k m] Questa opzione viene utilizzata quando si vuole dividere un file binario, essa specifica la lunghezza delle parti da creare. La misura della lunghezza è espressa in byte a meno che al numero BYTES non venga aggiunto come suffisso una delle seguenti lettere: b -> unità=byte esempi k -> unità=kilobyte m -> unità=megabyte split -b 1400 mega.tgz mega_ Divide il file in parti con suffisso mega_xaa mega_xab etc. Per ripristinare il file occorre: cat mega_* > mega.tgz Ripristina il file (Nota: con md5sum si verifica che il file ricostruito è uguale al sorgente).

48 7.6 Visualizzare una schermata alla volta di un file con less less riporta in uscita gli ingressi specificati una schermata alla volta. E' simile al comando more, ma ha più la possibilità; ad esempio oltre a poter avanzare, si può anche tornare indietro. Viene generalmente utilizzato quando si vuole velocemente prendere visione di un lungo file di testo oppure in abbinamento con altri comandi, quando essi forniscono in uscita informazioni che non hanno spazio su di una singola schermata. Sono possibili le seguenti operazioni attivate dalla pressione del tasto indicato all'inizio della riga: ENTER -> avanza di una riga BARRA SPAZIATRICE -> avanza di una schermata B -> torna indietro di una schermata Q -> esci / -> chiede una parola o una espressione regolare su cui fare una ricerca less [OPZIONE...] [NOME_FILE...] esempi ls less questo abbinamento mi permette di esaminare comodamente il contenuto di directory che contengono centinaia di file. less ulisse.txt less <ulisse.txt cat ulisse.txt less queste ultime tre forme hanno lo stesso effetto 7.7 Visualizzare una schermata alla volta di un file con more more riporta in uscita gli ingressi specificati una schermata alla volta. La pressione del tasto ENTER permette di avanzare una riga alla volta, la pressione della barra spaziatrice invece fa avanzare di una schermata alla volta. Per uscire prima della fine degli ingressi è sufficiente la pressione del tasto Q o di CTRL-C. more [OPZIONE...] [NOME_FILE...] esempi cat divina_commedia.txt more more divina_commedia.txt more <divina_commedia.txt Le diverse forme presentate hanno tutte lo stesso effetto. 48

49 7.8 Il comando diff Trova le differenze tra due files. es: diff file1 file2 > differenze.txt L output è un po complicato da leggere specie se le differenze sono molte, comunque si può notare all inizio riga, il segno di < (minore) che si riferisce al file1 mentre il segno > (maggiore) al file file2. Tra i due a volte sono presenti due numeri da soli sulla riga separati da una virgola. Sono le indicazioni dei numeri di linea riferiti alle voci sotto. Comunque con un po di esperienza, poi si riescono a vedere le differenze senza troppe difficoltà. il comando sdiff s file1 file2 permette di visualizzare l output su due colonne più facile e più chiaro da vedere ma spesso se le righe sono lunghe il ritorno a capo crea un po di confusione. 7.9 numerare le linee di un file di testo con il comando nl Se si desidera numerare ogni singola riga di un documento di testo questo è il comando che serve. Esistono diverse opzioni interessanti: -v n definisce il numero iniziale per la numerazione -i n stabilisce il valore di incremento della numerazione -p non ricomincia la numerazione per ogni nuova pagina Per numerare le righe di un documento partendo dal valore 1 e incrementando di una singola unità per volta dovremo digitare quanto segue: $ nl -v 1 -i 1 doc.txt > doc2.txt Il documento con la numerazione è stato ridiretto al file doc2.txt 49

50 8. Altri comandi utili 8.1 La ricerca di un file con il comando find find attraversa l'albero delle directory raccogliendo tutti i file ivi contenuti. es: find. grep documentoxy Questo raccoglie tutti i file e le directory partendo dalla posizione corrente, e attraverso il comando grep ricerca il documentoxy. 8.2 Il comando grep per ricercare una stringa all interno di un file grep significa General Regular Expression Parser. grep permette di ricercare all'interno di un file una certa espressione regolare, come output mostra la stringa che contiene l'espressione trovata. es: grep prova documenti/documentoxy.txt Ricerca la stringa prova in documentoxy.txt che si trova nella directory: Documenti. opzioni -c restituisce il numero di linee che contengono la stringa -i ignora maiuscole e minuscole nella stringa di ricerca -n inserisce un numero a inizio riga che equivale alla riga del file in cui è stata individuata la stringa -o visualizza solo la stringa ricercata -v inverte la ricerca, visualizza tutte le linee del file tranne quelle che contengono la stringa ricercata -w Ricerca la parola esatta, cioè scarta tutte quelle linee che hanno una tringa diversa da quella ricercata ma che la contengono. Solo su Linux: es: grep R prova * Ricerca la stringa prova in tutte i files comprese le sottodirectory 8.3 Il controllo dell integrità di un file con il comando md5sum Quando si vuole trasferire un file tra due computer, a volte è necessario trasferire questo file a più macchine per ranggiungere quella destinataria, questo comporta un rischio di corruzione del file originario. Per essere sicuri che il file trasferito sia autentico e corretto, vi è a disposizione un comando chiamato md5sum che tramite un complesso algoritmo, ne firma l autenticità. $ md5sum nomefile.tgz d41d8cd98f00b204e ecf8427e nomefile.tgz La stringa alfanumerica che viene presentata è l impronta digitale del file che può essere confrontata con quella di chi fornisce il file e chi lo riceve. In questo modo semplice possiamo tutelarci che il file non abbia subito modifiche nel passaggio. 50

51 8.4 Un calendario sempre a disposizione con il comando cal Il comando cal permette di visualizzare un calendario del mese corrente o del mese e anno definniti. Cal [ MESE ] [ ANNO ] esempio D51:linate > cal November 2011 Su Mo Tu We Th Fr Sa D51:linate > cal February 1958 Su Mo Tu We Th Fr Sa Le variabili di ambiente Le variabili d'ambiente sono le variabili che permettono ad ogni utente di configurare il proprio ambiente di lavoro. Il comando per elencare quelle definite in un dato momento è env: $ env (su D51) TERM=vt100 REMOTEHOST=fp4 HOME=/usr2/linate PATH=/usr/local/bin:/usr/sbin:X11R6/bin:/usr2/linate/bin etc.. SHELL=/bin/csh LOGNAME=linate HOSTTYPE=i386-linux VENDOR=intel HOST=D51 HOSTNAME=D51 KDEDIR=/usr CFGDIR=/usr2/linate/ROOT_SW_VERSIONS/REV GSBRG_RESDIR=/usr2/linate/ROOT_SW_VERSIONS/REV00.001/runtime DISLPLAY=:0.0 Alcune di queste variabili sono utilizzate dalla maggior parte dei programmi più comuni, altre sono specifiche per un particolare applicativo; ad esempio la variabile CFGDIR è significativa per gli applicativi. Per stampare il valore di una variabile d'ambiente, il comando è echo $nomevariabile, ad esempio $ echo $HOME /usr2/linate 51

52 I file di sistema nei quali sono definite le variabili d'ambiente sono /etc/profile, /etc/bashrc, $HOME/.bashrc, $HOME/.bash_profile. Il file /etc/profile, che viene eseguito al momento della login, nella distribuzione RedHat fa in modo che vengano eseguiti anche i file con estensione.sh (che abbiano il permesso di eseguibilità) contenuti nella directory /etc/profile.d/ Lo scope (visibilità) delle variabili d'ambiente è limitato alla shell attuale se la variabile stessa è definita da riga di comando, mediante il comando export NOMEVAR=valore se si usa la bash (oppure setenv NOMEVAR=valore con la C Shell). Per fare in modo che una variabile sia visibile da tutte le shell, usando la bash, è possibile definirla nel file.bashrc. Alcune importanti variabili d'ambiente sono HOME, USER, SHELL, PATH. La variabile d'ambiente PATH è usata dalla shell per cercare i file eseguibili; quando si inserisce un comando, la shell cerca un file eseguibile con quel nome nelle directory elencate dalla variabile d'ambiente PATH. E' importante ricordare che la directory corrente (indicata con ".") non è di solito fra quelle che sono elencate in PATH; quindi, per eseguire un programma che si trova nella directory corrente, è necessario anteporre la stringa./ al nome del programma: $./programma. 8.6 Il comando alias per creare pseudonimi e facilitare il lavoro La creazione di un alias è un metodo che permette di definire un nome alternativo per un comando preesistente. $ > alias elenca= ls -l Attenzione quando si termina la sessione di lavoro nella shell vengono eliminati anche gli alias, per mantenerli è necessario inserirli ad esempio nel file.profile o nel proprio.bash_profile. Per cancellare un alias procedere con il comando $ > unalias elenca 8.7 L esportazione delle variabili di ambiente Il comando export viene utilizzato per esportare delle variabili di ambiente, valori che permettono al sistema di funzionare come desideriamo. $ > export DISPLAY=gw5:0.0 Nell esempio appena visto si è utilizzato il comando per esportare il display di X Window dal server D51 all host gw5 che corrisponde ad un IP nel file /etc/hosts. I comandi che lanciano applicazioni per X verranno aperti sull ultimo computer ma il carico di processo sarà della macchina dove vengono eseguiti (in questo caso il computer gw5). Se questo comando viene inserito in.profile sarà disponibile ogni volta che avverrà la login. In appendice X3 è disponibile una tabella con le variabili di ambiente più comuni. 52

53 9. La Rete 9.1 Acenni sul protocollo TCP/IP TCP/IP (Transmission Control Protocol / Internet Protocol) è un protocollo di comunicazione universalmente diffuso che permette l interconnessione di computer anche eterogenei con interfacce di rete di tipo Ethernet, Token-Ring, Fiber Distributed Data Interface (FDDI), X.25, sia con Serial Line Internet Protocol (SLIP) che Point to Point Protocol (PPP). Il software che gestisce questa comunicazione consente ad una grande varietà di sistemi di scambiarsi dati in rete in modo assolutamente trasparente per l utente. Il nome TCP/IP è in realtà improprio in quanto IP è il protocollo di comunicazione su cui poggiano TCP e UDP. 9.2 Configurazione di una rete TCP/IP (nozioni di base) Una rete TCP/IP è composta da computers (hosts) tra loro connessi in vario modo. Ogni host nella rete deve avere un indirizzo univoco per impedire dei conflitti nella trasmissione/ricezione delle informazioni. E necessario quindi fornire ogni sistema delle seguenti informazioni: Host Name Internet Protocol Address (IP) Hardware Address Host Name Il nome di un host è semplicemente un mezzo per riferirci ad una macchina in maniera più semplice che non tramite il suo IP address. L hostname di un sistema viene configurato durante l istallazione e la sua scelta è abbastanza arbitraria. Per collegarsi da un host ad un altro con i servizi TCP/IP utilizzando l hostname, è necessario inserire nell host database di ogni host l associazione nome-indirizzo di tutti gli altri hosts. Ovviamente il software di rete non comunica con gli altri hosts con questo nome ma lo traduce nel suo corrispondente IP address. In alternativa si possono utilizzare gli indirizzi dei vari host. La corrispondenza tra l hostname e il suo IP address la possiamo trovare consultando il file: /etc/hosts. Opzionalmente è possibile associare ad ogni indirizzo raggiungibile sulla rete una serie di aliases composti da un massimo di 32 caratteri. Si noti che, al minimo, il file /etc/hosts conterrà l hostname e il suo IP address più localhost che ha sempre un IP address pari a per il loopback di sistema. Supponendo di avere quattro hosts in rete, essi potranno essere così configurati: risc risc risc risc4 Internet Protocol Address Un IP address è un numero di 32 bit (4 bytes) assegnato univocamente per identificare una particolare interfaccia sulla rete. Un IP address non può essere assegnato arbitrariamente ma va scelto in funzione della rete in cui l host è inserito. Un IP address è composto di due parti: Network Address Host Address 53

54 Il Network Address deve essere lo stesso per tutti gli hosts sulla stessa rete mentre l Host Address deve essere univoco all interno della rete. Le differenti dimensioni delle reti connesse hanno fatto optare per un partizionamento del network space portando alla definizione di tre categorie principali di reti: le classi A, B e C che differiscono tra loro per il numero di host configurabili. Tipo 8 bits 8 bits 8 bits 8 bits Riservato 0 Classe A Host Address Riservato 127 Classe B Host Address Classe C Host Address Classe D Multicasting Riservato Riservato Per l assegnazione dell IP address occorre innanzitutto scegliere la categoria di rete da utilizzare, cioè quanti bytes dell indirizzo identificano la rete. Come detto, questa scelta dipende dal numero di hosts che si prevede siano collegati alla rete. Per un numero di host inferiore a 254, si può scegliere la rete di tipo C (si noti che con un byte si possono rappresentare solo i numeri tra 0 e 255) con i primi tre bytes identificativi della rete (quindi uguali per ogni host) e il quarto che identifica l host. Per la rete di tipo C il primo byte deve essere compreso tra 192 e 223 e possono essere configurate fino a reti di 254 hosts. Noi utiliziamo solo la rete di tipo C Per quanto riguarda la rappresentazione dell indirizzo di rete si possono utilizzare notazioni binarie, esadecimali e decimali puntuate; l esempio seguente identifica l indirizzo di un host nei tre modi equivalenti: Bin Hex CD Dec La rappresentazione standard è quella decimale puntuata (dotted decimal) che viene utilizzata dai servizi TCP/IP e dai programmi di configurazione. Eventuali rappresentazioni in binario o esadecimale esulano dallo standard e non verranno trattate in questo contesto. Per quanto riguarda l host dell esempio precedente, avremo un host che sarà inserito in una rete di classe C e che avrà indirizzo Ci sono altre due informazioni che vanno inserite nel sistema affinchè possa lavorare correttamente: la subnet mask: in questo caso , cioè una maschera per capire come la rete è suddivisa (in questo caso i primi tre bytes identificano il tipo di rete ed il quarto per l host); La maschera di sottorete (Netmask) Appaiata con un indirizzo IP c'è sempre una Maschera di sottorete. Questa maschera (Netmask) insieme con l'indirizzo IP definisce la rete TCP/IP a cui il computer appartiene, ovvero quali altri indirizzi IP possono essere direttamente raggiunti nell'ambito della stessa rete. Per poter capire il funzionamento di una maschera di sottorete dobbiamo sempre tenere presente che i 4 byte usati per definire la maschera e quelli per l'indirizzo IP dovrebbero essere rappresentati nella loro forma binaria. 54

55 Per definizione la maschera di sottorete è una sequenza ininterrotta di "1" da sinistra verso destra, seguita da una sequenza di "0" (l'ambito di variazione della rete). A causa della sua stessa definizione una Netmask è spesso rappresentata in decimale quindi come uno o più valori "255" seguiti da uno o più valori "0". Tramite la rappresentazione binaria di indirizzo IP e maschera di sottorete possiamo facilmente "mascherare" i bit dell'indirizzo che corrispondono ad un "1" nella maschera, e vedere quali sono i bit non mascherati (corrispondenti a "0") che possono variare nell'ambito della rete locale. Quando il sistema operativo (più precisamente: il livello IP dello stack TCP/IP) riceve da un programma la richiesta di inviare un pacchetto IP ad un certo indirizzo IP destinatario, per prima cosa calcola l'and logico fra la subnet mask e il proprio indirizzo IP, e lo confronta con l'and logico tra la subnet mask e l'indirizzo IP di destinazione. Se il risultato delle operazioni è identico (cioè i bit che identificano l'id di rete, o net ID, sono identici, mentre variano solo i bit dell'id di host) allora invierà il pacchetto nella rete locale indirizzandolo con l'indirizzo di rete locale del PC destinatario (se non conosce tale indirizzo userà il protocollo ARP per trovarlo); se invece il risultato delle operazioni è differente significa che il computer destinatario non appartiene alla rete locale, e il pacchetto verrà trasmesso al gateway della rete locale affinché lo instradi verso la rete remota che contiene il computer destinatario. Per determinare il numero massimo di indirizzi utili in una subnet basta contare il numero n di bit 0 a destra della subnet mask, porre n come esponente di 2, e sottrarre a ciò i due indirizzi riservati (uno indica la sottorete stessa, l'altro è usato per fare broadcast). La formula è dunque: 2^n - 2 Usando la notazione decimale classless (es: w.x.y.z/m), è altresì possibile calcolare il numero massimo di indirizzi utili con la seguente formula: 2^(32-m) - 2, del tutto equivalente a quella precedente. Infatti m indica il numero di bit 1 presenti nella subnet mask, quindi m+n=32 Network Dati l'indirizzo e la maschera di sottorete è quindi dato un range di indirizzi IP che solo "locali" al nostro indirizzo, e questo range viene chiamato "network" (rete). Tutti gli indirizzi IP in uno stesso network hanno i bit iniziali identici (quelli mascherati da "1" nella maschera di sottorete) e bit finali distinti ed unici (quelli mascherati da "0" nella maschera di sottorete). Per definizione una maschera di sottorete è una sequenza di "1" seguita da una sequenza di "0", ed è quindi talvolta più semplice indicarla riportando semplicemente il numero di "1" che la compongono: scrivere " " è esattamente equivalente a scrivere "/24", cioè una sequenza di 24 "1" seguita da una sequenza di 8 "0". Quindi " / " diventa " /24". Continuando con lo stesso esempio ( /24) abbiamo un network dove " " è fissato, mentre l'ultimo byte può variare tra 0 e 255. Il primo indirizzo disponibile in ogni range (con bit a 0 dove la netmask è a 0) è detto "network address", mentre l'ultimo indirizzo disponibile in ogni range (con bit a 1 dove la netmask è a 1) è detto "broadcast address". 55

56 Nel nostro esempio abbiamo: indirizzo: /24 network: /24 broadcast: Avvalendosi della calcolatrice per classi IP (linkata sulla colonna laterale) è molto semplice individuare gli indirizzi di network e di broadcast dati un IP address ed una netmask. Né il network address né il broadcast address possono essere utilizzati come indirizzi IP per dei dispositivi in rete: sono riservati. Nella figura l'esempio appena esaminato: Un esempio pratico Fino a che ci sono 8 bit per definire l'host ID in una rete di classe C, ci sono sei modi differenti in cui una rete può essere mascherata. Ognuno corrisponde ad una differente subnet personalizzata, quando viene creata cambiando i bit allocati per la subnet ID da 0 a 1 Consideriamo una rete in classe C ( ex ) Ci sono 8 bit nella host ID di default, che permettono di avere sei differenti opzioni di mascheratura ( non è possibile utilizzare i bit 7 e 8 per definire la subnet ID ). Supponiamo di utilizzare 3 bit per definire la subnet ID e lasciare gli altri 5 per l'host ID. Per determinare la subnet mask, partiamo dalla subnet di default per una rete in clas. C : Cambiamo adesso i primi tre 0 che troviamo a partire da destra in 1, per ottenere la subnet mask personalizzata: in formato decimale viene tradotta così (/27) Supponiamo che il protocollo IP del nostro computer sia configurato come segue: indirizzo IP: ( /27) subnet mask: e che richiediamo di connetterci agli indirizzi IP: e prima di tutto trasformiamo in notazione binaria gli indirizzi IP e la subnet mask: = = = =

57 allora il livello IP calcolerà: AND ( ) = ( ) ( ) Ora ripetiamo l'operazione con il primo 'IP di destinazione: AND ( ) = ( ) ( ) Come si vede gli hosts appartengono alla stessa sotto-rete (096) Ora ripetiamo l'operazione con l'altro IP di destinazione: AND ( ) = ( ) ( ) I risultati e indicano due sottoreti differenti, e quindi le macchine appartengono a sottoreti differenti. Notiamo che con una subnet mask è possibile avere un range di 30 indirizzi utili per subnet, in quanto 2^(32bit-27subnet-bit) - 2 = 32-2 = 30 L'indirizzo appartiene al range tra e L'indirizzo appartiene al range tra e Es.2 ) si debba configurare una rotta statica sul risc RDA militare che deve collegare le macchine dall indirizzo 193 al 206 (14 macchine) Se s inserisce la rotta /28 [.240] (router ) si fanno passare gli indirizzi da 1 a 14 Quindi: /28 tramite (passano da 193 a 206) Si può verificare con traceroute: solo gli indirizzi da 193 a 206 verranno indirizzati sul router, per gli altri verrà segnalata mancanza di rete valida! 57

58 Si può notare che con un sub-mask di 27, possiamo distinguere 8 gruppi, vedi tabella sotto: Gruppi

59 Fig.1 Tabella Address Hosts validi per sub-mask La seguente tabella esemplifica i metodi di utilizzo della rappresentazione delle subnet. addrs bits pref mask Host 1 0 / / / / / / / / / / K 10 / K 11 / K 12 / K 13 / K 14 / K 15 / K 16 / K 17 / K 18 / K 19 / M 20 / M 21 / M 22 / M 23 / M 24 / M 25 / M 26 / M 27 / M 28 / M 29 / M 30 /2 192 il broadcast address: in questo caso , cioè l indirizzo per i messaggi in broadcast (quelli inviati contemporaneamente a tutti gli hosts della rete composta, nei primi tre bytes, da ). 59

60 9.3 Configurazione di una rete su Linux Innanzitutto è importante sapere quante sono le reti installate e quante configurate a livello hardware. Usando il comando: # > ifconfig -a saranno visualizzate le interfacce di rete installate, quelle dichiarate come eth0,eth1, eth.. saranno configurate mentre se si vedrà un tmp seguito da numeri significa che quella rete non è stata ancora configurata dal sistema. Sarà anche visualizzata una rete chiamata lo con indirizzo che equivale ad un interfaccia logica di loopback. Nota: la rete non configurata denota la mancanza del file ifcfg-eth nella directory /etc/sysconfig/network-scripts Tipicamente la configurazione di un host in rete prevede pochi dati fondamentali: Indirizzo IP, subnet mask, default gateway e DNS server. Per configurare una rete in Linux editare i singoli file di configurazione con privilegi di root (per applicare le modifiche poi è necessario restartare il servizio); per restartare il servizio usare il comando: # > service network restart File di configurazione di rete /etc/sysconfig/network /etc/sysconfig/network-script/ifcfg-eth0 /etc/host.conf /etc/services /etc/hosts /etc/rc.local Script di avvio/stop del networking. File di configurazione della rete eth0 File contenente i le relazioni tra indirizzi e hosts File letto dal sistema in fase di avvio contenente i la configurazione statica della velocità della rete 9.4 Il comando ifconfig ifconfig serve essenzialmente a configurare l'indirizzo ip di un'interfaccia di rete, tipicamente una ethernet. Un computer può avere più di un indirizzo IP. Ad ogni interfaccia può corrispondere uno o più indirizzi IP. Per esempio potremmo avere un computer con due interfacce ethernet e avremmo quindi una eth0 e una eth1 (quindi due indirizzi), ma potremmo avere anche degli alias, quindi eth0:1, eth0:2 e così via. Con ifconfig si possono configurare altri aspetti di un'interfaccia, anche se molti parametri saranno difficilmente cambiati. Per esempio si possono cambiare e MTU e metrica, abilitare o disabilitare il multicast e la modalità promiscqua (di solito attivata automaticamente da programmi di sniffing). Nel manuale (man ifconfig) si possono trovare queste opzioni, che si consiglia di leggere. 60

61 Sicuramente i comandi descritti saranno sufficienti ad una configurazione standard. Panoramica dei principali comandi per utilizzare ifconfig: ifconfig [interface] [opzioni] address # > ifconfig -a mostra la configurazione IP di tutte le interfacce. Su molti sistemi è sufficiente digitare ifconfig, senza l'opzione -a. Un esempio dell'output di ifconfig può essere questo (i commenti spiegano le viarie righe): eth0 Link encap:ethernet HWaddr 00:50:8B:B0:15:7F indica il tipo di hardware e il suo indirizzo fisico (MAC address) inet addr: Bcast: Mask: indica indirizzo IP, indirizzo di broadcast e maschera della rete. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Indica lo stato (UP) e le opzioni attive (accetta broadcast e multicast) l'mtu e la Metrica. RX packets: errors:0 dropped:0 overruns:0 frame:0 TX packets: errors:0 dropped:0 overruns:1 carrier:0 collisions:0 txqueuelen:100 RX bytes: (941.9 Mb) TX bytes: ( Mb) Mostra le statistiche in ricezione (RX) e trasmissione (TX) Interrupt:12 Base address:0x6100 Mostra l'indirizzo hardware della scheda ifconfig interface mostra la configurazione dell interfaccia specificata. Esempio : ifconfig eth0. ifconfig interface ip netmask broadcast up/down attiva disattiva una determinata interfaccia. Con questo comando possiamo facilmente configuare e attivare una interfaccia. Questo si applica sia come indirizzo primario che come alias, consentendoci di creare più alias alla stessa interfaccia. # > ifconfig eth x netmask NOTA: La configurazione è TEMPORANEA quando ci si scollega si perdono le varie configurazioni. Sintassi: ifconfig [-L] [-m] interface [create] [address_family] [address[/prefixlength] [dest_address]] [parameters] ifconfig interface destroy ifconfig a [-L] [-d] [-m] [-u] [address_family] ifconfig l [-d] [-u] [address_family] ifconfig [-L] [-d] [-m] [-u] [-C] address Per la famiglia di DARPA Internet, l indirizzo è sia un nome presente nel file /etc/hosts o un indirizzo Internet DARPA espresso nello standard Internet notazione con punto. addres_family Specificare la famiglia di indirizzi che centra l interpretazione dei parametri rimanenti. Dal momento che un interfaccia può ricevere le trasmissioni in differenti protocolli con diversi schemi di denominazione, specificando la famiglia di indirizzi è raccomandato. Le famiglie di indirizzo o protocollo attualmente supportate sono inet, inet6, 61

62 dest_address Specificare l indirizzo del corrispondente sull altra estremità di un collegamento punto-punto. Interface add alias -alias anycast ARP -arp broadcast debug -debug delete Questo parametro è una stringa nel formato unità di nome, ad esempio, en0. Un altro nome per il parametro alias. Introdotto per la compatibilità con BSD/OS. Stabilire un indirizzo di rete aggiuntive per questa interfaccia. A volte questo è utile quando si modificano i numeri di rete, e si vuole accettare pacchetti indirizzati all interfaccia vecchio. Se l indirizzo è nella stessa subnet primo indirizzo di rete per questa interfaccia, una netmask 0xFFFFFFFF deve essere specificato. Rimuovere l indirizzo di rete specificato. Questo avrebbe utilizzato se è specificato in modo errato un alias, o non era più necessario. Se è stato impostato in modo errato un indirizzo NS avendo l effetto collaterale di specifica la parte ospitante, rimuovendo tutti gli indirizzi di NS vi permetterà di specificare nuovamente la porzione host. (Solo Inet6.) Specificare che l indirizzo configurato un indirizzo anycast. Basato sulla specifica corrente, solo i router possono configurare indirizzi anycast. Indirizzo anycast non essere utilizzato come indirizzo di origine di uno qualsiasi dei pacchetti Ipv6 in uscita. Consentire l utilizzo di Address Resolution Protocol in mapping tra gli indirizzi di rete di livello e indirizzi di livello link (impostazione predefinita). Questo è attualmente implementato per il mapping tra indirizzi Internet DARPA e IEEE bit indirizzi MAC (Ethernet, Token Ring e FDDI indirizzi). Disattivare l utilizzo di Address Resolution Protocol (Solo Inet.) Specificare l indirizzo da utilizzare per rappresentare le trasmissioni alla rete. L indirizzo di broadcast predefinito è l indirizzo con una parte host di tutti di 1. Abilitare driver dipendente debug del codice; di solito, viene fatto runnare su di una console supplementare. Disabilitare il debug. Un altroa nome per il parametro alias. Down Contrassegnare un interfaccia giù. Quando un interfaccia è contrassegnata giù, il sistema non tenterà di trasmettere messaggi attraverso quell interfaccia. Se possibile, l interfaccia verrà reimpostato per disabilitare la ricezione pure. Questa azione non disattiva automaticamente percorsi utilizzando l interfaccia. Ether Un altro nome per il parametro lladdr. 62

63 lladdr addr Memia type -mediaopt opts tunnel src_addr dest_addr deletetunnel create destroy plumb unplumb metric n MTU n Impostare l indirizzo del livello di collegamento su un interfaccia. Questo consente ad esempio impostare un nuovo indirizzo MAC su un interfaccia ethernet, anche se il meccanismo utilizzato non è specifica dell ethernet. L indirizzo addr è specificata come una serie di cifre esadecimali separate da due punti. Se l interfaccia è già in esecuzione quando viene utilizzata questa opzione, verrà brevemente portato giù e poi portato nuovamente il backup al fine di garantire che il filtro di ricezione in hardware ethernet sottostante è correttamente riprogrammato. Se il driver supporta il sistema di selezione di media, impostare il tipo di supporto dell interfaccia al tipo. Alcune interfacce ne supportano l uso, escludendo uno dei connettori per i diversi supporti fisici. Ad esempio, un interfaccia Mb/s Ethernet 10 potrebbe supporta l utilizzo di AUI o connettori doppino. L impostazione media tipo a 10base5/AUI cambierebbe il connettore attualmente attivo alla porta AUI. Impostandolo a 10baseT/UTP sarebbe attivare il cavo T-Eth. Consultare driver documentazione o manuale on line (man) per un elenco completo dei tipi disponibili. Se il driver supporta il sistema di selezione di media, impostare le opzioni di supporti specificato sull interfaccia. L argomento opts è un elenco delimitato da virgole di opzioni per applicare all interfaccia. Consultare driver specifici pagina man delle interfacce per una lista completa delle opzioni disponibili. (IP tunnel dispositivi solo.) Configurare l indirizzo fisico di origine e di destinazione per le interfacce di tunnel IP. Gli argomenti src_addr e dest_addr vengono interpretate come la sorgente/destinazione esterna per l incapsulamento intestazione Ipv4/Ipv6. Annullare la configurazione l indirizzo fisico di origine e di destinazione per le interfacce del tunnel IP precedentemente configurato con tunnel. Creare la pseudo-device di rete specificato. Se l interfaccia è data senza un numero di unità, tenta di creare un nuovo dispositivo con un numero di unità arbitrarie. Se la creazione di un dispositivo arbitrario ha esito positivo, il nuovo nome del dispositivo viene stampato output standard. Distruggere la pseudo-device di rete specificato. Un altro nome per il parametro create. Incluso per compatibilità con Solaris. Un altro nome per il parametro destroy. Incluso per compatibilità con Solaris. Impostare la metrica di routing dell'interfaccia n, default 0. La metrica di routing viene utilizzata dal protocollo di routing. Metriche superiore hanno l'effetto di rendere un percorso meno favorevoli; metriche sono conteggiati come salti in aggiunta per la rete di destinazione o host. Insieme l'unità massima di trasmissione dell'interfaccia per n, predefinito è interfaccia specifica. il MTU è usato per limitare la dimensione dei pacchetti che vengono trasmessi in un'interfaccia. Non tutte le interfacce supportano l'impostazione il MTU, e alcune interfacce hanno restrizioni di intervallo. 63

64 netmask mask prefixlen len remove Link [0-2] -link [0-2] Up (Solo Inet.) Specificare la quantità dell'indirizzo riservare per la suddivisione delle reti in sottoreti. La maschera comprende la parte di rete dell'indirizzo locale e la parte di sottorete, che è tratto dal campo host dell'indirizzo. La maschera può essere specificata come un singolo numero esadecimale con '0x iniziale', con un indirizzo Internet-notazione con punto, o con un nome pseudonetwork elencata nella tabella rete. La maschera contiene 1 per le posizioni di bit nell'indirizzo a 32-bit che devono essere utilizzati per la rete e parti di sottorete e 0 per la parte host. La maschera deve contenere almeno la porzione di rete standard, e il campo di sottorete dovrebbe essere contiguo con la porzione di rete. È inoltre possibile specificare la netmask in notazione CIDR dopo l'indirizzo. Vedi l'opzione indirizzo sopra per ulteriori informazioni. (Solo Inet6.) Specificare che len bit sono riservati per la suddivisione delle reti in sottoreti. La len deve essere intero e per una ragione sintattici, esso deve essere compreso tra 0 a 128. È quasi sempre 64 sotto la regola di assegnazione IPv6 corrente. Se il parametro viene omesso, viene utilizzato 64. Un altro nome per il parametro - alias. Introdotto per la compatibilità con BSD/OS. Attivare l'elaborazione speciale del livello collegamento dell'interfaccia. Queste tre opzioni sono interfaccia specifica in effetto reale, come - mai, sono in genere utilizzati per selezionare particolari modalità di funzionamento. Un esempio di questo è l abilitazione della compressione SLIP, o per la selezione del tipo di connettore per alcune schede Ethernet. Consultate il comando man per ulteriori informazioni. Disattivare l'elaborazione speciale a livello di collegamento con l'interfaccia specificata. Contrassegnare un'interfaccia 'up'. Questo può essere utilizzato per attivare un'interfaccia dopo un 'ifconfig down'. Avviene in automatico quando si imposta il primo indirizzo su un'interfaccia. In alcune occasioni occorrerà reinizializzare l'hardware. Esempi: 1) Visualizzare le impostazioni di rete sulla prima scheda Ethernet installata nel computer. # > ifconfig eth0 2) Visualizzare informazioni su tutte le interfacce di rete sul server, attivo o inattivo. # > ifconfig - a 3) Settare OFF l interfaccia di rete eth0; (non si può inviare o ricevere i messaggi.) # > ifconfig eth0 down 4) Settare ON l interfaccia eth0 (se esiste ed è nello stato down); ripristina la funzionalità dell interfaccia permettendo di inviare e ricevere informazioni. # > ifconfig eth0 up 5) Assegnare eth0 con i valori riportati per indirizzo IP, netmask e broadcast. # > ifconfig eth netmask broadcast ) Assegnare l'indirizzo IP ed attivare l'interfaccia (di default, in questo caso, viene assegnata la classe C, se avessimo usato sarebbe stata una classe A) # > ifconfig eth up 64

65 7) Assegnare l'indirizzo IP alla eth0:1 ed attivare l'interface. Eseguendo questo comando di fatto assegniamo un'altro indirizzo IP alla interfaccia. # > ifconfig eth0: up 8) Assegnare l'indirizzo IP ed attivare l'interfaccia, creando una mask /25 (In questo modo la Classe C è divisa in due subnet di 126 indirizzi) e si assegna come indirizzo di broadcast # > ifconfig eth netmask broadcast up 9.5 ethtool - manipolazione degli strumenti e le interfacce di rete richiesta Molti utenti ignorano le caratteristiche della propria scheda di rete, a volte, addirittura, non conoscono neanche il modello che stanno utilizzando, in particolare quando si tratta di notebook e PC in cui tutto è integrato sulla scheda madre. Allora come si fa a sapere quanto è veloce la scheda di rete, se è di tipo half o full duplex e via dicendo? Basta utilizzare l'utility ethtool, su qualsiasi distribuzione: ethtool eth0. In questo caso specifico, la scheda di rete è associata al device eth0 ma potrebbe trattarsi anche di lan0 o altro, dipende dal sistema utilizzato(utilizzare il comando ifconfig a). Dopo aver eseguito ethool, in un istante conosceremo il tipo di porta installata, le velocità supportate (10/100/1000), quella attualmente in uso, la modalità duplex (half o full) e altre importanti caratteristiche. Inoltre, aggiungendo lo switch -S, è possibile ottenere interessanti statistiche relative ai pacchetti inviati e ricevuti. Bisogna inoltre ricordare che ethtool permette di intervenire anche sulla configurazione della scheda di rete per modificarne il comportamento. Ad esempio, con il comando # > ethtool -s eth0 speed 100, impostiamo la velocità al valore di 100Mbit/sec. NOTA:Tutto su scheda di rete può essere visualizzata e impostata con il pacchetto ethtool. Esempi: 1) Mostrare la velocità della scheda di rete e la velocità sostenute per l'interfaccia: # > ethtool [interface] [interface=eth0] [Risultato di D51:] Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: Not reported Advertised auto-negotiation: No Speed: 100Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: off Supports Wake-on: g Wake-on: g Current message level: 0x000000ff (255) Link detected: no 65

66 2) Mostrare le statistiche per RX e TX per l'interfaccia: # > ethtool -S [interface] 3) Fare lampeggiare l'interfaccia, per trovare l'interfaccia fisica: # > ethtool -p [interface] [now] Nota: 66 Non inserire il cavo di rete mentre il comando è in esecuzione in quanto si blocca il computer Per uscire <CTRL-C> 4) Gestire la velocità dell'interfaccia così come le forme di negoziazione: # > ethtool -s [interface] speed [*] duplex [half full] [*] può valere [ ] Le opzioni di ethtool: # ethtool -h ethtool DEVNAME Display standard information about devicengs-rc ethtool -s --change DEVNAME Change generic options [ speed ]thority [ duplex half full ]7 15:16 rhosts [ port tp aui bnc mii fibre ]rhosts [ autoneg on off ] 6 10:04 d51.htm [ advertise %%x ]t 18 14:26.xauthOxg0wF [ phyad %%d ]5 Oct 25 09:10.cshrc [ xcvr internal external ]4.bashrc [ wol p u m b a g s d... ]5.tcshrc [ sopass %%x:%%x:%%x:%%x:%%x:%%x ]v2vpnr [ msglvl %%d ] Oct 26 10:20.bash_history ethtool -a --show-pause DEVNAME Show pause options ethtool -A --pause DEVNAME Set pause options [ autoneg on off ] [ rx on off ] [ tx on off ] ethtool -c --show-coalesce DEVNAME Show coalesce options ethtool -C --coalesce DEVNAME Set coalesce options [adaptive-rx on off] [adaptive-tx on off] [rx-usecs N] [rx-frames N] [rx-usecs-irq N] [rx-frames-irq N] [tx-usecs N] [tx-frames N] [tx-usecs-irq N] [tx-frames-irq N] [stats-block-usecs N] [pkt-rate-low N] [rx-usecs-low N] [rx-frames-low N] [tx-usecs-low N] [tx-frames-low N] [pkt-rate-high N] [rx-usecs-high N] [rx-frames-high N] [tx-usecs-high N] [tx-frames-high N] [sample-interval N]

67 ethtool -g --show-ring DEVNAME Query RX/TX ring parameters ethtool -G --set-ring DEVNAME Set RX/TX ring parameters [ rx N ] [ rx-mini N ] [ rx-jumbo N ] [ tx N ] ethtool -k --show-offload DEVNAME Get protocol offload information ethtool -K --offload DEVNAME Set protocol offload [ rx on off ] [ tx on off ] [ sg on off ] [ tso on off ] [ ufo on off ] [ gso on off ] ethtool -i --driver DEVNAME Show driver information ethtool -d --register-dump DEVNAME Do a register dump [ raw on off ] [ file FILENAME ] ethtool -e --eeprom-dump DEVNAME Do a EEPROM dump [ raw on off ] [ offset N ] [ length N ] ethtool -E --change-eeprom DEVNAME Change bytes in device EEPROM [ magic N ] [ offset N ] [ value N ] ethtool -r --negotiate DEVNAME Restart N-WAY negotation ethtool -p --identify DEVNAME Show visible port identification (e.g. blinking) [ TIME-IN-SECONDS ] ethtool -t --test DEVNAME Execute adapter self test [ online offline ] ethtool -S --statistics DEVNAME Show adapter statistics ethtool -h --help DEVNAME Show this help 67

68 9.6 File di configurazione di una rete /etc/sysconfig/network Contiene le principali configurazioni per il Networking: hostname, domainname, default gateway (tipico di RedHat). NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=<NOME_HOST> GATEWAY=xxx.yyy.zzz.aaa /etc/sysconfig/network-scripts/ifcfg-xxx Attiva il networking Attiva il networking in modalità IPV6 Nome dell'host IP del default gateway Directory contenente i file di configurazione delle singole interfacce (tipico di RedHat). DEVICE=ethx BOOTPROTO=none HWADDR=xx:aa:gg:cc ONBOOT=yes TYPE=Ethernet NETMASK= IPADDR=xxx.xxx.xxx.xxx USERCTL=no IPV6INIT=no /etc/hosts Contiene il mapping statico fra indirizzi e hostname ed alias. Segue un esempio. Il lato client del sistema DNS è configurato in /etc/resolv.conf localhost.localdomain localhost tux.dominio.it tux pinguino /etc/rc.local Nota: SELEX per mantenere le configurazioni le inserisce all interno del files rc.local ethtool s ethx speed 100 duplex full autoneg off 68

69 9.6.1 Altri file di configurazione rete /etc/services Contiene il mapping tra i numeri di porta e i nomi dei servizi.e' un file che solitamente non si modifica, salvo l'aggiunta di porte e protocolli custom. /etc/host.conf Specifica l'ordine secondo il quale il sistema effettuerà la ricerca di informazioni per risolvere gli indirizzi. Usato dalla resolver library in sistemi con libc versione 5. order hosts,bind ; Specifica di usare prima /etc/hosts e poi il DNS per risolvere gli IP. /etc/nsswitch.conf Stessa funzione di host.conf nei sistemi con libc versione 6 (glibc). In pratica è sempe meglio avere entrambi i file correttamente configurati. /etc/resolv.conf File di configurazione del client DNS ovvero contiene gli indirizzi del server DNS e un possibile dominio dell'host e l'ordine di ricerca nameserver ; IP del DNS server primario nameserver ; IP del DNS server secondatrio (altri possono seguire) domain dominio.it ; Nome del dominio dove si trova l'host options timeout:6 ; Imposta a 6 secondi il timeout per le query DNS. 9.7 Il comando route route [ opzioni ] [comando] [parametri] Route è il comando Linux che viene utilizzato per manipolare le tabelle di routing. Permette di aggiungere ed eliminare rotte statiche e default gateway, oltre che semplicemente visualizzare la tabella di routing di un sistema. Non è comune in altri Unix. Es: route n Visualizza informazioni di routing evitando di risolvere gli ip route add -net netmask gw Aggiunge una route statica per la rete /24, usando come gateway route add -host gw Aggiunge una route statica per l host /24, usando come gateway route add -net /0 gw Imposta come default gateway 69

70 Sintassi comando route: route add [-net -host] indirizzo [gw gateway] [netmask netmask] [mss mss] [metric metric] [dev device] route [-CFvnee] route [-v] [-A family] add [-net -host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If] route [-v] [-A family] del [-net -host] target [gw Gw] [netmask Nm] [metric N] [[dev] If] route [-V] [--version] [-h] [--help] -A family utilizzare la famiglia indirizzo specificato (ad esempio 'inet'; uso 'route --help' per l'elenco completo). -F operano sulla tabella di routing del kernel FIB (Forwarding Information Base). Questo è il valore predefinito. -C operare su cache del routing del kernel. -v selezionare l'operazione dettagliato. -n Visualizza gli indirizzi numerici invece di cercare di determinare i nomi host simbolico. Ciò risulta utile se si sta cercando di determinare perché è scomparso il percorso per il nameserver. -e utilizzare netstat-formato per visualizzare la tabella di routing. -ee genererà una linea molto lunga con tutti i parametri dalla tabella di routing del delete a route. add add a new route. target la rete di destinazione o host. È possibile fornire gli indirizzi IP in nomi con punti decimali o rete/host. -net l'obiettivo è una rete. -host la destinazione è un host. netmask NM Quando si aggiunge un percorso di rete, la netmask deve essere usata. gw GW instradare i pacchetti tramite un gateway. Nota: Il gateway specificato deve essere raggiungibile. Solitamente, questo significa che è necessario impostare una route statica per il gateway in anticipo. Se si specifica l'indirizzo di uno delle vostre interfacce locali, esso verrà utilizzato per decidere sull'interfaccia a cui i pacchetti devono essere indirizzati. Questo è un hack di compatibilità BSDism. metric M impostare il campo metrico nella tabella di routing (utilizzato da demoni routing) a M. MSS m impostare il TCP Maximum Segment Size (MSS) per le connessioni su m byte di questo percorso. Il valore predefinito è il dispositivo MTU meno intestazioni o un MTU inferiore quando si è verificato il rilevamento mtu di percorso. Questa impostazione può essere utilizzata per imporre più piccoli pacchetti TCP su altra estremità quando rilevamento mtu di percorso non funziona (di solito a causa del firewall configurato correttamente tale blocco ICMP frammentazione necessaria) window W impostare la dimensione della finestra TCP per connessioni su w byte di questo percorso. Questo è in genere utilizzato solo su reti ax. 25 e con i driver in grado di gestire frames back to back. irtt I impostare il tempo di andata e ritorno iniziale (irtt) per le connessioni TCP su questa rotta per I millisecondi ( ). Questo è in genere utilizzato solo su reti ax. 25. Se omesso il RFC 1122 predefinito è di 300ms. 70

71 reject mod, dyn, reinstate dev If installare un percorso di blocco, che costringerà una percorso di ricerca a fallire. Viene ad esempio utilizzato per maschera le reti prima di utilizzare il percorso di default. Non è valido per firewall. installare un percorso dinamico o modificato. Questi flag sono per scopi diagnostici e sono generalmente impostati solo da daemons di routing. forzare l'itinerario di essere associati con il dispositivo specificato, come il kernel altrimenti cercherà di individuare la periferica per sé (controllando i percorsi già esistenti e le specifiche del dispositivo, e dove la rotta viene aggiunta). Nella maggior parte delle normali reti non avrete bisogno di questa opzione. Se dev If è l'ultima opzione sulla riga di comando, la parola dev può essere omessa, è il valore predefinito. In caso contrario non importa l'ordine dei modificatori di rotta (metrico - netmask - gw - dev). Relativi Comandi: arp ifconfig ip netstat Per aggiungere una route statica per un'intera rete si usa l'opzione add e si definisce la rete con -net. Per esempio: route add -net netmask gw Aggiunge una rotta statica per la rete /24 usando come gateway Per impostare il default gateway si può digitare qualcosa come: route add -net netmask gw oppure: route add default gw Per cancellare una route esistente basta indicare il nome della rete: route del -net netmask gw Per visualizzare la tabella di route basta: route, se si vuole evitare il reverse lookup degli IP e velocizzare l'operazione scrivere: route -n Per visualizzare la cache del sistema sulle rotte usate: route C 71

72 9.8 Rendere permanente una rotta statica E 'possibile definire gateway predefinito nel file di configurazione scheda di rete nel /etc/sysconfig/network-scripts directory, ma si corre il rischio di inavvertitamente assegnare più di un gateway predefinito quando si hanno più di una scheda di rete. This could cause connectivity problems. Questo potrebbe causare problemi di connettività. If one of the default gateways has no route to the intended destination, every other packet will become lost. Se una delle porte di default non ha alcun percorso verso la destinazione, tutti gli altri pacchetti saranno persi. Firewalls that are designed to block packets with irregular sequence numbers and unexpected origins could also obstruct your data flow. Firewall che sono progettati per bloccare i pacchetti con i numeri di sequenza irregolare e origini inaspettato potrebbe anche ostacolare il flusso di dati. In Fedora Linux, permanente route statiche vengono aggiunti su base interfaccia per ogni file che si trovano in nel /etc/sysconfig/network-scripts directory. Il formato file è routenome-interfaccia in modo che il nome del file per l'interfaccia eth0 sarebbe route-eth0. Nel nostro esempio di routing, impostare una route alla rete con una subnet mask di (una maschera con i primi 8 bit impostato a 1 attraverso il gateway , dovremo configurare il file: /etc/sysconfig/network-scripts/route-eth0 in uno dei seguenti due modi: 1) <DEST>/<SubMask> via <Gateway>/<SubMask> /8 via rete /32 via host NOTA: Il gateway naturalmente deve essere raggiungibile sulla rete eth0 Es.1) Per configurare una rotta statica per raggiungere più hosts sulla rete eth1 ( ) attraverso il GTW ( ), occorre editare il file route-eth1 come segue: /24 via ) Es.2) Per configurare una rotta statica per raggiungere solo l Host all indirizzo ( ) sulla rete eth1 ( ) attraverso il GTW ( ), occorre editare il file route-eth1 come segue: /32 via ADDRESS0=aaa.bbb.ccc.ddd #macchina da raggiungere NETMASK0= # o mask adeguato GATEWAY0=aaa.bbb.ccc.ddd # gateway per macchina 0 ADDRESS1=aaa.bbb.ccc.ddd #macchina da raggiungere NETMASK1= # o mask adeguato GATEWAY1=aaa.bbb.ccc.ddd # gateway per macchina 1 NETWORKING=yes FORWARD_IPV4=false HOSTNAME=<nome_host> GATEWAY=<default gateway> Opzionali NOTA: Il gateway naturalmente deve essere raggiungibile sulla rete ethx Nota: Il nome del file /etc/sysconfig/network-scripts/route-* è molto importante. Aggiungendo l'estensione sbagliata interfaccia alla fine si tradurrà in percorsi che non potranno essere raggiunti. 72

73 Gli errori vengono riportati sullo schermo o nei files di log nella directory /var/log/ È possibile provare le variazioni effettuate eseguendo il file: /etc/sysconfig/network-scripts/ifup-routes ethx Per verificare le rotte statiche utilizzare i comandi: route o netstat rn. Nota: Nei sistemi basati su Debian, le rotte statiche permanenti, vengono configurate utilizzando il file: /etc/network/interfaces. /etc/network/interfaces and the static routes in the following format: up route add [-net -host] <host/net>/<mask> gw <host/ip> dev <Interface> esempio up route add -net /16 gw dev eth1 route add -host gw Alcune persone non si preoccupano di modificare i file di rete e aggiungono la rotta statica nel file di script /etc/rc.d/rc.local (c è un link sotto /etc). Tale file viene eseguito alla fine di ogni riavvio. Si possono inserire le rotte statiche sul file: rc.local come si evidenzia nell esempio: #!/bin/sh #! / Bin / sh # Questo script viene eseguito dopo tutti gli altri script di init. # Si possono inserire le stringhe di configurazioni qui route add -host gw eth0 route add -net netmask gw eth0 NOTA: Per abilitare una WS IBM AIX ad effettuare il routing fra reti occorre: digitare al prompt di root: no o ipforwarding=1 per rendere permanente tale modalità inserire il comando nell ultima riga del file /etc/rc.net 9.9 Wake on lan Il Wake On Lan è una funzione molto utile che permette di accendere il proprio computer a distanza dall'interno della propria rete locale. Molte schede di rete, soprattutto gli ultimi chip integrati, supportano questa caratteristica che in alcuni casi si può rivelare davvero molto utile. 73

74 9.10 Tips & Tricks Tutti i parametri di rete possono essere riconfigurati senza la necessità di un reboot ma semplicemente riavviando il servizio di rete: /etc/rc.d/init.d/network restart service network restart Per poter attivare o disabilitare un'interfaccia tramite il comando ifconfig bisogna essere root Se il comando route impiega molto a terminare di visualizzare il risultato premere ctrl+c e lanciare il comando route -n, evitando i delay per le reverse lookup DNS query degli indirizzi IP E' possibile associare più indirizzi ip appartenenti alla stessa rete su un'unica interfaccia di rete, ovvero è possibile associare più Alias a una interfaccia di rete. Non esiste nessun controllo di corrispondenza fra netmask e broadcast. Specificarle esplicitamente, se risultano incorrette Il comando rcp Copia files tra macchine (o sistemi) differenti. es: rcp -r /home/pippo/documenti /mnt/dos/pippo Questo esempio copia la directory Documenti nel filesystem dos. es: rcp /home/pippo/documenti/pippo Questo esempio copia il file pippo dalla macchina locale alla macchina remota (ammir01) nella directory /home/fdpmil. NOTA: Occorre settare i i files che permettono l accesso Il comando ftp per trasferire files Il comando ftp serve per trasferire files da una macchina all altra tramite rete, per far questo è necessario che sulla macchina remota sia attivo un server ftp che comunichi con quello locale per poter dialogare. In appendice X1 sono elencati i comandi principali utilizzabili. 74

75 10. Manutenzione del sistema 10.1 Log di sistema La gestione e l'analisi dei log è un'attività sistemistica che richiede le sue attenzioni. Su macchine ad alto traffico, o sotto attacco DOS o con particolari problemi ricorrenti, le dimensioni dei log possono crescere a dismisura in pochissimo tempo, fino a saturare il file system. Per questo motivo è sempre consigliabile montare la directory /var, dove generalmente risiedono i log, in una partizione indipendente, che, anche se riempita, non blocca il funzionamento del sistema. E' inoltre importante poterli gestire, ruotandoli ad intervalli fissi e compattando i log vecchi, preparandoli per un'archiviazione. Su molte distribuzioni Linux è incluso Logrotate, un'applicazione che semplifica l'amministrazione dei log, permette di comprimere, rimuovere ed inviare il log via mail oltre a eseguire una rotazione di file con vari criteri. Il file di configurazione è /etc/logrotate.conf In sistemi che usano RPM, solitamente, le regole di gestione dei singoli log sono inserite nella directory /etc/logrotate.d/. Generalmente gli script che eseguono logrotate sono inseriti nel crontab e di default sono configurati per gestire i log standard di sistema. Alcuni tipi file di log situati in /var/log sono: secure messages dmesg 75 log della sicurezza log generale log del kernel Nota:per leggere i messaggi digitare: dmesg 10.2 Controllo dei processi in esecuzione con il comando ps ps [opzioni] visualizza i processi in esecuzione ps fornisce le seguenti informazioni per ogni processo in esecuzione: UID= utente che ha avviato il servizio, PID = numero di identificazione del processo, PPID = numero di identificazione del processo padre, TTY = codice di identificazione del terminale, STIME=ora di avvio del processo, STAT = stato del processo, CMD = riga di comando con cui e' stato fatto partire il processo. opzioni -a mostra anche i processi degli altri utenti -x mostra i processi non controllati da un terminale -ef mostra tutti i parametri indentati Nota: esiste un comando chiamato pstree che visualizza solo i nomi dei processi ma li presenta in formato ad albero così da poter riconoscere in modo immediato le dipendenze.

76 10.3 Priorità nell esecuzione di un programma usando il comando nice Serve a lanciare la modalità di esecuzione di un programma. Se viene lanciato senza opzioni viene presentata la priorità corrente: $ nice 0 Nel caso in esame abbiamo ricevuto un valore pari a 0. I valori di priorità vanno da -20 (la più alta) a 19 (la più bassa). Se volessimo abbassare la priorità di esecuzione di un programma in modo che non disturbi le attività del sistema digitiamo: $ nice -n 5 nomeprogramma L opzione -n mi permette di indicare un valore scelto nella scala esposta precedentemente 10.4 Terminazione di un processo usando il comando kill kill termina un processo in esecuzione. es: Supponiamo che l'ouput del comando ps sia il seguente: PID TTY STAT TIME COMMAND 491 tty1 S 0:00 -bash 498 tty1 S 0:00 sh /usr/x11r6/bin/startx ttyp6 S 0:00 /bin/bash 672 ttyp0 S 0:00 man kill 686 ttyp0 S 0:00 /usr/bin/less -is 704 ttyp6 R 0:00 ps -x Per eliminare il processo relativo alla visualizzazione da console del comando kill --> man kill il comando da dare e' il seguente: #kill -9 PID pid significa process identifier. (lista dei process identifier: ps ) #killall u <nome utente> 76 termina tutti i processi di utente 10.5 Visualizzare gli accessi al sistema con il comando last Visualizza l'elenco degli ultimi accessi al sistema, elencando nome utente, data, console utilizzata, IP e durata della sessione. Ottiene queste le informazioni da /var/log/wtmp. Una versione leggermente diversa è lastb che visualizza le login di accesso al sistema fallite (ha bisogno del file /var/log/btmp, se esiste). last [opzioni] - numerorighe, - n [righe] Specifica quante righe mostrare (es: -n 10) - f [nomefile] Specifica un file alternativo a /var/log/wmtp dove trovare le informazioni relative ai login. -a nomeutente Visualizza solo le informazioni di login dell'utente specificato. - i [numero_ip] Visualizza solo le informazioni di login dell'host remoto specificato specificato. tty Visualizza solo le informazioni di login del terminale specificato (es: pts/0 ) - t [YYYMMDDHHMMSS] Visualizza le informazioni di login ad una specifica data e ora.

77 - x Visualizza i reboot effettuati e i cambi di runlevel 10.6 Visualizzare la sequenza dei comandi digitati da un utente Come è stato citato in precedenza, la Bash offre la possibilità di memorizzare la sequenza di comandi utilizzati da un utente. Per visualizzare lo storico dei comandi basta digitare quanto segue: $ history Con maggiore utilità se l output video viene rediretto al comando more o direttamente in un file di testo. Rispettivamente: $ history more $ history > storico.txt $ history c Cancella la lista dei comandi dal file history 10.7 Eventi schedulati /etc/crontab File di configurazione generale del demone crond contenente le operazioni schedulate di default o manualmente da ogni singolo utente. Normalmente viene usato da root, ma singoli eventi possono essere configurati nei crontab di utente. Per editare il file di crontab: neo]$ crontab -e Il file di cron di root si trova sotto /etc e si chiama crontab, mentre il file di crontab relativo al singolo utente si trova in: /var/spool/cron e si chiama $user (es. afpmil) La sintassi di crontab prevede una riga, con campi separati da uno spazio o un tab, per ogni comando da schedulare. mm hh gg MM GG comando opzioni I primi 5 campi servono per definire quando eseguire il comando specificato nel sesto campo. Possono contenere valori separati da virgola o un asterisco che indica tutti i calori possibili: 1) mm Minuto in cui eseguire il comando. Valori da 00 a 59. 2) hh Ora in cui eseguire il comando. Valori da 0 a 23 (0 è mezzanotte, 12 mezzogiorno) 3) gg Giorno del mese in cui eseguire il comando. Valori da 1 a 31. 4) MM Mese dell'anno in cui eseguire il comando. Valori da 1 a 12. 5) GG Giorno della settimana in cui eseguire il comando. Valori da 0 a 6. (0 corrisponde alla Domenica, 1 al Lunedì.. ) 6) comando Riga di comando da eseguire (con eventuali opzioni, argomenti ecc.) Alcune versioni di cron (red-hat) supportano l'operatore slash che viene utilizzato per pianificare delle "ripetizioni". Facciamo un esempio: */10 * * * * /usr/bin/updatedv Nel nostro esempio il valore dei minuti è stato impostato come */10; ciò significa che la nostra operazione sarà eseguita ogni 10 minuti. 77

78 10.8 Controllo della memoria con vmstat Comando che riporta informazioni sui processi, sulla memoria, sulla paginazione, sui block IO, i trap e l'attività della CPU. La prima volta mostra le medie dall'ultimo reboot. Le volte successive mostra informazioni su un periodo di campionamento di lunghezza "delay". I report sui processi e la memoria sono istantanei in entrambi i casi. Questi report sono pensati per identificare i "colli di bottiglia" del sistema. Il vmstat di Linux non si conta come processo in esecuzione. Tutti i blocchi di Linux attualmente sono da 1k, ad eccezione per i blocchi del CD-ROM che sono da 2k. vmstat [-n] [delay [num]] vmstat [-V] $vmstat 3 20 aggiorna ogni 2 sec per 20 volte - n mostra l'header solo una volta invece che periodicamente. delay num è il ritardo in secondi tra gli aggiornamenti. Se non è specificato alcun ritardo, è mostrato solo un report con i valori medi dal reboot. è il numero degli aggiornamenti. Se non è specificato ed è definito il ritardo, allora num di default è infinito. - V mostra informazioni sulla versione Esempio di output Procs Memory Swap IO System Cpu R B w swpd free buff cache si so bi bo in cs us sy Id Descrizione dei campi: Procs r Il numero di processo in attesa del run time. b Il numero di processi in sleep non interrompibile. w: Il numero di processi swap out ma altrimenti runable. Memory swpd il totale della memoria virtuale usata (kb). free buff Swap si so IO bi bo System in cs Cpu us sy id il totale della memoria libera (kb). il totale della memoria usata come buffer (kb). Il totale della memoria swappata dal disco (kb/s). Il totale della memoria swappata nel disco (kb/s). Blocchi inviati a un device a blocchi (blocchi/s). Blocchi ricevuti da un device a blocchi (blocchi/s). Il numero di interrupt al secondo, incluso il clock. Il numero di cambi di contesto al secondo (Contest switch). Percentuale di utilizzo CPU da parte di processi in userspace Percentuale di utilizzo CPU da parte del kernel Idle time 78

79 10.9 Controllo della memoria con free Questo comando stampa sullo standard output l utilizzo della memoria Ram e dello Swap: $ free total used free shared buffers cached Mem: /+ buffers/cache: Swap: Dai dati si può notare l esistenza di 96 Mbyte di memoria Ram, e una partizione di Swap di circa 60 Mbyte Controllo occupazione dei file system il comando df riporta l'occupazione dei file system montati rispetto allo spazio a loro riservato. df [option] [ t filesystemtype] nomefile es: df -k riporta l'occupazione del file system in kilobyte Il comando netstat netstat è un comando polifunzionale che permettere di verificare le connessioni, le rotte statistiche del proprio sistema. Un comando utile per diagnostica e controllo del sistema. netstat [informazioni] [Opzioni] Per selezionare il tipo di informazioni da visualizzare, bisogna mettere come primo argomento una delle seguenti opzioni. Se non si specifica nulla il comando visualizzera' la lista delle socket aperte, opzione di default. Informazioni: -r route Visualizza le rotte impostate sul sistema -g groups Visualizza informazioni riguardanti i multicast group membership (ipv4 e ipv6) -i interface=iface Visualizza le statistiche di tutte le interfacce o della singola interfaccia specificata -M masquerade Verifica le connessioni che hanno subito masquerading -s statistics Visuallizza un sommario di statistiche Opzioni -v verbose Abilita il verbose mode. -n numeric Non risolve gli Ip e il numero delle porte, risparmiando i tempi per query DNS. -A protocol=family Opzione per specificare l'address family quando si vuole visualizzare le connessioni. -c continuous Esegue il comando ogni secondo (o ogni intervallo di secondi specificato). -p program Mostra il PID, ed il nome del programma proprietario della socket. Utile per capire, per esempio, quale programma utilizza una specifica porta TCP. -l listening Mostra solo le conessioni in LISTENING 79

80 -a all Mostra tutte le connessioni (LISTENING e non), se abbinato alla flag -i visualizza le informazioni per tutte le interfacce 80

81 es. netstat -nlp Visualizzazione dei software che mantengono porte in listening, con relativo indirizzo IP. Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp : :* LISTEN 640/inetd tcp : :* LISTEN 773/mysqld tcp : :* LISTEN 640/inetd tcp : :* LISTEN 783/httpd tcp : :* LISTEN 640/inetd tcp : :* LISTEN 643/sshd tcp : :* LISTEN 722/cupsd tcp : :* LISTEN 692/master udp : :* 722/cupsd... L'opzione -n visualizza gli indirizzi in formato numerico, -l filtra solamente le porte in stato listen mentre -p visualizza il PID ed il nome del programma che mantiene aperta una determinata porta Es. netstat -s Visualizzazione delle statistiche per quanto riguarda la network. Utili per capire se il vostro server ha problemi, anomalie in ambito network o semplicemente per dedurre quanto traffico ha prodotto la vostra macchina. Statistiche relative ai pacchetti IP Ip: total packets received 0 forwarded 0 incoming packets discarded incoming packets delivered requests sent out Statistiche relative ai pacchetti ICMP Icmp: 6 ICMP messages received 0 input ICMP message failed. ICMP input histogram: destination unreachable: 6 6 ICMP messages sent 0 ICMP messages failed ICMP output histogram: destination unreachable: 6 Statistiche relative ai pacchetti TCP Tcp: 1039 active connections openings 0 passive connection openings 0 failed connection attempts 0 connection resets received 2 connections established segments received segments send out 145 segments retransmited 0 bad segments received. 25 resets sent Statistiche relative ai pacchetti UDP Udp: 81

82 169 packets received 2 packets to unknown port received. 0 packet receive errors 180 packets sent TcpExt: ArpFilter: TCP sockets finished time wait in fast timer 7 packets rejects in established connections because of timestamp 269 delayed acks sent Quick ack mode was activated 134 times 16 packets directly queued to recvmsg prequeue. 400 packets directly received from prequeue 6182 packets header predicted 16 packets header predicted and directly queued to user TCPPureAcks: 1336 TCPHPAcks: 1195 TCPRenoRecovery: 0 TCPSackRecovery: 0 TCPSACKReneging: 0 TCPFACKReorder: 0 TCPSACKReorder: 0 TCPRenoReorder: 0 TCPTSReorder: 0 TCPFullUndo: 0 TCPPartialUndo: 0 TCPDSACKUndo: 0 TCPLossUndo: 0 TCPLoss: 0 TCPLostRetransmit: 0 TCPRenoFailures: 0 TCPSackFailures: 1 TCPLossFailures: 0 TCPFastRetrans: 0 TCPForwardRetrans: 0 TCPSlowStartRetrans: 0 TCPTimeouts: 69 TCPRenoRecoveryFail: 0 TCPSackRecoveryFail: 0 TCPSchedulerFailed: 0 TCPRcvCollapsed: 0 TCPDSACKOldSent: 158 TCPDSACKOfoSent: 29 TCPDSACKRecv: 0 TCPDSACKOfoRecv: 0 TCPAbortOnSyn: 0 TCPAbortOnData: 4 TCPAbortOnClose: 34 TCPAbortOnMemory: 0 TCPAbortOnTimeout: 8 TCPAbortOnLinger: 0 TCPAbortFailed: 0 TCPMemoryPressures: 0 82

83 netstat -rn Autore: neo - ( Revisione: al ) - Ultimo Aggiornamento: :03:20 - Data di creazione: :03:20 Tipo Infobox: STDOUT - Skill: 2- JUNIOR Visualizzazione delle route configurate sul sistema. L'output e' identico al comando route -n, l'unica differenza dei due comandi e' il PATH; ovvero il comando route non e' all'interno dei path settati di default da RH linux per i normali utenti netstat invece si. Output del comando netstat. neo]$ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface U eth0 Route per i pacchetti che hanno come destinazione la propria network U lo Route per i pacchetti che hanno come destinazione lo UG eth0 Route che identifica il default gw neo]$ route n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface U eth0 Route per i pacchetti che hanno come destinazione la propria network U lo Route per i pacchetti che hanno come destinazione lo UG eth0 Route che identifica il default gw 83

84 10.12 Visualizzare e impostare la data/ora del sistema con il comando date Visualizza la data corrente: es: date Riporta la data e l'ora corrente. Imposta la data e l'ora del sistema: Es1: date -s 02 May :55:10 Es2: date MMDDhhmm[YYYY][.ss] date Questi esempi settano la data al 2 Maggio 2008, e l'ora alle 10:55:10, omettendo l'ora setta automaticamente all'ora 00:00:00 Altri utilizzi di date: es: date --date 20 days ago Stampa la data di 20 giorni fa es: date --date 3 months ago Stampa la data equivalente al giorno corrente di 3 mesi fa. es: date +'%T' Stampa l'ora corrente nel formato ore:minuti:secondi Il comando finger per le informazioni sulla macchina Restituisce i dati principali di un utente o di una macchina. finger Se l'argomento viene omesso allora viene assunto MACCHINA=localhost. Se NOME_DI_LOGIN viene specificato allora finger fornisce informazini su tale particolare utente della MACCHINA, altrimenti fornisce informazioni sugli utenti connessi in questo momento a MACCHINA. Esempio su (D51) D51:linate > finger linate Login: linate Name: (null) Directory: /usr2/linate Shell: /bin/csh On since Wed Nov 2 08:13 (UTC) on pts/1 from fp4 No mail No Plan D51:linate > finger D51:linate > 84

85 10.14 Conoscere le informazioni sul sistema operativo con Il comando uname Uname fornisce informazioni sul sistema operativo e sulla macchina a cui si è collegati. Le opzioni permettono di specificare quali informazioni si desiderano. uname [OPZIONE...] L'assenza di opzioni equivale all'opzione -s. opzioni (testate su D51) D51:linate > uname -m i686 D51:linate > uname -n D51 D51:linate > uname r EL Tipo di macchina Nome del nodo della rete associato alla macchina Codice di rilascio del sistema operativo D51:linate > uname s Linux Nome del sistema operativo D51:linate > uname v #1 Mon Apr 20 10:23:08 EDT 2009 D51:linate > uname a Informazioni sulla versione del sistema operativo Riepilogo di tutte le informazioni Linux D EL #1 Mon Apr 20 10:23:08 EDT 2009 i686 i686 i386 GNU/Linux Visualizzare l elenco dei moduli installati E un utilità per il kernel di Linux che permette di visualizzare i moduli caricati in memoria. # lsmod Module Size Used by bsd_comp (autoclean) ppp_async (autoclean) parport_pc (autoclean) lp (autoclean) parport (autoclean) [parport_pc lp] rtc (autoclean) nls_cp (autoclean) smbfs (unused) mpu (unused) sb_lib (unused) uart [sb_lib] sound [mpu401 sb_lib uart401] nls_iso ppp_deflate ppp_generic [bsd_comp ppp_async ppp_deflate] slhc [ppp_generic] 3c59x dummy (unused) 85

86 10.16 Il comando du per conoscere la dimensione di un file in Kb du mostra la dimensione di un file. es: du pippo Mostra la dimensione occupata da pippo in kb. es: du -a Mostra la dimensione di tutti i files (in Kbyte). es: du ah more Mostra la dimensione di tutti i files (con la scritta in chiaro kb) Il comando file per determinarne il tipo file determina il tipo di file facendo un'analisi del suo contenuto. es: file pippo Se pippo e' un file compresso di tipo bz2, il risultato del comando sara' qualcosa di simile: pippo.bz2: bzip2 compressed data, block size = 900k Fermare il sistema con halt o shutdown Questo comando è necessario per fermare il vostro computer. Una volta lanciato compierà diverse operazioni volte a interrompere i servizi attivi e disabilitare i dispositivi che compongono il file system. # halt 86

87 11. Backup & Restore 11.1 Backup WS FDP Loggarsi come root # cd /sbin # backup_system La macchina esegue il tar dei singoli FS, che verranno posizionati in /home/cdimage finita la fase di compressione viene eseguito il programma mkisofs questo programma crea in /home il file immagine [ iso.img ] Utilizzare una chiavetta USB con formattazione FAT32 Montare la chiavetta USB come segue: Controllare se esiste già una directory relativa alla USB es. /mnt/usb1 Eventualmente crearla con mkdir /mnt/usb1 oppure mkdir /mnt/pendrive Per sapere a quale device è assegnata la porta usb vi sono due metodi: Metodo 1 con la chiavetta inserita digitare: REV00.001]# fdisk l Disk /dev/sda: GB, bytes 255 heads, 63 sectors/track, cylinders Units = cylinders of * 512 = bytes Device Boot Start End Blocks Id System /dev/sda1 * Linux /dev/sda Linux swap /dev/sda Linux /dev/sda Extended /dev/sda Linux /dev/sda Linux /dev/sdb B W95 FAT32 Metodo 2 con la chiavetta disinserita digitare: REV00.001]# dmesg Inserire la chiavetta nella porta usb e dopo qualche secondo, rieseguire il comando: REV00.001]# dmesg 87 a video si dovrebbe leggere un messaggio del tipo: Read on device /dev/sdb1 Una volta identificato il device della USB, digitare: # mount t vfat /dev/sdb1 /mnt/usb1 Digitando: # cp /home/iso.img /mnt/usb1 Si trasferirà il file immagine (/home/iso.img), sul supporto esterno. Smontare il FS relativo alla chiavetta: umount /mnt/hd2 Tramite Masterizzatore (anche su macchine WIN) si potrà creare un DVD (già in formato bootable). umount /mnt/hd2

88 11.2 Restore WS FDP Accendere la macchina su cui effettuare il restore ed assicurarsi che la sequenza di boot abbia come primo dispositivo il DVD. Inserire il DVD di backup, far ripartire il PC. Alla comparsa della scritta: boot: premere ENTER Verrà richiesto se formattare il disco rigido oppure uscire [CTRL-ALT-DEL]: premere ENTER per confermare la formattazione Terminato il ripristino, togliere il DVD ed effettuare il reboot della macchina Programma: mkisofs E' l'abbreviazione di "make ISO filesystem". Serve per scrivere sul disco rigido l'immagine ISO del cd da duplicare. L'immagine non è altro che una copia fisica del disco originale, viene salvata su un unico file e mantiene intatte le caratteristiche del filesystem ISO9660. La sintassi è la seguente: # mkisofs [opzioni] -o [file_destinazione] [/percorso_origine] Le principali opzioni sono: - b specifica il percorso e il nome dell'immagine di avvio (se il cd deve essere bootabile); - c specifica il percorso e il nome del file di catalogo; deve esserci se si sta usando l'opzione -b. Potete usare come path quello indicato nell'opzione -b e come nome del file "boot.catalog"; - l consente l'utilizzo di nomi di file lunghi fino a 31 caratteri. Questa opzione "raggira" lo standard ISO che vorrebbe nomi in formato 8+3. Non usatela se il disco deve girare in Dos; - J usa le estensioni Joliet. Utile se il cd vi serve in WindowsNT o 95 (e superiori); - o specifica il nome del file sul quale verrà scritta l'immagine; - C inizio_sessione_precedente,inizio_sessione: richiesta per creare l'immagine della seconda sessione o successiva di un cd multisessione; i due valori si possono ottenere con il comando "cdrecord -msinfo". Deve essere usata congiuntamente all'opzione -M; - M specifica il path o il device della precedente sessione (ad esempio -M 0,1,0); - R usa le estensioni RockRidge. Serve per mantenere i permessi sui file; - T genera il file TRANS.TBL; se usate le estensioni 8+3 questo file tiene traccia dei nomi originali in formato lungo; - V assegna l'etichetta di volume. In Windows sarà il nome del disco in Esplora risorse. So per esperienza che alcune copie di backup ;-) di programmi Microsoft non vengono eseguite da cd se non si specifica l'etichetta di volume originale; - v modalità prolissa; Per chi fosse interessato vi sono inoltre numerose opzioni per creare dischi in HFS, il filesystem usato dai MacIntosh. 88

89 Esempi: # mkisofs o /home/iso.img b isolinux/isolinux.bin c isolinux/boot.cat no-emul-boot boot-load-size 4 boot-info-tabòe l R r /home/cdimage Scrive l'immagine ISO su iso.img, nella directory /home. Usato dal sistema FDP # mkisofs -J -l -V "etichetta" -o immagine.img /directory_sorgente (ad es. /dev/cdrom) Scrive l'immagine ISO su immagine.img, nella directory corrente, con estensioni MS Joliet e supporto per nomi di file lunghi. # mkisofs -R -l -V "etichetta" -o immagine.img /directory_sorgente Come sopra, ma con estensioni RockRidge. # mkisofs -l -b /percorso_immagine_di_boot/immagine.bin -c /percorso_immagine_di_boot/boot.catalog -V "etichetta" -o immagine.img /directory_sorgente Con questo comando puoi fare l'immagine per un cd di boot, ad esempio quello di una distribuzione. Devi prima copiare sull'hard disk il contenuto dell'intero cd-rom e poi dare il suddetto comando specificando nel path della sorgente la directory in cui hai copiato i file. Tricks: # mount -t iso9660 -o loop immagine.img /mnt Con questo comando puoi montare l'immagine come se si trattasse di un cd-rom, così da avere una sorta di "anteprima" del cd che verrà scritto. Ricorda che l'immagine non è modificabile, perciò se trovi qualcosa che non va devi ricrearla. Prima della scrittura l'immagine deve essere smontata. # dd if=/dev/cdrom of=immagine.img Questo è un metodo alternativo veloce per creare un'immagine ISO. Se non avete esigenze particolari usatelo. 89

90 11.4 Backup CWP Selex Solitamente per il backup di ciascun nodo sono necessari 5 CD o 1 DVD a seconda del valore impostato nel file di configurazione Config.sh. Il BACKUP di un nodo fatto con MKCDREC crea un file immagine (tipo ISO) che contiene l immagine dell H.D. compreso il SISTEMA OPERATIVO. Questo vuol dire che nel caso di sostituzione dell H.D. sara possibile mettere Il CD dove risiede il file immagine ed effettuare l installazione sul nuovo H.D. Prima di lanciare il backup con MKCDREC occorre controllare alcuni parametri nel file di configurazione Config.sh sotto la directory /usr2/mkcdrec. 1) Nella sezione ISOFS_DIR Viene definito il path della directory dove MKCDREC creera dei file provvisori del tipo isofs_tg. che serviranno poi per creare il file immagine (tipo ISO ). Es. /usr2/backup. 2) Nella sezione CDREC_ISO_DIR Viene definito il path della directory dove sara creato il file immagine (o piu file nel caso si supera il size stabilito in un altra sezione) Es. /usr2/iso 3) Nella sezione EXCLUDE_LIST Vengono definiti i path delle directory o file che vogliamo escludere dal Backup. Es. EXCLUDE_LIST= /var/spool/squid/* (tutti i flles della directory squid) /var/log/mailog* /usr2/tmp (tutta la directory tmp /usr2/backup/* (per no backuppare i file temporanei) /usr2/iso/* (per non backuppare i file iso) (NB sono importanti gli apicini di chiusura altrimenti non viene preso in Considerazione quanto scritto) 90

91 4) MAXCDSIZE= (Size max del file iso da creare per poterlo dopo copiarlo su CD. Se il bakup e piu grande saranno creati piu files) per DVD sara (Il comando make clean pulisce le dir dove vengono messi i file temporanei) 11.5 Effettuare un backup di un nodo 1. Per verificare che il sistema soddisfi i requisiti per la creazione del bootable CD- ROM/DVD sotto la directory mkcdrec (solitamente sotto la /usr2) digitare il comando: cd /usr2/mkcdrec # make test [Enter] a video apparirà la seguente schermata: Verificare che tutti i test siano siano terminati con successo (la scritta Passed in verde lo conferma) o, che non siano applicabili (la scritta N.A in rosso non da problemi). 2. Dare il comando : vi /etc/inittab per cambiare il valore id:3 (o 5 su server con term. Grafico) in id:1 nella sezione runlevel. 3. Effettuare reboot. (dopo il reboot la macchina ripartira in Single User Mode A questo punto con il comando: vi /etc/inittab per riportare il valore originale id:3 nella sezione runlevel (o 5 su server con term. Grafico). 4. Montare tutte le partizioni : # mount a [Enter] 5. Sotto la directory mkcdrec far partire mkcdrec eseguendo il seguente commando: make [Enter] A video apparirà la seguente schermata: 91

92 6. Per creare i files che poi saranno bruciati su cd/dvd scegliere l opzione 2 : 7. Per confermare premere enter: [Enter] Durante la sessione di backup (solitamente sono necessari 30 minuti), tutti i file ISO vengono salvati uno dopo l altro sotto la directory: # /usr2/backup Durante il processo di backup a ogni file creato viene associata un etichetta (uguale per tutti) e un numero (incrementale). Il path, il nome della directory di destinazione dei file e l etichetta dei file è un parametro modificabile all interno del file di configurazione Config.sh allocato sotto la directory mkcdrec. Per concludere la fase di backup è necessario transferire i file di backup in un pc connesso al nodo attraverso la LAN di sistema e copiare ciascun file in un apposito supporto (CD o DVD). Prima di bruciare su disco i file, è necessario rinominarli aggiungendo l estensione.iso Qualsiasi sia il programma che si è deciso di utilizzare per bruciare i CD, selezionare l opzione immagine. 92

93 11.6 Restore dei nodi Linux Per effettuare il restore di un nodo: 1. Inserire il primo CD nel lettore e riavviare la macchina: # shutdown r now [Enter] A video apparirà la seguente schermata: 2. Per effettuare il boot da CD scegliere l opzione 2: 2 [Enter] 3. Dopo il riavvio della macchina a video apparirà il seguente prompt #. Per far partire il processo di restore digitare i seguenti comandi: # cd /etc/recovey [Enter] #./start-restore.sh [Enter] a video apparirà la seguente schermata: 93

94 4. Per iniziare il processo di restore premere enter: [Enter] a video apparirà la seguente schermata: 5. Per confermare che il boot deve essere effettuato da CDs, premere enter: [Enter] a video apparirà la seguente schermata: Da questo punto in poi non sarà più possibile arrestare il processo!! Nel caso in cui siano coinvolti più CD, quando mkcdrec avrà bisogno del disco successivo, a video apparirà il seguente messaggio: Inserire il disco richiesto e premere [Enter]. Alla fine del processo, quando tutti i dischi e i file systems sono stati restorati, se il restore avrà esito positivo a video apparirà il seguente messaggio (evidenziato di blu): In caso di errori, invece, sarà visualizzato un banner rosso con i warning relativi ai problemi riscontrati. Togliere il CD ed effettuare reboot. SOLO PER LE CWPs. Nel caso si stia restorando una CWP e non si utilizza lo specifico backup del nodo, al termine del processo di restore, bisognerà modificare l hostname della macchina e i suoi indirizzi IP (che appartengono al nodo sul quale è stato fatto il backup). N.B. Cambiando indirizzi IP puo succedere che venga cancellato il file hosts sotto la dir /etc Per cui conviene salvarlo prima della modifica! Per modificare l hostname, editare il file /etc/sysconfig/network e modificare i parametro HOSTNAME. Per modificare gli indirizzi delle due LAN, editare i files /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1 e modificare il parametro IPADDR. In caso non si sia preso nota degli indirizzi della macchina, ricordarsi che queste informazini sono presenti in tutti i file hosts delle altre macchine. 94

95 11.7 Il comando tar tar è un comando che serve per riunire un certo numero di files. es: tar -tvf prova.tar Con questo comando si visualizza l'archivio prova.tar es: tar -cvf prova.tar Documenti Questo comando riunisce tutti i file della directory Documenti nel file prova.tar es: tar -cvzf prova.tgz Documenti Questo comando e' equivalente al precedente, pero' utilizza gzip per comprimere l'archivio. es: tar -tzf prova.tgz Con questo comando visualizza l'archivio creato precedentemente. es: tar -xvf prova.tar Questo comando estrae i files di prova.tar nella directory corrente es: tar -xvzf prova.tgz Questo comando estrae i files l'archivio creato precedentemente a partire dalla directory corrente Attenzione tar non comprime i files, ma li riunisce soltanto. 95

96 12. Preparazione per l'installazione E' fondamentale essere ben preparati prima dell'installazione per evitare che ore di lavoro vadano in fumo per una mancata o sbagliata considerazione e analisi dei propri bisogni e del proprio hardware. La raccolta di informazioni è il primo passo per evitare tutto ciò. Ecco cosa bisogna sapere per iniziare un'installazione: - Conoscere l'hardware a disposizione. Solitamente durante l'installazione il proprio hardware viene rilevato automaticamente, ma possono esserci rari casi in cui questo non accade. In genere se si usa un PC standard con una nuova distribuzione non ci sono problemi nel riconoscimento di componenti e periferiche. - Sapere quali e quanti Hard Disk sono presenti sul sistema, come sono partizionati, quali sono cancellabili. - Il tipo di computer su cui viene fatta l'installazione (server, desktop, laptop) - Configurazione di rete, se prevista (indirizzo IP, subnetmask, nome macchina, server DNS) - Configurazioni base del sistema (layout di tastiera, nomi utenti e password, timezone) - I servizi che dovrà offrire (deve diventare un server? Di che tipo?) - I programmi che ci interessa installare (solitamente è possibile sceglierli singolarmente o per gruppi) Installazione: Inserire un DVD d installazione nella macchine e verificare che il boot parta da DVD. Seguire le istruzioni dell installazione Installare GRUB su memoria USB NOTA: questa procedura potrebbe non funzionare su alcune memorie flash. I moderni PC prevedono nel BIOS l'opzione di boot da USB. In questi casi potrete preparare una chiavetta per avviare una installazione normalmente inaccessibile sull'hard disk o una installazione minimale dalla chiavetta stessa. E' importante notare come la chiavetta può essere formattata con qualsiasi filesystem (esempio vfat, ext3 etc.). Montiamo la chiavetta (se non viene montata automaticamente dal sistema): # mkdir /media/usb_pen # mount /dev/sda1 /media/usb_pen Dove a /dev/sda1 andrà sostituita, in base alla nostra configurazione hardware, la corretta partizione secondo la normale nomenclatura delle unità sotto GNU/Linux. Infine accediamo alla cartella dove abbiamo montato la chiavetta: # cd /media/usb_pen A questo punto esistono due metodi, il primo dei quali ha creato problemi ad alcuni. Metodo 1 # grub-install --no-floppy --root-directory=. /dev/sda1 Dove a /dev/sda1 andrà sostituita, in base alla nostra configurazione hardware, la corretta partizione secondo la normale nomenclatura delle unità sotto GNU/Linux. 96

97 Metodo 2 Il secondo metodo è più elaborato, ma non per questo più complesso. ATTENZIONE: assumiamo che si stia lavorando da un sistema con GRUB preinstallato. # mkdir /media/usb_pen/boot # cp -R /boot/grub /tmp/usb/boot/ Infine diamo: # grub Adesso dare i seguenti comandi in sequenza al prompt di GRUB: root (hd1,0) setup (hd1) quit Ovviamente a hd1,0 e hd1 andranno sostuiti valori, in base alla nostra configurazione hardware (e le impostazioni di boot sequence nel BIOS), secondo la nomeclatura di GRUB Configurazione di GRUB A questo punto possiamo creare (o editare) il file menu.lst per poter configurare GRUB (altro editor di testo nano): # vi /media/usb_pen/boot/grub/menu.lst Inserendo una voce del genere (se necessario per il nostro scopo): title Linux initrd /boot/linux.img root (hd1,0) boot kernel /boot/vmlinuz root=/dev/sda1 ro Personalizzando i vari valori in base alle proprio esigenze. NOTA: eseguendo il boot dalla memoria flash questa apparirà a GRUB come primo disco, quindi il disco fisso del computer diventerà hd Installazione di programmi su Linux con RPM Per installare dei programmi su Linux esistono vari modi: - compilare il sorgente, pratica che può essere complessa ma è utile in casi particolari; - utilizzare pacchetti (packages) che contengono i programmi già compilati e pronti per l'uso, facilitando e standardizzando la gestione del software sul sistema. I sistemi di package più comuni su Linux sono RPM e DEB. I pacchetti.deb vengono usati nelle distribuzioni derivate da Debian, gli.rpm sono stati definiti da RedHat e risultano essere i più diffusi. Slackware pacchettizza il suoi programmi con normali tar gzippati:.tgz. Affrontiamo qui l'uso di RPM, Red Hat Package Manager, sottolineando che file.deb e, in parte,.tgz vengono gestiti con comandi diversi ma hanno una logica simile. Un package costruito con RPM è un archivio di file e informazioni che può essere installato, rimosso, interrogato sul sistema. RPM permette di installare programmi, già compilati, con una facilità e rapidità estrema sul proprio Linux (è paragonabile ad un unico setup.exe su Windows). Si sottolinea che ogni distribuzione e anche ogni versione della stessa distribuzione richiede pacchetti dedicati, adatti per il proprio sistema: un RPM realizzato per RedHat 6.2, per esempio, difficilmente funzionerà su RedHat 7.2. RPM gestisce automaticamente le "dependencies": se si prova ad installare un RPM che richiede librerie o programmi non presenti o non abbastanza aggiornati sul sistema, l'installazione fallisce e viene indicato quali file mancano. Analogamente, se si prova a rimuovere un package che contiene file utilizzati da altri programmi, viene dato un messaggio di errore. 97

98 Gli RPM automaticamente distribuiscono i file di un pacchetto nelle directory giuste (logs in /var/log, file di configurazione in /etc/, binari in /usr/bin o /usr/sbin, script di startup in /etc/rc.d/init.d/ ecc.) e verificano la presenza di conflitti o installazioni più recenti. La rimozione di un RPM non cancella mai nulla che non abbia installato. Se deve sostituire o cancellare un file di configurazione, per esempio, viene mantenuto il file esistente con il suffisso.rpmsave. Le opzioni più comuni per usare il comando rpm per gestire file.rpm sono: rpm -hiv pacchetto Installa il pacchetto.rpm specificato. rpm -U pacchetto Aggiorna il pacchetto con una versione più recente. rpm -e pacchetto Disinstalla il pacchetto, rimuovendone i file dal sistema. rpm -qa rpm -ql pacchetto rpm -qf [file] Visualizza la lista dei pacchetti installati nel sistema Visualizza i file contenuti nel pacchetto indicato Visualizza il pacchetto che contiene il file indicato Le comuni distribuzioni Linux offrono svariati tool grafici per una semplice gestione dei pacchetti installati sul sistema. Di fatto questi programmi eseguono le stesse operazioni del comando rpm, ma sono più semplici ed immediate da usare. La tendenza, sempre più diffusa, è quella di prevedere meccanismi di update automatizzato, per gestire il sempre alto numero di aggiornamenti (per sicurezza e bug fix) di programmi. E' un principio analogo al Windows Update su sistemi Microsoft, ma si applica a tutti i programmi installati, e non solo al sistema operativo. Trucchetti con la tastiera Una volta, se avevate una tastiera diversa da una tastiera americana eravate davvero nei guai, fortunatamente, oggigiorno tutte le distribuzioni Linux hanno la corretta mappatura della tastiera. Ciononostante, la vostra tastiera non vi permette sempre di scrivere tutto quello che volete: alcuni caratteri risultano ben nascosti e per trovarli occorrono alcuni semplici trucchi: ~ Tilde. [ALT GR]-[ì] {} Parentesi graffe. [Alt Gr]-[7]aperta, [Alt Gr]-[8]chiusa. 98

99 13. Gestione dischi 13.1 Partizioni Gli strumenti generalmente disponibili per effettuare un partizionamento del disco sono: fdisk Tool testuale con la possibilità di operazioni avanzate per il partizionamento diskdruid Tool grafico fornito da RedHat, semplice ed intuitivo alternativa funzionale a fdisk se non si hanno bisogno di funzionalità avanzate Il minimo partizionamento richiesto prevede: - una partizione generale (/, root) in cui saranno inseriti tutti i file. - una partizion di swap (usata come Virtual Memory) E' preferibile, nelle installazioni standard avere un miglior partizionamento cioè dedicare partizioni indipendenti per: - / (la root, sotto la quale stanno tutte le altri directory - /boot (partizione di boot, dove risiede kernel e file di boot. 20 Mb di spazio possono bastare) contiene i files di sistema: vmlinuz-2-xxxxx initrd-2-xxxxx config-2.xxxxx sistema operativo linux serve alla partenza del computer. Carica tutti i principali moduli,in modo da non avere problemi in partenza, poi fa il probing e scarica quelli non utilizzati, alla fine in memoria rimane il vmlinuz-2xxxx ovvero il sistema operativo linux. files che contiene l elenco dei moduli e se sono caricati nella parte «monolitica» o nella parte «modulare» y=caricati nella parte monolitica m= caricati nella parte modulare n=non viene processato NOTA: questo file non si può cambiare manualmente. Per effettuare modifiche, occorre copiarlo nella directory: /usr/src/linux e chiamarlo.config prelevare il codice sorgente e rigenerare. Quando si aggiorna il Kernel non cancella le versioni precedenti per cui nella directory potremmo avere più sistemi operativi (vmlinuz-2-xxxxx) installati. Il bootloader è presente nel MBR (Master Boot Record) e si chiama grub, occorre fare attenzione se s installa Windows in quanto occupa la stessa zona di MBR del disco. I files di configurazione sono presenti in : /boot/grub Il file grub.conf default=0 timeout=5 è il file di configurazione del grub indica che hai selezionato il primo kernel disponibile. (in caso di upgrade l ultimo kernel caricato sarà il primo in sequenza) è il timeout della finestra di windows (trascorso tale tempo il sistema parte) title Red Hat Linux ( smp) semplice label root (hd0,0) kernel /vmlinuz-2.xxxxx ro root=label=/ dove è presente il sistema operativo in questo caso il primo HD prima partizione parametri 99

100 NOTA: per visualizzare le versioni e quindi sceglierle, dopo il reboot alla comparsa della finestra di sistema (maschera azzurra) muovere le frecce apparirà una finestra con i vari kernel disponibili. Per modificare i parametri d avvio digitare e, posizionarsi sulla voce che vogliamo cambiare e digitare e per entrare i editing sulla linea. es.) si voglia modificare i parametri del kernel per mettere in single-node la macchina: una volta digitato e (si potrà sostarsi con le frecce sulla riga) scrivere in fondo single (separatore di campo uno spazio). ATTENZIONE: in questo modo si può cambiare anche la password di root! (comando passwd) - /var (partizione in cui vengono messi file che cambiano di dimensione, tipicamente i log. E' utile averla su partizione indipendente per evitare che un aumento dei log inattesi riempa tutto il filesystem. Farla almeno di 100 Mb) - /home (dove risiedono i file di tutti gli utenti. Può essere piccola e praticamente inutilizzata (mail, dns server) o molto grossa e piena di documenti (web, file server) - /tmp dove risiedono file temporanei. In fase di partizionamento, oltre a decidere come partizionare gli hard disk bisogna assegnare ad ogni partizione un mount point. Per esempio se abbiamo un hard disk da 10 Gb come primary master e lo vogliamo dividere in 6 partizioni, potremo ottenere: Partizione Mount Point Partizione Mount Point Partizione Mount Point /dev/hda1 / /dev/hda2 /boot /dev/hda3 /var /dev/hda4 /home /dev/hda5 /tmp /dev/hda6 SWAP Notare che la partizione di SWAP non necessita di un mount point. Considerare inoltre che possiamo formattare ogni partizione con un file system diverso. Possiamo per esempio avere, nell'esempio sopra, tutte le partizioni in ext2 (File System nativo di Linux) e la partizione /dev/hda4 ( dove viene montala la /home ) formattata in FAT 32 (File System di Windows 98, supportato anche da Linux). I dischi in linux sono evidenziati dal sequente nome: hda / sda etc hd hd= dischi IDE sd sd=scsi o SATA (o comunque tutti gli altri tipi di disco) Le singole partizioni di un hard disk hanno nomi tipo: - /dev/hda1 (prima partizione del primary master) - /dev/hdb1 (prima partizione del primary slave) - /dev/hdc4 (quarta partizione del secondary master) - /dev/hdd2 (seconda partizione del secondary slave) la lettera a/b/c /z identifica il disco fisico, il numero indica la partizione con il comando : df h avremo ad esempio: Filesystem Size Used Avail Use% Mounted on /dev/sda2 2.9G 2.0G 805M 72% / /dev/sda1 99M 15M 79M 16% /boot none 251M 0 251M 0% /dev/shm NOTA: i dischi SATA/SCSI vengono visti come prioritari sui dischi IDE. Avendo installato i seguenti dischi: /dev/sda1 /dev/hda1 /dev/hda2 se nel file grub.conf il parametro root punta a (hd1,0) significa che il nostro grub è installato sul disco: /dev/hda1 partizione 0 100

101 Hard Disk Dato che i dispositivi appaiono come file nel filesystem (nella directory /dev), è facile vedere quali file di device esistono usando ls o un altro comando adatto. Nell output di ls -l la prima colonna contiene il tipo di file ed i suoi permessi. Il primo carattere della prima colonna, ad esempio c in crw-rw-rw- qui sopra, indica agli utenti informati il tipo del file, in questo caso un dispositivo a caratteri. Per i file ordinari il primo carattere è -, per le directory è d, e per i dispositivi a blocchi b ( leggete la pagina man di ls per altre informazioni). Notate che di solito tutti i file di device esistono anche se il dispositivo corrispondente può non essere installato, quindi se avete un file /dev/sda, non è detto che abbiate realmente un hard disk SCSI. Avere tutti i file di device rende più semplici i programmi di installazione e semplifica l aggiunta di nuovo hardware (non c è bisogno di trovare i parametri corretti e creare il file di device per il nuovo dispositivo). L MBR, i settori di boot e la tabella delle partizioni Le informazioni sul partizionamento di un hard disk si trovano nel suo primo settore (cioè, il primo settore della prima traccia della prima superficie del disco). Questo settore si chiama master boot record (MBR) del disco: è il settore che il BIOS legge ed avvia quando la macchina viene accesa. Il master boot record contiene un piccolo programma che legge la tabella delle partizioni, controlla quale partizione è attiva (cioè quale è contrassegnata come avviabile) e legge il primo settore di quella partizione, il boot sector (settore di avvio) della partizione (anche l MBR è un settore di avvio, ma ha uno status speciale e quindi un nome speciale). Il boot sector contiene un altro programmino che legge la prima parte del sistema operativo contenuto in quella partizione (sempre che sia avviabile) e lo avvia. Lo schema di partizionamento non è costruito all interno dell hardware e nemmeno nel BIOS: è solo una convenzione che viene seguita da molti sistemi operativi: non tutti, ma quelli che non lo fanno sono le eccezioni. Alcuni sistemi operativi permettono l uso di partizioni, ma occupano una partizione sull hard disk ed usano il loro metodo di divisione specifico al suo interno. Quest ultimo tipo coesiste pacificamente con gli altri sistemi operativi (incluso Linux) e non richiede misure speciali, ma un sistema operativo che non supporta le partizioni non può coesistere sullo stesso disco con un altro sistema. Come precauzione è una buona idea scrivere su carta la tabella delle partizioni, in modo che se si corrompesse ci sarebbe una speranza di non perdere tutti i file (una tabella delle partizioni corrotta si può recuperare con fdisk). Le informazioni rilevanti si ricavano dal comando fdisk -l: $ fdisk -l /dev/sdb Disk /dev/sdb: 4294 MB, heads, 63 sectors, 522 cylinders Units = cylinders of * 512 bytes = bytes Device Boot Start End Blocks Id System /dev/sdb1* Linux /dev/sdb Linux NOTA: Se si da il comando senza l indicazione del disco fa vedere tutti i FS presenti 101

102 13.2 Partizioni estese e partizioni logiche Lo schema di partizionamento originale degli hard disk dei PC permetteva solo quattro partizioni, ma presto questo si è dimostrato troppo poco per l uso reale, perché alcune persone volevano più di quattro sistemi operativi (Linux,MS-DOS, OS/2, Minix, FreeBSD, NetBSD, o Windows NT, per nominarne alcuni), ma principalmente perché a volte è una buona idea avere diverse partizioni per un solo sistema operativo. Ad esempio per Linux è meglio mettere lo spazio di swap in una sua partizione, invece che in quella principale di Linux, per motivi di velocità (vedi sotto). Per superare questo problema di progettazione, furono create le partizioni estese. Questo trucco permette di partizionare una partizione primaria in sotto-partizioni. La partizione primaria così suddivisa si dice estesa e le sottopartizioni sono partizioni logiche: si comportano come primarie ma vengono create in maniera diversa; non comportano una differenza di velocità Creazione Partizioni Il programma fdisk è articolato di seguito si riportano le principali opzioni: i comandi: pvdisplay v /dev/sdb presenta i dati del disco (in caso di errore provare: ) pvcreate v /dev/sdb fdisk /dev/sdb Command (m for help): crea un volume fisico lancia fdisk per partizionare il disco sdb p n d q w visualizza la tabella delle partizioni crea una nuova partizione cancella una partizione esce senza salvare i cambiamenti fatti scrive la nuova tabella delle partizioni ed esce NOTA: I cambiamenti che vengono fatti alla tabella delle partizioni non hanno alcun effetto fino a che non si dà il comando di scrittura (w) Command (m for help): p Disk /dev/sdb: 4294 MB, heads, 63 sectors, 522 cylinders Units = cylinders of * 512 bytes = bytes Device Boot Start End Blocks Id System In questo caso tutto il disco è completamente vuoto, creiamo due partizioni Command (m for help): n Partition number (1-4): 1 First cylinder (1-522, default 1):<RETURN> Using default value 2 Last cylinder or +size or +sizem or +sizek (1-522,def.522):

103 Command (m for help): n Partition number (1-4): 2 First cylinder ( , default 129):<RETURN> Using default value 3 Last cylinder or +size or +sizem or +sizek ( , default 522): 254 Command (m for help): p Disk /dev/sdb: 4294 MB, heads, 63 sectors, 522 cylinders Units = cylinders of * 512 bytes = bytes Device Boot Start End Blocks Id System /dev/sdb1 * Linux /dev/sdb Linux Salvare le variazioni! Command (m for help): w Se occorre cancellare le partizioni: Command (m for help): d Partition number (1-4): 2 Ho cancellato la partizione 2. Command (m for help): p Disk /dev/sdb: 4294 MB, heads, 63 sectors, 522 cylinders Units = cylinders of * 512 bytes = bytes Device Boot Start End Blocks Id System /dev/sdb1 * Linux Ricordarsi di salvare le variazioni! Command (m for help): w Se occorre cambiare la destinazione d uso della partizione, as esempio per ripristinare la swap area (notare l identificativo della swap area è contraddistinta con l identificativo 82) fdisk /dev/sda Command (m for help): t Partition number (1-4): 4 Hex code (type L to list codes) : 82 Command (m for help): p Disk /dev/sda: 4294 MB, heads, 63 sectors, 522 cylinders Units = cylinders of * 512 bytes = bytes Device Boot Start End Blocks Id System /dev/sda1 * Linux /dev/sda Linux /dev/sda Linux /dev/sda Linux swap Salvare le variazioni! Command (m for help): w 103

104 Definizione Tipo partizione: Una volta creato il F.S. dobbiamo definire quale tipo installare, es. ext3 per linux o FAT32 per windows; per far ciò digitare: per linux mkfs t ext3 /dev/sdb1 mkfs.vfat -F 32 /dev/sdb2 per Windows mkfs c /dev/sdb1 Attiva la ricerca dei blocchi danneggiati e ne inizializza di conseguenza la lista Adesso occorre creare le directory fisiche su cui alloggiare i F.S. mkdir /mnt/hd2 mkdir /mnt/win Adesso montiamo i F.S. mount -a /dev/sdb1 /mnt/hd2 mount -a /dev/sdb2 /mnt/win df h avremo ad esempio: Filesystem Size Used Avail Use% Mounted on /dev/sda2 2.9G 2.0G 805M 72% / /dev/sda1 99M 15M 79M 16% /boot none 251M 0 251M 0% /dev/shm /dev/sdb1 989M 17M 922M 2% /mnt/hd2 /dev/sdb2 989M 15M 987M 1% /mnt/win Ad esempio per montare un floppy MS-DOS si usa il seguente comando: $ mount -t msdos /dev/fd0 /floppy Se si vuole che I files sistems vengano installati automaticamente occorre modificare il file: /etc/fstab La sintassi è la seguente: /dev/sdb1 /mnt/hd2 ext3 defaults 0 0 /dev/sdb2 /mnt/win vfat defaults 0 0 per verificare se tutto è corretto smontare I dischi: umount /mnt/hd2 umount /mnt/winmount fare un reboot e con il comando df verificare che il sistema in automatico monti i FS. NOTA: Esiste in alcune macchine il file /etc/mtab gestito da mount NON modificarlo a mano. Agire sempre solo su fstab. 104

105 13.4 Logical Volume Manager (LVM) LVM (Logical Volume Manager) è un gestore dello spazio del disco fisso in volumi logici, che possono essere facilmente ridimensionati. Cos'è l'lvm? LVM è un metodo di allocazione dello spazio del disco fisso in volumi logici che possono essere facilmente ridimensionati al contrario delle partizioni. Con LVM il disco fisso o una serie di dischi fissi viene allocata a uno o più volumi fisici. Un volume fisico non può essere disteso su più di una unità. I volumi fisici sono combinati in gruppi di volume logico, con l'eccezione della partizione /boot. La partizione /boot/ non può essere un gruppo di volume logico in quanto il boot loader non lo può leggere. Se la partizione root / è su di un volume logico, create una partizione /boot/ separata la quale non fà parte di un gruppo di volume. Dato che un volume fisico non può essere disteso su più di una unità, se desiderate estenderlo su più di una unità, è necessario creare uno o più volumi fisici per unità. Il gruppo di volumi logici è suddiviso in volumi logici, a cui sono assegnati mount point come /home e / e tipi di file system come ext3. Quando le "partizioni" raggiungono la capacità completa, potete aggiungere spazio libero del gruppo di volumi logici al volume logico per aumentare la dimensione della partizione. Un nuovo disco fisso aggiunto al sistema può essere aggiunto al gruppo di volumi logici e i volumi logici che costituiscono le partizioni possono essere espansi. Se, d'altro canto, un sistema viene partizionato con il file system ext3, il disco fisso viene suddiviso in partizioni di dimensioni stabilite. Se una partizione è piena, non è semplice espanderne la dimensione. Anche se la partizione viene spostata in un'altro disco fisso, lo spazio del disco fisso originale deve essere riallocato come partizione diversa o non utilizzata. Il supporto LVM deve essere compilato nel kernel. Il kernel di default di Red Hat è compilato con il supporto LVM. 105

Sequenza di avvio di Linux:

Sequenza di avvio di Linux: Sequenza di avvio di Linux: Il BIOS esegue una serie di test ed inizializzazione di tutti i dispositivi del computer; quindi, carica in memoria il BOOT loader del sistema operativo e gli cede il controllo.

Dettagli

Ca ra tteristiche dei sistem i GN U/L inux. Struttura di un sistema GNU/Linux Il filesystem La shell

Ca ra tteristiche dei sistem i GN U/L inux. Struttura di un sistema GNU/Linux Il filesystem La shell Struttura di un sistema GNU/Linux Il filesystem La shell 1 GNU/Linux è un sistema operativo, cioè un insieme di programmi che collaborano fra di loro rendendo utilizzabile un calcolatore, infatti senza

Dettagli

Corso base GNU/Linux 2014. Latina Linux Group. Sito web: www.llg.it. Mailing list:http://lists.linux.it/listinfo/latina

Corso base GNU/Linux 2014. Latina Linux Group. Sito web: www.llg.it. Mailing list:http://lists.linux.it/listinfo/latina Corso base GNU/Linux 2014 Latina Linux Group Sito web: www.llg.it Mailing list:http://lists.linux.it/listinfo/latina Corso Base 2014 Lezione 3 15/04/2014 1 / 21 Obiettivi di questo incontro Conoscere cosa

Dettagli

Corso UNIX avanzato. Utente avanzato. Amministratore. Gestione proprio account Gestione dei propri processi Ricerca e manipolazione file

Corso UNIX avanzato. Utente avanzato. Amministratore. Gestione proprio account Gestione dei propri processi Ricerca e manipolazione file Corso UNIX avanzato Corso UNIX avanzato Utente avanzato Gestione proprio account Gestione dei propri processi Ricerca e manipolazione file Amministratore Gestione utenti Aggiunta rimozione hardware Backup

Dettagli

Installazione di Ubuntu 10.04. Mauro Piccolo piccolo@di.unito.it

Installazione di Ubuntu 10.04. Mauro Piccolo piccolo@di.unito.it Installazione di Ubuntu 10.04 Mauro Piccolo piccolo@di.unito.it Operazioni preliminari Backup di tutti i dati dalla partizione Windows Deframmentazione di tutte le partizioni Windows (n volte...) Abilitare

Dettagli

Il File System di Linux

Il File System di Linux Il File System di Linux La struttura ad albero / Cartella radice, detta ROOT DIRECTORY, di cui sono figlie tutte le altre Ci si muove nel file system con percorsi relativi o percorsi assoluti In un albero,

Dettagli

I.S. Sobrero. Dipartimento di Informatica. Utilizzo. install.linux@home. 16/02/2007 install.linux@home Marco Marchisotti

I.S. Sobrero. Dipartimento di Informatica. Utilizzo. install.linux@home. 16/02/2007 install.linux@home Marco Marchisotti I.S. Sobrero Dipartimento di Informatica Utilizzo install.linux@home 1 La shell La shell di Linux è a linea di comando. Appare obsoleta e difficile da usare, ma in realtà è molto più potente e versatile

Dettagli

fare hard link fra file system diversi e su directory.

fare hard link fra file system diversi e su directory. Un sistema GNU/Linux, come ogni Unix, ha una directory principale, chiamata root ed indicata con / sotto la quale si trovano TUTTE le altre directory e TUTTI gli altri filesystems eventualmente montati

Dettagli

Sequenza di avvio di Linux:

Sequenza di avvio di Linux: Sequenza di avvio di Linux: Il BIOS esegue una serie di test ed inizializzazione di tutti i dispositivi del computer; quindi, carica in memoria il BOOT loader del sistema operativo e gli cede il controllo.

Dettagli

Corso di Linux. Dott. Paolo PAVAN pavan@netlink.it

Corso di Linux. Dott. Paolo PAVAN pavan@netlink.it Corso di Linux Dott. Paolo PAVAN pavan@netlink.it Origini di Linux Nasce a fine anni 1980 ad opera del finlandese Linus Torvalds Linux non è gratis e neanche freeware è protetto da licenza GNU: "GNU non

Dettagli

Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica. Ing. Domenico De Guglielmo. 2008 Vanessa Gardellin & Sara Lioba Volpi

Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica. Ing. Domenico De Guglielmo. 2008 Vanessa Gardellin & Sara Lioba Volpi Reti Informatiche Corso di Laurea Triennale in Ingegneria Informatica Ing. Domenico De Guglielmo 2008 Vanessa Gardellin & Sara Lioba Volpi Informazioni Generali (1/2) Ricevimento su appuntamento (tramite

Dettagli

Installare GNU/Linux

Installare GNU/Linux Installare GNU/Linux Installare GNU/Linux Linux non è più difficile da installare ed usare di qualunque altro sistema operativo Una buona percentuale di utenti medi si troverebbe in difficoltà ad installare

Dettagli

Shell di Linux e Comandi Utente

Shell di Linux e Comandi Utente Shell di Linux e Comandi Utente Sistemi Operativi Roberto Aringhieri DTI Crema - Università degli Studi di Milano Sistemi Operativi - Shell di Linux e Comandi Utente Roberto Aringhieri p.1/23 Outline Accesso

Dettagli

GNU/Linux Concetti di base

GNU/Linux Concetti di base GNU/Linux Concetti di base Sommario GNU/Linux Open Source e GPL Login/Logout Shell e comandi Files Stdin, stdout Redirezione e pipe Filesystem 2 Cos'è Linux Linux è basato su UNIX (filosofia, comandi,

Dettagli

Lezione T11 Virtual File System

Lezione T11 Virtual File System Lezione T11 Virtual File System Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2013/2014 Dipartimento di Scienze Fisiche, Informatiche e Matematiche Università di Modena e Reggio Emilia http://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi

Dettagli

Il software del PC. Il BIOS

Il software del PC. Il BIOS Il software del PC La parola software è un neologismo che è stato coniato in contrapposizione all hardware (ferraglia). L hardware si può prendere a calci, contro il software si può solo imprecare. Il

Dettagli

Introduzione a LINUX

Introduzione a LINUX Introduzione a LINUX Laboratorio di Reti Ing. Telematica - Università Kore Enna A.A. 2008/2009 Ing. A. Leonardi Ambiente utilizzato: LINUX Ambiente di riferimento del corso: S.O. GNU/Linux Perche Linux?

Dettagli

jt - joetex - percorsi didattici

jt - joetex - percorsi didattici jt - joetex - percorsi didattici Primi passi con linux Avvio della macchina Spegnere (o riavviare) il Computer Installare su HD il programma Linux EduKnoppix a. Avvio della macchina Una volta spento il

Dettagli

Se state utilizzando la shell bash, ovvero la shell di riferimento per questo manuale, il terminale visualizzerà il seguente output:

Se state utilizzando la shell bash, ovvero la shell di riferimento per questo manuale, il terminale visualizzerà il seguente output: CAPITOLO 5 LA SHELL BASH Pietro Buffa Con questo capitolo comincia il nostro viaggio nel mondo delle Command Line Interface (CLI), ovvero le interfacce testuali a linea di comando tipiche dei sistemi UNIX

Dettagli

SHELL GNU/Linux Bash. Conoscere e configurare il proprio ambiente bash. Kernel speaks: dmesg

SHELL GNU/Linux Bash. Conoscere e configurare il proprio ambiente bash. Kernel speaks: dmesg SHELL GNU/Linux Bash Obiettivi : Gestire i permessi sui file Conoscere e configurare il proprio ambiente bash Editare testi Capire ed utilizzare i redirezionamenti Kernel speaks: dmesg Init e Runlevels

Dettagli

Parte V. Sistemi Operativi & Reti. Sistemi Operativi. Sistemi Operativi

Parte V. Sistemi Operativi & Reti. Sistemi Operativi. Sistemi Operativi Parte V & Reti Sistema operativo: insieme di programmi che gestiscono l hardware Hardware: CPU Memoria RAM Memoria di massa (Hard Disk) Dispositivi di I/O Il sistema operativo rende disponibile anche il

Dettagli

Terza lezione: Directory e File system di Linux

Terza lezione: Directory e File system di Linux Terza lezione: Directory e File system di Linux DIRECTORY E FILE SYSTEM Il file system di Linux e Unix è organizzato in una struttura ad albero gerarchica. Il livello più alto del file system è / o directory

Dettagli

Indice 1 L architettura di un sistema GNU/Linux 1 1.1 L architettura del sistema................................ 1 1.1.1 L architettura di base.............................. 1 1.1.2 Il funzionamento del

Dettagli

Processo di boot Linux su un PC x86 : il Bootstrap. http://www.imolug.org/wiki/index.php/bootstrap

Processo di boot Linux su un PC x86 : il Bootstrap. http://www.imolug.org/wiki/index.php/bootstrap Processo di boot Linux su un PC x86 : il Bootstrap http://www.imolug.org/wiki/index.php/bootstrap Bootstrap Durante il processo di avvio i normali strumenti del sistema operativo non sono disponibili,

Dettagli

Dischetti di emergenza per sistemi Linux Creazione ed utilizzo di dischetti di emergenza

Dischetti di emergenza per sistemi Linux Creazione ed utilizzo di dischetti di emergenza Pagina 1 di 11 Dischetti di emergenza per sistemi Linux Creazione ed utilizzo di dischetti di emergenza Questo approfondimento vuole introdurre gli strumenti essenziali per il recupero di un sistema Linux

Dettagli

Cosa e come installare (Definire cosa si vuole fare - Sapere cosa si può installare - Selezione dei pacchetti)

Cosa e come installare (Definire cosa si vuole fare - Sapere cosa si può installare - Selezione dei pacchetti) Lunedì 12 aprile 2010 Introduzione a Linux - Sapere cos'è Linux, come è nato e si è evoluto - Avere riferimenti sulla diffusione e l'uso di Linux nel mondo - Conoscere la differenza fra kernel e distribuzioni

Dettagli

Controllo di processi

Controllo di processi Controllo di processi Ogni processo del sistema ha un PID (Process Identity Number). Ogni processo può generare nuovi processi (figli). La radice della gerarchia di processi è il processo init con PID=1.

Dettagli

LPIC-1 Junior Level Linux Certification

LPIC-1 Junior Level Linux Certification Corso 2012/2013 Introduzione a GNU/Linux Obiettivi Il percorso formativo ha l obiettivo di fornire ai partecipanti le competenze basilari necessarie per installare, configurare e gestire un server/workstation

Dettagli

Sistema Operativo Compilatore

Sistema Operativo Compilatore MASTER Information Technology Excellence Road (I.T.E.R.) Sistema Operativo Compilatore Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Il Sistema

Dettagli

Introduzione a LINUX. Unix

Introduzione a LINUX. Unix Introduzione a LINUX Introduzione a Linux 1 Unix 1969: Ken Thompson AT&T Bell Lab realizza un ambiente di calcolo multiprogrammato e portabile per macchine di medie dimensioni. Estrema flessibilità nel

Dettagli

Corso Linux Corso Online Amministratore di Sistemi Linux

Corso Linux Corso Online Amministratore di Sistemi Linux Corso Linux Corso Online Amministratore di Sistemi Linux Accademia Domani Via Pietro Blaserna, 101-00146 ROMA (RM) info@accademiadomani.it Programma Generale del Corso Linux Tematiche di Base MODULO 1

Dettagli

CAPITOLO 1 I SISTEMI OPERATIVI

CAPITOLO 1 I SISTEMI OPERATIVI CAPITOLO 1 I SISTEMI OPERATIVI Introduzione ai sistemi operativi pag. 3 La shell pag. 3 Tipi di sistemi operativi pag. 4 I servizi del sistema operativo pag. 4 La gestione dei file e il file system Il

Dettagli

Informatica di Base. Il software

Informatica di Base. Il software di Base 1 Sistemi informatici Hardware Microprocessore Memoria Periferiche di input e output Software Software di sistema Programmi applicativi 2 Il sw applicativo Il sw applicativo è costituito dall insieme

Dettagli

Corso di Laboratorio di Sistemi Operativi

Corso di Laboratorio di Sistemi Operativi Corso di Laboratorio di Sistemi Operativi Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Qualche link utile Informazioni sull utilizzo della shell Unix/Linux http://www.pluto.it/ildp/howto/bash-prog-intro-howto.html

Dettagli

INTRODUZIONE AI SISTEMI OPERATIVI

INTRODUZIONE AI SISTEMI OPERATIVI INTRODUZIONE AI SISTEMI OPERATIVI Il sistema operativo è il software che permette l esecuzione di programmi applicativi e lo sviluppo di nuovi programmi. CARATTERISTICHE Gestisce le risorse hardware e

Dettagli

Il Sistema Operativo Linux

Il Sistema Operativo Linux Il Sistema Operativo Linux Sistema Linux storia Unix deriva da Unix open source software libero software open source GNU, GPL, LGPL storia Linux amministrazione struttura concetti base comandi shell Unix

Dettagli

Università degli Studi di Verona. Linux Ubuntue ilcompilatorec. Dicembre 2014 - Sergio Marin Vargas. Dipartimento di Biotecnologie

Università degli Studi di Verona. Linux Ubuntue ilcompilatorec. Dicembre 2014 - Sergio Marin Vargas. Dipartimento di Biotecnologie Università degli Studi di Verona Dipartimento di Biotecnologie Laurea in Biotecnologie Corso di Informatica2014/2015 Linux Ubuntue ilcompilatorec Dicembre 2014 - Sergio Marin Vargas Caratteristiche di

Dettagli

Corso amministratore di sistema Linux. Corso amministratore di sistema Linux Programma

Corso amministratore di sistema Linux. Corso amministratore di sistema Linux Programma Corso amministratore di sistema Linux Programma 1 OBIETTIVI E MODALITA DI FRUIZIONE E VALUTAZIONE 1.1 Obiettivo e modalità di fruizione L obiettivo del corso è di fornire le conoscenze tecniche e metodologiche

Dettagli

Corso Amministratore di Sistema Linux Programma

Corso Amministratore di Sistema Linux Programma Corso Amministratore di Rev. 1.0 Rev. Stato: 1.0 Approvato Stato: Approvato Amministratore Nuovo Portale di Sistema De Sanctis Amministratore di CONTROLLO DOCUMENTO TITOLO: Corso Amministratore di VERSIONE:

Dettagli

GNU/Linux 101. intro to system administration. SaLUG! @ Manifatture KNOS 22 Gennaio 2015. This work is licensed under a

GNU/Linux 101. intro to system administration. SaLUG! @ Manifatture KNOS 22 Gennaio 2015. This work is licensed under a GNU/Linux 101 intro to system administration SaLUG! @ Manifatture KNOS 22 Gennaio 2015 This work is licensed under a Creative Commons by-nc-sa 4.0 International License by ALCA Società Cooperativa About

Dettagli

Sistemi informatici. Informatica. Il software. Il sw di sistema. Il sw applicativo. Il sw di sistema. Il sistema operativo. Hardware.

Sistemi informatici. Informatica. Il software. Il sw di sistema. Il sw applicativo. Il sw di sistema. Il sistema operativo. Hardware. http://159.149.98.238/lanzavecchia/docum enti/sscta.htm Sistemi informatici Hardware Microprocessore Memoria Periferiche di input e output Software Software di sistema Programmi applicativi 1 2 Il sw applicativo

Dettagli

Linux. Linux. Paolo Zatelli. Dipartimento di Ingegneria Civile ed Ambientale Università di Trento. Paolo Zatelli Università di Trento 1 / 24

Linux. Linux. Paolo Zatelli. Dipartimento di Ingegneria Civile ed Ambientale Università di Trento. Paolo Zatelli Università di Trento 1 / 24 Linux Linux Paolo Zatelli Dipartimento di Ingegneria Civile ed Ambientale Università di Trento Paolo Zatelli Università di Trento 1 / 24 Linux Outline 1 Linux 2 Interfaccia 3 File e directory 4 Comandi

Dettagli

Laboratorio di Informatica (a matematica)

Laboratorio di Informatica (a matematica) Laboratorio di Informatica (a matematica) schermo schermo stampante SERVER WMAT22 WMAT18 WMAT20 WMAT19 WMAT16 WMAT17 WMAT21 WMAT15 WMAT 10 WMAT9 WMAT8 WMAT7 WMAT6 WMAT?? WMAT13 WMAT14 WMAT12 server WMATT??

Dettagli

Note sull ambiente di lavoro utilizzato ai Laboratori di Fondamenti di Informatica I

Note sull ambiente di lavoro utilizzato ai Laboratori di Fondamenti di Informatica I Università di Pisa Corso di Laurea in Ingegneria Informatica Note sull ambiente di lavoro utilizzato ai Laboratori di Fondamenti di Informatica I a cura di Marco Cococcioni a.a. 2013-2014 Un po di terminologia

Dettagli

mailto:gearloose@fastwebnet.itgilbert O Sullivan v1.99.8 10-05-2006

mailto:gearloose@fastwebnet.itgilbert O Sullivan v1.99.8 10-05-2006 Configuration HOWTO mailto:gearloose@fastwebnet.itgilbert O Sullivan v1.99.8 10-05-2006 Questo HOWTO vuole essere il documento principale a cui tutti possano fare riferimento per configurare i più comuni

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

uomo Software (sistema operativo) hardware

uomo Software (sistema operativo) hardware uomo Software (sistema operativo) hardware 1 Sistema operativo Insieme di programmi che svolgono funzioni essenziali per l uso del sistema di elaborazione Questi programmi sono i primi ad essere eseguiti

Dettagli

Linux-Unix. Pregi di Linux

Linux-Unix. Pregi di Linux Linux-Unix Linux è un termine che può assumere più di un significato. A seconda del contesto infatti può indicare il kernel originariamente sviluppato da Linus Torvalds, oppure il sistema operativo basato

Dettagli

GNU/Linux Intermedio. Terza lezione: AVVIO DEL SISTEMA OPERATIVO

GNU/Linux Intermedio. Terza lezione: AVVIO DEL SISTEMA OPERATIVO GNU/Linux Intermedio Terza lezione: AVVIO DEL SISTEMA OPERATIVO Il processo di avvio Abbiamo già accennato un paio di volte al meccanismo di avvio di un sistema GNU/Linux. Abbiamo parlato del boot-loader

Dettagli

6.1 LA STRUTTURA GERARCHICA AD ALBERO

6.1 LA STRUTTURA GERARCHICA AD ALBERO CAPITOLO 6 IL FILESYSTEM DI LINUX Pietro Buffa Uno degli scogli con cui un novello utente Linux deve fare i conti è indubbiamente la gestione dei files. La prima cosa che salta agli occhi è infatti la

Dettagli

Come esportare una distribuzione Live di Linux per un laboratorio

Come esportare una distribuzione Live di Linux per un laboratorio Come esportare una distribuzione Live di Linux per un laboratorio Attività svolta dal dr. Alessi e dal dr. Farolfi Dipartimento di Matematica Università degli Studi di Milano Knoppix è una distribuzione

Dettagli

Università degli Studi di Messina Facoltà di Scienze MM. FF. NN. Corso di Laurea Triennale in Informatica (D.M. 270)

Università degli Studi di Messina Facoltà di Scienze MM. FF. NN. Corso di Laurea Triennale in Informatica (D.M. 270) Università degli Studi di Messina Facoltà di Scienze MM. FF. NN. Corso di Laurea Triennale in Informatica (D.M. 270) Sistemi Operativi + Laboratorio di Sistemi Programma del corso (anno accademico 2009

Dettagli

Avvio di UNIX. Lettura GRUB (Grand Unified Boot loader) in genere risiede nel MBR (stage1) e legge le informazioni nel file /boot/grub.

Avvio di UNIX. Lettura GRUB (Grand Unified Boot loader) in genere risiede nel MBR (stage1) e legge le informazioni nel file /boot/grub. Avvio e Shutdown Avvio di UNIX Lettura GRUB (Grand Unified Boot loader) in genere risiede nel MBR (stage1) e legge le informazioni nel file /boot/grub.conf Caricamento del kernel Il percorso del kernel

Dettagli

Sicurezza su linux... e considerazioni varie. Gianluca Antonacci email: giaaan@tin.it

Sicurezza su linux... e considerazioni varie. Gianluca Antonacci email: giaaan@tin.it Sicurezza su linux... e considerazioni varie Gianluca Antonacci email: giaaan@tin.it Sommario Protezione del PC: firewall e antivirus - configurazione di Firestarter - configurazione di ClamAV Indicizzazione

Dettagli

L hard disk. L amministrazione dei dischi puo essere riassunta nelle seguenti operazioni di base: La formattazione. Il partizionamento

L hard disk. L amministrazione dei dischi puo essere riassunta nelle seguenti operazioni di base: La formattazione. Il partizionamento L hard disk L amministrazione dei dischi puo essere riassunta nelle seguenti operazioni di base: La formattazione Il partizionamento La creazione del filesystem Il mount L hard disk Le superfici sono divise

Dettagli

Corso Linux base: primo incontro. Sommario. Alessandro Pasotti (apasotti@gmail.com) License: Creative Commons Attribution Share Alike 3.

Corso Linux base: primo incontro. Sommario. Alessandro Pasotti (apasotti@gmail.com) License: Creative Commons Attribution Share Alike 3. Corso Linux base: primo incontro Alessandro Pasotti (apasotti@gmail.com) License: Creative Commons Attribution Share Alike 3.0 Sommario 1. hardware 2. software 3. concetti base 4. cos'è GNU/Linux 5. le

Dettagli

Files di Configurazione

Files di Configurazione Files di Configurazione Cosa sono Sono normali files di testo atti a configurare il comportamento delle componenti del S.O. sia durante il bootstrap sia in seguito durante l'uso quotidiano per adattare

Dettagli

Console, terminale e privacy (emulare un thin client per UNIX e GNU/Linux)

Console, terminale e privacy (emulare un thin client per UNIX e GNU/Linux) Console, terminale e privacy (emulare un thin client per UNIX e GNU/Linux) Augusto Scatolini (webmaster@comunecampagnano.it) (a.scatolini@linux4campagnano.net) Miniguida n. 150 Ver. 1.0 Ottobre 2011 Il

Dettagli

Utenti e File System

Utenti e File System Utenti e File System C. Baroglio a.a. 2002-2003 1 Gestione degli utenti Unix è un sistema multiutente ovvero più utenti possono lavorare su di una stessa macchina, anche contemporaneamente. Tutti gli utenti

Dettagli

3. Come realizzare un Web Server

3. Come realizzare un Web Server 3. Come realizzare un Web Server 3.1 Che cos'è un web server Il web server, è un programma che ha come scopo principale quello di ospitare delle pagine web che possono essere consultate da un qualsiasi

Dettagli

Raid1-mini-Howto. Paolo Subiaco psubiaco@creasol.it - http://www.creasol.it 17 febbraio 2003

Raid1-mini-Howto. Paolo Subiaco psubiaco@creasol.it - http://www.creasol.it 17 febbraio 2003 Raid1-mini-Howto Paolo Subiaco psubiaco@creasol.it - http://www.creasol.it 17 febbraio 2003 1 Introduzione Scopo di questo documento è la descrizione sommaria dell installazione di un sistema raid1 (mirroring)

Dettagli

Filesystem. Il file system è organizzato in blocchi logici contigui

Filesystem. Il file system è organizzato in blocchi logici contigui Filesystem Il file system è organizzato in blocchi logici contigui dimensione fissa di 1024, 2048 o 4096 byte indipendente dalla dimensione del blocco fisico (generalmente 512 byte) Un blocco speciale,

Dettagli

Indice degli argomenti del s.o. Software. Software. Buona lezione a tutti!! SISTEMI OPERATIVI

Indice degli argomenti del s.o. Software. Software. Buona lezione a tutti!! SISTEMI OPERATIVI Buona lezione a tutti!! SISTEMI OPERATIVI Gli appunti sono disponibili per tutti gratis sul sito personale del Prof M. Simone al link: www.ascuoladi.135.it nella pagina web programmazione, sezione classi

Dettagli

Introduzione ai sistemi UNIX/Linux

Introduzione ai sistemi UNIX/Linux Introduzione ai sistemi UNIX/Linux Corso di laurea magistrale in Ingegneria Elettronica Ing. Simone Brienza E-mail: simone.brienza@for.unipi.it Pervasive Computing & Networking Lab () http://www.perlab.it

Dettagli

17.2. Configurazione di un server di Samba

17.2. Configurazione di un server di Samba 17.2. Configurazione di un server di Samba Il file di configurazione di default (/etc/samba/smb.conf) consente agli utenti di visualizzare le proprie home directory di Red Hat Linux come una condivisione

Dettagli

Il computer: primi elementi

Il computer: primi elementi Il computer: primi elementi Tommaso Motta T. Motta Il computer: primi elementi 1 Informazioni Computer = mezzo per memorizzare, elaborare, comunicare e trasmettere le informazioni Tutte le informazioni

Dettagli

Introduzione Il sistema operativo Linux è oggi una delle principali distribuzioni di Unix, in grado di portare in ogni PC tutta la potenza e la flessibilità di una workstation Unix e un set completo di

Dettagli

Modulo 2 - ECDL. Uso del computer e gestione dei file. Fortino Luigi

Modulo 2 - ECDL. Uso del computer e gestione dei file. Fortino Luigi 1 Modulo 2 - ECDL Uso del computer e gestione dei file 2 Chiudere la sessione di lavoro 1.Fare Clic sul pulsante START 2.Cliccare sul comando SPEGNI COMPUTER 3.Selezionare una delle opzioni STANDBY: Serve

Dettagli

Sommario. 1. Introduzione. Samba - Monografia per il Corso di "Laboratorio di Sistemi Operativi".

Sommario. 1. Introduzione. Samba - Monografia per il Corso di Laboratorio di Sistemi Operativi. Sommario SAMBA Raphael Pfattner 10 Giugno 2004 Diario delle revisioni Revisione 1 10 Giugno 2004 pralph@sbox.tugraz.at Revisione 0 17 Marzo 2004 roberto.alfieri@unipr.it Samba - Monografia per il Corso

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione Federico Spizzo Dipartimento di Fisica / Edificio C Stanza 006 Tel: 0532 974231 E-mail: federico.spizzo@unife.it Gianluigi Cibinetto Dipartimento di Fisica / Edificio C Stanza

Dettagli

Il Software. Il software del PC. Il BIOS

Il Software. Il software del PC. Il BIOS Il Software Il software del PC Il computer ha grandi potenzialità ma non può funzionare senza il software. Il software essenziale per fare funzionare il PC può essere diviso nelle seguenti componenti:

Dettagli

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA) Il software Software Il software Il software è la sequenza di istruzioni che permettono ai computer di svolgere i loro compiti ed è quindi necessario per il funzionamento del calcolatore. Il software può

Dettagli

Corso di Alfabetizzazione Informatica

Corso di Alfabetizzazione Informatica Corso di Alfabetizzazione Informatica Lezione 6 a.a. 2010/2011 Francesco Fontanella La Complessità del Hardware Il modello di Von Neumann è uno schema di principio. Attualmente in commercio esistono: diversi

Dettagli

GLI SCRIPT DI SHELL. Lucidi a cura di B.De Carolis. UNIX shell script UdB- Dip Informatica

GLI SCRIPT DI SHELL. Lucidi a cura di B.De Carolis. UNIX shell script UdB- Dip Informatica GLI SCRIPT DI SHELL Lucidi a cura di B.De Carolis Shell Unix - Linux comandi Interfaccia di alto livello tra utente e SO. Il processore interpreta e mette in esecuzione comandi da: 1) standard input o

Dettagli

Gentoo GNU/Linux on usb device

Gentoo GNU/Linux on usb device Gentoo GNU/Linux on usb device Giuseppe `lan` Marocchio info@giuseppe-marocchio.com Perchè Gentoo? 1 Assenza di un programma di installazione 2 Ottima documentazione (anche in italiano) 3 Ottimo tool per

Dettagli

Per montare una directory condivisa NFS da un altro computer, digitate il comando mount:

Per montare una directory condivisa NFS da un altro computer, digitate il comando mount: Capitolo 16. NFS (Network File System) L'NFS permette di condividere file tra computer in rete come se fossero sul disco fisso locale del client. Red Hat Linux può essere sia un server che un client NFS,

Dettagli

Indice. settembre 2008 Il File System 2

Indice. settembre 2008 Il File System 2 Il File System Indice 4. Il File System 5. Vantaggi del FS 6. Protezione 7. Condivisione 8. I file - 1 9. I file - 2 10. Attributi dei file 11. Directory 12. Livelli di astrazione - 1 13. Livelli di astrazione

Dettagli

Interfaccia del file system

Interfaccia del file system Interfaccia del file system Concetto di file Modalità di accesso Struttura delle directory Montaggio di un file system Condivisione di file Protezione 9.1 File E un insieme di informazioni correlate e

Dettagli

Virtualizzazione e installazione Linux

Virtualizzazione e installazione Linux Virtualizzazione e installazione Linux Federico De Meo, Davide Quaglia, Simone Bronuzzi Lo scopo di questa esercitazione è quello di introdurre il concetto di virtualizzazione, di creare un ambiente virtuale

Dettagli

Utenti e gruppi. Ogni utilizzatore di UNIX ha associato: Nomeutente nome alfanumerici UID identità numerica

Utenti e gruppi. Ogni utilizzatore di UNIX ha associato: Nomeutente nome alfanumerici UID identità numerica Utenti e gruppi Utenti e gruppi Ogni utilizzatore di UNIX ha associato: Un identità univoca Nomeutente nome alfanumerici UID identità numerica Uno o più gruppi Nomegruppo nome alfanumerico GID identità

Dettagli

SELEZIONE DELLA PRIORITA' DI BOOT

SELEZIONE DELLA PRIORITA' DI BOOT In questa piccola guida esamineremo l'installazione di un sistema Windows XP Professional, ma tali operazioni sono del tutto simili se non identiche anche su sistemi Windows 2000 Professional. SELEZIONE

Dettagli

Il mio primo giorno in Laboratorio di Calcolo...

Il mio primo giorno in Laboratorio di Calcolo... Il mio primo giorno in Laboratorio di Calcolo... Disclaimer: alcune delle istruzioni che seguono potrebbero ledere la dignità di qualche lettore. Tuttavia l'esperienza acquisita negli anni passati ci ha

Dettagli

Indice. Indice V. Introduzione... XI

Indice. Indice V. Introduzione... XI V Introduzione........................................................ XI PARTE I Installazione di Linux come Server.............................. 1 1 Riepilogo tecnico delle distribuzioni Linux e di Windows

Dettagli

Abilità Informatiche A.A. 2010/2011 Lezione 4: SoftWare. Facoltà di Lingue e Letterature Straniere

Abilità Informatiche A.A. 2010/2011 Lezione 4: SoftWare. Facoltà di Lingue e Letterature Straniere Abilità Informatiche A.A. 2010/2011 Lezione 4: SoftWare Facoltà di Lingue e Letterature Straniere Software È un insieme di programmi che permettono di trasformare un insieme di circuiti elettronici (=

Dettagli

boot loader partizioni boot sector

boot loader partizioni boot sector IL SISTEMA OPERATIVO Il sistema operativo (S.O.) è un software che fa da interfaccia tra l uomo e l hardware, mettendo a disposizione un ambiente per eseguire i programmi applicativi. Grazie al S.O. un

Dettagli

I colori sui terminali Linux

I colori sui terminali Linux . I colori sui terminali Linux Thorbjørn Ravn Andersen, ravn@dit.ou.dk v1.4, 7 August 1997 Indice 1 Introduzione 1 2 Inizio veloce per gli impazienti 1 3 Ma ce

Dettagli

Utilizzo di putty. L uso base e molto semplice: richiede solo di specificare:

Utilizzo di putty. L uso base e molto semplice: richiede solo di specificare: Utilizzo di putty Client ssh liberamente utilizzabile (www.chiark.greenend.org.uk/~sgtatham/putty/download.html) Tra le molte opzioni di configurazione di putty sono utili: Window - Translation: per selezionare

Dettagli

Informatica. Il software (S.O.) e ancora sulle basi numeriche

Informatica. Il software (S.O.) e ancora sulle basi numeriche (S.O.) e ancora sulle basi numeriche http://159.149.98.238/lanzavecchia/docum enti/sscta.htm 1 Il sistema operativo Un insieme di programmi che gestiscono le risorse (cpu, memoria, dischi, periferiche)

Dettagli

Modulo 3: Gestione delle Periferiche (Dispositivi di input/output)

Modulo 3: Gestione delle Periferiche (Dispositivi di input/output) Parte 3 Modulo 3: Gestione delle Periferiche (Dispositivi di input/output) Gestione Input/Output UTENTE SW APPLICAZIONI Sistema Operativo SCSI Keyboard Mouse Interfaccia utente Gestione file system Gestione

Dettagli

Hardening di un sistema GNU/Linux

Hardening di un sistema GNU/Linux Hardening di un sistema GNU/Linux Gianluca P pex Minnella - Linux_Var - gianm@despammed.com Hardening GNU/Linux Systems Hardening: è un aspetto della sicurezza informatica GNU/Linux OS - client e server

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella La Complessità del Hardware Il modello di Von Neumann è uno schema di principio. Attualmente in commercio esistono:

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Il software Dipartimento di Ingegneria dell Informazione Universitàdegli Studi di Parma SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Il software di base Software

Dettagli

Software e Sistemi Operativi Prof. Maurizio Naldi A.A. 2015/16

Software e Sistemi Operativi Prof. Maurizio Naldi A.A. 2015/16 Software e Sistemi Operativi Prof. Maurizio Naldi A.A. 2015/16 Cosa vedremo Il software applicativo Categorie di SW Il sistema operativo Gestione programmi in esecuzione (processi) Gestione memoria Gestione

Dettagli

PC Crash Course: OBIETTIVI

PC Crash Course: OBIETTIVI PC Crash Course: OBIETTIVI 1. PC: uno strumento 2. Microsoft Windows XP: alcuni concetti chiave della interfaccia grafica 3. File System: file, direttori, link, 4. Il prompt dei comandi 5. Un occhiata

Dettagli

Linux Terminal Server Project (LTSP)

Linux Terminal Server Project (LTSP) Linux Terminal Server Project (LTSP) Gabriele Zucchetta g zucchetta@virgilio.it Entropica http://www.entropica.info/ Linux Terminal Server Project (LTSP) p. Introduzione Creare postazioni di lavoro con

Dettagli

RAID Software : Proteggere i dati con l aiuto del kernel (2 di 5)

RAID Software : Proteggere i dati con l aiuto del kernel (2 di 5) RAID Software : Proteggere i dati con l aiuto del kernel (2 di 5) Nel precedente articolo sono state introdotte le diverse tipologie di RAID ed i concetti di parità per la gestione della ridondanza. Di

Dettagli

PROGRAMMAZIONE CONSUNTIVA Codice Mod. RQ 23.2 Pag 1/5. Sistemi e Reti (articolazione Telecomunicazione) Classe

PROGRAMMAZIONE CONSUNTIVA Codice Mod. RQ 23.2 Pag 1/5. Sistemi e Reti (articolazione Telecomunicazione) Classe I.T.C.S. ERASMO DA ROTTERDAM Liceo Artistico indirizzo Grafica - Liceo delle Scienze Umane opz. Economico sociale ITI Informatica e telecomunicazioni - ITI Costruzioni, ambiente e territorio Edile Elettronico

Dettagli

1) Introduzione ai sistemi operativi (O.S.=operative system)

1) Introduzione ai sistemi operativi (O.S.=operative system) 1) Introduzione ai sistemi operativi (O.S.=operative system) Sistema Operativo: è un componente del software di base di un computer che gestisce le risorse hardware e software, fornendo al tempo stesso

Dettagli