26
1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ AN II, ID Sisteme de Operare Organizarea fişierelor şi directoarelor în sistemul Linux Stoica Cristian

UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

  • Upload
    ngotruc

  • View
    238

  • Download
    0

Embed Size (px)

Citation preview

Page 1: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

1

UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ AN II, ID

Sisteme de Operare

Organizarea fişierelor şi directoarelor

în sistemul Linux

Stoica Cristian

Page 2: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

2

1. Noţiuni introductive

Fişierul (file) este reprezentarea logică a unei informaţii sub forma unei înşiruiri de octeţi. Fişierul

poate fi considerat ca fiind versiunea electronică a documentului scris.

Directorul (directory) este o entitate în care se pot regăsi fişiere şi/sau alte directoare. Acesta poate

fi considerat versiunea electronică a dosarului.

În interfeţele grafice, directorul este de obicei denumit folder.

Fişierele organizează informaţiile pe mediile de stocare. Mediile de stocare pot fi considerate spaţii

continue de octeţi. În aceste spaţii, se pot regăsi mai multe fişiere, de dimensiuni variabile.

Sistemul de fişiere reprezintă modul de organizare a fişierelor pe un mediu de stocare pentru a le

face mai uşor accesibile. Organizarea include atât partea logică (modul în care sunt adresate fişierele)

cât şi partea fizică (modul în care sunt stocare fişierele ca înşiruire de octeţi).

Fiind o componentă a sistemului de operare (SO), sistemul de fişiere menţine numele şi atributele

fişierelor şi permite stocarea lor într-o ierarhie de directoare numită şi arbore de directoare.

Sistemele de operare folosesc fişiere pentru a organiza date, indiferent dacă aceste date sunt ale

utilizatorului sau sunt generate pe moment de sistem. Spre exemplu, în Linux şi în Mac OS, orice

informaţie se găseşte într-un fişier: datele se regăsesc în fişiere; directoarele sunt şi ele fişiere, dar cu

atributul de director; fiecare dispozitiv poate fi accesat printr-un fişier, inclusiv mouse-ul, memoria şi

placa video. Intern, Microsoft Windows foloseşte o schemă asemănătoare structurii de fişiere şi

directoare pentru a denumi dispozitivele,dar această structură nu se suprapune peste structura de

fişiere precum în Linux şi în Mac OS.

2. Ierarhia sistemului de fişiere

Sistemele de fişiere permit utilizatorului să organizeze datele într-un mod accesibil. Structura cel mai

des întâlnită pentru organizarea fişierelor este arborele. Tabelele de mai jos prezintă structura

ierarhică din sistemele de operare cele mai cunoscute.

Comparativ cu Linux, structura în Windows este mult mai simplă pentru directoarele aflate imediat în

rădăcină. În schimb, o mare parte din directoarele importante se află în directorul Windows.

Orice sistem Linux prezintă următoarea structură standard de directoare (standardizată în

documentul File system Hierachy Standard - FHS):

Director Conţinut

/ directorul rădăcină /bin comenzi standard şi programele necesare întreţinerii şi

depanării sistemului /boot fişiere necesare boot-ării, precum imaginea kernel-ului

/dev fişiere speciale utilizate pentru accesul direct la dispozitivele hardware sau logice ale sistemului (terminale, discuri de sistem, imprimante, porturi paralele, seriale, etc.)

/etc fişiere pentru configurarea şi administrarea diverselor utiliate şi servicii ale sistemului (inittab, fstab, hosts, cron,

Page 3: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

3

etc.)

/home folderele aferente fiecărui utilizator din sistem, în mod implicit acestea au acelaşi nume cel cu al utilizatorului

/media subdirectoare în care se montează unităţile optice, floppy, etc.

/mnt subdirectoare în care se montează alte sisteme de fişiere /opt pachete de aplicaţii de dimensiuni mari, accesibile tuturor

utilizatorilor /proc sistem virtual de fişiere din care se obţin informaţii

despre sistem şi aplicaţiile care rulează la un moment dat /root directorul home al utilizatorului root

/run ***

/sbin comenzi pentru administrarea sistemului /selinux ****

/srv servicii de date (www, ftp)

/sys **** /tmp fişiere temporare

/usr aplicaţii pentru uzul normal al sistemului de operare; conţine mai multe subdirectoare

/usr/bin comenzi orientate pe utilizator

/usr/sbin comenzi pentru administrarea sistemului /usr/lib librării pentru limbajele de programare

/usr/share date independete de arhitectură, în general read-only: documentaţia Linux, paginile de manual, etc.

/var fişiere al căror conţinut se schimbă foarte des, precum log-uri, fişiere temporare, cache (date reutilizabile), spool (date neprocesate)

Tabelul 1. Structura standard de directoare în sistemul Linux

Figura 1. Lista directoarelor şi fişierelor din rădăcina sistemului de fişiere în mediul Linux (distribuţia openSUSE 12.1)

Page 4: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

4

Figura 2. Structura arborescentă (explicitată parţial) a directoarelor şi fişierelor din rădăcina sistemului de fişiere în mediul Linux (distribuţia openSUSE 12.1) folosind utilitarul WinSCP

Page 5: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

5

3. Tipuri de fişiere

3.1 Terminologie

Sistemele de fişiere pun la dispoziţia utilizatorilor diverse forme logice de organizare şi acces la date,

bineînţeles sub formă de fişiere.

În afară de directoare şi fişiere, sistemul de fişiere pune la dispoziţia utilizatorului şi legături (link-uri).

Astfel, sistemele de fişiere moderne oferă posibilitatea utilizării mai multor tipuri de fişiere

prezentate în Tabelul 2.

Tipuri fişier Denumire tip în engleză Descriere

fişiere normale regular files unitate logică de acces la date directoare directories/folders organizează fişiere şi alte directoare

legături simbolice symbolic links legătură către un fişier sau director Tabelul 2. Tipuri de fişiere

Există posibilitatea de a crea legături atât pentru fişiere cât şi pentru directoare – în fond, ambele

entităţi sunt fişiere, dar cu atribute diferite. Legăturile se utilizează la scriere/citire la fel ca fişierele

normale. Sistemul de operare împreună cu sistemul de fişiere se ocupă transparent de “traducerea”

acestora în fişiere normale pentru aplicaţii.

Fiecare director conţine două directoare speciale:

. (punct) indică spre acelaşi director (directorul curent);

.. (punct, punct) indică spre directorul părinte;

În exemplele de mai jos:

comanda mkdir (make directory) creează un director

comanda touch creează un fişier gol (0 octeţi)

comanda ln -s creează un link simbolic

Page 6: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

6

3.2 Detecţia tipului fişierelor

Pe sistemele Windows, detecţia tipului fişierelor se bazează pe verificarea extensiei. În funcţie de

aceasta, sistemul de operare determină care aplicaţie este potrivită pentru a deschide un fişier.

Pe sistemele Linux, detecţia tipului fişierelor este realizată prin intermediul comenzii file. Aceasta

utilizează un fişier special de configurare în care sunt înscrise secvenţe de octeţi care se regăsesc în

diferite tipuri de fişiere. Comanda file lucrează independent de extensia fişierului, precum este

dovedit în exemplele următoare:

Page 7: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

7

4. Operaţii uzuale asupra fişierelor şi directoarelor

4.1 Afişarea şi schimbarea directorului curent

Comanda pwd afişează calea absolută către directorul curent. De asemenea, prompt-ul bash conţine

implicit directorul curent. Pentru a schimba directorul curent se foloseşte comanda cd <cale>. Calea

poate să fie o cale absolută sau relativă.

Mai jos se găseşte un exemplu de folosire a comenzilor pwd şi cd. A se observa că la fiecare

schimbare de director se modifică şi prompt-ul bash. Ierarhia de directoare prin care se navighează

este cea prezentată anterior.

comanda pwd (print working directory) afişează directorul current

comanda cd / (change directory) schimbă directorul current (/root) cu directorul rădăcină

al sistemului de operare (/)

comanda cd /root este echivalentă cu comanda cd ~; aceasta are ca efect schimbarea

directorului curent (/) cu directorul home al utilizatorului curent logat root (/root).

cd .. (punct punct) schimbă directorul curent în directorul părinte al directorului curent; se

pot înlănţui mai multe secvenţe .. (punct punct) separate de / (slash);

cd . (punct) nu schimbă directorul; . (punct) este un caracter special şi se foloseşte pentru a

indica în mod explicit o cale care are ca punct de pornire directorul curent; este utilizat

