CATEGORII DOCUMENTE |
Accesul la fisiere (filiera comenzilor de sistem)
Utilizatorii cu mai multa experienta vor dori sa controleze mai profund operatiile cu fisiere pe care intentioneaza sa le efectueze si sa beneficieze de avantajele comenzilor puse la dispozitie de sistem. In fapt, aceasta e maniera "clasica" in care un utilizator UNIX/ Linux are acces la resurse, prin prisma sistemului de fisiere.
Inainte de a vedea cateva dintre cele mai frecvent folosite comenzi, mentionam faptul ca interpretorul de comenzi permite utilizatorului sa faca referire la mai multe fisiere simultan via specificatori de sisteme. In loc de a furniza numele complet al unui fisier, vom putea utiliza urmatoarele meta-caractere (wildcards )pentru a inlocui parti din numele unui fisier:
De exemplu, specificatorul pi?[0-9]*va putea desena nume de fisiere care incep cu caracterele "p"si "i" urmate de oricare alt caracter, apoi de una din cifrele de la 0 pana la 9,eventual fiind succedat de oricare alte caractere. Astfel, acest specificator se poate potrivi cu nume precum pin7 sau piu2004.txt,dar nu cu pinguin3.
Intre delimitatori "[]"mai poate sa apara meta-caracterul "|"indicand o alternativa si meta-caracterul "!" reprezentand negatia. Astfel, pentru a specifica toate fisierele care incep cu litera "d", urmata de orice caracter diferit de "a" sau "c", apoi de alte caractere, vom putea scrie "d[!ac]*".
Cum directoarele stocheaza, fiind ele insele fisiere, vom incepe cu prezentarea comenzilor referitoare la directoare. Principale comenzi sunt:
mkdir cale-creeaza un director;
rmdir cale-sterge un director gol, in sensul ca acesta nu contine decat intrarile "." si "..";
cd [cale schimba directorul curent de lucru in cale;
pwd-afiseaza numele directorului curent (utila atunci cand ne-am "ratacit" prin hatisul structurii de directoare).
Argumentul cale reprezinta o cale de directoare separate de caracterul slash " de exemplu,/tmp/arhive/03feb sau .. /Documents/linux
Afisarea continutului unui director se obtine in urma apelarii comenzii ls. Aceasta ofera mai multe optiuni, dintre care le mentionam pe cele mai importante:
-a listeaza si fisierele ascunse(cele ale caror nume incepe cu caracterul ".");
-l afiseaza formatul lung continand informatii suplimentare, cum ar fi cele referitoare la drepturile de acces, proprietar si grup, dimensiunea, data crearii etc.;
-h are urmatorul efect: dimensiunile fisierelor sunt transformate din octeti in kilo-octeti(K)sau mega-octeti(M) pentru a fi mai usor citite de utilizator;
-R va lista si sub-directoarele, in mod recursiv(aceasta optiune va putea fi folosita si in cazul altor comenzi).
O comanda poate avea un numar variabil de parametri(argumente)si de optiuni prefixate de caracterul "- (se poate utiliza si varianta explicita a unei optiuni, prefixata de caracterele "- -
Cum majoritatea comenzilor pot accepta un numar impresionant de optiuni, avizam cititorul ca o practica buna este aceea de a consulta manualul oferit de sistem via comenzile man sau info(a se vedea sectiunea 5.3 a capitolului 5).
Urmeaza un exemplu de folosire a comenzii ls:
(infoiasi) ls -la
total 3416
drwxrwxr -x 4 busco busaco 4096 Dec 21 14:57.
drwxr-xr-x 3 busaco busaco 4096 Oct 27 10:24..
rw - - - - - - - 1 busaco busaco 5422 Oct 13 19:19 acronime.tex
-rw - - - - - - - 1 busaco busaco 43591 Oct27 19:00 biblio.tex
drwxrwxr-x 2 busaco busaco 4096 Oct27 10:26 eps /
-rw-r- -r- - 1 busaco busaco 2194474 Oct27 19:00 main.ps
-rw- - - - - - - 1 busaco busaco 5225 Oct24 19:21 main.tex
-rw- - - - - - - 1 busaco busaco 811 Sep10 2001 Makefile
-rw- - - - - - - 1 busaco busaco 1650 Oct16 12:51 multum.tex
-rw- - - - - - - 1 busaco busaco 17 Aug22 16:10 rezumat.tex
-rw-rw-r- - 1 busaco busaco 708449 Dec15 19:44 teza.tgz
drwxr-xr-x 3 busaco busaco 4096 Oct27 19:01 versions /
-rw- - - - - - - 1 busaco busaco 651 Sep10 2001 wmchap.sty
Apelul de forma ls -la este echivalent cu ls -l -a.In general, mai multe optiuni care nu sunt succedate de parametri suplimentari pot fi grupate ca si cum ar fi o singura optiune(se utilizeaza o singura data caracterul "- pentru specificarea optiunilor).
Dupa cum se observa din iesirea furnizata de comanda ls, numele fiecarui fisier este prefixat de numele de cont al proprietarului si grupul din care face parte acest proprietar. Filosofia UNIX / Linux precizeaza faptul ca fiecare fisier apartine cuiva. Un identificator (UID) numeric asociat celui care poseda fisierul (de obicei cel care l-a creat)este stocat pentru fiecare fisier in parte. Aceste aspecte vor fi dezvoltate in capitolul 4.
Drepturile de acces sunt afisate de comanda mentionata mai sus printr-o secventa de zece caractere. Primul caracter se refera la tipul fisierului, dupa cum urmeaza:
- - fisier obisnuit;
b-fisier special de tip bloc;
c-fisier special de tip caracter;
d-director;
l-legatura;
p-pipe;
s-socket.
Dupa cum am vazut ,fiecare fisier are asociate anumite drepturi de acces, numite si permisiuni. Le putem vedea in coloanele 2-10 din ceea ce afiseaza ls -l.
Cele trei drepturi asociate celor trei categorii (utilizator,grup,altii) sunt:
r-citire(Read);
w-scriere(Write);
x-executie(eXecute).
Ele arata daca un fisier poate fi citit, modificat sau, respectiv, executat(pentru fisiere de tip director poate fi cautat)de utilizator.
Ca exemplu concret sa luam un fisier avand permisiunile:
r-x-w- - -x
_/ _/
restul lumii (others)
__ grupul (group)
___ posesorul (user)
Acest lucru specifica urmatoarele
posesorul fisierului poate citi si executa acest fisier, dar nu il poate modifica
utilizatorii din grupul fisierului pot modifica acest fisier insa nu il pot citi sau executa
ceilalti utilizatori pot doar executa fisierul, dar nu il pot citi sau modifica.
De asemenea, fisierele mai au trei atribute speciale. Acestea se numesc:SUID, SEGID si Sticky (lipicios), semnificatia lor fiind:
SUID (Set User ID):un fisier cu acest atribut setat arata faptul ca executia sa da nastere unui proces care are proprietar pe posesorul fisierului, si nu pe posesorul procesului care executa fisierul(de exemplu, comenzi ca passwd sau cehfn pot fi executate si de utilizatori obisnuiti, cu toate ca au acces la resurse privilegiate ale sistemului-fisierele etc/ passwd si etc / shadow
O permisiune SUID setata este indicata de comanda ls -l printr-un s in loc de "x
(infoiasi) ls -l /usr/bin/chfn-rws - -x- -x 1 root root 13184 Aug 31 2003 /usr/bin/chfn
SGID(Set group ID) are o functie similara, actionand asupra grupului procesului.
Aceste doua permisiuni nu au sens decat daca fiserul este executabil.
Sticky (lipicios), afisat prin caracterul "t", pentru directoare indica faptul ca in directoarele in care oricine poate scrie (e.g.,/tmp), teoretic, oricine poate sterge orice fisier. Asociind o permisiune lipicioasa pe un astfel de director, vom permite stergerea unui fisier doar de catre proprietarul lui.
Un exemplu (optiunea d a comenzii ls este necesara pentru a lista drepturile directorului / tmp, si nu pe cele ale tuturor fisierelor in el) ar fi:
(infoiasi) ls -ld / tmp
drwxrwxrwt 3 root root 1024 Jul 26 00:10 / tmp /
permisiunea sticky
Modificarea drepturilor se realizeaza prin intermediul comenzii chmod. Pentru proprietar, se utilizeaza litera "u" pentru grup "g", iar pentru alti utilizatori "o Pentru acordarea, respectiv revocarea drepturilor indicate mai sus corespund caracterele "+", respectiv "-". De exemplu, daca se doreste sa se acorde drepturi de citire grupului caruia ii apartine utilizatorul pentru fisierul cv. Html, se va scrie
(infoiasi) chmod g+r cv. html
Anularea drepturilor de executie si scriere pentru grup si proprietar se va realiza prin:
(infoiasi) chmod ug-wx cv. html
Pentru a da dreptul de executie tuturor categoriilor de utilizatori (proprietar, grup si altii), se foloseste:
(infoiasi) chmod +x cv. html
Mai exista o modalitate de modificare a drepturilor, relativ mai complicata, dar care ar fi preferata de matematicieni si informaticieni. Fiecarui grup de drepturi i se asociaza un numar dupa cum urmeaza: fiecarui drept acordat ii corespunde valoarea 1, iar pentru fiecare drept anulat -0. Astfel, rezulta un numar de trei cifre binare care se transforma apoi in baza 8 (octal).
De exemplu, pentru rw- asociem 110, care in octal este 6. Drepturile rwxr-xr- - si rwx- -x- -x vor corespunde valorilor 751 si, respectiv, 711. Stabilirea drepturilor de citire, scriere pentru utilizator si grup si de citire pentru ceilalti ce realizeaza astfel
(infoiasi) chmod 664 cv. html
Pentru modificarea proprietarului se utilizeaza comanda chown
(infoiasi) chow busaco cv. html
Aceasta comanda permite simultan si schimbarea grupului:
(infoiasi) chown busaco : profs cv. html
(infoiasi) chown www : nobody /home /httpd/cgi-bin/*
Comanda chgrp modifica grupul unui fisier:
( infoiasi) chgrp studs cv .html
O alta comanda utila este file. Aceasta incearca sa determine tipul unui fisier:
( infoiasi ) file /Documents/ex/*
DESIGN.JPG : JPEG image data, JFIF standard 1. 01,
resolution (DPI),72x72
eps: directory
export.tx: ASCII English text, with wery long lines
file-ex: ASCII text
index2.cgi.html: HTML document text
main.ps: PostScript document text conforming at level 2.0
main.tex: ASCII English text
Makefile: ASCII make commands text
multum.tex: ASCII text
prog: ELF 32-bit LBS executable, Intel 80386, version 1(SYSV), for GNU/Linux
2.2.5,dynamically linked (uses shared libs),stripped
sigla.gif: GIF image data, version 89a, 40x40
teza.tgz: gzip compressed data, from Unix
typescript: ASCII text, with CRLF, LF line terminators
In acest exemplu, observam ca file "ghiceste" diverse tipuri de fisiere, precum cele text (scrise eventual in limba engleza), grafice sau executabile. In functie de tip, se pot oferi si diverse alte detalii folositoare.
O comanda care prezinta interes este si stat scopul ei fiind cel de afisare a diferitelor informatii despre fisiere.
In exemplul de mai jos, aflam informatii privitoare la directorul home al unui utilizator:
( infoiasi stat
File : "/ home/dragos"
Size: 2048 Filetype: Directory
Mode: / drwxr-xr-x)
Uid: / dragos) Gid: ( 202/profs)
Device:8 , 0 Inode: 79576 Links: 13
Access : Tue Nov 23 12 :43 :30 2004 . 00 :02 :12)
Modify :Tue Nov 23 12 :43 :31 2004(00000.00 :02 :11)
Change :Tue Nov 23 12 :43 :31 2004( 00000.00 :02 :11)
Comanda du afiseaza dimensiunile tuturor sub-directoarelor din directorul curent sau dintr-un director precizat. Se pot utiliza urmatoarele optiuni:
-h: dimensiunilor sunt scrise in kilo-octeti sau mega-octeti pentru a fi cat mai usor citite de utilizator.
-s: se va afisa doar dimensiunea directorului curent.
-a: listeaza dimensiunile fisierelor
Un exemplu ar fi
( infoiasi du /usr/lib/xine/
228K /usr/lib/xine/plugins/ 1.0.0./post
204K /usr/lib/xine/plugins/1.0.0./vidix
4, 9M /usr/lib/xine/plugins/1.0.0
4, 9M /usr/lib/xine/plugins
4, 9M /usr/lib/xine
Comanda df listeaza informatii privitoare la spatiul liber al partitiilor de disc.Aceasta comanda are aceleasi optiuni ca si comanda du.
( infoiasi) df
/dev/sdb2 16500568 5962680 9699700 39% /home/profs
none 385840 0 385840 0% /dev/shm
/dev/sda5 489992 8382 456310 2% /tmp
/dev/sda6 988212 198788 739224 22% /var
/dev/sda7 988212 334756 603256 36% /var/log
/dev/sda9 3945128 961368 2783352 26% /var/spool/mail
/dev/sda8 743132 23148 68223 64% /var/spool/mqueue
Varianta grafica a comenzilor df si du se regaseste in meniul KDE sub numele utilitarului KdiskFree (care poate fi apelat prin kdiskfree).
Aceste comenzi sunt utile mai ales cand apar probleme cu spatiul de pe disc.
O alta utila poate fi tree, care afiseaza structura arborescenta a directoarelor. De exemplu, pentru a obtine sub-directoarele directorului "/", vom putea folosi:
(infoiasi) tree /-d-L 1
/
|--bin
|--boot
|--dev
|--etc
|--home
|--initrd
|--lib
|--mnt
|--opt
|--proc
|--root
|--sbin
|--tmp
|--usr
|--var
15 directories
Operatii cu fisiere
Nu am uitat de comenzile pentru realizarea operatiunilor de baza cu fisierele. A sosit vremea sa le mentionam succint:
Pentru a crea o legatura simbolica, vom introduce o linie de genul:
( infoiasi) ln -s capitol3.txt../../copie/capitol3-0221.txt
rm- sterge fisiere, avand sintaxa rm fisier( e).
Atentie! Fisierele sterse nu pot fi recuperate in nici un mod!
Pentru toate comenzile de mai sus, exista o serie de optiuni folositoare
-f- forteaza indeplinirea actiunii, fara confirmare din partea utilizatorului sau ignorand erorile care pot surveni
-i- mod interactiv, interogand utilizatorul daca intr-adevar doreste sa realizeze ceea ce s-a simplificat (utilizati-o mai ales la rm);
-v- afiseaza mai multe informatii la executia comenzii respective
-R- mod recursiv, comanda executandu-se asupra tuturor sub-directoarelor (foarte periculoasa daca apare la rm, mai ales impreuna cu optiunea -f).
Urmeaza un exemplu de folosire a comenzii rm (dorim sa stergem interactiv o serie de fisiere temporare, al caror nume se termina cu caracterul tilda ):
( infoiasi) ls
apropos-ex~ mfile-ex~ ls-ex~ mount-ex~
( infoiasi rm -i
rm: remove regular file 'apropos-ex~'? y
rm: remove regular file 'file-ex~'?y
rm: remove regular file 'ls-ex~ '?n
rm: remove regular file 'mount-ex~ '?y
( infoiasi ls
ls-ex~
Cautarea sofisticata a fisierelor este posibila cu ajutorul comenzii find Asupra fisierelor gasite se pot efectua si diverse operatii (de exemplu, executia unor comenzi).Cautarea se va realiza pornind de la un anumit director care va fi explorat conform criteriilor de cautare alese.
Sintaxa generala a comenzii find este:
find [cale] [expresie] [actiune
Componenta cale reprezinta calea de directoare de la care se va incepe cautarea, expresie semnifica o expresie definind criteriul de cautare, iar actiune specifica actiunea care va fi efectuata la gasirea unui fisier.
Cautarea se poate realiza dupa :
Exista o multitudine de alte optiuni care pot compune o expresie de cautare ;pentru amanunte,parcurgeti paginile de manual dedicate comenzii find.
Ca actiune executata la gasirea unui fisier, putem avea :
De exemplu, cautarea tuturor imaginilior GIF din contul utilizatorului curent se va putea face astfel :
( infoiasi)s find ~ -name '*gif' -print
Identificare fisierelor utilizatorului dragos din directorul /tmp se va putea realiza prin linia:
( infoiasi) s find /tmp -user dragos -print
Pentru a sterge toate fisierele temporare (al caror nume este terminat cu .bak sau ~), vom putea da urmatoarea comanda:
find / -name * . bak -o -name *~ -exec rm "" ";"
S-au utilizat ghilimelele pentru ca interpretorul de comenzi sa nu intercepteze gresit caracterele speciale ""sau ";".Optiunea -o semnifica operatorul logic sau (or).Pot fi precizati si operatorii si (and) prin -a si negatie (not)prin caracterul "!".
Am discutat mai sus de utilitarul mtools FM . Aceleasi functionalitati se regasesc sub o serie de comenzi, foarte asemanatoare comenzilor uzuale din DOS pentru accesarea dischetelor formatate FAT. Discheta va fi accesibila prin numele a:, exact ca in DOS, insa pentru fisierele stocate de sistemul Linux se vor aplica regulile acestuia (a se revedea sectiunea 2.1 a capitolului de fata).
Fiecare comanda din pachetul mtools are numele prefixat cu litera m. Astfel, pentru operatiile de copiere, redenumire, stergere de fisiere, vor putea fi folosite comenzile mcopy ,mren si, respectiv,mdel.Pentru schimbarea unui director de pe discheta se va utiliza mcd, iar operatiile uzuale cu directoaare vor fi realizate via comenzilor mmd (creare de director)si mrd (stergere de director). Formatarea unei dischete ca discheta DOS se va face prin comanda mformat.
Pentru a vizualiza continutul unei dischete, vom putea introduce (pentru fisierele avand nume lungi va fi listat si numele scurt DOS, compus din 8 caractere plus 3caractere extensia):
(infoiasi) mdir
Volume in drive A has no label
Volume Serial Number is C06E-ECE2
Directory for A:/
TEZA -M~1 TGZ 708449 2003-12-15 19:48 teza-main. Tgz
bk <DIR> 2003-12-15 19:49 bk
2 files 708 449 bytes
936 bytes free
Vom copia toate fisierele stocate intr-un director local pe discheta, apoi vom sterge intreg continutul directorului bk2:
(infoiasi) mcopy ~/Documents/linux-book/* a:
(infoiasi) mdel a:/bk/*
(infoiasi) mmd a:/bk2
La final, reafisam continutul sistemului de afisare FAT stocat de discheta:
(infoiasi) mdir
Volume in drive A has no label
Volume Serial Number is C06E-ECE2
Directory for A:/
TEZA-M~1 TGZ 708449 2003-12-15 19:48 teza-main. Tgz
bk <DIR> 2003-12-15 19:49 bk
jobs-ex 118 2003-12-23 13:46 jobs-ex
ps2-ex 473 2003-12-23 13:46 ps2-ex
ps-ex 128 2003-12-23 13:46 ps-ex
ps-ex~ 128 2003-12-23 13:46 ps-ex~
TYPESC~1 0 2003-12-23 13:48 typescript
bk2 <DIR> 709 821 bytes
10 files 744 960 bytes free
Desigur, exista la dispozitia utilizatorului si alte comenzi privitoare la fisiere, o parte dintre ele aparand pe parcursul cartii.
Comenzile principale de vizualizare si editare a continutului fisierelor text vor fi descrise in cadrul capitolului 9,iar capitolele 12 si 13 se vor ocupa de fisierele grafice si cele multimedia.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1015
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved