SUPERUTENTE
protezione
Alcune distribuzioni di Linux non consentono l’accesso diretto con lo username
root, ma usano il comando sudo (SUPERUSER DO) per poter far eseguire ad
alcuni utenti privilegiati, detti sudoers, i comandi come superutente.
SHELL ( PROCESSORE COMANDI)
Superata la fase di autenticazione, l’utente può iniziare una sessione di lavoro
tramite l’uso di una shell.
Una shell è un processore comandi che:
1. accetta un comando richiesto dall’utente
2. Lo interpreta
3. Risolve le sostituzioni, realizza ridirezioni, ricerca il comando e lo esegue
I comandi sono: prompt
- inseriti da un terminale (al dei comandi) e quindi la shell legge la linea
appena l’utente ha premuto il tasto INVIO/RETURN ( detto CR ovvero Carriage
Return )
- oppure sono prelevati da una linea di un file ( file comandi o script )
La shell esegue le fasi 1-2-3 in un ciclo che ha termine solo all’esecuzione del
comando exit o alla fine del file comandi.
La shell presenta una importante particolarità creazione di un processo
(sotto-shell), a meno che di eventuali eccezioni
ECCEZIONI :Alcuni comandi vengono eseguiti direttamente dalla shell sono i
comandi interni (detti anche built-in) exit per terminare
cd dir per cambiare directory
Fase 3)
Se l’interpretazione ha individuato che il comando da eseguire NON è un
comando interno, allora la shell crea un nuovo processo shell figlio , e di
conseguenza il processo shell di partenza lo chiamiamo shell padre
Il processo shell padre verifica la presenza del metacarattere & prima del
<CR>.
Senza &, attende la fine dell’esecuzione del sottoshell figlio esecuzione in
foreground (sincrona).
N.B. Per abortire l’esecuzione di un comando, usare la combinazione di tasti
CTRL+C.
Se presente il metacarattere &, NON attende la fine dell’esecuzione del
sottoshell figlio, ma
prosegue esecuzione in background (asincrona).
N.B. Per abortire l’esecuzione di un comando, in questo caso si deve usare il
comando kill.
FORMATO COMANDI
Il nome dei comandi è case sensitive e, in generale, il formato è:
comando [-opzioni] [argomenti] <CR>
Possiamo anche inserire più comandi nella stessa linea, ma devono essere
separate dal metacarattere ; (punto e virgola)
Esistono diverse shell che gli utenti possono utilizzare:
Bourne Shell (SH), Bourne Again Shell (BASH), C shell, Korn shell,
Almquist Shell (ASH), Debian Almquist Shell (DASH).
Le diverse shell si differenziano per aspetti visibili e altri non visibili all’utente
sintassi
principalmente per la dei comandi.
Il sistemista assegna ad ogni utente una delle shell disponibili, ma per
cambiarla basta invocare un normale comando:
$ sh da qua in poi si usa la shell corrispondente a sh nel sistema
$ bash da qua in poi si usa la bash
$ ps quanti processi si vedono
Per vedere cosa fa esattamente un comando e quali opzioni prevede si può
usare il comando man comando (manual) help del comando.
ORGANIZZAZIONE DEL FILE SYSTEM
file/directory
NOMI di
-ASSOLUTI : dalla radice
es. file: /nome2/nome6/file
-RELATIVO : dalla directory corrente
es. dir.corrente: /nome2 file: nome6/file
-RELATIVI SEMPLICI: dalla directory corrente
es. dir.corrente: /nome2/nome6 file: file
I nomi sono case-sensitive e possono essere lunghi a piacere (max 255
caratteri)
Directory corrente identificata da .
Directory padre identificata da ..
Ogni utente ha una directory di partenza nel quale si trova all’ingresso nel
sistema home directory
Esistono anche le WILDCARD che sono dei METACARATTERI speciali che sono
delle abbreviazioni dei nomi dei file:
* fa match con qualunque stringa, anche vuota
? fa match con qualunque carattere, ma almeno uno
ES.
$ echo file* file, file1, file2, file3, filetemp
$ echo file? file1, file2, file3
$ echo *ile cile, file
N.B. il comando echo stampa le stringhe corrispondenti ai nomi dei file sullo
standard output.
COMANDO ls
Il comando ls (list) mostra le informazioni relative a file o directory
Se ls è invocato senza parametri, mostra le informazioni sui file e sulle
directory della directory corrente, se invece è invocato con nomi dei file mostra
le informazioni di quei file, se è invocato con nomi di directory, mostra le
informazioni sui file e sulle directory delle directory specificate.
Tipici comandi con ls:
-l lista, oltre al nome, tutte le informazioni associate ai file
-a lista anche i nomi dei file “nascosti”, ovvero che iniziano con ‘.’
-A come -a, ma esclude ‘.’ e ‘..’
-F lista i nomi dei file visualizzando i file eseguibili con *, le directory
con /
-d nomedir lista le informazioni associate alla directory nomedir
file,
come senza
listarne il contenuto
-R lista ricorsiva dei file contenuti nella gerarchia
-i lista gli i-number dei file oltre al loro nome
-r lista i file in ordine opposto al normale ordine alfabetico
-t lista i nomi dei file in ordine di ultima modifica, dai più recenti ai
meno recenti
N.B. Si possono combinare le opzioni assieme
PROTEZIONE ACCESSI
In un Sistema Operativo multi-utente, vi è la necessità di regolare gli
alle informazioni.
Esistono 3 tipi di utilizzatori:
- il proprietario user
- il gruppo del proprietario group
- gli altri utenti others
I modi di accesso ad un file sono lettura (r), scrittura (w) ed esecuzione (x).
Durante la fase di LOGIN, ogni utente viene identificato dal sistema con un
identificatore gruppo
(user ID) e un (group ID)
Inoltre, a ogni file viene associato:
- user ID del proprietario
- group ID del proprietario
- un insieme di 9 bit di protezione
Questi 9 bit di protezione rappresentano i diritti di accesso, o permessi, che
indicano se la specifica operazione (lettura r, scrittura w ed esecuzione x)
è consentita oppure no.
N.B. Esiste però un utente privilegiato, cioè il gestore del sistema
SUPERUTENTE
Significato dei diritti rwx:
- Senza r NON si può visualizzare il contenuto della directory, ma si possono
cancellare file e crearli
- Senza w NON si possono cancellare file né crearli
- Senza x NON si può fare cd, e nemmeno creare file
Per visualizzare i permessi associati a u file si usa il comando ls -l nomefile ;
Per visualizzare i permessi associati a una directory si usa il comando ls -ld
nomedir ;
COMANDI RELATIVI ALLA PROTEZIONE
chmod [ u g o a ] [+ -] [rwx] nomefile
I permessi possono essere concessi o negati SOLO dal proprietario del file.
ESEMPIO :
chmod u+rwx, g+rx, o+rx /home/dir/file
chmod 0755 /home/dir/file
N.B. i comandi
chown nomeutente nomefile
che cambia il proprietario di un file/directory
chgrp nomegruppo nomefile
che cambia il gruppo di un file/directory
possono essere usati solo dal SUPERUTENTE.
ALTRI COMANDI RELATIVI AL FILE SYSTEM
DIRECTORY
mkdir nomedir crea una directory
rmdir nomedir cancella una directory ( deve essere VUOTA)
cd nomedir modifica la directory corrente
pwd scrive su standard output la directory corrente
ls [nomedir/nomefile] elenco file/directory
FILE
cp filesorg dest copia il filesorg nel file di nome dest, se dest è una
directory copia il file con nome filesorg in quella directory
ln [-s] nomefile1 nome2 crea un link
mv nomefile1 nome2 sposta/rinomina
rm nomefile elimina il link nomefile andando a
decrementare il numero di link nell’ i-node; se il numero di link è uguale a 0
allora cancella il file
cat nomefile il contenuto dei file indicati viene riportato sullo
standard output
more nomefile paginazione dell’output
more nomefile1 nomefile2… sopra ma per più file
come
RIDIREZIONE DELL’ I/O
Alcuni comandi di UNIX sono comandi-filtro, mentre altri comandi sono filtri
parziali.
Un filtro è un programma che riceve in ingresso dati dallo standard input e
produce risultati in uscita sullo standard output ed eventuali errori nello
standard error
standard input tastiera del terminale
standard output video del terminale
standard error video del terminale
Comandi-filtri tipici sono (di tutti esiste anche la versione normale) :
cat versione filtro del comando cat
more al cat, ma con paginazione dell’output
simile
sort ordina le linee dello standard input
(comandi integrativi)
-r ordina le linee al contrario
-f ignora lettere maiuscole e minuscole
-c, -C check delle linee in disordine (-c si ferma al primo errore, -C non fa
vedere nulla
a video, si deve usare il comando echo $?)
-u mette in ordine, ma solo le righe uniche (elimina le doppie)
(general regular
grep stringa cerca la stringa nello standard input
expression print) aggiungere ^ se si vogliono le righe che hanno la stringa
all’inizio aggiungere \.$ se si vogliono le righe che finiscono con il
punto -n indica la riga in cui si è trovata la corrispondenza
-i ignora le lettere maiuscole e minuscole
-v invert, ovvero trova le linee dove non è presente la stringa
rev rovescia le linee dello standard input
wc conta linee, parole e caratteri (in ordine) dello standard input
-l solo numero linee
-w solo numero parole
-c solo numero caratteri
head [-numerolinee]
tail [-numerolinee] filtrano le prime/ultime 10 linee dello standard input
(se esistono)
OMOGENEITA’ dispositivi e file
Per ciascuno dei comandi-filtro lo standard input, standard output e standard
error può essere ridiretto.
Ridirezione dello standard input
comando-filtro < fileinput
Ridirezione dello standard output (la seconda in append)
comando-filtro > fileoutput
comando-filtro >> cileoutput
RIDIREZIONE STANDARD ERROR
Se voglio ridirigere lo stderror bisogna utilizzare il comando 2
ls c* q* 2> file-error
es. ridirigo lo stderror nel file file-error
Se voglio ridirigere sia lo stderror che lo stdoutput utilizzo il comando 2>&1
ls c* q* >file-totale 2>&1
es. ridirigo entrambi gli standard
PIPING DI COMANDI
In una shell, una PIPE (metacarattere | ) collega automaticamente lo standard
output di un comando con lo standard input del comando successivo.
comando 1 | comando 2
Una stessa linea può contenere più metacaratteri |
comando 1 | comando 2 | comando 3 | comando 4
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.