frecvent pentru a scrie comenzi care execută scripturi/programe aflate în directorul curent;

cd ~ (tilda) schimbă directorul curent în directorului home al utilizatorul curent;

cd - (minus) schimbă directorul curent în directorul anterior şi îl afişează pe ecran;

cd apelat fără parametru schimbă directorul în directorul home al utilizatorul curent

(echivalent cu cd ~);

Page 8: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

8

4.2 Afişarea conţinutului fişierelor

Conţinutul unui fişier poate fi afişat pe ecran prin intermediul comenzii cat (concatenate). Sintaxa

cestei comenzi este cat <nume_fişier>. Un exemplu de utilizare este:

Această comandă afişează tot fişierul, inclusiv dacă acesta este mai mare de un ecran. Pentru a putea

naviga prin output-ul unei comenzi (în cazul acesta, al comenzii cat), se pot folosi comenzile more sau

less.

more permite navigarea doar într-o singură direcţie (de la început către sfârşitul fişierului) şi câte un

ecran odată, pe când less permite navigarea în ambele direcţii, câte o linie, la fel ca un editor. more şi

less poartă numele de paginatoare (pagere). Interfaţa less este foarte asemănătoare cu cea a

editorului VIM (Vi IMproved).

4.3 Listarea conţinutului unui director

Cea mai frecventă operaţie care se execută asupra directoarelor este listarea. Comanda utilizată este

ls (list). În această secţiune, prin fişier înţelegem orice tip de fişier (inclusiv tipul “director”), mai puţin

în cazurile în care este menţionat explicit.

Sintaxa comenzii pentru listare este ls [opţiuni] [<cale>]. În momentul în care lipseşte

calea, se realizează listarea conţinutului directorului curent.

Page 9: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

9

Opţiunile cele mai des folosite cu această comandă sunt:

-l afişează informaţii detaliate despre fiecare fişier/director (data modificare, dimensiune,

utilizator, grup, drepturi de acces);

-a afişează şi fişierele care încep cu . (punct); în Unix, aceste fişiere sunt considerate de

majoritatea interfeţelor cu utilizatorul ca fiind fişiere ascunse;

-h afişează dimensiunea fişierelor în format human-readable, respectiv dimensiunea în octeţi

este înlocuită cu dimensiunea în Kiloocteţi/Megaocteţi/Gigaocteţi dacă depăşeşte un aunit

ordin de mărime.

comanda ll este un alias pentru comanda ls -l (forma lungă)

Semnificaţia coloanelor afişate este:

primul caracter reprezintă tipul fişierului:

- - = fişier normal

- d = director

- p = pipe

- b = dispozitiv bloc

- c = dispozitiv caracter

- l = legătură simbolică

urmează 3 grupuri de câte 3 caractere (rwx / read write execute) care reprezintă drepturile

de acces pentru utilizatorul root (care este deţinătorul fişierului), drepturile de acces pentru

utilizatorii care fac parte din grupul root (care deţine fişierul), drepturile de acces pentru

ceilalţi utilizatori;

numărul de link-uri către fişier: 1;

utilizatorul ce deţine fişierul: root;

grupul de care aparţine fişierul: root;

dimensiunea fişierului: 4557;

data fişierului: Feb 7;

Page 10: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

10

ora fişierului: 23:48;

numele fişierului: .bash_history;

Observaţii:

dacă se doreşte afişarea conţinutului directorului curent, nu este necesară scrierea căii ca

parametru pentru comanda ls;

ls -al afişează lista detaliată a fişierelor din directorul curent, inclusiv fişierele ascunse (a se

observa că şi . şi .. sunt afişate);

ls -alh afişează lista detaliată a fişierelor din directorul curent, utilizând formatul human-

readable pentru afişarea dimensiunii fişierelor (a se observa dimensiunea fişierului afişate);

ls ../.. prezintă utilizarea lui ls cu parametru dat sub formă de cale relativă (directorul afişat

este /);

ls -a prezintă fişierele ascunse ale directorului /; se observă că şi acest director conţine

directoarele standard . şi ..;

ls -R <cale> afişează arborele de directoare şi fişiere care are ca rădăcină directorul specificat

ca argument;

Pentru mai multe opţiuni se poate consulta ls --help sau man ls.

4.4 Crearea/ştergerea fişierelor/directoarelor

