Sisteme de Fisiere in Linux

Published on December 2016 | Categories: Documents | Downloads: 44 | Comments: 0 | Views: 406
of 25
Download PDF   Embed   Report

Sisteme de Fisiere in Linux

Comments

Content

ACADEMIA DE STUDII ECONOMICE
CIBERNETICĂ, STATISTICĂ ȘI INFORMATICĂ DE GESTIUNE

Sisteme de Operare

Organizarea fişierelor şi directoarelor
în sistemul Linux

STUDENT:
MARIUS DOBINDĂ
ANUL II ID, GRUPA 1092

BUCUREȘTI
2015

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.
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
/
/bin
/boot
/dev

/etc

Conţinut
directorul rădăcină
comenzi standard şi programele necesare întreţinerii şi
depanării sistemului
fişiere necesare boot-ării, precum imaginea kernel-ului
fişiere speciale utilizate pentru accesul direct la
dispozitivele hardware sau logice ale sistemului
(terminale, discuri de sistem, imprimante, porturi
paralele, seriale, etc.)
fişiere pentru configurarea şi administrarea diverselor
utiliate şi servicii ale sistemului (inittab, fstab, hosts,
cron,

/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 fiecărui utilizator din sistem, în mod
implicit acestea au acelaşi nume cel cu al utilizatorului
subdirectoare în care se montează unităţile optice,
floppy, etc.
subdirectoare în care se montează alte sisteme de
fişiere
pachete de aplicaţii de dimensiuni mari, accesibile
tuturor
utilizatorilor
sistem virtual de fişiere din care se obţin informaţii
despre sistem şi aplicaţiile care rulează la un moment
dat
directorul home al utilizatorului root
***
comenzi pentru administrarea sistemului
****
servicii de date (www, ftp)
****
fişiere temporare
aplicaţii pentru uzul normal al sistemului de operare;
conţine mai multe subdirectoare
comenzi orientate pe utilizator
comenzi pentru administrarea sistemului
librării pentru limbajele de programare
date independete de arhitectură, în general read-only:
documentaţia Linux, paginile de manual, etc.
fişiere al căror conţinut se schimbă foarte des, precum
log-uri, fişiere temporare, cache (date reutilizabile),
spool
(date neprocesate)

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
fişiere normale
directoare
legături simbolice
Tabelul 2. Tipuri de fişiere

Denumire tip în
engleză
regular files
directories/folders
symbolic links

Descriere
unitate logică de acces la date
organizează fişiere şi alte directoare
legătură către un fişier sau director

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

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;

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

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

Î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ă)

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

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.

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/bzip Metodă foarte simplu de aplicat. Devine greu de folosit pentru
2
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.

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.

Ş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

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

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:

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

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

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
citire
scriere
execuţie
modificare
ştergere
Tabelul 5.

Descriere
dreptul de a deschide şi citi conţinutul unui fişier
dreptul de a scrie într-un fişier
dreptul de executa un fişier (aplicaţie) sau, pentru directoare,
dreptul
de a intra într-un director
dreptul de a modifica datele dintr-un fişier existent
dreptul de a şterge un fişier

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.

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;

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:

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

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close