You are on page 1of 9

Gestiunea fisierelor Sistemul de fisiere reprezinta componenta cea mai vizibila a unui sistem de operare.

- dpdv utilizator sistemul de fisiere = ierarhie de fisiere si directoare( ierarhie , cale, drepturi de acces, etc); - dpdv SO = algoritmi si structuri de date pentru organizarea si accesul la informatie ( superbloc, inode) Fisierul reprezinta unitatea fundamentala de stocarea a informatiei la nivelul sistemului de fisiere. - dpdv utilizator nume ; - dpdv SO inode ; Exemple de sisteme de fisiere: - ext3, ext4 ; - FAT32, NTFS ; - HFS, HFS+ ; - procfs, sysfs sisteme de fisiere virtuale; - ISO9660; Ierarhia sistemului de fisiere: ( FHS Filesystem Hierarchy Standard)

Sistemul de fisiere( ca si in Windows) este unul ierarhic . Insa, in Linux un exista nici o diferenta intre fisierele aflate pe diferite partitii. Acestea fac parte din ierarhia directorului radacina ( / ). Acest lucru este posibil prin operatia de mount .

Comenzi : mount / unmount [!!!!!!!!!! execitii parte administrare ] In Linux totul este fisier: directorele, dipozitivele de I/O, etc. Operatii de baza pentru fisiere : comenzi - afisare directorului curent : - afisare continutului unui director: - schimbarea directorului: - creeare director : - stergerea unui fiser: - stergerea unui director: - copierea unui fisier: - mutarea/redenumirea unui fisier:

pwd ls cd mkdir rm rm -r cp mv

Fiecare fisier are asociat un nume ( numele poate contine orice caracter) , un set de drepturi de acces si zone care contin infomatia utila. Extensia fisierelor este optionala. Tipul fisierului este identificat in functie de continutul acestuia Atime, mtime, ctime : - atime: data ultimului acces la fisher;( este schimbata la fiecare tip de operatie care are loc asupra fisierului scriere, citire ) - mtime: data ultimei modificari asupra continutului fisierului(este schimbata in cazul ultimei scrieri ) - ctime: data ultimei schimbari asupra fisierului( set de perminisiuni..)

Fisierele link: - hard links: reprezinta un nou alias ( nume) pentru fisier; orice operatie efectuata asupra fisierului poate fi realizata si asupra link-ului; soft links: un nou fisier( cu inode) ( pointer catre alt fisier) ; continutul va fi reprezentat de calea catre fisierul target;

Comenzi : - creeare hard link: - creeare soft link: - stergere : Exercitii:

ln ln s rm

1. Creai trei fiiere, denumite unu, doi i trei n directorul propriu (home) i afiai-le folosind comanda ls. Adugai apoi parametrul -l comenzii ls pentru a afia mrimile acestor fiiere. 2. Creai n directorul propriu dou directoare denumite dir1 i dir2. Listai coninutul directoarelor. 3. Mutai fiierul unu n directorul dir1. Mutai fiierele doi i trei n directorul dir2 dintr-o singur comand. Mutai directorul dir1 n directorul dir2. 4. Schimbai directorul curent n dir2 i copiai coninutul acestuia un nivel mai sus, n directorul propriu. Copierea directoarelor trebuie fcut recursiv, cu parametrul adecvat. Folosii wildcard-ul * (star). 5. Creai n directorul /home/student urmtoarea structur de directoare
/home/student/the/unix/file/system/sure/it/corrupts/your/data/but /look/how/fast/it/is.

6. Intrai n directorul 7. 8.
/home/student/the/unix/file/system/sure/it/corrupts/your/data/but /look/how/fast/it/is i creai trei fiiere, denumite ext2, ext3 i ext4. Verificai faptul c modificrile au fost aplicate. Care este inode-ul fiierului ext4 ? (Hint: stat) Creai link-ul simbolic sym-ext4 ctre fiierul ext4. (Hint: man ln, cutai

symbolic) 9. Scriei textul current file system n ext4 i afiai coninutul lui sym-ext4. 1. tergei fiireul ext4 i afiai coninutul lui sym-ext4. 2. Aflati tipul fiierului sym-ext4 (Hint: file) 10. Creai link-ul hard hard-ext3 ctre fiierul ext3. 1. Aflai inode-urile pentru hard-ext3 i ext3. (Hint: stat) 2. Scriei textul old file system n ext3 i afiai coninutul lui hard-ext3. 3. Aflati tipul fiierului hard-ext3 (Hint: file)