Pentru a crea orice entitate pe un sistem de fişiere, se utilizează o serie de comenzi, prezentate în

Tabelul 3.

Prima metodă de creare a unui fişier este utilizând comanda touch. A doua metodă se bazează pe o

funcţionalitate bash numită redirectare în fişiere. Pe scurt, ceea ce realizează comanda doua este

redirectarea ieşirii unei comenzi (nule) către un fişier, creându-se astfel un fişier gol (0 octeţi).

Entitate Comandă

Fişier normal touch <nume_fişier1>, <nume_fişier2>

Director mkdir <nume_director>

Legături simbolice (link-uri simbolice) ln -s <destinaţie> [<nume_legătură>]

Pipe-uri cu nume mkfifo <nume_pipe>

Tabelul 2. Comenzi pentru crearea fişierelor

Page 11: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

11

O altă întrebuinţare a comenzii touch este aceea a actualizării datei ultimei modificări şi a datei

ultimei accesări folosind următoarele opţiuni:

-m (actualizează doar data ultimei modificări)

-a (actualizează doar data ultimei accesări)

fără parametru (actualizează ambele date)

-r (preia informaţiile legate de timp de la alt fişier)

comanda mkdir (make directory) creează unul sau mai multe directoare specificate ca

parametru

comanda rmdir (remove empty directory) şterge unul sau mai multe directoare goale

specificat ca parametru

Page 12: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

12

În Linux, comanda cea mai utilizată pentru ştergerea fişierelor şi directoarelor este rm.

Sintaxa comenzii este rm [opţiuni] <cale>.

Una dintre cele mai folosite opţiuni este -r/-R, utilizată pentru a şterge recursiv un director. Această

opţiune trebuie folosită cu atenţie pentru că poate avea rezultate negative dacă directorul care este

şters conţine informaţii utile. O eroare celebră este utilizarea comenzii rm -rf /, care şterge recursiv

totul începând cu directorul rădăcină, forţând ştergerile (datorită opţiunii -f).

Pentru ştergerea directoarelor goale se poate folosi şi rmdir.

4.5 Operaţiile de copiere/mutare/redenumire

Operaţiile de copiere şi mutare sunt operaţii care necesită 2 parametrii:

sursa de unde se copiază/mută

destinaţia unde se copiază/mută

Copierea

Copierea unui fişier sau director se realizează cu ajutorul comenzii cp.

Sintaxa comenzii este cp [opţiuni] <sursă> <destinaţie>

Opţiunile cele mai folosite pentru copiere sunt:

-r (copiere recursivă; copiază şi copiii directoarelor, presupunând că există aşa ceva în sursă)

-p (copiere cu păstrarea atributelor: permisiuni, dată)

Page 13: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

13

-u (copiază doar dacă fişierul sursă este mai nou decât fişierul destinaţie sau dacă fişierul

destinaţie lipseşte)

Mutarea

Mutarea unui fişier sau director se realizează cu ajutorul comenzii mv.

Sintaxa comenzii este mv [opţiuni] <sursă> <destinaţie>

Implicit, mutarea este recursivă şi păstrează atributele fişierelor. În cazul în care sursa şi destinaţia se

găsesc pe aceiaşi partiţie, la o mutare, se schimbă doar părintele fişierului sau directorului care se

mută. O operaţie de mutare este, astfel, mai puţin costisitoare decât o operaţie de copiere.

Redenumirea

Redenumirea este, de fapt, o mutare şi se realizează cu ajutorul comenzii mv, în următoarele condiţii:

în cazul în care sursa este un fişier şi destinaţia este un fişier, se realizează copierea/mutarea

fişierului cu schimbarea numelui sursei;

în cazul în care sursa este un director şi destinaţia nu există ca director, se realizează

copierea/mutarea directorului cu schimbarea numelui.

Page 14: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

14

5. Operaţii asupra conţinutului

5.1 Arhivarea şi dezarhivarea

Arhivarea este procedeul prin care mai multe fişiere şi directoare sunt adunate la un loc (într-un

fişier), realizând eventual şi o reducere a dimensiunii prin eliminarea datelor care se repetă şi

înlocuirea lor cu o serie de codificări.

În general, în cadrul procesului de arhivare se creează un dicţionar cu secvenţe de octeţi frecvente şi

o codificare a lor mai scurtă (pe mai puţini octeţi). Arhiva conţine atât dicţionarul cât şi conţinutul

