CATEGORII DOCUMENTE |
SISTEME DE OPERARE
Fisiere sub UNIX
Notiuni introductive despre fisiere
Numele fisierelor
Atribute ale fisierelor
Comenzi Shell pentru fisiere
Comenzi generale pentru gestiunea fisierelor
Comenzi pentru fisiere text
Comenzi pentru stabilirea atributelor fisierelor
Aplicatii
1. FISIERE SUB UNIX
1.1. NOTIUNI INTRODUCTIVE DESPRE FISIERE
In UNIX (ca si la alte sisteme de operare) fisierele constituie entitatile pentru memorarea informatiilor (date si programe) pe suport extern. Totalitatea fisierelor formeaza sistemul de fisiere. Evidenta fisierelor se pastreaza in fisiere catalog, numite si fisiere directoare, sau pe scurt directoare. Fisierele apartinind unui director pot fi la rindul lor directoare, astfel incit sistemul de fisiere are o organizare ierarhica si arborescenta. Arborele sistemului de fisiere este construit pornind de la un director unic, numit radacina si notat cu /. Numele complet al unui fisier va include si calea (traseul) de directoare pina la directorul unde acesta este localizat.
In cadrul sistemului de operare UNIX pot sa coexiste mai multe sisteme de fisiere, chiar de tipuri diferite. Pentru a realiza coexistenta acestor sisteme de fisiere, in cadrul nucleului sistemului de operare UNIX exista un nivel denumit sistem virtual de fisiere, al carui rol este a uniformiza accesul la fisiere.
Sub UNIX, fiecare sistem de fisiere este stocat intr-o partitie. Un disc fizic poate sa contina mai multe partitii. Pe de alta paret, exista situatii in care un sistem de fisiere poate fi inregistrat pe mai multe volume logice sau dispozitive fizice.
Exista un sistem de fisire care se monteaza automant la incarcarea sistemului UNIX si la care se ataseaza celelalte sisteme de fisiere: aceste este sistemul radacina.
Observatie: La MS-DOS sistemul de fisiere este constituit din unul sau mai multe volume (volume ce pot fi discuri fizice, partitii logice, etc.), fiecare avind o structura arborescenta.
Sub UNIX, pentru a se face o tratare uniforma a datelor, echipamentele periferice sunt considerate fisiere speciale; astfel marea majoritate a comenzilor referitoare la fisiere se aplica si la fisierele speciale.
Exemplu:
/dev/tty este fisierul care reprezinta terminalul la care este atasat utilizatorul
/dev/fd0 este fisierul care reprezinta prima unitate de floppy-disc
/dev/mem este fisierul care reprezinta memoria sistemului
/dev/null este un fisier special care intoarce EOF in urma operatiilor de citire si scriere.
La sistemul de operare MS-DOS exista un analog al fisierului /dev/tty, fisierul CON: , care reprezinta terminalul la care este conectat utilizatorul (respectiv consola sistemului). Fisierul NUL: din MS-DOS este analog fisierului /dev/null din UNIX. Alte fisiere speciale din UNIX, cum ar fi /dev/mem, nu au un analog la MS-DOS.
1.2. NUMELE FISIERELOR
Numele fisierelor poate avea maxim 255 de caractere, in sistemele de operare UNIX moderne. Un nume de fisier poate sa contina orice caracter tiparibil. In acelasi director nu pot exista doua fisiere cu acelasi nume; pe de alta parte este posibil ca acelasi fisier sa poata fi referit prin mai multe nume, prin mecanismul de legatura simbolica, sau link.
In orice fisier director exista doua nume cu destinatie speciala: "." si "..", folosite de sistemul UNIX, si care sunt alias-uri pentru acel director, respectiv pentru directorul parinte. Utilizatorul nu are voie sa foloseasesca aceste nume pentru denumirea fisierelor proprii.
Shell-ul UNIX permite precizarea numelor fisierelor folosind citeva metacaractere:
- orice sir de caractere (inclusiv sirul vid); |
|
- orice caracter; |
|
[lista_de caractere] |
- orice caracter din cele mentionate in lista_de_caractere. |
In cazul in care se doreste folosirea unui nume de fisier care contine metacaractere -*, ?- sau alte caractere speciale (care sa fie interpretate ca si caractere obisnuite), numele de fisier va trebui scris intre ghilimele sau intre apostroafe, sau caracterul special trebuie prefixat cu simbolul .
1.3. ATRIBUTE ALE FISIERELOR
Comportarea fisierelor este influentata de diverse atribute atasate acestora. Aceste atribute specifica drepturile de acces asupra fisierelor ale diverselor categorii de utilizatori mentinute de sistemul de operare. Prin prisma relatiei care poate sa existe intre un obiect din sistem de tip fisier si utilizatorii mentinuti de sistemul de operare, pot fi enumerate urmatoarele categorii de utilizatori:
- proprietarul fisierului (owner) ;
- utilizatorii care apartin aceluiasi grup ca si cel asociat fisierului (group);
- utilizatorii care nu fac parte din cele doua categorii anterioare (world, others).
Sub UNIX, fiecare fisier are atribute care specifica drepturile de acces (asupra acelui fisier) ale proprietarului sau, ale grupului din care face parte proprietarul si ale restului utilizatorilor existenti in sistem.
Drepturile de acces asupra unui fisier sunt stabilite implicit la crearea fisierului si nu pot fi modificate decit de proprietar sau de administratorul de sistem (utilizatorul denumit root). Acesta din urma are drepturi de acces nelimitate asupra oricarui fisier din sistem. Drepturile de acces se pot fi de citire a fisierului, de modificare a lui, de executie a programului continut de acest fisier, sau la orice combinatie a acestor drepturi elementare:
r |
- drept de citire (read); la un fisier catalog, este dreptul de a-i citi continutul; |
w |
- drept de scriere (write); la un fisier catalog este dreptul de a adauga/sterge fisiere; |
x |
- drept de executie (execute/search); la un fisier catalog are sensul de permisiune de parcurgere (inspectare) a directorului respectiv (la cautari, listari, etc). |
Drepturile de acces asociate fisierelor pot fi afisate prin comanda ls cu optiunea " -l "; ele fiind listate in ordinea proprietar-grup-altii., conform conventiei anterioare.
In sistemele UNIX pot exista si alte atribute ale fisierelor, cum ar fi:
s (set uid) |
- un fisier executabil care are atributul suid este executat cu drepturile specifice ale proprietarului fisierului, nu cu drepturile utilizatorului care l-a lansat in executie. |
(set gid) |
- analog cu suid, dar se atribuie drepturile grupului asociat fisierului. |
t (sticky) |
- pastreaza codul fisierului executabil in memorie; in cazul unui director, daca acest atribut este prezent, se interzice accesul unui utilizator (care are fisiere in acel director) la fisierele altor utilizatori din acelasi director (se utilizeaza pentru directoarele. publice unde diversele utilitare depun fisierele temporare ale utilizatorilor, cum ar fi /tmp ). |
Exemplu:
1. Fisierele care contin posta electronica a fiecarui utilizator au ca proprietar utilizatorul respectiv, ca grup asociat grupul mail si drepturile de acces rw-rw---- . In acest fel utilizatorul are drepturi depline asupra fisierului, iar programele de mail, cum ar fi sendmail, care sint executate sub utilizatorul mail din grupul mail pot adauga mesajele nou aparute in fisierul respectiv. In acest fel utilizatorii nu pot accesa posta electronica care nu le apartine.
2. Directorul /tmp are atributele drwxrwxrwt ceea ce inseamna ca oricine are drepturi depline in acest director, in scopul crearii de fisiere temporare; pentru a impiedica accesul abuziv la fisierele temporare ale altor utilizatori, se foloseste atributul t (sticky bit).
1.4. FISIERE STANDARD DE INTRARE SI IESIRE
Dupa atasarea la sistem a untilizatorului (initierea unei sesiuni de lucru), Shell-ul deschide 3 fisiere standard, care au urmatoarii descriptori (vezi man 2 open):
- stdin, fisierul standard pentru intrare (tastatura); |
|
- stdout, fisierul standard pentru iesire(ecranul); |
|
- stderr, fisierul standard pentru afisarea erorilor(ecranul). |
Figura 1.
Interpretorul permite redirectarea fisierelor standard catre alte fisiere sau periferice.
- cu ajutorul " < " se redirecteaza fisierul de intrare; aceasta inseamna ca programul lansat de Shell nu va citi datele de intrare de la terminal, ci dintr-un fisier, indicat dupa "< ";
- cu ajutorul " > " se redirecteaza fisierul de iesire, ceea ce inseamna ca informatia care trebuie afisata pe ecranul monitorului va fi de fapt depusa in fisierul indicat dupa ">".
2. COMENZI REFERITOARE LA FISIERE
2.1. COMENZI PENTRU GESTIUNEA FISIERELOR
mv [optiuni] fis1 fis2 |
- muta fisierul fis1 in fisierul fis2; este practic o comanda de redenumire (inlocuire) fisiere; |
|
cp [optiuni] fis1 fis2 |
- copiaza fisierul fis1 in fis2 |
|
rm [optiuni] fis |
- sterge fisierul fis |
|
ln fis2 fis1 |
- creeaza o noua referinta cu numele fis1 pentru fisierul fis2 |
|
find cale [optiuni] expresie |
- cauta un fisier intr-o ierarhie de directoare , unde argumentul cale specifica traseul pe care se va face cautarea, iar expresie specifica o expresie logica care este evaluata pentru fiecare fisier din cale si care descrie conditia dupa care se face cautarea. |
|
Optiunile mai importante ale comenzii find sunt urmatoarele: |
||
name specifica numele fisierului cautat; |
||
atime n specifica fisierele accesate in ultimele n zile; |
||
mtime n specifica fisierele modificate in ultimele n zile; |
||
print solicita afisarea caii pina la fisierele gasite |
||
|
exec comanda specifica o comanda care se va executa asupra fisierelor gasite. |
Exemple:
Citeva forme ale comenzii find pot fi urmatoarele:
find . -print |
- afiseaza o lista cu toate fisierele din subarborele curent (comportarea implicita) |
find /var/httpd -name p*.c -print |
- cauta toate fisierele cu numele p*.c din traseul specificat |
find / -name exem.c -print |
- cauta fisierul exem.c incepind din directorul radacina ( / ) |
find ./ -name fis1 -exec rm |
- cauta toate fisierele cu numele fis1, pornind din directorul curent, apoi le sterge |
2.2 COMENZI REFERITOARE LA FISIERE TEXT
cat [optiuni] fisier |
- concateneaza unul sau mai multe fisiere text, apoi le afiseaza pe stdout. |
pr [optiuni] fis1 fis2 |
- pagineaza continutul unui fisier text si il afiseaza |
Exemple:
Citeva forme tipice pentru comenzile cat si print:
cat fis1 fis2 |
- concateneza fis1 si fis2 si afiseaza rezultatul pe ecran; |
cat fis1 fis2 > fis3 |
- concateneaza fis1 si fis2 si rezultatul il depune in fisierul fis3; |
cat fis[12] > fis3 |
- concateneaza fisierele fis1 si fis2 in fis3 |
cat /dev/null > fis1 |
- creeaza fisierul vid fis1, sau daca exista deja, il videaza; |
cat > fis |
- permite introducerea de linii de text de la terminal in fisierul fis. |
cat fis1 fis2 >> fis3 |
- concateneaza fis1 si fis2 si le adauga la fis3 |
pr fis1 fis2 > fis3 |
- continutul fisierelor fis1 si fis2 va fi paginat si depus in fis3 |
wc [optiuni] fisier |
- numara caractere, cuvinte si linii dintr-un fisier text |
diff [optiuni] fis1 fis2 |
- gaseste diferentele dintre doua fisiere text fis1 si fis2 |
comm [optiuni] fis1 fis2 |
- gaseste si afiseaza liniile identice a doua fisiere text |
tee [optiuni] fis |
- fisierul stdin este transcris in stdout cu o extracopie in fis |
sort [optiuni] fisier |
- sorteaza liniile unui fiser text dupa diverse criterii |
head [-n] fisier |
- afiseaza primele n linii dintr-un fisier text |
tail [-n] fisier |
- afiseaza ultimele n linii dintr-un fisier. |
2.3 COMENZI DE MODIFICARE ALE DREPTURILOR DE ACCES LA FISIERE
chown nume_user |
- modifica proprietarul unui fisier; comanda este disponibila numai pentru superuser |
chgrp nume_grup |
- schimba grupul de care apartine un fisier; este necesar ca utilizatorul sa fie membru in grupul respectiv sau sa fie superuser (root) |
chmod protectie |
schimba drepturile de acces la un fisier; disponibila numai pentru proprietarul fisierului sau pentru superuser |
3. APLICATII
I . Sa se consulte Manulalul Programatorului pentru fiecare din comenzile enumerate in sectiunile 2.1 si 2.2 ale referatului de laborator. Sa se execute fiecare fiecare comanda cu diverse variante de optiuni.
II. Sa se rezolve exercitiile urmatoare:
1. Sa se genereze 4 fisiere numite a, b, c, si d cu ajutorul comenzii echo, prin redirectarea iesirii standard.
2. Sa se creeze un director numit dx. Sa se copieze in directorul dx primele trei fisiere dintre cele de mai sus (si numai ele) printr-o singura comanda.
3. Sa se creeze 2 directoare d1 si d2. In fiecare din acestea sa se creeze cite doua fisiere. Cu ajutorul unei singure comenzi sa se mute intreg directorul d2 (inclusiv fisierele continute de el) ca fiu al lui d1.
4. Sa se stearga cu ajutorul unei singure comenzi directorul d1, cu toate fisierele si directoarele continute de el.
5. Sa se creeze un fisier cu 4 linii de text, direct de la consola. Sa se afiseze acest fisier cu liniile numerotate in ordine crescatoare. Sa se afiseze pe ecran doar acele linii care contin un anumit caracter dat. (Indicatie: grep, cat)
6. Sa se numere liniile din fisierul .bash_history.
7. Sa se creeze un fisier care contine lista fisierelor din directorul propriu (ls -l redirectat in fisier). Sa se stearga un fisier din directorul propriu, iar un alt fisier sa se modifice. Sa se afiseze pe ecran diferentele intre continutul vechi al directorului si continutul nou. Sa se afiseze pe ecran elementele ramase neschimbate in continutul dierctorului.
8. Sa se afiseze pe ecran ultimele 20 de linii din fisierul /var/httpd/logs/access.log.
9. Sa se afiseze pe ecran, printr-o singura linie de comanda, primele 5 linii si ultimele 5 de linii dintr-un fisier.
10. Sa se listeze toate fisierele obisnuite (care nu sint link-uri sau directoare sau fisiere speciale) aflate in subdirectoarele cu pagini de manual, subdirectoare avind ca radacina /usr/man; sa se ordoneze alfabetic si sa se pagineze pe 2 coloane. (Ind.: ls, grep, cut, sort).
11. Care este motivul pentru care nu se poate crea un fisier sau director cu numele '..' ?
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1701
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved