Sistemioperativi ì - unipi.it
Transcript of Sistemioperativi ì - unipi.it
ì
FabioDelVigna- [email protected]
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- [email protected]
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- [email protected]
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- [email protected]
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- [email protected]
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- [email protected]
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- [email protected]
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- [email protected]
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- [email protected]
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- [email protected]
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- [email protected]
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- [email protected]
Diff e Patch
FabioDelVigna- [email protected]
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- [email protected]
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- [email protected]
diff 1/2
ì Diff serveperconfrontarefile.
ì Confronto“manuale”visivo
ì Generazionefilepatch.
FabioDelVigna- [email protected]
diff 2/2
ì diff file1 file2 ì differenze (riga perriga)tra i duefile
FabioDelVigna- [email protected]
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- [email protected]
diff
ì Nelcasopiùsemplice,l’outputprodottodadiffusaFROM-FILEeTO-FILEpergenerareunfiledidifferenze
ì ‘-’staperstandardinput
ì diff3 confronta3fileallavolta
ì sdiff side-by-sidemergedeifile
ì $ info diff
FabioDelVigna- [email protected]
Archiviazione e compressione
FabioDelVigna- [email protected]
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- [email protected]
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- [email protected]
tar - Creazione
ì tar –cvf archivio.tar sorgente
ì tar -czvf archivio.tar.gz ~/archivio/*
ì archivio.tar:filedacreare
ì sorgente:contenuto dell'archivio
FabioDelVigna- [email protected]
tar - Visualizzazione
ì tar -tvf filename.tar
ì Elenca il contenuto difilename.tar
FabioDelVigna- [email protected]
tar - Estrazione
ì tar –xvf archivio.tar destinazione
ì tar -xzvf archivio.tar.gz
ì Nonrimuove l'archivio,macrea copie delsuocontenuto
FabioDelVigna- [email protected]
gzip and gunzip
ì Programma dicompressione
ì gzip archivio archivio.gz
ì gzipì Utilitydicompressione
ì gunzipì Utilitydidecompressione
FabioDelVigna- [email protected]
bzip2 and bunzip2
ì bzip2ì Utilitydicompressione
ì bunzip2ì Utilitydidecompressione
ì bzip2 archivio archivio.bz2
ì Rapporto dicompressione migliore digzip
FabioDelVigna- [email protected]
Archivi - path
ì Ifilevengonomemorizzaticolpath
ì Non vengonoeffettuaticontrollidioverwrite
ì -C nome_directory:estraeidatinelladirectoryspecificata
ì Senonsispecificaladestinazionesiusaladirectorycorrenteedilpath nell’archivio
FabioDelVigna- [email protected]
Ricerca di file
FabioDelVigna- [email protected]
find
ì Ricercaall’internodipercorsiifilesecondolecondizioniindicate
ì Lecondizionisonolegateall’apparenzaesternaenonalcontenuto
FabioDelVigna- [email protected]
find
ì find [percorso…] [espressione]
ì percorso…ì insieme dipercorsi separati daspazi
ì espressioneì insieme ditesteazioni separati daoperatori
FabioDelVigna- [email protected]
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- [email protected]
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- [email protected]
Condizioni
ì -userutenteì TRUEselarisorsa appartiene autente
ì -groupgruppoì TRUEseappartiene algruppo ”gruppo”
ì -perm[-/+]modelloì TRUEsei permessi corrispondono esattamente al
modello specificato (informaottale osimbolica)
FabioDelVigna- [email protected]
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- [email protected]
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- [email protected]
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- [email protected]
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- [email protected]
Ricerca con locate
locate “nomefile”
ì Esegue una ricerca delfile“nomefile”all'interno di
undatabase
ì Ildatabaseva popolato etenutoaggiornato conil
comando:updatedb
FabioDelVigna- [email protected]
Ricerca nei file
FabioDelVigna- [email protected]
grep
§ grep [opzioni] “stringa” nome_file ...§ Cercalerighecontenentistringa
§ grep “pippo” pluto§ Visualizzalepartidelfilepluto incuicomparela
parolapippo.
§ grep pippo *§ Cercalaparolapippo intuttiifiledelladirectory
corrente.
FabioDelVigna- [email protected]
Ilcomandogrep è casesensitive.
grep
ì Èpossibileutilizzareespressioniregolariperlericerche(generalized regularexpression printer)
ì grep 'ri.*o' pluto
ì Cercalestringhecheinizianoperri eterminanocono all'internodelfilepluto.
ì .* indica0(zero)opiùcaratteriqualunque
FabioDelVigna- [email protected]
Opzioni grep
-i (ignore case)ignoraledistinzionitraminuscoleemaiuscole
-vmostralelineecheNONcontengonol’espressione
-nmetteilnumerodirigadavantiadognirigacheriporta
-criportasoloilconteggiodellelinee
-wverificasoloparoleintere
-x controllalecorrispondenzedilineeintere
FabioDelVigna- [email protected]
Metacaratteri (1 di 2)
ì ^ Iniziorigagrep '^d' ls.out
ì $ Finerigagrep '\.c$' ls.out
ì Aggiungereancheilmetacarattere'\'perchéancheilcarattere'.'èunmetacarattere
ì '\'neutralizzailvaloredimetacaratteredelcaratterechelosegueì Percitareletteralmenteilcarattere'\'ènecessarioquindiscriverlo
duevolte:'\\'
FabioDelVigna- [email protected]
metacaratterijollywild-cards
Metacaratteri (2 di 2)
. unoedunsolocaratterequalunque* zeroopiùoccorrenzedell’espressionecheloprecede
Esempi:ì Ricercareunarigacostituitadallasolastringa
"riga completa":'^riga completa$'
ì Individuaretuttelerighevuotedelfile:'^$'
FabioDelVigna- [email protected]
Insiemi di caratteri
[s]ì '['e']'sonometacaratteri
ì 's'elencodicaratteriammessi.
ì L'insieme'[s]'soddisfaUNSOLOqualunquecaratterecompresonell'elencos.
ì Negliinsiemi'[s]'sipossonospecificareintervallidicaratteriusandoilcarattere'-’
FabioDelVigna- [email protected]
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- [email protected]
Esercizio
FabioDelVigna- [email protected]
Esercizio 1
ì Creareduefileditesto,concontenutodialmeno5righe(chiamarliargv1.sheargv2.sh).
ì Diffì Creareunfilepatchchepermetta,seapplicatoa
argv1.shdiottenerelostessocontenutodiargv2.sh
ì Patchì Applicarelapatchcreatacondiff alfileargv1.shì Rimuoverelapatchdaargv1.sh
FabioDelVigna- [email protected]
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- [email protected]
Riferimenti
ì http://www.x.org/- OfficialsiteoftheXorgfoundation
ì http://www.linfo.org/x.html – introductiontoX
ì http://tools.ietf.org/html/rfc1198– RFC
FabioDelVigna- [email protected]