Sistemioperativi ì - unipi.it

Post on 07-Dec-2021

5 views 0 download

Transcript of Sistemioperativi ì - unipi.it

ì

FabioDelVigna- fabio.delvigna@for.unipi.it

Sistemi operativiCorso di Laurea Triennale in Ingegneria Informatica

Lezione 4• Cenni a Xserver• Patch, diff• Tar, gzip, bzip• Find, grep

Domande sulle lezioni passate?

FabioDelVigna- fabio.delvigna@for.unipi.it

Soluzione esercizi passati (permessi 1/3)

ì cdì mkdir –p visibile/segretaì echo 'vero' > visibile/notizia.txtì cp visibile/notizia.txt

visibile/segreta/cronaca.txt

ì chmod u-x visibileì chmod u+x visibile

ì Supponendo che i diritti del gruppo e di others siano solo di lettura ed esecuzione ma non di scrittura:

ì chmod 655 visibile

FabioDelVigna- fabio.delvigna@for.unipi.it

Soluzione esercizi passati (permessi 2/3)

ì Risposte alle domande1. Si riesce a vedere il contenuto di visibile (al

proprietario è consentito l'accesso in lettura).2. Non si può vedere il file notizia.txt dentro visibile (non

si può attraversare visibile).3. Non si può vedere il contenuto di segreta .4. Non si può vedere il notizia.txt dentro segreta .

ì adduser utente21. supponendo che la maschera di default sia rwxr-xr-x,

utente può vedere il contenuto della home di utente2 .2. supponendo che la home di utente2 abbia un gruppo

diverso da utente:chmod o-r ~

FabioDelVigna- fabio.delvigna@for.unipi.it

Soluzione esercizi passati (permessi 3/3)

groups root

adduser utente3 (login root)

mkdir /home/utente3/temp (root)

ls –l /home/utente3/temp (l’utente proprietario è root e il gruppo proprietario è wheel)

chown utente3:utente3 /home/utente3/templs –l

chgrp admin /home/utente3/temp

rmuser utente2rmuser utente3

FabioDelVigna- fabio.delvigna@for.unipi.it

Soluzione esercizi passati (utenti 1/3)l Login con root

adduser –s (pippo)

l vipw : aggiungere la riga (es.):

l pluto::1002:1002::0:0:Pluto:/tmp/pluto:/bin/sh

l Attenzione: scegliere come ID di utente e gruppo un valore non in uso

l vi /etc/group : aggiungere la riga (es.): (vigr)

l pluto:*:1002:

l Attenzione: scegliere come ID di gruppo lo stesso indicato nel punto 1.

l mkdir /tmp/pluto