Operatii pe fisiere In linux, descriptorul de fisier este un intreg care reprezinta indexul unei tabele de ponteri spre structurile care descriu fisierele descuide de un proces. Pentru un proces lansat in cadrul shell-ului, procesul parinte( shell-ul) deschide 3 fisiere standard( avand descriptorii de fisiere cu valori speciale): standard input( 0 ) standard output( 1 ) standard error ( 2 )

1. Deschiderea/ creearea unui fisier: asocierea unui descriptor de fisier cu un fisier identificat prin numele sau;
int open(const char *pathname, int flags); /* deschidere */ int open(const char *pathname, int flags, mode_t mode); /* creare */ int creat(const char *pathname, mode_t mode);

2. Inchiderea unui fisier : eliberarea structurilor de fisier asociate procesului si a descriptorului acelui fisier;
int close(int fd) //stergerea efectiva de pe disc int unlink(const char *pathname);

3. Citirea dintr-un fisier: copierea unui bloc de date intr-un buffer si actualizrea cursorului fisierului;
ssize_t read(int fd, void *buf, size_t count);

4. Scrierea intr-un fisier : copierea unui bloc de date dintr-un buffer n fiieri actualizarea cursorului de fiier;
ssize_t write(int fd, const void *buf, size_t count);

5. Pozitionarea intr-un fisier : schimbarea valorii cursorului de fiier


off_t lseek(int fd, off_t offset, int whence) whence

- poziia relativ de la care se face deplasarea:


SEEK_SET SEEK_CUR SEEK_END

- fa de poziia de nceput - fa de poziia curent - fa de poziia de sfrit

6. Schimbarea atributelor unui fiier - nseamn stabilirea unor parametri pentru fiier; apelurile
int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock);

Sistemul de permisiuni : Fiecare fisier are asociat 3 categori de permisiuni : - owner ; - group ; - other ; Fiecare categorie va avea 3 drepturi de access : - read( r) : fisierul poate fi citit/ directorul poate fi listat ; - write(w) : fisierul poate fi scris sau sters/ dircetorului ii poate fi modificat continutul ; - execute(x) : fisierul poate fi executat/ dircetorul poate fi parte a unui cai ; Drepturi speciale : - setuid : fisierul va fi executat cu drepturile utilizatorului ce detine fisierul ; - setgid : fisierele create in director vor avea grupul directorului ; - sticky : permite stergerea/modificarea doar a fisierelor proprii din director;

Pozitia permisiunilor pentru un fisier va fi : user (r, w, e) - group (r, w, e) - others (r, w, e)

Exemplu: In urma comenzii ls l se obtine:

Prima coloana : permisiunile de acces asupra fisierului ; Primul caracter : tipul fisierului fisier simplu ; d director ; l link ( symlink); c fiser special( character device) ; permite operatii la nivel de octet( porturi seriale, paralel) b fisier special( block device) Schimbarea drepturilor unui fisier : Drepturile unui fisier: - forma literala( u, g, o , r,x,w) - forma octala;
- rwx r-x r-- info.sh 111 101 100

Pentru prima cifra se poate folosi: 1 - sticky bit 2 - setgid 3 - setuid


chmod who=permissions filename who : u / g / o / a permissions: r/ w/ x

2755 setgid, rwx - user, rx group, rx others 4640 setuid, rw - user, r group, others

Exemple:
chmod chmod chmod chmod o=r fisier u+r,g+x fisier g= fisier og=rw fisier // other drept de citire // group nu mai are nici un drept // other, gropu drept de citire si de // scriere // user, other, group - drept de citire , scriere si executie // other , gropu nu mai au drept de // scriere // user, other, group se adauga drept de scriere si de executie

chmod a=rwx fisier chmod go-w fisier chmod a+wx fisier

Stabilirea permisiunilor default pentru fisierele nou create se realizeaza pornind de la setul de permisiuni complete, din care se elimina permiunile cu ajutorul unei masti de biti. Permisiunile default : - directoare: 777( rwxrwxrwx) - fisiere : 666( rw-rw-rw-) Pentru umask 022 : - fisierele : 644 ; - directoare : 755
umask

Schimbarea owner-ului si a grupului chown [ -opt] [owner_nou : [ grup_nou]] fisier chgrp [ -opt] [ grup_nou] fisier

Exemple:
chown student /tmp/text chown student:users nume.txt Exercitii : 1. Folositi comanda ls l si stat pentru a afisa drepturile de acces la fisierul /bin/cp . Afisati folosind comanda stat numai drepturile in forma octala si apoi in forma literala. 2. Se considera structura urmatoare obtinuta in urma comenzii 2 2 1 2 adm student root student admins students students students 4096 9845 5000 9845 2009-12-12 2009-11-09 2009-11-09 2009-11-09 10:10 04:03 04:06 04:03 dir1 fis1 fis2 link ls l

drw-r--r-T -rwxr--r-x -rwsr--r--rwxr--r-x

Creati o structura de fisiere in /home/student/test. Schimbati permisiunile fisierului fis2 folosind ca referinta fisierului fis1( man chmod) Creati doua fisere in directorul dir: dir1 si dir2, folosind umask. Schimbati in mod recursiv permisiunile tuturor fisierelor din dircetorul dir1. schimbati in mod recursiv ownerul directorului dir1( chown)

Schimbati in mod recursiv grupul proprietar a directorului dir1( chgrp)

Informatii despre fisiere: Comenzi : file, stat

Cautarea fisierelor : Comenzi : whereis , locate ,find Exercitii: 1. Care este efectul urmatoarelor comenzi ?
find . -print find -print find . find . -mtime 0 find . -mtime -1 find . -mtime 1 find . -mtime +1 # # # # # # find files modified between now and 1 day ago (i.e., within the past 24 hours) find files modified less than 1 day ago (i.e., within the past 24 hours, as before) find files modified between 24 and 48 hours ago find files modified more than 48 hours ago

find . -mmin +5 -mmin -10 # find files modified between # 6 and 9 minutes ago

2. Aflai directorul unde se afl executabilul finger. 3. Afiai fiierul de pe disc ce corespunde paginii de manual a utilitarului strip. (Hint: man whereis, cutai manual) 4. Actualizai baza de data local a utilitarului locate i cutai toate fiierele de pe disc ce conin n numele lor irul de caractere sleep. Atenie: sleep nu trebuie s se gseasc n calea ctre fiier, ci numai n numele fiierului. (Hint: locate, cutai base) 5. Copiai n /home/student/newfiles/ toate fiierele din /etc ce au fost accesate n ultimele 24 ore (Hint: http://www.linux.ie/newusers/beginners-linuxguide/find.php, exec, amin)
6. Afisati pe ecran toate directoarele din directorul /home/student care incep cu e212; se va face cautarea doar in primele doua subnivele ale directorului /home/student. 7. Afisati pe ecran prima aparitie a sirului Student in continutul fisierelor din directorul /home/student

Vizualizarea continutului fisierelor: Comenzi: cat, more, less, head, tail, tail f, hexdump C( fisiere binare) Exercitii: 1. Care este efectul urmatoarelor comenzi ?
cat /etc/passwd cat /etc/hosts /etc/resolv.conf /etc/fstab > /tmp/outputs.txt cat /tmp/outputs.txt cat cat cat cat cat cat > foo.txt -b /etc/passwd -n /etc/passwd -s /etc/passwd -v filename /proc/cpuinfo | grep model

2. Aflai directorul unde se afl executabilul finger. 3. Afiai fiierul de pe disc ce corespunde paginii de manual a utilitarului strip. (Hint: man whereis, cutai manual) 4. Actualizai baza de data local a utilitarului locate i cutai toate fiierele de pe disc ce conin n numele lor irul de caractere sleep. Atenie: sleep nu trebuie s se gseasc n calea ctre fiier, ci numai n numele fiierului. (Hint: locate, cutai base) 5. Copiai n /home/student/newfiles/ toate fiierele din /etc ce au fost accesate n ultimele 24 ore (Hint: http://www.linux.ie/newusers/beginners-linuxguide/find.php, exec, amin)
6. Afisati pe ecran toate directoarele din directorul /home/student care incep cu e212; se va face cautarea doar in primele doua subnivele ale directorului /home/student. 7. Afisati pe ecran prima aparitie a sirului Student in continutul fisierelor din directorul /home/student

Informatii despre continutul unui fisier : Comenzi :wc , extract Alte comenzi: html2text, pdftotext,ps2ascii,

You might also like