fişierelor dar, în loc de secvenţele frecvente lungi, se regăsesc referinţe către un dicţionar. Dacă

fişierele conţin multe date care se repetă, dimensiunea unei arhive scade considerabil.

După cum se poate identifica şi din descrierea anterioară, există două etape mai importante în ceea

ce priveşte manevrarea fişierelor:

concatenarea (lipirea) fişierelor într-un fişier mai mare, din care să se poată extrage toate

fişierele şi informaţiile despre ele;

compresia fişierului mare, astfel încât să se reducă dimensiunea lui dar fără a se pierde din

informaţii.

În Linux există utilitare de arhivare care se ocupă ori de una dintre etape ori de ambele etape.

Comanda tar (tape archive) se ocupă de prima etapă. Un fişier .tar conţine fişiere necomprimate

împreună cu informaţii despre modul de extragere al acestora (spre exemplu: de unde până unde se

găseşte un fişier în cadrul arhivei). Din acest motiv, un fişier .tar este de obicei mai mare decât suma

tuturor dimensiunilor fişierelor ce sunt incluse în el.

Sintaxa comenzii este tar cvf nume_arhivă.tar <cale>

cu parametrii:

c creează arhiva;

v afişează ce anume se arhivează;

f nume_arhivă.tar specifică numele arhivei;

<cale> precizează directorul/directoarele/fişierele care vor fi arhivate.

Pentru a dezarhiva o arhivă .tar, se utilizează:

tar xvf nume_arhivă.tar [–C <cale_destinaţie>]

unde:

x dezarhivează (eXtract)

v afişează ce anume se dezarhivează;

f nume_arhivă.tar specifică numele arhivei;

-C <cale_destinaţie> specifică, opţional, locul unde se realizează dezarhivarea.

Page 15: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

15

f şi nume_arhivă.tar se consideră un singur parametru; din acest motiv, de fiecare dată când se

foloseşte opţiunea f pentru a indica un fişier arhivă, aceasta trebuie să apară ultima în lista de

opţiuni, fiind urmată imediat de numele fişierului de arhivă.

Pentru a realiza compresia unui fişier, două utilitare sunt folosite preponderent în lumea Unix:

gzip, mai rapid dar cu rată de compresie mai mică;

bzip2, mai lent dar cu rată de compresie mai mare.

Comanda tar poate utiliza direct unul dintre programele de comprimare menţionate anterior folosind

parametrul z pentru gzip sau parametrul j pentru bzip2.

Pe lângă opţiunile de compresie/arhivare se mai pot folosi şi alte opţiuni. Printre cele mai utile se

numără opţiunea --preserve, care impune păstrarea drepturilor de acces ]n momentul

arhivării/dezarhivării.

Page 16: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

16

5.2 Backup

Backup-ul este realizat pentru a păstra într-un loc separat o copie a datelor. Această copie se

utilizează pentru a reface datele în cazul în care suportul original nu mai poate fi folosit din orice

motiv. Este una dintre cele mai utile acţiuni asupra datelor pe care toată lumea ştie că ar fi bine să o

facă dar nu o face. Câteva metode de backup au fost deja prezentate. Tabelul 4 prezintă câteva

metode de backup şi situaţiile când sunt ele potrivite.

Metodă Descriere Compresie

tar+gzip/bzip2 Metodă foarte simplu de aplicat. Devine greu de folosit pentru dimensiuni mari de date.

Da

dd

Metodă simplu de folosit şi independentă de sistemul de fişiere. Permite păstrarea intactă a structurii sistemului de fişiere. Inflexibilă când vine vorba de recuperarea datelor. Utilă pentru cantităţi mari de date.

Nu

rsync E asemănătoare comenzii cp, dar la care s-a adăugat suport de sincronizare între mai multe sisteme de calcul. Permite replicarea structurii de fişiere (inclusiv permisiuni) între două sisteme de calcul.

Da

Page 17: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

17

rdiff-backup

Este un wrapper peste rsync. Adaugă suport pentru backup-uri incrementale. La un moment dat se realizează un backup complet pentru un director (asemănător rsync-ului). Backup-urile incrementale salvează doar modificările ce s-au făcut de la ultimul backup până în prezent, indiferent de tipul backup-ului. În acest fel se poate reveni la orice stare anterioară, în măsura în care s-a realizat cel puţin un backup incremental la acea stare.

Da

Tabelul 4.

5.3 Comanda dd (data description)

Comanda dd (data description) permite realizarea copierii şi conversiei low-level a datelor. Aceasta

acceptă la intrare următoarele argumente:

if (input file) parametru care specifică fişierul de intrare

of (output file) parametru care specifică fişierul de ieşire

bs (block size) parametru care specifică mărimea blocului (în octeţi)

count parametru ce specifică numărul de blocuri

În exemple de mai jos

crearea unui fişier (zero.txt) care conţine numai zerouri folosind blocuri de 128 de octeţi;

mărimea acestuia este de 128 octeţi x 8 = 1024 de octeţi (1 Kilo octet);

crearea unui fişier (rand.txt) care conţine date aleatoare folosind blocuri de 128 de octeţi;

mărimea acestuia este de 128 octeţi x 8 = 1024 de octeţi (1 Kilo octet);

Efectuarea unui test de performanţă la scrierea şi citirea secvenţială al unui fişier de 1 Giga octet pe

hard-disk folosind blocuri de 128 de octeţi la scriere şi de 64 de Kilo octeţi la citire.

Page 18: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

18

Ştergerea unui hard-disk cu zero sau cu date aleatoare.

Copierea unei partiţii ca un fişier de imagine de disc pe o altă partiţie.

5.4 Comanda tail

Comanda tail este folosită pentru a afişa ultimele linii dintr-un fişier. Sintaxa comenzii este:

tail [opţiuni] <nume_fişier>

Folosită fără nicio opţiune comanda tail afişează ultimele 10 linii.

Opţiunile cele mai des folosite sunt:

-c - afişează numărul specificat de octeţi dintr-un fişier

-n - afişează numărul specificat de linii din fişier

-f - monitorizează fişierul

În exemplele următoare avem:

afişarea ultimelor 5 linii din fişier

afişarea ultimelor linii din fişier începând cu linia 3

monitorizarea log-ului de sistem

Page 19: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

19

5.5 Comanda head

Comanda head este folosită pentru a afişa primele linii dintr-un fişier. Sintaxa comenzii este:

head [opţiuni] <nume_fişier>

Folosită fără nicio opţiune comanda head afişează primele 10 linii.

Opţiunile cele mai des folosite sunt:

-c - afişează numărul specificat de octeţi dintr-un fişier

-n - afişează numărul specificat de linii din fişier

În exemplele următoare avem:

afişarea primelor 5 linii din fişier

afişarea primilor 10 octeţi din fişier

Page 20: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

20

5.6 Comanda sort

Comanda sort este folosită pentru a afişa în ordine sortată liniile unui fişier sau datele primite ca

argument. Sintaxa comenzii este:

sort [opţiuni] <nume_fişier>

Opţiunea -r afişează în ordine inversă.

5.7 Căutarea fişierelor

Comanda find

Comanda find foloseşte aboradrea brute-force pentru găsirea fişierelor căutând în arborele de

directoare. Comanda pune la dispoziţie un set extins de criterii de căutare, cum ar fi numele

fişierului, utilizatorul, grup, tip, permisiuni, dată şi altele. Exemple de criterii de căutare sunt

prezntate în continuare specificând opţiunea corespunzătoare a comenzii find:

-name căutare după numele fişierelor

-perm căutare după permisiunile fişierelor

-size căutare după dimensiunea fişierelor

Comanda următoare caută toate fişierele care au numele stat, în mod recursiv în directorul /usr:

Page 21: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

21

Următoarea comandă caută toate fişierele care au permisiunile 644:

Pentru căutarea fişierelor cu dimensiunea mai mare de 50 KB se foloseşte următoarea comendă:

Comanda locate

Comanda locate foloseşte o bază de date locală în care sunt indexate toate fişierele. Comanda locate

este mai rapidă decât comanda find, dar pune la dispoziţie un singur criteriu de căutare: numele

fişierului. Un alt dezavantaj este faptul că baza de date trebuie reactualizată periodic pentru a

conţine informaţii despre fişierele noi create în sistem. Actualizarea se realizează cu ajutorul comenzii

updatedb.

Comanda întoarce o listă cu toate fişierele ale cărui nume conţine şirul de caractere precizat ca

argument.

Unele distribuţii Linux folosesc comanda slocate în locul comenzii locate. Avantajul comenzii slocate

