Professional Documents
Culture Documents
Sisteme de Operare
Stoica Cristian
1
1. Noiuni introductive
Fiierul (file) este reprezentarea logic a unei informaii sub forma unei niruiri de octei. Fiierul poate fi considerat ca fiind versiunea electronic a documentului scris. Directorul (directory) este o entitate n care se pot regsi fiiere i/sau alte directoare. Acesta poate fi considerat versiunea electronic a dosarului. n interfeele grafice, directorul este de obicei denumit folder. Fiierele organizeaz informaiile pe mediile de stocare. Mediile de stocare pot fi considerate spaii continue de octei. n aceste spaii, se pot regsi mai multe fiiere, de dimensiuni variabile. Sistemul de fiiere reprezint modul de organizare a fiierelor pe un mediu de stocare pentru a le face mai uor accesibile. Organizarea include att partea logic (modul n care sunt adresate fiierele) ct i partea fizic (modul n care sunt stocare fiierele ca niruire de octei). Fiind o component a sistemului de operare (SO), sistemul de fiiere menine numele i atributele fiierelor i permite stocarea lor ntr-o ierarhie de directoare numit i arbore de directoare. Sistemele de operare folosesc fiiere 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 informaie se gsete ntr-un fiier: datele se regsesc n fiiere; directoarele sunt i ele fiiere, dar cu atributul de director; fiecare dispozitiv poate fi accesat printr-un fiier, inclusiv mouse-ul, memoria i placa video. Intern, Microsoft Windows folosete o schem asemntoare structurii de fiiere i directoare pentru a denumi dispozitivele,dar aceast structur nu se suprapune peste structura de fiiere precum n Linux i n Mac OS.
/etc
/home /media /mnt /opt /proc /root /run /sbin /selinux /srv /sys /tmp /usr /usr/bin /usr/sbin /usr/lib /usr/share /var
etc.) folderele aferente fiecrui utilizator din sistem, n mod implicit acestea au acelai nume cel cu al utilizatorului subdirectoare n care se monteaz unitile optice, floppy, etc. subdirectoare n care se monteaz alte sisteme de fiiere pachete de aplicaii de dimensiuni mari, accesibile tuturor utilizatorilor sistem virtual de fiiere din care se obin informaii despre sistem i aplicaiile care ruleaz la un moment dat directorul home al utilizatorului root *** comenzi pentru administrarea sistemului **** servicii de date (www, ftp) **** fiiere temporare aplicaii pentru uzul normal al sistemului de operare; conine mai multe subdirectoare comenzi orientate pe utilizator comenzi pentru administrarea sistemului librrii pentru limbajele de programare date independete de arhitectur, n general read-only: documentaia Linux, paginile de manual, etc. fiiere al cror coninut se schimb foarte des, precum log-uri, fiiere temporare, cache (date reutilizabile), spool (date neprocesate)
Figura 1. Lista directoarelor i fiierelor din rdcina sistemului de fiiere n mediul Linux (distribuia openSUSE 12.1)
Figura 2. Structura arborescent (explicitat parial) a directoarelor i fiierelor din rdcina sistemului de fiiere n mediul Linux (distribuia openSUSE 12.1) folosind utilitarul WinSCP
3. Tipuri de fiiere
3.1 Terminologie
Sistemele de fiiere pun la dispoziia utilizatorilor diverse forme logice de organizare i acces la date, bineneles sub form de fiiere. n afar de directoare i fiiere, sistemul de fiiere pune la dispoziia utilizatorului i legturi (link-uri). Astfel, sistemele de fiiere moderne ofer posibilitatea utilizrii mai multor tipuri de fiiere prezentate n Tabelul 2. Tipuri fiier fiiere normale directoare legturi simbolice
Tabelul 2. Tipuri de fiiere
Descriere unitate logic de acces la date organizeaz fiiere i alte directoare legtur ctre un fiier sau director
Exist posibilitatea de a crea legturi att pentru fiiere ct i pentru directoare n fond, ambele entiti sunt fiiere, dar cu atribute diferite. Legturile se utilizeaz la scriere/citire la fel ca fiierele normale. Sistemul de operare mpreun cu sistemul de fiiere se ocup transparent de traducerea acestora n fiiere normale pentru aplicaii. Fiecare director conine dou directoare speciale: . (punct) indic spre acelai director (directorul curent); .. (punct, punct) indic spre directorul printe;
n exemplele de mai jos: comanda mkdir (make directory) creeaz un director comanda touch creeaz un fiier gol (0 octei) comanda ln -s creeaz un link simbolic
cd .. (punct punct) schimb directorul curent n directorul printe al directorului curent; se pot nlnui mai multe secvene .. (punct punct) separate de / (slash); cd . (punct) nu schimb directorul; . (punct) este un caracter special i se folosete 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 afieaz pe ecran; cd apelat fr parametru schimb directorul n directorul home al utilizatorul curent (echivalent cu cd ~);
Aceast comand afieaz tot fiierul, 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 direcie (de la nceput ctre sfritul fiierului) i cte un ecran odat, pe cnd less permite navigarea n ambele direcii, cte o linie, la fel ca un editor. more i less poart numele de paginatoare (pagere). Interfaa less este foarte asemntoare cu cea a editorului VIM (Vi IMproved).
Opiunile cele mai des folosite cu aceast comand sunt: -l afieaz informaii detaliate despre fiecare fiier/director (data modificare, dimensiune, utilizator, grup, drepturi de acces); -a afieaz i fiierele care ncep cu . (punct); n Unix, aceste fiiere sunt considerate de majoritatea interfeelor cu utilizatorul ca fiind fiiere ascunse; -h afieaz dimensiunea fiierelor n format human-readable, respectiv dimensiunea n octei este nlocuit cu dimensiunea n Kilooctei/Megaoctei/Gigaoctei dac depete un aunit ordin de mrime. comanda ll este un alias pentru comanda ls -l (forma lung)
Semnificaia coloanelor afiate este: primul caracter reprezint tipul fiierului: - - = fiier normal - d = director - p = pipe - b = dispozitiv bloc - c = dispozitiv caracter - l = legtur simbolic urmeaz 3 grupuri de cte 3 caractere (rwx / read write execute) care reprezint drepturile de acces pentru utilizatorul root (care este deintorul fiierului), drepturile de acces pentru utilizatorii care fac parte din grupul root (care deine fiierul), drepturile de acces pentru ceilali utilizatori; numrul de link-uri ctre fiier: 1; utilizatorul ce deine fiierul: root; grupul de care aparine fiierul: root; dimensiunea fiierului: 4557; data fiierului: Feb 7; 9
ora fiierului: 23:48; numele fiierului: .bash_history; Observaii: dac se dorete afiarea coninutului directorului curent, nu este necesar scrierea cii ca parametru pentru comanda ls; ls -al afieaz lista detaliat a fiierelor din directorul curent, inclusiv fiierele ascunse (a se observa c i . i .. sunt afiate); ls -alh afieaz lista detaliat a fiierelor din directorul curent, utiliznd formatul humanreadable pentru afiarea dimensiunii fiierelor (a se observa dimensiunea fiierului afiate); ls ../.. prezint utilizarea lui ls cu parametru dat sub form de cale relativ (directorul afiat este /); ls -a prezint fiierele ascunse ale directorului /; se observ c i acest director conine directoarele standard . i ..; ls -R <cale> afieaz arborele de directoare i fiiere care are ca rdcin directorul specificat ca argument;
Pentru mai multe opiuni se poate consulta ls --help sau man ls.
Comand touch <nume_fiier1>, <nume_fiier2> mkdir <nume_director> ln -s <destinaie> [<nume_legtur>] mkfifo <nume_pipe>
10
O alt ntrebuinare a comenzii touch este aceea a actualizrii datei ultimei modificri i a datei ultimei accesri folosind urmtoarele opiuni: -m (actualizeaz doar data ultimei modificri) -a (actualizeaz doar data ultimei accesri) fr parametru (actualizeaz ambele date) -r (preia informaiile legate de timp de la alt fiier)
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
11
n Linux, comanda cea mai utilizat pentru tergerea fiierelor i directoarelor este rm. Sintaxa comenzii este rm [opiuni] <cale>. Una dintre cele mai folosite opiuni este -r/-R, utilizat pentru a terge recursiv un director. Aceast opiune trebuie folosit cu atenie pentru c poate avea rezultate negative dac directorul care este ters conine informaii utile. O eroare celebr este utilizarea comenzii rm -rf /, care terge recursiv totul ncepnd cu directorul rdcin, fornd tergerile (datorit opiunii -f). Pentru tergerea directoarelor goale se poate folosi i rmdir.
Copierea
Copierea unui fiier sau director se realizeaz cu ajutorul comenzii cp. Sintaxa comenzii este cp [opiuni] <surs> <destinaie> Opiunile cele mai folosite pentru copiere sunt: -r (copiere recursiv; copiaz i copiii directoarelor, presupunnd c exist aa ceva n surs) -p (copiere cu pstrarea atributelor: permisiuni, dat) 12
-u (copiaz doar dac fiierul surs este mai nou dect fiierul destinaie sau dac fiierul destinaie lipsete)
Mutarea
Mutarea unui fiier sau director se realizeaz cu ajutorul comenzii mv. Sintaxa comenzii este mv [opiuni] <surs> <destinaie> Implicit, mutarea este recursiv i pstreaz atributele fiierelor. n cazul n care sursa i destinaia se gsesc pe aceiai partiie, la o mutare, se schimb doar printele fiierului sau directorului care se mut. O operaie de mutare este, astfel, mai puin costisitoare dect o operaie de copiere.
Redenumirea
Redenumirea este, de fapt, o mutare i se realizeaz cu ajutorul comenzii mv, n urmtoarele condiii: n cazul n care sursa este un fiier i destinaia este un fiier, se realizeaz copierea/mutarea fiierului cu schimbarea numelui sursei; n cazul n care sursa este un director i destinaia nu exist ca director, se realizeaz copierea/mutarea directorului cu schimbarea numelui.
13
14
f i nume_arhiv.tar se consider un singur parametru; din acest motiv, de fiecare dat cnd se folosete opiunea f pentru a indica un fiier arhiv, aceasta trebuie s apar ultima n lista de opiuni, fiind urmat imediat de numele fiierului de arhiv.
Pentru a realiza compresia unui fiier, 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 menionate anterior folosind parametrul z pentru gzip sau parametrul j pentru bzip2. Pe lng opiunile de compresie/arhivare se mai pot folosi i alte opiuni. Printre cele mai utile se numr opiunea --preserve, care impune pstrarea drepturilor de acces ]n momentul arhivrii/dezarhivrii.
15
5.2 Backup
Backup-ul este realizat pentru a pstra 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 aciuni asupra datelor pe care toat lumea tie c ar fi bine s o fac dar nu o face. Cteva metode de backup au fost deja prezentate. Tabelul 4 prezint cteva metode de backup i situaiile cnd sunt ele potrivite. Descriere Metod foarte simplu de aplicat. Devine greu de folosit pentru tar+gzip/bzip2 dimensiuni mari de date. Metod simplu de folosit i independent de sistemul de fiiere. Permite pstrarea intact a structurii sistemului de fiiere. Inflexibil dd cnd vine vorba de recuperarea datelor. Util pentru cantiti mari de date. E asemntoare comenzii cp, dar la care s-a adugat suport de rsync sincronizare ntre mai multe sisteme de calcul. Permite replicarea structurii de fiiere (inclusiv permisiuni) ntre dou sisteme de calcul. 16 Metod Compresie Da
Nu
Da
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 (asemntor rsync-ului). Backup-urile incrementale salveaz doar modificrile ce s-au fcut de la ultimul backup pn n prezent, indiferent de tipul backup-ului. n acest fel se poate reveni la orice stare anterioar, n msura n care s-a realizat cel puin un backup incremental la acea stare.
Da
Tabelul 4.
Efectuarea unui test de performan la scrierea i citirea secvenial al unui fiier de 1 Giga octet pe hard-disk folosind blocuri de 128 de octei la scriere i de 64 de Kilo octei la citire.
17
18
19
Comanda locate
Comanda locate folosete o baz de date local n care sunt indexate toate fiierele. Comanda locate este mai rapid dect comanda find, dar pune la dispoziie un singur criteriu de cutare: numele fiierului. Un alt dezavantaj este faptul c baza de date trebuie reactualizat periodic pentru a conine informaii despre fiierele noi create n sistem. Actualizarea se realizeaz cu ajutorul comenzii updatedb. Comanda ntoarce o list cu toate fiierele ale crui nume conine irul de caractere precizat ca argument. Unele distribuii Linux folosesc comanda slocate n locul comenzii locate. Avantajul comenzii slocate este acela c nu permite afiarea fiierelor din directoarele n care utilizatorul nu are drepturi de acces.
Comanda whereis
Aceast comand poate fi folosit pentru a cuta ntr-un set restrns de locaii din sistem, de exemplu directoarele cu fiiere binare, directoarele cu biblioteci sau directoarele cu pagini de manual. Comanda whereis nu poate fi folosit pentru a cuta n directoarele utilizatorului. Comanda va cuta toate fiierele care ncep cu irul de caractere precizat ca argument. De exemplu, pentru a localiza comanda ls sau gcc folosim urmtoarea comand:
21
Comanda va afia calea ctre executabil, dar i calea ctre pagina de manual a comenzii.
Comanda which
Folosind comanda which se poate obine calea ctre executabile care pot fi rulate din linia de comand. De exemplu, pentru a afla calea ctre comanda chmod se va folosi comanda urmtoare:
n mod implicit, comanda which returneaz doar prima potrivire gsit, iar pentru a afia lista complet a potrivirilor se va folosi opiunea -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 ctre executabil:
22
6. Drepturi de acces
O prim msur de protecie a datelor o reprezint drepturile de acces la fiiere. Att timp ct un utilizator nu are drepturi de administrator pe un anumit computer, acel utilizator se supune drepturilor de acces la fiiere. Tabelul 5 prezint drepturi ce pot fi configurate pentru un fiier, fr a particulariza la un anumit tip de sistem de fiiere. Drept citire scriere execuie modificare tergere
Tabelul 5.
Descriere dreptul de a deschide i citi coninutul unui fiier dreptul de a scrie ntr-un fiier dreptul de executa un fiier (aplicaie) sau, pentru directoare, dreptul de a intra ntr-un director dreptul de a modifica datele dintr-un fiier existent dreptul de a terge un fiier
NTFS are un sistem foarte avansat de drepturi de acces, bazat pe liste de acces; pentru fiecare entitate adugat n lista unui anumit fiier pot fi configurate mai multe drepturi.
Drepturile de acces sunt date de primele 10 caractere din ieirea comenzii ll: primul caracter reprezint tipul fiierului: - - = fiier normal - d = director - p = pipe - b = dispozitiv bloc - c = dispozitiv caracter - l = legtur simbolic urmtoarele 3 caractere (rw-) reprezint drepturile de acces pentru utilizatorul root, care este deintorul fiierului; se observ c utilizatorul are doar drepturile de citire respectiv scriere, dar lipsete dreptul de execuie; urmtoarele 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 execuie;
24
urmtoarele 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 execuie; Exist dou moduri de reprezentare a drepturilor: n form numeric: pentru fiecare entitate exist o cifr n baza 8 care descrie drepturile, cte un bit pentru fiecare drept; n form literar: drepturile sunt referite direct prin iniiala 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.
Dac se dorete modificarea utilizatorului sau a grupului, se folosete doar o parte a sintaxei:
25
n mediul Linux, un utilizator neprivilegiat nu poate schimba proprietarul i/sau grupul unui fiier. n Linux, comanda chown este folosit doar de utilizatorul privilegiat.
Comanda chmod permite modificarea drepturilor de acces ale unui fiier. Comanda poate fi folosit doar de utilizatorul ce deine fiierul sau de utilizatorul privilegiat. Noile drepturi ale fiierului pot fi precizate n form literal sau octal. Pentru schimbarea drepturilor se va folosi mai nti forma literal. Drepturile pot fi precizate pentru oricare dintre cele trei niveluri de privilegiu: utilizator, grup, ali utilizatori printr-o singur liter: u, g, o. Drepturile pot fi: adugate prin folosirea operatorului +; nlturate 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.
26