Corso Unix base

Questo documento riporta i principali argomenti del corso Unix base ed e' utile quale introduzione al sistema Unix.

Buona lettura!


STRUTTURA DEL SISTEMA Unix

La funzione principale di un sistema operativo e` quella di permettere l'interazione tra l'hardware (dischi, periferiche, ....) e l'utente.

Tale connessione viene gestita da un programma detto KERNEL.

Il kernel :

         garantisce i servizi necessari alle applicazioni per la loro esecuzione (gestione I/O, comunicazione tra processi, ....) sotto forma di system call;

         controlla l'esecuzione delle applicazioni gestendo le periferiche, ripartendo le risorse di sistema (CPU, memoria, ....) tra le varie applicazioni e controllando l'utilizzo delle periferiche in modo che una sola applicazione alla volta vi possa accedere.

Al di sopra del kernel si trovano delle applicazioni scritte in linguaggio 'C' estremamente portabili che sono utilizzate dall'utente e viste come sistema operativo. KERNEL

Il kernel si divide logicamente in due parti :

         KERNEL DI BASE

         DEVICE DRIVERS

Il controllo effettivo delle periferiche viene effettuato dai device drivers.

Il kernel di base risponde alle richieste di utilizzo della periferica chiamando il device driver relativo, gli passa il controllo e, alla fine, riceve l'esito dell'operazione.

Il kernel puo' essere configurato in base alla struttura hardware aggiungendo o rimuovendo device drivers dal kernel.

In questo modo esso risulta essere "modellabile" in base alle possibilita` hardware del sistema.

Nei sistemi UNIX in genere e` necessario riconfigurare il kernel ogni volta che vengono aggiunti o cancellati dei device drivers.
MULTIUSER E MULTIPROCESS

Unix e' un sistema operativo multiuser e multiprocess.

         MULTIUSER - gestione contemporanea di piu` utenti

         MULTIPROCESS - gestione contemporanea in memoria di piu` processi

L'uso della CPU viene gestito secondo un meccanismo di time sharing, ovvero di condivisione della stessa per un breve periodo di tempo (time slice) tra i vari processi.

PROCESSING: Concetti Principali

         PROCESSO

E` un programma in esecuzione.

In memoria e' suddiviso logicamente in due aree :

1. area utente : codice, dati e stack del processo

2. area di sistema : informazioni che il sistema operativo mantiene sul processo (memoria utilizzata, utente proprietario, tempo di CPU utilizzato, ....) L'insieme delle informazioni contenute in queste due aree e' detta processo.

IMMAGINE

E` l'insieme delle due aree di memoria in cui e' diviso logicamente il processo piu` la entry nella tabella dei processi

TABELLA DEI PROCESSI

E` la tabella in cui il sistema memorizza i processi attivi. Ciascuna entry nella tabella corrisponde ad un processo.


STATI DI UN PROCESSO

RUNNING

In esecuzione da parte della CPU

READY

Pronto per essere eseguito dalla CPU

SLEEPING

In attesa

I processi in stato ready vengono inseriti in una tabella ordinati in modo decrescente in base alla propria priorita` di esecuzione.

Tale tabella e` detta RUN QUEUE.

DEFINIZIONE DI PARTIZIONE

E` una porzione contigua di disco suddivisa su piu` cilindri.

Viene considerata dal sistema come una unita` indipendente di disco.

Permette la memorizzazione dei files.

Puo` essere dedicata come area di swap.

COS'E' IL FILE SYSTEM

Organizzazione gerarchica

Obbligatorio per la memorizzazione dei file

Informazioni di sistema :

1. mappa dei blocchi liberi
2. mappa della dislocazione dei files
3. informazioni per ogni file

TIPI DI FILE SYSTEM

I sistemi Unix possono supportare un numero di differenti tipi di file systems:

S5 System V File System

USF Unix File System

NFS Network File System

RFS Remote File Sharing

CDFS Compact Disk File System (ISO 9660 - 1988)

/proc Process File System


L'OPERAZIONE DI MOUNT

         Effettua un collegamento tra file systems

         E` indipendente dal tipo del file system

         Si ha la sensazione di avere un unico file system che parte dalla directory '/' (root)

         Viene eseguito al momento del boot del sistema

TIPI DI FILES

         ORDINARI

Eseguibili, codici sorgente, script shell, testi ASCII

         DIRECTORY (d)

Contiene l'elenco di file della directory

         SPECIALI

1. a caratteri (c) 2. a blocchi (b)

Modo simbolico per identificare i dispositivi connessi al sistema (terminali, stampanti, ....)

         FIFO

1. socket (s) 2. pipe (p)

Usati nell'intercomunicazione tra processi

         LINK (l)

Puntatore ad un altro file


INTERFACCIA UTENTE

         Gestiscono la comunicazione tra l'utente ed il kernel

         Eseguono operazioni specifiche

         Utilizzano le system call

         Vengono anche detti "shell"

TIPI DI SHELL

         Interfacce tra l'utente ed il kernel

         Possibilita` di personalizzazione dell'ambiente di lavoro

         Caratterizzati da un ciclo :

1. visualizzazione di un 'prompt' 2. attesa dell'input 3. interpretazione del comando 4. esecuzione del comando 5. visualizzazione del risultato 6. ritorno al punto 1

         Possibilita` di programmazione (script shell)

L'UTENTE UNIX

Un utente Unix e` caratterizzato da :

         UID

User IDentify

         GID

Group IDentify

         NOME UTENTE
         APPARTENENZA AD UN GRUPPO
         TIPO DI INTERFACCIA

Bourne shell, C-Shell, Korn Shell

         HOME DIRECTORY

Directory di lavoro

Tipi di utenti :

         UTENTE NORMALE

Qualsiasi utente riconosciuto dal sistema

         UTENTE 'root'

Amministratore del sistema

LOGIN/LOGOUT

         LOGIN

Programma che permette l'accesso al sistema da parte di un utente. Richiede :

         login name

         password

Controlla :

         esistenza dell'utente

         correttezza della password

Lancia la shell specificata per l'utente nel file /etc/passwd.

         LOGOUT

Programma che permette la sconnessione dal sistema da parte di un utente. Puo` essere eseguita premendo CTRL-D Termina la shell dell'utente Attiva il programma di login

ESEMPI DI ALCUNI COMANDI

         ls Permette di visualizzare a video l'elenco dei file nella directory corrente. Uso : ls [-RadLCxmlnogrtucpFbqisf1] [names] Opzioni principali:

-a visualizza i file il cui nome inizia con un punto (.) -d se il nome e' una directory, visualizza solo la directory e non il suo contenuto -i visualizza l'i-node del file -l visualizza le caratteristiche dei file (size, owner, permissions, .....) -t visualizza i file per data in ordine crescente -r visualizza i file in ordine inverso rispetto a quello di default -F identifica un file eseguibile con un asterisco (*), una directory con una sbarra (/), un file link con una chiocciola (@) per rendere immediatamente visibile il tipo del file -R visualizza tutti i file dell'albero a partire dalla directory corrente Es :

# ls

src

bin

myshell

myfile.c

mylink

# ls -F

src/

bin/

myshell*

myfile.c

mylink@

         pwd Visualizza il path completo della directory corrente. Uso :

pwd Es :

# pwd

/usr/users/micky

         mkdir Crea una nuova directory Uso : mkdir [ -m mode ] [ -p] dirname ... Es :

# ls -F

bin/

mysrc.c

# mkdir src

# ls -F

bin/

src/

mysrc.c

         rmdir Cancella una directory. Uso : rmdir [-p] [-s] dirname ... Es :

# ls -F

bin/

src/

mysrc.c

# rmdir src

# ls -F

bin/

mysrc.c

         cd Permette di spostarsi all'interno dell'albero delle directory. Uso :

cd [ directory ] Es :

# pwd

/usr/users/micky

# cd src

# pwd

/usr/users/micky/src

touch

Permette di creare un file vouto.

Uso :

touch [ -amc ] [ mmddhhmm[yy] ] files

Es :

# ls -F

bin/

src/

mysrc.c

# touch mytouch

# ls -F

bin/

src/

mysrc.c

mytouch

cat Permette di vedere a video il contenuto di un file Uso : cat [-u] [-s] [-v [-t] [-e]] file... Es :

# cat mysrc.c

main()

{

printf("Mi vedi ?");

}

         wc

Permette di contare le linee, le parole ed i caratteri di un file. Uso :

wc [-lwc] [files...] Opzioni :

-l visualizza a video solo il numero di linee

-w visualizza a video solo il numero di parole

-c visualizza a video solo il numero di caratteri

Es :

# wc mysrc.c

4 6 30

         cp Permette di copiare uno o piu` file. Uso :

cp [ -i ] [ -p ] [ -r ] file1 [ file2 ...] target Opzioni principali :

-r copia ricorsivamente tutto l'albero a partire dalla directory corrente

-i chiede conferma prima di copiare un file che gia' esiste Es :

# cp myproc.c src

      mv Permette di cambiare nome e/o spostare un file da una directory ad un' altra. Uso :

mv [ -f ] [ -i ] file1 [ file2 ...] target Opzioni :

-f non chiede conferma se un file gia' esiste

-i chiede conferma prima di spostare un file che gia' esiste Es :

# mv mysrc.c myproc.c

         rm

Cancella uno o piu` files o directories. Uso :

rm [-f] [-i] file ...

rm -r [-f] [-i] dirname ... [file ...] Opzioni :

-r cancella ricorsivamente a partire dalla directory corrente

-i chiede conferma della cancellazione

-f cancella senza chiedere conferma Es :

# rm myproc.c myproc.o

         chown Permette di cambiare il proprietario di un file. Uso :

chown [-R] [-h] owner file ... Opzioni principali :

-R cambia il proprietario a tutti i file dell'albero a partire dalla directory

corrente. Es :

# ls -l

drwxr-xr-x 1 micky users 30 Jan 4 14:30 bin

drwxr-xr-x 1 micky users 30 Jan 4 15:30 src

-rw-rw-r-- 1 micky users 30 Jan 4 15:35 myproc.c

# chown laura myproc.c

# ls -l

drwxr-xr-x 1 micky users 30 Jan 4 14:30 bin

drwxr-xr-x 1 micky users 30 Jan 4 14:35 src

-rw-rw-r-- 1 laura users 30 Jan 4 15:35 myproc.c

         chgrp Permette di cambiare il gruppo di apparteneza di un file. Uso :

chgrp [-R] [-h] group file ... Opzioni principali :

-R cambia il gruppo a tutti i file dell'albero a partire dalla directory

corrente. Es :

# ls -l

drwxr-xr-x 1 micky users 30 Jan 4 14:30 bin

drwxr-xr-x 1 micky users 30 Jan 4 14:35 src

-rw-rw-r-- 1 micky users 30 Jan 4 15:35 myproc.c

# chgrp other myproc.c

# ls -l

drwxr-xr-x 1 micky users 30 Jan 4 14:30 bin

drwxr-xr-x 1 micky users 30 Jan 4 14:35 src

-rw-rw-r-- 1 laura other 30 Jan 4 15:35 myproc.c

         find

Permette di ricercare a partire dalla directory corrente uno o piu` file. Uso :

find <path> [ espressioni ] Espressioni principali :

-name <file name> nome del file da ricercare. Sono ammessi i metacaratteri

-print visualizza a video il risultato dell'operazione

-exec <comando> esegue il comando specificato per ogni file trovato -type <tipo> ricerca solamente i file del tipo espresso (f=file normale, d=directory, c=device a caretteri, .....) Es :

# find . -name myproc.c -print

         who Visualizza a video gli utenti collegati al sistema Uso :

who [-uTlHqpdbrtas] [ file ]

who -qn x [ file ]

who am i who am I Es :

# who

root console Jan 4 16: 39

      id Visualizza a video il nome utente, l'UID, il gruppo di apparteneza e il GID dell'utente corrente. Uso : id [-a] Opzioni : -a visualizza tutti gli utenti a cui appartiene l'utente Es :

# id

micky(250), users(10)

         sort

Ordina e/o effettua il merge di uno o piu` files. Uso : sort [-cmu] [-ooutput] [-ykmem] [-zrecsz] [-dfiMnr] [-btx] [+pos1 [-pos2]] [files] Opzioni principali :

-m effettua solo il merge, i file in input devono essere gia` ordinati

-u elimina le parole uguali eccetto una

-o<output> file in cui memorizzare l'output

-i ignora i caratteri non visualizzabili

-r inverte l'ordine

Es :

# cat caos # sort caos

lunedi` domenica

martedi` giovedi`

mercoledi` lunedi`

giovedi` martedi`

venerdi` mercoledi`

sabato sabato

domenica venerdi`

DOCUMENTAZIONE IN LINEA

         man

Permette di avere a video una spiegazione sulle operazioni svolte dal comando specificato, sulle possibili opzioni, sulle modalita` d'uso, esempi ed eventuali file coinvolti dal comando. Permette in pratica una consultazione veloce del Programmer's Manual. Uso :

man <comando> Es :

# man ls

         apropos Permette di visualizzare a video tutti i comandi che hanno a che fare con la stringa specificata come parametro all'interno del sistema. Es :

# apropos mount

mnttab (4) - mounted file system table

mount (1M) - mount file systems and remote resources

umount (1M) - unmount file systems and remote resources

.

.

.

CONCETTI FONDAMENTALI DELLA SHELL

         PIPE

Serve per collegare due o piu` comandi in modo che l'output del precedente sia considerato come input dal successivo. Es :

# ls | sort

aaa.c

b.c

b.o

         FILTRI

Comando grep

Serve per selezionare dai dati ricevuti in input solamente quelli che contengono la stringa specificata come parametro.

Uso :

grep [options] espression [file ...]

Opzioni principali :

-c stampa solo il numero di linee in cui e' stata ritrovata la stringa

-i ricerca la stringa sia in maiuscolo che in minuscolo

-l visualizza solo il nome del file in cui e` stata trovata la stringa

-n visualizza il numero di linea in cui e` stata ritrovata la stringa

-r controlla ricorsivamente il contenuto delle directories

-v seleziona tutto eccetto la stringa specificata

Es :

# ls | grep '.c'

aaa.c

b.c

Comando awk

Filtro che permette di gestire le linee ricevute in input in modo da avere un output formattato a piacere. E` programmabile in quanto mette a disposizione costrutti quali i test, i cicli e la gestione di variabili interne. Uso :

awk [ -Fc ] [ prog ] [ parameters ] [ files ] Opzioni :

-F Specifica il carattere separatore dei campi all'inerno della linea.

I caratteri di default sono lo spazio, il tab ed il new-line.

Parole chiave :

$0 Linea intera

$1....$n Primo ..... ultimo campo all'interno della linea

NF Numero di campi all'inerno della linea

NR Numero della linea

RS Separatore di linea

FS Separatore di campo

OFS Separatore dei campi in output

FILENAME Nome del file in input

BEGIN Identifica l'azione da svolgere all'inizio del file

END Identifica l'azione da svolgere alla fine del file

Operatori :

+, -, *, /, %

++, --, +=, -=, *=, /=, %=

<, <=, ==, !=, >=, >

Es :

NF > 5

$1 != "s"

Costrutti :

if (condizione) azione [else azione]

while (condizione) azione

for (espressione ; condizione ; espressione ) azione

break

continue

{ [ azione ] ... }

variabile = espressione

print [ lista di valori .....]

printf formato [ lista di varibili , ....] formato = "%[dslix....]"

exit

Parametri :

Sono passati nella forma di x=....., y=..... e sono riconosciuti all'interno del comando

Es :

awk ' BEGIN { FS=":" } { printf "%d - %s", NR, $1 } ' /etc/passwd

Numera e visualizza tutti i nomi utenti contenuti nel file /etc/passwd.

         METACARATTERI

Sono caratteri che vengono riconosciuti ed interpretati dalla shell :

* una serie di caratteri qualsiasi

? un carattere qualsiasi

[...] ciascun carattere incluso. Due caratteri separati da un '-' indicano un

range.

< ridirige l'input

>, >> ridirige l'output

0,1,2 standard input, output, error

| pipe

& background

% processi in background (C-Shell, Korn Shell)

%# numero del processo in background (C-Shell, Korn Shell) Per evitare che i metacaratteri vengano interpretati :

1. fare precedere il metacarattere dal carattere backslash (\)

2. includere la stringa contenente uno o piu` metacaratteri in apici singoli (' ')

         REDIREZIONE

Permette di gestire l'input e l'output dei comandi :

cmd > file memorizza l'output del comando nel file specificato invece

di visualizzarlo a video

cmd < file il comando considera come input il contenuto del file

cmd >> file memorizza l'output del comando nel file specificato senza

perderne il contenuto

cmd 2>&1 ridirige lo standard error del comando nel suo standard output

         BACKGROUND e FOREGROUND

Il background e' il metodo che permette di eseguire i comandi in modo da far restituire immediatamente il controllo alla shell. Normalmente invece un comando restituisce il controllo alla shell solo dopo la sua completa esecuzione, viene cioe` eseguito in foreground. Per eseguire un comando in background si utilizza il metacarattere '&' :

