Introduzione a LINUX

Transcript

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?
•  E’ Open Source
•  Ha tutte le funzionalità dei sistemi operativi moderni e ad oggi fa
funzionare una parte consistente di Internet
•  Ha raggiunto una soddisfacente compatibilità con l’hardware in commercio
•  E' molto flessibile: funziona su molti hardware diversi (es. una SBC).
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Cos’è LINUX?
Linux è un nucleo (kernel) di sistema operativo, concettualmente
simile a quello di UNIX.
Come UNIX, è un SO multitasking e multiutente
Le componenti fondamentali sono:
•  il kernel
•  la shell
•  i programmi di servizio
PROGRAMMA
SHELL
PROGRAMMA
KERNEL
HARDWARE
utente
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Le distribuzioni
Ci vuole qualcuno che raccolga la varie parti in un complesso funzionante,
organico, facile da installare/usare.
Questo è il ruolo delle distribuzioni.
- RedHat
- SuSE
- Mandrake
- Slackware
- Debian
- Knoppix
- Immunix
- Ubuntu
Ogni distribuzione è tarata per un certo tipo di utilizzo.
Se ne conoscono circa 200!!!
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Il Kernel (1)
•  Il kernel amministra le risorse del sistema e
fornisce servizi alle applicazioni per mezzo
delle chiamate di sistema
•  Principali compiti del kernel:
–  scheduling (con prelazione o pre-emptive)
–  allocazione e protezione della memoria
–  trasferimento dati
–  accesso all’hardware
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Il Kernel (2)
Il kernel avvolge idealmente l'elaboratore e i suoi
dispositivi fisici, ovvero tutto l'hardware,
occupandosi di interagire con i programmi che
ignorano l'elaboratore fisico.
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Tipi di Kernel
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.
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
E’ un'estensione del kernel monolitico, con la capacità di caricare/scaricare parti di
codice (moduli) secondo necessità e richieste.
In sostanza, quando Linux è impostato come SO modulare, i suoi moduli sono quelli
che in altri sistemi vengono definiti driver.
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
La Shell
•  Il kernel offre i suoi servizi e l'accesso ai dispositivi
attraverso chiamate di funzione.
•  I programmi accedono direttamente a questi servizi.
•  L'utente per accedere ai servizi del sistema ha bisogno di
un programma particolare che si ponga come intermediario
tra l'utente e il kernel. Questo tipo di programma è detto
shell.
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
La Shell
•  La shell è il programma che consente
all'utente di accedere al sistema.
(N.B: i terminali attraverso cui si interagisce con la shell sono
comunque parte dell'hardware controllato dal kernel)
•  Un programma shell può essere qualunque
cosa, purché in grado di permettere
all'utente di avviare e possibilmente di
controllare i programmi.
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
La Shell
•  La shell più semplice è la linea di comando.
(Ha il vantaggio di poter essere usata su qualunque terminale, anche su una
telescrivente)
•  Nella sua forma più evoluta, può arrivare a un
sistema grafico di icone o di oggetti grafici,
oppure a un sistema di riconoscimento di comandi
in forma vocale.
•  È in ogni caso una shell.
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
La Shell
•  Quando una shell è in attesa di comandi mostra un
prompt, che può essere configurato.
•  La bash mostra il simbolo $ per gli utenti e # per
root.
•  I comandi validi dal prompt della shell si dividono
in due categorie:
–  Built-in, implementati all'interno della shell
–  Programmi, eseguibili presenti nel filesystem
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Il filesystem di Linux (slackware)
/bin contiene i comandi principali per l'esecuzione del sistema operativo.
/boot contiene i file necessari al boot loader (LILO di default)
/dev contiene la mappatura delle periferiche. Es. hda = periferica collegata su ide1 master, hdb =
periferica collegata su ide1 slave...
/etc qui ci sono i file di configurazione del sistema.
/home la directory principale degli utenti (tranne root).
/lib contiene le librerie essenziali per il sistema.
/mnt contiene i punti di montaggio generici per le periferiche. Es: /mnt/cdrom indica il lettore CD.
/opt contiene i pacchetti opzionali installati da Slackware. Di solito solo KDE.
/proc punto di montaggio per l'interazione proc con il kernel di linux.
/root la directory principale per l'utente root.
/sbin qui sono immagazzinati i comandi di sistema eseguibili solo da root.
/tmp directory temporanea alla quale tutti hanno accesso sia in lettura che in scrittura.
/usr programmi a disposizione degli utenti.
/var contiene i log di sistema e tutti quei file gestiti dai processi del sistema.
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Linux File System e Mount point
#fdisk –l <unita’> visualizza le partizioni del disco
Es: #fdisk –l /dev/hda
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
I comandi di shell
Fare riferimento alla dispensa doc allegata alla presentazione. Qui solo i principali
# Ottenere ulteriori informazioni
man
:
formatta e mostra le pagine della guida in linea.
info
:
sistema di consultazione dei manuali tramite ipertesti.
help
:
richiama l'help per i comandi built-in della shell.
# Lavorare con file e directory
cd
:
cambia la directory corrente.
ls
:
mostra il contenuto di una directory.
cp
:
copia file e directory.
mv
:
muove o rinomina un file o una directory.
rm
:
cancella file e directory.
mkdir
:
crea una directory.
ln
:
crea link a file e directory.
pwd
:
mostra la directory corrente.
chmod
:
modifica i permessi di accesso di un file.
chown
:
cambia il proprietario di un file.
cat
:
mostra il contenuto di un file.
find
:
cerca un file tra le directory.
vi
:
l'editor di testo.
# Filesystem e processi
df
:
free
:
mount
:
umount
:
ps
:
kill
:
# Sistema
halt
reboot:
hostname:
: chiude il sistema.
: riavvia il sistema.
: mostra e cambia il nome dell'host.
# Vari
startx:
date
gzip
tar
more
reset
lynx
zip/unzip:
: avvia l'ambiente grafico (X Window System).
: mostra la data.
: comprime e decomprime file .gz.
: crea backup di file (file .tar).
: separa l'output in piu' pagine (anche less).
: resetta il terminale alle impostazioni iniziali.
: browser web solo testo.
: comprime e decomprime file .zip.
mostra lo spazio libero sul disco fisso.
mostra lo stato della memoria.
monta un filesystem.
disattiva un filesystem.
visualizza un elenco dei processi correnti.
invia un messaggio (TERM default) ad un processo.
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Conosciamo Slackware
Processo di avviamento di Linux Slackware (1/4)
Linux Slackware ha una gestione dei moduli di avvio tutta particolare.
Il primo script che viene eseguito dopo il kernel, è init. Questo legge il file /etc/inittab per
scegliere la modalità di avvio. Subito dopo esegue lo script etc/rc.d/rc.S per preparare il
sistema alla selezione del runlevel desiderato, abilitando la memoria virtuale, montando il filesytem,
inizializzando le periferiche e caricando gli altri script.
Runlevels: 0 –halt, 1 –single-user, 2 –multi-user senza servizi di
rete, 3 –multi-user, 4 –non usato, 5 –multi-user con interfaccia
grafica, 6 –reboot
Gli altri script a venire eseguiti, sono tutti presenti nella cartella /etc/rc.d/. I principali sono:
•  rc.modules: questo script è incaricato di caricare ed inizializzare i moduli necessari per il
funzionamento del sistema e delle periferiche.
•  rc.pcmcia: script utile soprattutto per gli utenti di pc portatili, infatti serve per configurare
le periferiche PCMCIA
•  rc.serial script di configurazione per le porte seriali.
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Conosciamo Slackware
Processo di avviamento di Linux Slackware (2/4)
Finita l'inizializzazione del sistema, si procede con la selezione del runlevel selezionato.
Il compito dei runlevel è quello di stabilire il modo di avvio della macchina e i servizi da lanciare di
conseguenza.
Ad esempio, in base al runlevel scelto, verrà impostata la modalità di login, se ad utente singolo o
multiutente, se grafico o testuale etc.
Il runlevel predefinito (multiutente testuale su Slackware) è impostato nel file /etc/inittab, ed in
particolare è impostato alla linea id:3:initdefault.
Gli script specifici di ogni livello sono contenuti /etc/rc.d/rc.* vediamoli nel dettaglio.
•  rc.0: script per l'arresto del sistema. (Il file che gestice il riavvio e lo spegnimento è rc.6, infatti questo è
solo un link a tale file)
•  rc.4 script per l'avvio con impostazioni multiutente ma in ambiente grafico. Il login verrà effettuato
all'interno del server X predefinito.
•  rc.6 come già detto questo + il file che gestice il riavvio del sistema
•  rc.K avvio in modalità utente singolo
•  rc.M avvio predefinito in Slackware Linux. Modalità multiutente con login in modalità testuale
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Conosciamo Slackware
Processo di avviamento di Linux Slackware (3/4)
I runlevel rc.4 e rc.M richiamano e lanciano altri script per l'inizializzazione della rete, quali:
•  rc.inet1 questo file è il responsabile della configurazione di rete, infatti è stato creato con
netconfig.
•  rc.inet2 Viene richiamato da rc.inet1 per lanciare i servizi di rete basilari.
•  rc.atalk script per l'avvio dei servizi AppleTalk
•  rc.httpd script per la gestione dell'avvio del web server Apache
•  rc.samba script di avvio del server di interfacciamento fra computer linux e windows
•  rc.news avvio del server news
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Conosciamo Slackware
Processo di avviamento di Linux Slackware (4/4)
Come avrete potuto notare, nella directory /etc/rc.d/ ci sono altri file oltre a quelli elencati,
ad esempio:
• rc.sysvinit cercherà ed eseguirà gli script system-v presenti nella directory rc.d. Il System
V init è un sistema di gestione dei processi di avvio. Slackware invece utilizza lo stile BSD,
ovvero ha uno script per ogni runlevel. Questo file è stato introdotto a partire da Slackware 7.0
per omologarsi con le altre distribuzioni che ne fanno già suo, e per le quali alcuni produttori di
software proprietario creano programmi che necessitano di script system-v.
• rc.gpm è uno script per l'esecuzione di GPM, un programma per l'utilizzo del "copia e incolla"
nelle console di linux attravero il mouse.
• rc.local è uno script (vuoto di default) che viene lanciato alla fine del processo di avvio e ti
consente di far partire altri programmi utili sulla tua macchina.
Nella directory /etc/rc.d/ alcuni file non sono eseguibili (attributo x). Questo è dovuto al
fatto che all'avvio vengono lanciati solo i file con permesso di esecuzione, quindi se volete che
uno script non venga lanciato, basterà togliergli l'attributo di esecuzione con il comando:
chmod a-x rc.*****
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Variabili d’ambiente (1/3)
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Variabili d’ambiente (2/3)
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Variabili d’ambiente (3/3)
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Altri comandi
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Redirezione
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Redirezione di stdout
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Redirezione di stdin
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Esempi di redirezione (1/2)
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Esempi di redirezione (2/2)
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Simboli speciali per i comandi
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Comando di ricerca in un testo
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Comando di ricerca di un file
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Creazione di link simbolici
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Controllo spazio occupato (1/2)
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Controllo spazio occupato (2/2)
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Gestione dei permessi (1/2)
•  Ogni oggetto (file o directory) ha un proprietario
(owner) appartenente ad un gruppo di utenti
(group) e presenta determinati permessi di
accesso
–  Visualizzazione tramite il comando ls -l
–  9 bit determinano i permessi di lettura, scrittura ed
esecuzione (r,w,x) per il proprietario, il gruppo del
proprietario e per gli altri utenti del sistema (u,g,o)
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Gestione dei permessi (2/2)
•  chmod <permessi> <file>
•  2 formati per i permessi:
–  Formato ottale(abc): a,b,c = r*4+w*2+x (r, w, x:
booleani)
•  Esempio: chmod 644 <file> (rw for u, r per g e o)
–  Formato simbolico. Facile da capire con esempi:
• chmod go+r: aggiungi permesso di lettura a gruppo e
altri
• chmod u-w: togli permesso di scrittura all'utente
• chmod a-x: (a: all) rimuovi permesso di esecuzione per
tutti
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Gestione Utenti e Gruppi
• 
• 
• 
• 
• 
• 
• 
useradd crea un account utente
userdel elimina un account utente
usermod modifica un account utente
passwd cambia password
groupadd crea un gruppo
groupdel elimina un gruppo
groupmod modifica un gruppo
•  Esempio:
–  useradd -g utenti -d /home/newusr -p newpasswd -s /bin/bash -c
“Nuovo Utente” newusr
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Gestione Utenti e Gruppi
•  /etc/passwd
–  contiene l’elenco degli account e relative informazioni
–  newusr:x:503:100:NuovoUtente:/home/newusr:/
bin/bash
•  /etc/shadow
–  contiene l’elenco delle password cifrate e la loro scadenza
–  newusr:$1$sppz2WcbqRciUU:
12145:-1:99999:-1:::
•  /etc/group
–  contiene l’elenco dei gruppi
–  utenti:x:100:oldusr1,oldusr2,newusr
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
• 
Le righe di /etc/passwd si presentano nella seguente forma:
Username:Password:UserID:GroupID:Info:HomeDirectory:Shell
Username: Nome dell'user, la login con cui può accedere al
sistema;
Password: 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);
UserID: ID dell'user;
GroupID: ID del gruppo di appartenenza;
Info: 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.
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Gestione Utenti e Gruppi
•  Quando si avvia una shell, vengono eseguiti
degli script di inizializzazione
–  Bashlogin: /etc/profile
–  poi ~/.bash_profile oppure /etc/profile
–  poi ~/.bash_login oppure /etc/profile
–  poi ~/.profile
–  Bash logout: ~/.bash_logout
–  Bash interattiva: ~/.bashrc
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Esercizi
1.  creare un nuovo gruppo ‘lab’
2.  creare un nuovo utente ‘utente’
appartenente a ‘lab’
3.  creare una home per il nuovo utente
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009
Installazione SO
•  stand alone
•  disco partizionato con windows e boot
loader
•  virtual machine
–  vmware solutions
–  vmxbuilder + vmplayer
Ing. A. Leonardi - Laboratorio di Reti A.A. 2008-2009