este acela că nu permite afişarea fişierelor din directoarele în care utilizatorul nu are drepturi de

acces.

Comanda whereis

Această comandă poate fi folosită pentru a căuta într-un set restrâns de locaţii din sistem, de

exemplu directoarele cu fişiere binare, directoarele cu biblioteci sau directoarele cu pagini de

manual. Comanda whereis nu poate fi folosită pentru a căuta în directoarele utilizatorului. Comanda

va căuta toate fişierele care încep cu şirul de caractere precizat ca argument. De exemplu, pentru a

localiza comanda ls sau gcc folosim următoarea comandă:

Page 22: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

22

Comanda va afişa calea către executabil, dar şi calea către pagina de manual a comenzii.

Comanda which

Folosind comanda which se poate obţine calea către executabile care pot fi rulate din linia de

comandă. De exemplu, pentru a afla calea către comanda chmod se va folosi comanda următoare:

În mod implicit, comanda which returnează doar prima potrivire găsită, iar pentru a afişa lista

completă a potrivirilor se va folosi opţiunea -a.

Comanda type

Această comandă poate fi folosită pentru a determina modul de interpretare a unei comenzi, de

exemplu comandă integrată în shell, comandă externă sau alias.

Un exemplu de comandă integrată în shell este:

Pentru o comandă externă rezultatul comenzii type este calea către executabil:

În cazul unui alias este afişată comanda echivalentă:

Page 23: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

23

6. Drepturi de acces

O primă măsură de protecţie a datelor o reprezintă drepturile de acces la fişiere. Atât timp cât un

utilizator nu are drepturi de administrator pe un anumit computer, acel utilizator se supune

drepturilor de acces la fişiere.

Tabelul 5 prezintă drepturi ce pot fi configurate pentru un fişier, fără a particulariza la un anumit tip

de sistem de fişiere.

Drept Descriere

citire dreptul de a deschide şi citi conţinutul unui fişier scriere dreptul de a scrie într-un fişier

execuţie dreptul de executa un fişier (aplicaţie) sau, pentru directoare, dreptul de a intra într-un director

modificare dreptul de a modifica datele dintr-un fişier existent

ştergere dreptul de a şterge un fişier Tabelul 5.

6.1 Utilizatori şi grupuri de utilizatori vs. liste de acces

Există două metode mai întâlnite pentru definirea drepturilor de acces la fişiere:

drepturi de acces la nivel de utilizator/grup.

liste de acces – Access Control Lists (ACL).

Prima metodă (drepturi de acces la nivel de utilizator/grup) constă în definirea unor drepturi pentru

următoarele entităţi:

posesorul unui fişier (user);

grupul care deţine fişierul (group);

toţi ceilalţi utilizatori (others).

Un utilizator se poate afla în mai multe grupuri. Această metodă este cea mai folosită cale pentru

definirea drepturilor de acces. Metoda oferă un nivel de protecţie suficient pentru majoritatea

situaţiilor, ocupând un spaţiu limitat.

În cadrul sistemului bazat pe liste de acces, unui fişier i se pot asocia mai mulţi utilizatori şi/sau

grupuri de utilizatori. Pentru fiecare dintre aceste entităţi pot fi configurate mai multe tipuri de

drepturi. Această variantă poate fi privită ca o extindere a sistemului cu drepturi de acces prezentat

anterior. Complexitatea poate face ca sistemul să fie destul de greu de întreţinut.

Fiecare sistem de fişiere oferă un set de drepturi ce pot fi modificate pentru fiecare fişier în parte. ca

diferenţe notabile între sistemele de fişiere se pot aminti următoarele:

FAT32 nu oferă suport pentru drepturi de acces la fişiere; există doar posibilitatea de a marca

un fişier ca read-only; orice utilizator poate să schimbe acest drept;

majoritatea sistemelor de fişiere în mediile Unix (inclusiv Mac OS X) au suport pentru

drepturi de acces bazat pe utilizator/grup şi, folosind o extensie, pot si extinse cu liste de

acces;

Page 24: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

24

NTFS are un sistem foarte avansat de drepturi de acces, bazat pe liste de acces; pentru

fiecare entitate adăugată în lista unui anumit fişier pot fi configurate mai multe drepturi.

6.2 Clasificarea drepturilor de acces