ls -lR > list & C-Shell e Korn Shell Questi due tipi di shell permettono di utilizzare il metodo di background per sospendere l'esecuzione del processo. Il processo viene infatti lanciato in background ma non esegue nessuna operazione fino a che o gli viene detto di continuare oppure ritorna ad essere in esecuzione foreground.

bg permette di eseguire il comando lanciato con il

metacarattere '&' in background

fg %# permette di restituire il controllo (foreground) ad un

processo lanciato in background


      SCRIPT SHELL

Sono dei file che contengono una sequenza di comandi o costrutti della shell in grado di essere eseguiti dal sistema. Sono per lo piu` scritti seguendo la sintassi e i costrutti della Bourne Shell e permettono di svolgere piu` o meno complesse operazioni del sistema operativo. Script shell sono ad esempio i programmi che vengono eseguiti al momento del boot del sistema e che ne permettono l'attivazione e le funzionalita`.

Es :

cat myshell

cd /usr/users/micky

find . -name *.c > /tmp/mytmp

if [ -s /tmp/mytmp ]

then

echo "Found !"

else

echo "Not found ! "

fi

rm -f /tmp/mytmp

         VARIABILI SPECIALI

Hanno un significato speciale per la shell e possono essere utilizzate in un normale ambiente di lavoro. $? stato di ritorno del comando. 0 = successo, <> 0 errore $0 nome della procedura in esecuzione $# numero di parametri del comando $$ numero di processo del comando in esecuzione $! numero di processo dell'ultimo comando eseguito in background $- opzioni del comando corrente

$HOME home directory. Valore di default del comando 'cd' $PATH lista di directories che contengono i comandi (search path). Se non e` valorizzata le directories di default sono /bin e /usr/bin Ogni directory deve essere separata dalla successiva dal carattere ':' $TERM tipo di emulazione terminale (AT386-M, vt220, ....) $MAIL nome del file contenente i messaggi ricevuti dall'utente $MAILCHECK numero che indica ogni quanti secondi la shell deve controllare l'arrivo di nuovi messaggi

COMUNICAZIONE TRA UTENTI

         comando write

Serve per visualizzare le linee del proprio terminale su quello di un altro utente collegato al quale verra` anche comunicato l'utente chiamante con il seguente messaggio :

Message from utente (tty??) [data]..... E` possibile eventualmente specificare il terminale a cui collegarsi nel caso in cui l'utente chiamato sia collegato su piu` terminali. Per terminare il comando premere ctrl-d. Uso :

write <user> [line] Es :

# write laura

Hello, how are you?

I just called to say Happy Birthday to you !!!!

ctrl-d

#

         comando mail

Invia un messaggio ad un utente del sistema. Senza argomenti il comando visualizza tutti i messaggi (uno per volta) dell'utente a partire dall'ultimo arrivato fino al primo in base alla data di arrivo. Per ciascun messaggio rimane in attesa di un comando proponendo come prompt il carattere '?'. Specificando un utente il comando mail invia tutte le linee digitate fino al momento in cui il comando stesso non viene terminato premendo ctrl-d. Uso :

mail [utente] Visualizza a video il nome utente, l'UID, il gruppo di apparteneza e il GID dell'utente corrente. Uso : id [-a] Opzioni : -a visualizza tutti gli utenti a cui appartiene l'utente Es :

# id

micky(250), users(10)

         sort

Ordina e/o effettua il merge di uno o piu` files. Uso : sort [-cmu] [-ooutput] [-ykmem] [-zrecsz] [-dfiMnr] [-btx] [+pos1 [-pos2]] [files] Opzioni principali :

-m effettua solo il merge, i file in input devono essere gia` ordinati

-u elimina le parole uguali eccetto una

-o<output> file in cui memorizzare l'output

-i ignora i caratteri non visualizzabili

-r inverte l'ordine

Es :

# cat caos # sort caos

