Sunteți pe pagina 1din 26

UNIVERSITATEA DIN BUCUREŞTI

FACULTATEA: MATEMATICĂ ŞI INFORMATICĂ


AN II, ID

Sisteme de Operare

Organizarea fişierelor şi directoarelor


în sistemul Linux

Stoica Cristian
1
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,
2
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)

3
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

4
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

5
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:

6
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 ~);

7
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.

8
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;
9
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

10
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

11
Î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ă)
12
-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.

13
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.

14
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.

15
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


Metodă foarte simplu de aplicat. Devine greu de folosit pentru
tar+gzip/bzip2 Da
dimensiuni mari de date.
Metodă simplu de folosit şi independentă de sistemul de fişiere.
Permite păstrarea intactă a structurii sistemului de fişiere. Inflexibilă
dd Nu
când vine vorba de recuperarea datelor. Utilă pentru cantităţi mari de
date.
E asemănătoare comenzii cp, dar la care s-a adăugat suport de
rsync sincronizare între mai multe sisteme de calcul. Permite replicarea Da
structurii de fişiere (inclusiv permisiuni) între două sisteme de calcul.
16
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
rdiff-backup salvează doar modificările ce s-au făcut de la ultimul backup până în Da
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.
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.

17
Ş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

18
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

19
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:

20
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ă:

21
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ă:

22
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;
23
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;

24
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:

25
Î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.

26

S-ar putea să vă placă și