l cp /etc/skel/* /tmp/pluto

l chown -R pluto:pluto /tmp/pluto

l chmod –R u+rwx,g+rx,o+rx /tmp/pluto

l loggarsi con pluto e cambiare password (comando passwd).

FabioDelVigna- fabio.delvigna@for.unipi.it

Soluzione esercizi passati (utenti 2/3)

l pluto non può creare file nella home di pippo con i permessi default. Quindi, dato che non appartengono allo stesso gruppo, bisogna aggiungere il permesso in scrittura per la sezione others

l chmod o+w /home/pluto

l chmod o+w /home/pippo

l Una soluzione migliore consiste nel definire un gruppo a cui appartengono pluto e pippo e assegnare tale gruppo alle home dei due utenti e abilitare il diritto di scrittura (group owner) sulle due cartelle. l su root (oppure logout, login con root) l vi /etc/group : aggiungere la riga (es.):l floppyusr:*:1003:pluto

FabioDelVigna- fabio.delvigna@for.unipi.it

Soluzione esercizi passati (utenti 3/3)

l Le nuove impostazioni sui gruppi diventano effettive al nuovo login, come si può osservare dalla seguente sequenza di comandi:l idl logoutl login con plutol id

l L'output prodotto dal comando id è diverso nei due casi (solo nel secondo viene mostrato il gruppo al quale pluto è stato aggiunto).

l su root (oppure logout, login con root) l mkdir /tmp/floppyl chown :floppyusr /tmp/floppyl chmod g+rwx,o-rwx /tmp/floppy

FabioDelVigna- fabio.delvigna@for.unipi.it

X Window System

ì creato dalMITnel 1984.

ì fornisce l'ambiente ei componenti dibaseperleinterfaccegrafiche:ì disegno espostamento delle finestre sullo schermoì l'interazione conil mouseelatastiera

ì nongestisce l'interfaccia grafica utente olostilegrafico delleapplicazioniì questi aspetti sono gestiti direttamente daogni singola

applicazione

ì trasparenza direte

FabioDelVigna- fabio.delvigna@for.unipi.it

X Window System (2)

ì Xusa unmodello client/server:ì il serverXcomunica congli altri programmi (client)ì Ilserveraccetta richieste peroutputgrafici (finestre)

einputdall'utente (dalla tastiera,il mouseodaltouchscreen).

ì IlserverXpuò essere:ì unprogramma disistema che controlla l'output

videodiunPCì uncomponente hardwarededicatoì un'applicazione che mostra dati su una finestra diun

altro sistema grafico.

FabioDelVigna- fabio.delvigna@for.unipi.it

X Window System (3)

ì Ilprotocollo dicomunicazione tra servereclientoperainmodo trasparente rispetto alla rete:ì entrambi possono risiedere sulla stessa

macchina osu altre,anche conarchitettureesistemi operativi differenti

ì il servered il clientpossono anchecomunicare inmodo sicuro attraverso laretesfruttando untunnelcifrato (SSH).

FabioDelVigna- fabio.delvigna@for.unipi.it

Patch, Diff e Make

ì Nei sistemi Unixsono disponibili strumenti perlosviluppo diprogetti software:ì Make,percostruire programmi apartire daun

insieme disorgentiì Patch eDiff,perconfrontare emodificare (patchare)

filetestualiì Programmi pergestire losviluppo concorrente di

codice (SVN,CVS,Git esimili)

FabioDelVigna- fabio.delvigna@for.unipi.it

Diff e Patch

FabioDelVigna- fabio.delvigna@for.unipi.it

Patch

ì Siutilizza permodificare codice inmanieraautomatizzata.

ì Esempio diuso:ì Unsoftware,sottoformadicodice sorgente,non

gira su unsistema .ì Lemodifiche sono distribuite sottoformadi“patch”

alcodice originale.ì Conpatchsi può patchare il codice originale.

FabioDelVigna- fabio.delvigna@for.unipi.it

Esempio di uso patch

patch [options] [originalfile [patchfile]]

patch < file.patch →patch“unified”

patch file.txt < file.patch

patch -R < file.patch

Attenzioneailivelli(gerarchiacartelle)delfiledipatchchesihannonelcasosiapplichinopatchainterecartelle(opzione-p[level]).

FabioDelVigna- fabio.delvigna@for.unipi.it

diff 1/2

ì Diff serveperconfrontarefile.

ì Confronto“manuale”visivo

ì Generazionefilepatch.

FabioDelVigna- fabio.delvigna@for.unipi.it

diff 2/2

ì diff file1 file2 ì differenze (riga perriga)tra i duefile

FabioDelVigna- fabio.delvigna@for.unipi.it

Esempio di uso diff

diff -u file_orig.c file_nuov.c > orig.patch

diff -ruN cart_orig/ cart_nuov/ > orig.patch

ì L'opzione -u creailfilepatchinformatounificato(unified).

FabioDelVigna- fabio.delvigna@for.unipi.it

diff

ì Nelcasopiùsemplice,l’outputprodottodadiffusaFROM-FILEeTO-FILEpergenerareunfiledidifferenze

ì ‘-’staperstandardinput

ì diff3 confronta3fileallavolta

ì sdiff side-by-sidemergedeifile

ì $ info diff

FabioDelVigna- fabio.delvigna@for.unipi.it

Archiviazione e compressione

FabioDelVigna- fabio.delvigna@for.unipi.it

Archiviazione -tar

ì tar=TapeARchive

ì Unfiletar è una raccolta difilee/odirectory

ì tar [azione][switch] [archivio] [file]

ì tar compresso (.tgz o.tar.gz)è diventatostandardperil passaggio didati tra sistemi Unix.

FabioDelVigna- fabio.delvigna@for.unipi.it

tar - Opzioni

ì Azione/funzioneì c:creaì x:estraeì t:visualizza il contenuto diunarchivio

ì switchì v:verboseì z:comprime congzipì j:comprime conbzip2ì f:file

ì comeultima opzioneì n:comportamento nonricorsivo

FabioDelVigna- fabio.delvigna@for.unipi.it

tar - Creazione

ì tar –cvf archivio.tar sorgente

ì tar -czvf archivio.tar.gz ~/archivio/*

ì archivio.tar:filedacreare

ì sorgente:contenuto dell'archivio

FabioDelVigna- fabio.delvigna@for.unipi.it

tar - Visualizzazione

ì tar -tvf filename.tar

ì Elenca il contenuto difilename.tar

FabioDelVigna- fabio.delvigna@for.unipi.it

tar - Estrazione

ì tar –xvf archivio.tar destinazione

ì tar -xzvf archivio.tar.gz

ì Nonrimuove l'archivio,macrea copie delsuocontenuto

FabioDelVigna- fabio.delvigna@for.unipi.it

gzip and gunzip

ì Programma dicompressione

ì gzip archivio archivio.gz

ì gzipì Utilitydicompressione

ì gunzipì Utilitydidecompressione

FabioDelVigna- fabio.delvigna@for.unipi.it

bzip2 and bunzip2

ì bzip2ì Utilitydicompressione

ì bunzip2ì Utilitydidecompressione

ì bzip2 archivio archivio.bz2

ì Rapporto dicompressione migliore digzip

FabioDelVigna- fabio.delvigna@for.unipi.it

Archivi - path

ì Ifilevengonomemorizzaticolpath

ì Non vengonoeffettuaticontrollidioverwrite

ì -C nome_directory:estraeidatinelladirectoryspecificata

ì Senonsispecificaladestinazionesiusaladirectorycorrenteedilpath nell’archivio

FabioDelVigna- fabio.delvigna@for.unipi.it

Ricerca di file

FabioDelVigna- fabio.delvigna@for.unipi.it

find

ì Ricercaall’internodipercorsiifilesecondolecondizioniindicate

ì Lecondizionisonolegateall’apparenzaesternaenonalcontenuto

FabioDelVigna- fabio.delvigna@for.unipi.it

find

ì find [percorso…] [espressione]

ì percorso…ì insieme dipercorsi separati daspazi

ì espressioneì insieme ditesteazioni separati daoperatori

FabioDelVigna- fabio.delvigna@for.unipi.it

Espressioni

[opzione…] [condizioni]

ì Opzioneì Alterail comportamento delprogramma

ì Condizioniì Espressioni conrisultati logici

ì Perconcatenare più condizioni si usano gli operatori booleani

ì defaultè l’AND logico (-and)

FabioDelVigna- fabio.delvigna@for.unipi.it

Condizioni

ì -nameschemaì TRUEseil nome delfilecorrispondeì si possono utilizzare i caratteri *e?

ì -size[+|-]n[b|c]ì TRUEseladimensione delfileè uguale (maggiore +

ominore -)anunità dispazio

ì -typetì TRUEseil fileè deltipo specificato (d,f,l)

FabioDelVigna- fabio.delvigna@for.unipi.it

Condizioni

ì -userutenteì TRUEselarisorsa appartiene autente

ì -groupgruppoì TRUEseappartiene algruppo ”gruppo”

ì -perm[-/+]modelloì TRUEsei permessi corrispondono esattamente al

modello specificato (informaottale osimbolica)

FabioDelVigna- fabio.delvigna@for.unipi.it

Operatori booleani di find

ì (espressione)ì Precedenza nell’esecuzione dei test

ì !espressioneì nega un’espressione

ì espressione [-and]espressioneì ANDlogico tra espressioni (può essere omesso)

ì espressione -orespressioneì ORlogico tra espressioni

Usare i caratteri diescapeperproteggere dall’espansione della shell

FabioDelVigna- fabio.delvigna@for.unipi.it

Azioni di find

ì Operazioni dacompiere perogni risultato dellascansione.ì -print

ì stampa i nomi dei filetrovati

ì -execcomando [{}][;|+]ì esegue comando suirisultati della ricercaì esegue una istanza delcomando perogni file

trovato (lariga terminata da;)ì con{}i filetrovati vengono passati acomando come

lista (lariga terminata da+)

FabioDelVigna- fabio.delvigna@for.unipi.it

Esempi find

find . –name prova\* -print

Cerca i nomi che iniziano conprova

find / -name “lib*” -print

Ricerca in/i nomi iniziano perlib

“\”protegge i metacaratteri

FabioDelVigna- fabio.delvigna@for.unipi.it

Esempi find

find /home –name “pro*” ! –type d

ì Escluse ledirectory

ì Ricerca apartire da/homei nomi che iniziano conpro

ì Virgolette usate perevitare che lashelltrasformi pro*inqualcosa didiverso

FabioDelVigna- fabio.delvigna@for.unipi.it

Ricerca con locate

locate “nomefile”

ì Esegue una ricerca delfile“nomefile”all'interno di

undatabase

ì Ildatabaseva popolato etenutoaggiornato conil

comando:updatedb

FabioDelVigna- fabio.delvigna@for.unipi.it

Ricerca nei file

FabioDelVigna- fabio.delvigna@for.unipi.it

grep

§ grep [opzioni] “stringa” nome_file ...§ Cercalerighecontenentistringa

§ grep “pippo” pluto§ Visualizzalepartidelfilepluto incuicomparela

parolapippo.

§ grep pippo *§ Cercalaparolapippo intuttiifiledelladirectory

corrente.

FabioDelVigna- fabio.delvigna@for.unipi.it

Ilcomandogrep è casesensitive.

grep

ì Èpossibileutilizzareespressioniregolariperlericerche(generalized regularexpression printer)

ì grep 'ri.*o' pluto

ì Cercalestringhecheinizianoperri eterminanocono all'internodelfilepluto.

ì .* indica0(zero)opiùcaratteriqualunque

FabioDelVigna- fabio.delvigna@for.unipi.it

Opzioni grep

-i (ignore case)ignoraledistinzionitraminuscoleemaiuscole

-vmostralelineecheNONcontengonol’espressione

-nmetteilnumerodirigadavantiadognirigacheriporta

-criportasoloilconteggiodellelinee

-wverificasoloparoleintere

-x controllalecorrispondenzedilineeintere

FabioDelVigna- fabio.delvigna@for.unipi.it

Metacaratteri (1 di 2)

ì ^ Iniziorigagrep '^d' ls.out

ì $ Finerigagrep '\.c$' ls.out

ì Aggiungereancheilmetacarattere'\'perchéancheilcarattere'.'èunmetacarattere

ì '\'neutralizzailvaloredimetacaratteredelcaratterechelosegueì Percitareletteralmenteilcarattere'\'ènecessarioquindiscriverlo

duevolte:'\\'

FabioDelVigna- fabio.delvigna@for.unipi.it

metacaratterijollywild-cards

Metacaratteri (2 di 2)

. unoedunsolocaratterequalunque* zeroopiùoccorrenzedell’espressionecheloprecede

Esempi:ì Ricercareunarigacostituitadallasolastringa

"riga completa":'^riga completa$'

ì Individuaretuttelerighevuotedelfile:'^$'

FabioDelVigna- fabio.delvigna@for.unipi.it

Insiemi di caratteri

[s]ì '['e']'sonometacaratteri

ì 's'elencodicaratteriammessi.

ì L'insieme'[s]'soddisfaUNSOLOqualunquecaratterecompresonell'elencos.

ì Negliinsiemi'[s]'sipossonospecificareintervallidicaratteriusandoilcarattere'-’

FabioDelVigna- fabio.delvigna@for.unipi.it

Esempio

grep '1[2,3]:[0-5][0-9]' ls.out

ì ilprimocaratteredellastringacercatadeveessereletteralmenteun’1’

ì ilsecondopuòessereun'2' oun'3’

ì ilterzodeveessereletteralmenteun':’

ì ilquartopuòessere'0' o'1' o'2' o'3' o'4' o'5’

ì ilquintodeveessereunacifracompresatra'0' e'9' (estremicompresi).

FabioDelVigna- fabio.delvigna@for.unipi.it

Esercizio

FabioDelVigna- fabio.delvigna@for.unipi.it

Esercizio 1

ì Creareduefileditesto,concontenutodialmeno5righe(chiamarliargv1.sheargv2.sh).

ì Diffì Creareunfilepatchchepermetta,seapplicatoa

argv1.shdiottenerelostessocontenutodiargv2.sh

ì Patchì Applicarelapatchcreatacondiff alfileargv1.shì Rimuoverelapatchdaargv1.sh

FabioDelVigna- fabio.delvigna@for.unipi.it

Esercizio 2

ì Archiviazione ecompressioneì creare nella home unarchivio compresso informato gzip dinome

config.tgz contenente i fileconestensione conf presenti nellacartella /etc

ì mostrare i filecontenuti nell’archivioì decomprimere l’archivio congunzipì estrarre i filecontenuti conil comando tar

ì Ricerca dei fileì cercare dentro lacartella /etc tutti i fileil cuinome contiene la

stringa sys elacuidimensione è superiore a10 byteì cercare nella root tutti i fileche hanno il bitSUID oSGID attivoì concatenare emostrare avideotutti i file(apartire dalla root)il

cuinome contiene lastringa tabì Ricerca nei file

ì cercare dentro lacartella /etc tutti i fileche contengono lastringafstab

FabioDelVigna- fabio.delvigna@for.unipi.it

Riferimenti

ì http://www.x.org/- OfficialsiteoftheXorgfoundation

ì http://www.linfo.org/x.html – introductiontoX

ì http://tools.ietf.org/html/rfc1198– RFC

FabioDelVigna- fabio.delvigna@for.unipi.it