lunedi` domenica

martedi` giovedi`

mercoledi` lunedi`

giovedi` martedi`

venerdi` mercoledi`

:f visualizza il nome del file corrente e la linea corrente

. ripete il comando precedente

/stringa ricerca la stringa dal punto corrente fino alla fine del file

!comando esegue il comando specificato

         pg

Visualizza un file di testo una pagina alla volta. Al fondo della pagina presenta il carattere ':' e rimane in attesa di un comando. Uso :

pg files... Comandi :

h help

q termina il comando pg

blank/newline pagina successiva

l linea successiva

d o ^D visualizza mezza pagina successiva

. o ^L visualizza nuovamente la pagina corrente

n file successivo

p file precedente

/stringa ricerca la stringa dal punto corrente fino alla fine del file

?stringa ricerca la stringa dal punto corrente fino all'inizio del file

!comando esegue il comando specificato

         vi

E` l'editor maggiormente utilizzato nei sistemi UNIX in generale. Deve conoscere il tipo di terminale per poter essere utilizzato e per questo e` necessario che la variabile d'ambiente TERM sia correttamente valorizzata. Il vi editor e` caratterizzato da due modi di utilizzo delle stesse funzionalita` :

         modo COMANDO

ogni carattere digitato viene interpretato per eseguire un' azione specifica, e' il modo in cui la sessione di vi inizia

         modo INSERIMENTO

ogni carattere digitato viene inserito come testo Modo comando Il modo comando consente l'utilizzo della tastiera per effettuare operazioni sul file in modifica. Il numero di comandi possibili e' molto grande e le possibilita' sono molto ampie. Nel seguito vedremo solo gli elementi principali. Sono disponibili diversi comandi di spostamento all'interno del file:

^F pagina successiva

^B pagina precedente

^D mezza pagina successiva

^U mezza pagina precedente

l un carattere a destra

h un carattere a sinistra

j linea successiva

k linea precedente

$ fondo linea

0 inizio linea

w inizio parola successiva

e fine della parola

... Per passare dal modo comando al modo inserimento e` necessario digitare una delle seguenti lettere :

a, A append - inserisce dopo il carattere corrente o dopo l'ultimo

carattere della linea

i, I insert - inserisce nella posizione corrente o all'inizio della linea

o, O open - inserisce una nuova linea sotto o sopra quella corrente

I principali comandi di cancellazione sono i seguenti:

x cancella un carattere

dd cancella la linea corrente

dG cancella dalla linea corrente alla fine del file

dw cancella una parola

dfc cancella fino alla prima occorrenza del carattere c

La ricerca delle stringhe avviene in modo comando premendo il carattere '/' seguito dalla stringa per una ricerca in avanti o il carattere '?' seguito dalla stringa per una ricerca all'indietro. Es :

/main

?main

Per trovare l'occorrenza successiva premere il tasto 'n', quella precedente il tasto 'N'. Il concetto di successivo e precedente e` legato alla direzione di ricerca. E' possibile effettuare delle sostituzioni di stringhe in tutto il file o in una sua porzione in modo comando :

:1,$ s/stringa da sostituire/stringa con cui sostituire/[g]

:#,# s/stringa da sostituire/stringa con cui sostituire/[g] Il carattere opzionale 'g' al fondo della linea specifica che devono essere sostituite tutte le ricorrenze della stringa all'interno della stessa linea, altrimenti viene sostituita solo la prima ricorrenza. E' possibile copiare porzioni di file per eventuali duplicazioni e/o spostamenti :

:#,#y

posizionarsi nel punto in cui inserire il testo

premere il tasto 'p' per inserire il testo sotto la linea corrente, il tasto 'P' per inserire sopra alla linea corrente

:#,#d oppure #dd dalla riga corrente

posizionarsi nel punto in cui inserire il testo

premere il tasto 'p' per inserire il testo sotto la linea corrente, il tasto 'P' per inserire sopra alla linea corrente ATTENZIONE! E' necessario non effettuare nessuna operazione di passaggio a modo inserimento tra la copia o la cancellazione del testo ed il suo inserimento nella nuova posizione. Per eseguire un'azione nel modo comando premere il carattere ':'. Il carattere verra` visualizzato al fondo della pagina e il comando rimarra` in attesa di uno dei seguenti comandi :

q esce se non sono state effettuate modifiche

q! esce senza salvare eventuali modifiche

w scrive il file

e <nomefile> edita il file specificato