Sistemele de fişiere din mediile Unix care au implementate standard drepturile de acces la nivel de

user/grup au la bază următorul set de drepturi de acces:

citire (read) – deschidere şi citire de fişiere;

scriere (write) – creare şi scriere de fişiere;

execuţie (execute) – execuţie fişiere/intrare în directoare;

În aceste sisteme de fişiere există 3 entităţi pentru care poate fi stabilită orice combinaţie a

drepturilor definite mai sus:

utilizator (user) – posesorul fişierului;

grup (group) – grupul de care aparţine fişierul;

alţii (others) – utilizatorii care nu fac parte din grupul fişierului şi nici nu sunt posesori.

6.3 Vizualizarea drepturilor de acces

Pentru a vedea drepturile de acces pentru un anumit fişier este suficientă utilizarea comenzii ls cu

parametrul -l (sau a comenzii ll). Spre exemplu, pentru a vedea drepturile de acces asupra unui fişier,

transmitem ca parametru comenzii ll direct numele fişierului:

Drepturile de acces sunt date de primele 10 caractere din ieşirea comenzii ll:

primul caracter reprezintă tipul fişierului:

- - = fişier normal

- d = director

- p = pipe

- b = dispozitiv bloc

- c = dispozitiv caracter

- l = legătură simbolică

următoarele 3 caractere (rw-) reprezintă drepturile de acces pentru utilizatorul root, care

este deţinătorul fişierului; se observă că utilizatorul are doar drepturile de citire respectiv

scriere, dar lipseşte dreptul de execuţie;

următoarele 3 caractere (r--) reprezintă drepturile de acces pentru utilizatorii care fac parte

din grupul root; se observă că este prezent doar dreptul de citire, dar lipsesc drepturile de

scriere şi execuţie;

Page 25: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

25

următoarele 3 caractere (r--) reprezintă drepturile de acces pentru utilizatorii care nu sunt

root şi nici nu fac parte din grupul root; se observă că este prezent doar dreptul de citire, dar

lipsesc drepturile de scriere şi execuţie;

Există două moduri de reprezentare a drepturilor:

în formă numerică: pentru fiecare entitate există o cifră în baza 8 care descrie drepturile,

câte un bit pentru fiecare drept;

în formă literară: drepturile sunt referite direct prin iniţiala lor, pentru fiecare tip de entitate.

Astfel, pentru exemplul de mai sus, avem drepturile:

rw-r--r-- în formă listing;

110100100 în formă binară;

644 în formă octală;

u=rwx g=r o=r în formă literală.

6.4 Modificarea proprietarului/grupului şi a drepturilor de acces

În sistemul Linux utilitarele de bază sunt chown şi chmod. Primul oferă posibilitatea schimbării

proprietarului şi a grupului căruia îi aparţine respectivului fişier, în vreme ce al doilea permite

modificarea drepturilor.

Sintaxa comenzii chown este: chown utilizator[:grup] <nume_fişier>

În exemplul de mai jos a fost modificat proprietarul şi grupul fișierului:

Dacă se doreşte modificarea utilizatorului sau a grupului, se foloseşte doar o parte a sintaxei:

Page 26: UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: …old.unibuc.ro/prof/vlada_m/docs/2012/feb/16_10_39_34Sisteme_de... · 1 UNIVERSITATEA DIN BUCUREŞTI FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ

26

În mediul Linux, un utilizator neprivilegiat nu poate schimba proprietarul şi/sau grupul unui fişier. În

Linux, comanda chown este folosită doar de utilizatorul privilegiat.

Comanda chmod permite modificarea drepturilor de acces ale unui fişier. Comanda poate fi folosită

doar de utilizatorul ce deţine fişierul sau de utilizatorul privilegiat. Noile drepturi ale fişierului pot fi

precizate în formă literală sau octală.

Pentru schimbarea drepturilor se va folosi mai întâi forma literală. Drepturile pot fi precizate pentru

oricare dintre cele trei niveluri de privilegiu: utilizator, grup, alţi utilizatori printr-o singură literă: u, g,

o. Drepturile pot fi:

adăugate prin folosirea operatorului +;

înlăturate prin folosirea operatorului -;

precizate explicit prin folosirea operatorului =.

În format octal este suficientă o singură comandă pentru a modifica simultan drepturile pentru toate

cele trei grupuri de acces.