e# ritorna al file precedente (2 file in linea) Le azioni possono essere combinate, per esempio :wq effettua un salvataggio subito seguito dal termine del comando vi. Modo inserimento Il modo inserimento consente l'utilizzo della tastiera per inserire il testo nel file in oggetto; ogni carattere digitato viene inserito nel testo. Per passare dal modo inserimento al modo comando premere il tasto ESC. Per inserire caratteri speciali (di controllo o non visualizzabili) precedere il carattere con ^V.

SICUREZZA

         AUTENTICAZIONE UTENTI

Il sistema effettua dei controlli sia sul nome dell' utente sia sulla correttezza della password digitata ma non visualizzabile a video.

La password viene letta da terminale, 'criptata' ed il risultato e` confrontato con la password registrata nel file /etc/passwd.

Non esiste un meccanismo di 'decript' della password.

         PERMESSI DI ACCESSO A FILE

Ogni file (directory incluse) ha tre gruppi di permessi relativi a se stesso e al resto degli utenti :

1. proprietario (u)

2. gruppo (g)

3. altri (o) Per ciascun gruppo si possono specificare tre azioni possibili :

1. lettura (r)

2. scrittura (w)

3. esecuzione (x) Es :

-rwx-rw-r--

Il proprietario ha il permesso di leggere, scrivere ed eseguire il file

Gli utenti dello stesso gruppo del proprietario possono leggere e scrivere il file.

Il resto degli utenti puo` solo leggere il file.

              LOGIN SECURITY

1. I terminali settati a 'secure' nel file /etc/tty non permettono il collegamento al sistema come utente 'root'.

2. Solo gli utenti appartenenti al gruppo system (gruppo dell' utente root) possono eseguire il comando 'su', che permette di cambiare utente all' interno della shell e, in particolare, di divenire l' utente root.

3. I tentativi di esecuzione del comando 'su' vengono registrati nel file /var/adm/sulog.

E' inoltre possibile attivare maggiori controlli per ottenere un maggior livello di sicurezza (generalmente tale scelta avviene al momento della creazione di un utente).

4. La password deve :

         essere almeno di 6 caratteri

         contenere numeri, lettere maiuscole e minuscole

5. Tutti gli utenti devono avere una password.

         PASSWD

Permette di cambiare la propria password. Viene richiesta prima la password da cambiare, poi la nuova password ed infine viene richiesto di digitare nuovamente la nuova password. Tutte le password digitate non sono visibili da terminale. L' utente 'root' puo` cambiare le password di tutti gli altri utenti. Uso :

passwd [utente] Es :

# passwd

Old password :

New password :

Re-type new password :

COMANDI DI STAMPA

         lp

Crea una richiesta di stampa Uso : lp [printing-options] [files] Opzioni principali: - c effettua una copia del file invece di un link prima della stampa -d <dest> effattua la stampa utilizzando la stampante specificata -n <num> specifica il numero di copie da stampare -t <title> specifica il titolo della stampa

cancel

Cancella una richiesta di stampa Uso : cancel [request-IDs] [printers]

         lpstat

Visualizza un report sullo stato delle stampanti Uso : lpstat [options] Opzioni principali : -a visualizza lo stato di tutte le stampanti -c visualizza il nome delle classi e delle loro stampanti

-s visualizza un sommario dello stato dello scheduler e delle stampanti

-v visualizza il nome delle stampanti e i device associati

STRUTTURA DEL FILE SYSTEM

Su Unix il file system ha una struttura, principalmente per motivi storici, ben determinata. Le principali directory sono:

/  directory pricipale, contiene il kernel Unix ed e' la home directory 
   di root

/bin
   eseguibili pricipali necessari al boostrap del sistema 

/dev
   contiene tutti i device driver 

/etc
   directory con contenuti "misti" (etcetera)

/home
   directory di base per le utenze

/lib
   librerie di sistema

/mnt
   mount point per volumi rimovibili

/tmp
   directory temporanea

/usr
   directory per pacchetti aggiuntivi ed utenti di sistema

/usr/adm
   directory con comandi e log di amministrazione

/usr/bin
   eseguibili

/usr/lib
   librerie

/usr/man
   manuali

/var
   directory per pacchetti aggiuntivi e parti variabili



Testo: Corso Unix base
Data: 1 Aprile 1995
Versione: 1.1.1
HTML editing: Meo Bogliolo