Sunteți pe pagina 1din 53

LUCRAREA NR.

Elemente introductive privind sistemul de operare UNIX

Istoric al evolu\iei sistemului


Prima versiune experimental[ a sistemului, numit[ UNICS1 (UNiplexed Information and
Computing Service), a ap[rut @n 1969 fiind opera lui Ken Thompson ]i a membrilor echipei sale de
la laboratoarele Bell. Versiunea, scris[ @n limbaj de asamblare, era numai pentru un singur utilizator.
Realizarea @n 1972 a primului compilator pentru limbajul C, a permis rescrierea sistemului UNIX @n acest
limbaj de programare. #ncep`nd cu anii '80 sistemul s-a impus ca principal[ solu\ie de standardizare @n
domeniul sistemelor de operare, el reg[sindu-se pe toate tipurile de calculatoare (mainframe, mini,
micro).
Considerentele de realizare ale sistemului de operare UNIX au fost urm[toarele:
1. necesitatea standardiz[rii ]i unific[rii mediilor de operare ]i @n general a interfe \ei cu
utilizatorul;
2. transportabilitatea fi]ierelor @ntre diverse sisteme de calcul, men \in`nd identic[ structura
volumelor ]i fi]ierelor;
3. asigurarea unor niveluri superioare de portabilitate a produselor program (se extinde
portabilitatea de la nivelul limbajelor de programare c[tre portabilitatea la nivelul
executivului - asisten\a fiind identic[ din partea sistemului de operare - ]i la nivelul filozofiei
de implementare a programelor);
4. folosirea unei game largi de arhitecturi de sisteme de calcul prin interconectarea
calculatoarelor de tipuri ]i puteri diferite, func\ion`nd sub acela]i sistem de operare;
5. transparen\a produselor software fa\[ de evolu\ia hardware-ului.
Spre deosebire de cele mai multe sisteme de operare proprietar, UNIX a devenit numele unei
@ntregi familii de astfel de sisteme, exist`nd @n prezent, mai multe variante. Acest lucru a fost posibil
deoarece codul surs[ al primelor versiuni a fost f[cut disponibil mai multor produc[tori de calculatoare
care au dezvoltat variante specifice unei anumite linii de ma]ini (procesoare), @n timp ce alte variante au
fost dezvoltate @n mod specific ca ]i produse shareware sau chiar freeware.
Cu toate c[ variantele respective difer[ @n ceea ce prive]te originea, implementarea, ]i @ntr-un
anumit grad, func\ionalitatea, programele utilitare, limbajele de programare, metodele de configurare, sau
interfe\ele utilizator pe care le ofer[, asem[n[rile între ele sunt mult mai mari dec`t deosebirile, toate
variantele coexist`nd.
Se pot eviden\ia urm[toarele variante de UNIX:
 HP-UX (Hewlett Packard)
 Solaris (SunSoft)
 SVR4 (AT&T)
 AIX (IBM)
 BSD (Berkeley Software)
 UnixWare (Novell)
 SCO Unix (Santa Cruz Operation)
 Linux
Odat[ cu cre]terea popularit[\ii sistemului UNIX @n sectorul comercial ]i guvernamental a devenit
necesar[ standardizarea facilit[\ilor acestuia, pentru a preveni dezvoltarea de versiuni care s[ nu fie
compatibile @ntre ele.
Astfel, au ap[rut:
- SVID (System V Interface Definition) - publicat @n 1986 de AT&T. Este
standardul de facto pentru interfe\e UNIX System V. Aplica\iile dezvoltate @n conformitate
cu acest standard pot fi rulate (prin recompilare) pe orice sistem UNIX System V.
- POSIX (Portable Operating System for Computer Environment) -
define]te interfa\a @ntre sistemul de operare ]i aplica\ii. Standardul este dezvoltat de IEEE

1
Din cauza pronun\iei acronimului de mai sus, modul de scriere al sistemului de operare s-a transformat @n
UNIX.
1
(Institute of Electrical and Electronic Engineers) ]i promoveaz[
portabilitatea codului surs[ nefiind obligatoriu ca sistemul de operare suport s[ fie un sistem
UNIX.
- C.A.E.(Common Application Environment) -standard pentru un mediu comun de
aplica\ii, dezvoltat de consor\iul X/OPEN.

Caracteristici generale ale sistemului UNIX


#ntre caracteristicile ce au contribuit la succesul acestui sistem de operare se pot men\iona:
 este un sistem de tip time-sharing, multitasking ]i multiuser;
 prin scrierea sa @n limbajul C (preponderent) s-a ob\inut o portabilitate at`t a sistemului
UNIX propriu-zis, c`t ]i a software-ului de aplica\ie dezvoltat sub acest sistem. Ca urmare,
UNIX-ul permite folosirea celor mai diverse arhitecturi de sisteme calcul, func\ion`nd
aproape identic pe mainframe, mini sau microcalculatoare;
 promoveaz[ modularitatea;
 filozofia de proiectare a UNIX-ului, rezumat[ prin simplu, general ]i extensibil, este direct
vizibil[ utilizatorului @n limbajul de comand[. Astfel, @n contrast cu comenzile complexe ale
multor sisteme de operare, comenzi cu multe op\iuni, greu de re\inut ]i care nu acoper[
niciodat[ toate cazurile posibile, comenzile UNIX implementeaz[ o singur[ func\ie. Aceste
comenzi, cu rol de instrumente software, pot fi combinate pentru a ob\ine func\ii complexe.
Combinarea este facilitat[ de mecanismul de comunicare @ntre procese @n UNIX prin
transmiterea direct[ a rezultatelor unui program ca date de intrare pentru un alt program;
 este multisesiune - se pot deschide mai multe sesiuni de lucru pe acela]i terminal;
 este multiproces - se pot rula concurent mai multe procese ce pot comunica @ntre ele sau pot
crea la r`ndul lor alte procese;
 permite utilizarea @n comun a informa\iilor, faciliteaz[ lucrul @n echip[ ]i comunica\ia @ntre
utilizatori prin mecanisme evoluate;
 implementeaz[ un sistem de fi]iere arborescent care se poate desf[]ura pe mai multe volume,
elimin`nd func\ia de partajare a volumelor, care este o problem[ esen\ial[ @n sistemele time-
sharing ]i @n configura\iile de re\ea. Fi]ierele au cea mai simpl[ structur[: ]ir de octe\i;
 unific[ tratarea fi]ierelor ]i a dispozitivelor periferice, ]i implementeaz[ un mecanism de
redirec\ionare a rezultatelor unui program;
 asigur[ protec\ia fi]ierelor ]i a modului de execu\ie prin utilizarea parolelor ]i a
permisiunilor de acces;
 opera\iile de I/E sunt integrate @n sistemul de fi]iere, realiz`ndu-se a]a-numitele
intr[ri/ie]iri generalizate;
 exist[ un sistem de gestiune a proceselor reentrante ]i asincrone multiple, care se pot
sincroniza prin intermediul unui sistem de @ntreruperi logice;
 gestiunea memoriei se face printr-un mecanism ce permite schimbul de pagini @ntre memoria
intern[ ]i memoria extern[, gestion`ndu-se spa\iul afectat execu\iei proceselor ]i
control`ndu-se timpul de acces la procesele @n a]teptare;
 asigur[ o interfa\[ simpl[ ]i interactiv[ @ntre utilizator ]i sistem, prin intermediul
componentei shell (interpretorul de comenzi). Shell-ul nu este @nglobat @n nucleul
sistemului de operare, nu este unic, (sunt disponibile mai multe shell-uri) ]i permite
introducerea de noi comenzi, combinarea comenzilor, etc.;
 ofer[ implement[ri de compilatoare pentru numeroase limbaje de programare: Basic,
Fortran, Pascal, C, Prolog, Lisp, etc.

Sesiunea de lucru sub UNIX


Dup[ pornirea sistemului de calcul, ]i @nc[rcarea sistemului de operare, ini\ierea unei sesiuni de
lucru sub UNIX @ncepe cu ac\iunea de conectare (login). #n cadrul acesteia, utilizatorului i se va
solicita, @n prim[ faz[, identificatorul de conectare unic (login ID) asociat. Acesta identific[ utilizatorul
]i orice caracteristici asociate cu el, fiind @n fapt un nume de recunoa]tere autorizat. Dup[ furnizarea de
c[tre utilizator a identificatorului respectiv, i se va solicita ]i parola de acces corespunz[toare

2
(password). Cele dou[ elemente sunt verificate, ]i @n cazul @n care sunt corecte, conectarea se
realizeaz[, fiind afi]ate o serie de informa\ii referitoare la ultima conectare nereu]it[, ultima conectare
reu]it[, dac[ sunt mesaje de po]t[ electronic[, mesaje de la administratorul de sistem, ].a. Apoi se
lanseaz[ automat @n execu\ie interpretorul de comenzi implicit (shell)2 afi]`ndu-se un prompter3 . Din
acest moment utilizatorul are acces la resursele sistemului, ]i poate folosi comenzile UNIX.

Configurare
Configurarea unui sistem UNIX se face în primul r`nd prin intermediul fi]ierelor de configurare.
Acestea sunt fi]iere script (fi]iere de comenzi), cu un format care le face u]or de citit ]i de modificat,
în care se memoreaz[ informa\ii referitoare la propriet[\ile obiectului configurat, ]i care la momentul
conect[rii se execut[. Fi]ierul script ce se execut[ depinde de shell-ul utilizat. De exemplu, @n
Bourne shell, se execut[ fi]ierul .profile din directorul home al utilizatorului, iar @n Korn
shell se execut[ fi]ierul c[tre care face referire variabila de mediu ENV.

Terminarea unei sesiuni de lucru UNIX se face folosind una din comenzile: exit, respectiv bye,
sau tast`nd combina\ia de taste <Ctrl><D>.
Pentru oprirea, @ntr-o manier[ ordonat[, a calculatorului pe care ruleaz[ sistemul UNIX, se
utilizeaz[ comanda shutdown.
Aceasta poate fi executat[ numai de c[tre utilizatorul privilegiat (superuser, root). C`nd
comanda este executat[, to\i utilizatorii primesc un mesaj shutdown ]i apoi recep\ioneaz[ un mesaj
final de terminare.
C`\iva dintre indicatorii utiliza\i cu comanda shutdown sunt:
-h opre]te sistemul complet
-i permite afi]area de mesaje care ghidez[ utilizatorul @n cadrul procesului de shutdown
-k simuleaz[ un shutdown sistem
-m opre]te sistemul ]i @l trece @n modul @ntre\inere (single user), astfel @nc`t administratorul
de sistem s[ poat[ efectua @ntre\inerea acestuia (instalarea de hardware/software sau @ntre\inerea
planificat[ a hardware-ului/software-ului existent)
-r permite oprirea sistemului urmat[ de restartare (reboot).
Este de asemenea posibil[ specificarea momentului de timp la care oprirea (sau restartarea) s[ fie
f[cut[, prin indicarea unei date viitoare sau a unui timp relativ. #n acest caz sistemul trimite periodic
mesaje utilizatorilor, referitoare la oprire.
Variantele cele mai des folosite ale acestei comenzi sunt:
shutdown -h now
shutdown -r now

Specificarea numelui fi]ierelor ]i directoarelor


UNIX are o structur[ de directoare ]i fi]iere asem[n[toare cu cea a sistemelor DOS ]i Windows.
Fi]ierele sunt stocate @n directoare ]i sunt identificate printr-un nume, care este o secven\[ de
caractere.
Toate numele de fi]iere, oricare ar fi tipul lor (text, binare) se supun acelora]i reguli, ]i anume:
1. Spre deosebire de sistemul DOS unde numele de fi]iere era specificat @n formatul 8.3,
(maxim 8 caractere pentru nume ]i maxim 3 caractere pentru o eventual[ extensie), @n UNIX
se pot utiliza nume lungi de fi]iere (p`n[ la 255 de caractere, dac[ este instalat sistemul de
2
Interpretorul de comenzi este un program executabil situat, de regul[, @n directorul /bin, ]i care este tratat
de c[tre nucleul (kernel) sistemului de operare, ca orice proces utilizator neprivilegiat. La deschiderea unei
sesiuni de lucru, se lanseaz[ @n execu\ie un proces shell la terminalul la care lucreaz[ utilizatorul, a]tept`nd
comenzi.
Interpretorul de comenzi (shell) (care porne]te dup[ introducerea numelui utilizatorului ]i a parolei)
poate fi ales de c[tre utilizator. Exist[ mai multe interpretoare clasice, fiecare r[spunz`nd anumitor cerin \e.
Interpretorul "standard" în UNIX este Bourne shell (sh), dar foarte folosite sunt ]i Bourne Again shell
(bash), Korn shell (ksh), Berkeley C shell (csh), Turbo C shell (tcsh).
3
#n func\ie de shell-ul utilizat, prompter-ul este reprezentat printr-un caracter specific. Astfel, @n cazul
shell-ului sh (Bourne shell), prompter-ul este $ (@n cazul utilizatorilor neprivilegia\i) sau * (pentru utilizatori
privilegia\i - superuser, root). Dac[ shell-ul este csh (C shell), prompter-ul va fi %, iar @n cazul shell-
ului ksh (Korn shell) prompter-ul va fi :.
3
fi]iere ext2 sau umsdos), iar numele pot con\ine mai mult de un punct (de exemplu,
mihai.stud.txt);
2. #n toate cazurile, @n cadrul numelui unui fi]ier, UNIX face distinc\ie @ntre caracterele
minuscule ]i majuscule 4 , (de exemplu, numele FILENAME.tar.gz ]i
filename.tar.gz fac referire la fi]iere diferite);
3. Caracterele ce pot fi utilizate pentru numele de fi]iere sunt func\ie de sistemul UNIX folosit,
exist`nd particularit[\i. #n general, pot fi utilizate literele de la A la Z sau de la a la z;
numerele de la 0 la 9, linia de subliniere 5 , punctul6 . #n tabelul 1.1 sunt date o serie de
caractere (sau combina\ii de caractere) ce au o semnifica\ie special[ pentru UNIX, ]i ca
urmare utilizarea lor trebuie f[cut[ cu precau\ie. Lista nu este exhaustiv[ ]i ea depinde de
shell-ul UNIX folosit.

Tabelul 1.1
Semnifica\ia c`torva caractere speciale
Caracter Semnifica\ie
Indic[ @nceputul numelui unei variabile shell. De exemplu $var va @nsemna numele unei
$
variabile numite var.
| Leag[ ie]irea standard a unei comenzi la intrarea standard a altei comenzi (pipe).
# #ncepe un comentariu.
& Execut[ un proces @n fundal (background).
? Specificator pentru nume de fi]ier global ce \ine locul unui singur caracter.
* Specificator pentru nume de fi]ier global ce \ine locul mai multor caractere.
$# Num[rul de argumente transmise unui script shell.
$* Argumente transmise unui script shell.
$? Returneaz[ cod de la comanda executat[ anterior.
$$ Num[r de identificare proces.
> Operator pentru redirectarea ie]irii.
< Operator pentru redirectarea intr[rii.
' Substitu\ie comand[.
>> Operator pentru redirectarea ie]irii (pentru a ad[uga la un fi]ier).
Afi]eaz[ un domeniu de caractere. [a-z] semnific[ toate caracterele dintre a ]i z. [a,z]
[ ]
semnific[ caracterele a sau z.
.nume_fisier Execut[ fi]ierul cu numele specificat.
: Separator de nume de director din cadrul c[ii.

Observa\ii:
1. Sub UNIX, dac[ un nume de fi]iere con\ine spa\ii (nu este recomandat, dar este posibil), ori de
c`te ori ne referim la el, va trebuie s[ includem numele respectiv @ntre ghilimele duble.
2. Pentru fi]ierele executabile ("programe") nu exist[ obligativitatea utiliz[rii extensiilor: .COM,
.EXE, .BAT. Aceste fi]iere sunt marcate printr-un caracter * existent la sf`r]itul numelului lor, atunci
c`nd sunt afi]ate cu comanda ls -F.
3. Sub DOS numele fi]ierelor arhiv[ (backup) au extensia .BAK, sub UNIX numele acestora se
termin[ cu caracterul ~ (tilda).
C`teva dintre extensiile uzuale de fi]iere folosite @n mediul UNIX sunt ilustrate @n tabelul 1.2.

4
Este case-sensitive.
5
Linia de subliniere poate separa cuvinte @n cadrul numelui unui fi]ier, f[c`nd numele mai u]or de citit. De
exemplu, @n loc de a numi un fi]ier fisierdetest, putem s[-l numim fisier_de_test.
6
Un punct poate fi folosit pentru a ad[uga o extensie la un nume de fi]ier, @ntr-o modalitatea similar[
fi]ierelor DOS. De exemplu, un fi]ier surs[ C care con\ine un program numit prog poate fi denumit prog.c. A]a
cum s-a ar[tat, @n UNIX nu suntem limita\i la o singur[ extensie.
#n cazul @n care un punct este folosit ca prim caracter @n cadrul numelui unui fi]ier, acesta confer[ fi]ierului
statutul de fi]ier ascuns (hidden). De exemplu, dac[ @n directorul curent exist[ fi]ierele doc1 ]i .doc1, tast`nd
comanda ls va fi afi]at numai fi]ierul doc1. Pentru afi]area ambelor fi]iere se va tasta comanda ls –a.
4
Tabelul 1.2
Extensii uzuale de fi]iere, @nt`lnite @n mediul UNIX
Extensie Comentariu
1. . .8 Pagini de manual. Se citesc folosind comanda: groff -Tascii -man <file.1>
arj Arhiv[ realizat[ cu arj
dvi Fi]ier de ie]ire realizat de c[tre TeX. Pentru vizualizarea sa se folose]te comanda xdvi, iar
pentru convertirea sa @ntr-un fi]ier PostScript se folose]te comanda: dvips
gz Arhiv[ f[cut[ cu gzip
info Fi]ier info (o alternativ[ la paginile de manual)
lsm Fi]ier Linux Software Map. Este un fi]ier ASCII plat ce con\ine descrierea unui pachet
ps Fi]ier PostScript. Pentru a-l tip[ri sau vizualiza se folosesc comenzile gs ]i op\ional
ghostview sau gv
rpm Pachet Linux Red Hat. #l putem instala pe orice sistem utiliz`nd gestionarul de pachete rpm
tar, Arhiv[ realizat[ cu tar ]i compresat[ cu compress
tar.Z
tgz, Arhiv[ realizat[ cu tar ]i compresat[ cu gzip
tar.gz
tex Fi]ier text de transmis lui TeX, un sistem de editare puternic
xbm,xpm, Fi]ier grafic
xwd
Z Arhiv[ realizat[ cu compress

Directoare standard
#n toate sistemele UNIX, anumite fi]iere trebuie @ntotdeauna s[ fie disponibile. Directoarele ce le
con\in formeaz[ o arborescen\[ standard care se creeaz[, de regul[, la momentul instal[rii sistemului de
operare.
Un exemplu de o astfel de arborescen\[ este specificat @n tabelul 1.3. Trebuie men\ionat c[
lista respectiv[ nu este exhaustiv[, ea depinz`nd de sistemul UNIX cu care se lucreaz[.

Tabelul 1.3
Arborescen\a standard
Nume director Explica\ii
/ Director r[d[cin[ - este directorul p[rinte tuturor directoarelor ]i fi]ierelor din cadrul sistemului
de fi]iere al UNIX.
/bin Con\ine toate comenzile native UNIX, executabile.
/dev Con\ine fi]iere speciale asociate dispozitivelor periferice (dispozitive caracter ]i dispozitive bloc).
/etc Con\ine fi]iere executabile ]i fi]iere de configurare a sistemului. Cele mai multe dintre comenzile
destinate administr[rii sistemului sunt stocate aici.
/lib Stocheaz[ fi]iere bibliotec[ pentru diferite limbaje de programare (de exemplu pentru limbajul C).
/lost+found Con\ine fi]ierele aflate @n curs de procesare la momentul @n care sistemul s-a oprit datorit[ unor
cauze anormale. Sistemul folose]te acest director pentru a recupera fi]iere @n cauz[. Un astfel de
director (lost+found), exist[ @n toate parti\iile discului.
/home Toate directoarele personale (implicite) ale utilizatorilor sunt definite ]i con \inute @n acest
director.
/usr Con\ine un num[r de subdirectoare cum sunt: adm, bin, etc, ]i include.

Comenzi UNIX
#n cadrul unui sistem UNIX utilizatorul are la dispozi\ie comenzi native UNIX precum ]i comenzi
pe el @nsu]i le poate scrie (fi]iere de comenzi - fi]iere script). #n func\ie de versiunea de UNIX ce
ruleaz[ ]i de shell-ul utilizat, comenzile difer[.
Comenzile UNIX sunt de fapt programe executabile care pot fi g[site în directoarele /bin,
/usr/bin. Diferen\ele între interpretoarele de comenzi se v[d mai ales în contextul fi]ierelor de
comenzi. Practic, aceste interpretoare permit scrierea de programe complexe, folosind comenzile UNIX ]i
directivele speciale.
Forma sintactic[ general[ a unei comenzi shell este urm[toarea:
comanda[indicatori][argument1][argument2]..
unde:

5
comanda - reprezint[ numele comenzii ce urmeaz[ a fi executat[. C[utarea comenzii (a
fi]ierului executabil), p`n[ c`nd aceasta este g[sit[, se face @n urm[toarea secven \[: în directorul curent;
în directorul /bin; în directorul /usr/bin . #n cazul @n care comanda nu este g[sit[, va fi afi]at un
mesaj de eroare.
[indicatori] - reprezint[ op\iuni desemnate printr-o liter[, precedat[ de semnul - sau +, ce
sunt destinate pentru a ob\ine o rafinare a ac\iunii comenzii. #n cadrul unei comenzi pot fi specifica\i mai
mul\i indicatori, preceda\i de unul din cele dou[ semne men\ionate anterior. De exemplu, comenzile ls
-a-l ]i ls -al sunt echivalente.
[argument1] [argument2] .. - reprezint[ nume de fi]iere/directoare sau ]iruri de
caractere ]i constituie parametrii comenzii.
#n func\ie de comand[, argumentele pot fi op\ionale sau obligatorii. Specificarea argumentelor
op\ionale, @n cadrul sintaxei unei comenzi, se face prin introducerea lor @ntre paranteze p[trate.
Specificarea argumentelor (fi]ierelor) este permis[ de c[tre shell ]i prin utilizarea urm[toarelor
metacartere (specificatori pentru nume de fi]ier global - wildcard):
* semnific[ orice ]ir de caractere, inclusiv ]irul vid
? semnific[ orice caracter
[…] semnific[ o mul\ime de caractere
- semnific[ o secven\[ lexicografic[
Pe baza acestor metacaractere, shell-ul va genera nume de fi]iere utilizate în cadrul
comenzilor.
Exemple:
*.c - indic[ toate fi]ierele av`nd sufixul c;
def[0-9] - indic[ fi]ierele def0, def1, …, def9;
prog[09] - indic[ fi]ierele prog0, prog9;
cap? - indic[ fi]ierele existente cap1, cap2, cap3;
cap* - indic[ fi]ierele existente cap1, cap2, cap3, cap1.c, cap2.c;
prog[*?] - indic[ at`t varianta prog*, c`t ]i varianta prog?.
p*r - face referire la cele care @ncep cu p ]i se termin[ cu r;
*c* - face referire la cele care con\in litera c.
[abc]* - face referire la toate fi]ierele al c[ror nume @ncepe cu a,b,c;
*[[I-N1-3] - face referire la fi]ierele ce se termin[ cu I,J,K,L,M,N,1,2,3;

Observa\ie:
Cele trei construc\ii lexicale comanda, [indicatori], [argument1] [argument2]
.., trebuie s[ fie separate prin spa\ii.

Toate comenzile accept[ intr[ri de la intrarea standard (de regul[, tastatura), afi]eaz[ ie]irea la
ie]irea standard (de regul[, ecranul terminalului).
Atunci c`nd o comand[ este executat[ cu succes, ea returneaz[ un cod de return zero. Dac[
comanda nu s-a executat cu succes, sau s-a executat cu succes par\ial, ea returneaz[ coduri de return
diferite de zero. Acestea pot fi utilizate ca parte a controlului logic @n fi]ierele de comenzi (script-urile
shell).

Observa\ii:
1. De]i comenzile descrise @n cadrul prezentei lucr[ri func\ioneaz[ pe cele mai multe sisteme
UNIX, @ntr-o modalitate similar[, comportamentul indicatorilor asocia\i cu fiecare comand[ poate s[
difere.
2. UNIX ofer[ posibilitatea introducerii @n linia de comand[ a mai multor comenzi ce se vor
executa serial. Comenzile trebuiesc separate prin caracterul ;. De exemplu introduc`nd la linia de
comand[: date;netscape;date ni se va afi]a data calendaristic[ dup[ care va fi lansat @n execu\ie
programul de navigare Netscape Navigator, iar la terminarea acestuia, dup[ revenirea la promptul
sistem, se va afi]a din nou data calendaristic[.

Multe comenzi UNIX ce se introduc de la promptul sistem, nu difer[ de comenzile din MS-DOS,
sau din Windows, anumite dintre ele fiind identice.

6
#n continuare (tabelul 1.4) sunt prezentate c`teva comenzi obi]nuite utilizate @n MS-DOS,
Windows (de la promptul MS-DOS) ]i UNIX, @nso\ite de exemple. Trebuie men\ionat faptul c[ fiecare
comand[ are mai mul\i indicatori. Pentru a vedea care sunt ace]tia ]i care este rolul lor, se va studia
pagina de manual aferent[ comenzii @n cauz[.

Tabelul 1.4
Comenzi similare MS-DOS ]i UNIX
Scop MS-DOS UNIX Exemplu
Copiaz[ fi]iere copy cp cp test.txt /home/mihai
Mut[ fi]iere move mv mv test.txt /home/mihai
Afi]eaz[ con\inutul unui director dir ls ls
}terge ecranul cls clear clear
#nchide fereastra exit exit exit
Afi]eaz[ sau seteaz[ data calendaristic[ date date date
}terge fi]iere del rm rm test.txt
Transmite @n ecou ie]irea unei comenzi echo echo echo acesta este un
pe ecran mesaj
Editeaz[ fi]iere cu un editor de texte edit pico7 pico test.txt
simplu
Compar[ con\inutul fi]ierelor fc diff diff fisier1 fisier2
Caut[ un ]ir text @ntr-un fi]ier find grep grep acesta este un
text fisier.txt
Formateaz[ o dischet[ format a: mke2fs (sau /sbin/mke2fs /dev/fd0
mformat8) (/dev/fd0 este echivalentul
pentru Linux al lui A:)
Afi]eaz[ un help aferent unei comenzi /? man man comanda
Creeaz[ un director mkdir mkdir mkdir Aplicatii
Filtre pentru afi]area con\inutului unui more more, less more test.txt
fi]ier, sau rezultatului unei comenzi, ce less test.txt
nu @ncape @ntr-un singur ecran
Redenume]te un fi]ier ren mv9 mv test1 test2
Afi]eaz[ loca\ia din sistem chdir pwd pwd
Comut[ @n directorul specificat (cale cd cd cd /home/ise
absolut[) nume_cale nume_cale10
Comut[ @n directorul specificat (cale cd.. cd .. cd ..
relativ[)

#ntre cele dou[ sisteme de operare exist[ diferen\e @n ceea ce prive]te specificarea numelui unei
c[i director. Astfel, @n cadrul MS-DOS, numele directoarelor din cadrul unei c[i sunt separate prin
caracterul backslash (\), @n timp ce @n cadrul UNIX acesta este @nlocuit prin caracterul forward
slash (/).

Ob\inerea help-ului aferent unei comenzi


UNIX ofer[ posibilitatea ob\inerii unei informa\ii ajut[toare (help) referitoare la diferite
comenzi.
Exist[ mai multe posibilit[\i:
1. Studiind documenta\ia ce @nso\e]te pachetele instalate pe calculator ]i care se g[se]te, de
regul[, @n subdirectorul /usr/doc;
2. Prin utilizarea uneia din comenzile: man, help, info, apropos, whatis.
man
7
pico este un editor de texte simplu. Alte editoare mai complexe ce pot fi utilizate, sunt emacs ]i vi.
8
Formateaz[ o dischet[ pentru sistemul de fi]iere DOS.
9
Comanda mv serve]te unui scop dublu. Ea poate muta un fi]ier, dar poate s[-l ]i redenumeasc[ dac[ este
“mutat” @n cadrul aceluia]i director, a]a cum se arat[ @n exemplu.
10
Caracterul ~ (tilda) este un shortcut pentru numele directorului home al utilizatorului. Comenzile cd
sau cd ~ vor avea ca efect comutarea utilizatorului @n directorul s[u home indiferent de directorul @n care se afla
@naintea tast[rii comenzii respective. Comanda cd - va reface efectul ultimei comenzi cd tastate.
7
Este una dintre cele mai importante comenzi. Permite ob\inerea unor informa\ii suplimentare
referitoare la comenzile ]i serviciile sistem ale UNIX-ului. Informa\ia @n cauz[ este prezentat[ @ntr-un
format condensat ("pagin[ de manual") ce prezint[ scopul comenzii, op \iunile disponibile ]i sintaxa
utilizat[.
Sintaxa general[ a comenzii, este:
man [indicatori] [sectiune] comanda
unde:
comanda este numele comenzii pentru care se solicit[ informa\ie ajut[toare, iar sectiune
reprezint[ num[rul unei sec\iuni a manualului @n cadrul c[reia se va face c[utarea. Exist[ 8 sec\iuni
numerotate de la 1 la 8. Acestea sunt:
1--Commands (descrie comenzile standard)
2--System calls (descrie func\iile(apelurile) sistem UNIX apelabile @n limbajul C)
3--Subroutines (descrie func\iile de bibliotec[ C)
4--File formats (formate fi]iere)
5--Miscellaneous (formate ale diferitelor fi]iere specifice sistemului UNIX)
7--Special files (fi]iere speciale)
8--Maintenance (comenzi de administrare a sistemului, cu privilegii sporite)
Pentru fiecare sec\iune exist[ c`te un capitol introductiv care descrie con\inutul acesteia. Pentru a
vedea, de exemplu, introducerea la sec\iunea 4, se va tasta comanda:
man 4 intro
Este de asemenea posibil[, citirea unei pagini de manual referitoare chiar la comanda man.
Pentru aceasta se va tasta comanda:
man man
Pentru ob\inerea unei informa\ii ajut[toare se pot utiliza ]i celelalte comenzi men\ionate anterior.

Redirectarea intr[rii/ie]irii comenzii


Toate comenzile UNIX folosesc canale de intrare/ie]ire pentru a citi sau transmite informa\iile.
Canalul de intrare standard, utilizat @n general pentru citire, este asociat tastaturii, iar canalul de ie]ire
standard, este asociat ecranului terminalului. UNIX-ul gestioneaz[ aceste canale de manier[ independent[
pentru fiecare utilizator. De regul[, multe dintre comenzile UNIX-ului transmit rezultatele ac\iunii lor pe
ecranul terminalului. #n anumite cazuri este dificil pentru utilizator de a avea o imagine de ansamblu
asupra acestor rezultate. De aceea o solu\ie mai util[ ar fi, de exemplu, transmiterea lor (redirectarea)
c[tre un fi]ier.
#n acest context, redirectarea semnific[ determinarea shell-ului s[ schimbe ceea ce el consider[
ca fiind intrarea standard sau unde anume ie]irea standard se va duce. Pentru a realiza aceast[ schimbare
se folosesc urm[torii operatori de redirectare:
< pentru redirectarea intr[rii
> pentru redirectarea ie]irii

Redirectarea intr[rii
Exist[ o serie de comenzi UNIX ce a]teapt[ ca datele s[ le parvin[ de la tastatur[. Este posibil ca
aceste date s[ fie citite dintr-un fi]ier. Vom exemplifica folosind comanda wc (word count) ]i un fi]ier
numit test.doc @n care exist[ introduse mai multe linii de text. Comanda va citi num[rul de linii,
num[rul de cuvinte ]i num[rul de caractere ale textului din cadrul fi]ierului, afi]`nd pe ecranul
monitorului
rezultatele.
wc<test.doc
5 11 82
Dac[ se dore]te contorizarea numai a num[rului de linii 11 , se va folosi indicatorul -l:
wc –l<test.doc
5
Comanda func\ioneaz[ ]i f[r[ redirectarea intr[rii. #n acest caz ea ia @n considerare numai
ap[s[rile de la tastatur[. Pentru a efectua num[r[toarea se va termina introducerea de caractere, prin
tastarea pe o linie nou[, a combina\iei de taste <Ctrl><D>.

11
Comanda dispune de trei indicatori: -l (nr. de linii); -w (nr. de cuvinte); -c (nr. de caractere).
8
Un alt exemplu este cel @n care vom folosi comanda sort. Aceasta preia liniile care trebuie
sortate, dintr-un fi]ier (date.txt), iar rezultatele vor fi afi]ate pe ecran.
sort<date.txt

Redirectarea ie]irii
#n acest caz, rezultatul ac\iunii unei comenzi nu va mai fi afi]at pe ecranul monitorului, ci va fi
redirectat c[tre un fi]ier.
Exemplu:
ls>iesire.txt
Rezultatele comenzii ls vor fi incluse @n fi]ierul iesire.txt. Dac[ acest fi]ier nu exist[, el va
fi creat. Dac[ fi]ierul exist[, datele pe care eventual le con\ine, vor fi @nlocuite cu rezultatele ac\iunii
comenzii. Atunci c`nd se dore]te ca rezultatele generate de comand[ s[ fie ad[ugate la sf`r]itul fi]ierului
(dac[ acesta exist[), se va tasta comanda:
ls>>iesire.txt
Dac[ fi]ierul nu exist[, atunci el va fi creat.
Un alt exemplu, @n care liniile de text sunt introduse (citite) de la tastatur[, ]i scrise @ntr-un fi]ier
(ordonat.txt) este urm[torul:
sort>ordonat.txt

Observa\ie:
Atunci c`nd utiliz[m redirectarea c[tre un fi]ier, putem rescrie fi]ierul @n cauz[. Deci, trebuie s[
fim siguri c[ numele fi]ierului pe care @l cre[m este diferit de numele unui fi]ier existent (cu excep \ia
cazului @n care dorim @nlocuirea acestuia).

Redirect[rile se pot combina, astfel înc`t liniile s[ fie citite dintr-un fi]ier, iar rezultatul s[ fie
scris în altul:
sort<date.txt>ordonat.txt

Conducte
Sistemul UNIX permite utilizarea ie]irii standard a unei comenzi ca intrare standard pentru o alta,
totul @ntr-o singur[ comand[. Aceast[ @nl[n\uire se nume]te "conduct[" (pipe), iar operatorul folosit @n
acest caz este |. O exemplificare a acestui concept o vom face folosind comanda ls. Pentru vizualizarea
con\inutului directorului /etc vom tasta:
ls -al /etc
Ca efect, informa\iile afi]ate vor defila continuu pe ecran. Pentru vizualizarea pagin[ cu pagin[ a
acestora (sau un ecran la un moment dat) vom realiza o conduct[ @ntre comanda ls ]i comanda less,
astfel;
ls -al /etc|less
Trecerea de la un ecran de vizualizat, la altul se face tast`nd <SPACE> (un ecran @nainte) sau
<B> (un ecran @napoi). Pentru p[r[sire se tasteaz[ <Q>.Se pot înl[n\ui oric`te comenzi ]i, prin urmare,
pentru afi]area pagin[ cu pagin[, @n ordine alfabetic[, a numelor tuturor fi]ierelor din directorul curent
/etc, se va folosi comanda:
ls -al /etc|sort|less

Exerci\ii

1. S[ se specifice modalit[\ile @n care se poate ob\ine o informa\ie ajut[toare relativ la o comand[.


Se va exemplifica pe comanda ls.
2. Utiliz`nd comanda ls ]i specificatori de nume pentru fi]ier global, s[ se afi]eze toate fi]ierele
din directorul curent al c[ror nume @ncepe cu una din literele c, t, s.
3. Utiliz`nd comanda ls ]i specificatori de nume pentru fi]ier global, s[ se afi]eze toate fi]ierele
din directorul curent al c[ror nume con\ine litera a.
4. S[ se specifice @n cadrul unei singure linii de comand[ succesiunea de comenzi necesare pentru
a afi]a data calendaristic[ ]i directorul curent (loca\ia curent[).

9
LUCRAREA NR. 3

Interfa\a cu utilizatorul

Fiecare sistem de operare posed[ o interfa\[ cu utilizatorul, în\elegâ`nd prin aceasta una sau mai
multe metode de a introduce comenzi. În func\ie de sistemul de operare, exist[ urm[toarele tipuri de
interfa\[:
 interfa\[ linie de comand[ (Command Line Interface - CLI) – are drept caracteristici
principale:
 interac\iunea cu sistemul de operare se bazeaz[ pe comenzi scrise de la tastatur[;
 este dificil de @nv[\at, utilizatorul obi]nuindu-se greu cu comenzile;
 pot fi invocate comenzi complicate utiliz`nd secven\e scurte de caractere;
 de]i de la apari\ia sa a fost concurat[ de celelalte tipuri de interfa\[ (TUI ]i GUI), r[m`ne
totu]i, metoda de control a sistemului de operare;
 este preferat[ de utilizatorii avansa\i datorit[ u]urin\ei utiliz[rii comenzilor.
Exemple de astfel de interfe\e sunt shell-ul din Linux ]i cmd @n Windows.
 interfa\[ text (Text User Interface - TUI) – are drept caracteristici principale:
 interac\iunea cu sistemul de operare se realizeaz[ prin intermediul ferestrelor, meniurilor,
butoanelor, mouse-ului;
 pentru desenarea interfe\ei sunt utilizate caractere disponibile pe orice terminal text.
Exemple de astfel de interfe\e: mcedit, links.
 interfa\[ grafic[ (Graphical User Interface - GUI) – are drept caracteristici principale:
 este un sistem de interac\iune de tipul WIMP (window, icon, menu, pointing
device);
 pentru desenarea interfe\ei folose]te moduri grafice de rezolu\ie @nalt[ (640X480,
800X600, 1024X768, 1280X1024, 1600X1200);
 a ap[rut ca o reac\ie la dificultatea de @nv[\are a comenzilor din interfa\a linie de
comand[.
Exemple de astfel de interfe\e: Windows, interfa\a grafic[ din Linux.

Interfa\a grafic[
La început, atâ`t UNIX–ul c`ât ]i Linux–ul au fost concepute doar cu o interfa\[ în mod text,
bazat[ pe câ`teva sute de comenzi. Interfa\a era foarte greoaie, pentru a folosi sistemul utilizatorul fiind
obligat s[ cunoasc[ ]i s[ st[pâ`neasc[ foarte bine comenzile, lucru ce f[cea practic imposibil[ folosirea
sistemelor de tip UNIX/Linux pe calculatoare destinate uzului personal ]i pentru afaceri.
Pentru a putea extinde folosirea acestor sisteme ]i pe astfel de calculatoare, a fost necesar[
crearea unui sistem care s[ fac[ leg[tura dintre interfa\a greoaie a sistemelor UNIX/Linux ]i utilizatori.
A]a a ap[rut X Window System (cunoscut ca X11 sau ca X).
Acesta ofer[ un cadru de lucru de baz[ (framework) ]i un set de instrumente pentru dezvoltarea
de interfe\e grafice (GUI) @n Unix, sisteme de operare derivate din Unix ]i OpenVMS.

Arhitectura X Window System


X Window Sytem are o arhitectur[ de tip client-server bazat[ pe urm[toarele componente:
- un server X ce comunic[ cu mai multe programe client, acesta accept`nd cereri grafice de ie]ire
(output) ]i trimi\`nd @napoi c[tre clien\ii X intrarea (input) de la utilizator (preluat[ de la tastatur[,
mouse, etc.). Serverul X rulez[ pe calculatorul care interac\ioneaz[ cu utilizatorul ]i trimite intrarea
primit[ de la acesta c[tre clien\i. De asemenea, serverul X trimite pe ecran c[tre utilizator informa\iile
primite de la clien\i. Clientul ]i serverul se pot afla pe calculatoare diferite. X.Org ]i XFree96 sunt
cele mai des @nt`lnite implement[ri ale serverului X.
- clien\ii X ce se conecteaz[ la un server X pentru a se folosi de resursele administrare de acesta.
Clien\ii pot rula local (pe acela]i calculator cu serverul) sau pot rula pe un alt calculator aflat la distan \[.
- protocolul X este protocolul utilizat @n comunica\ia dintre clien\i ]i server.

1
X Window Sytem nu con\ine nici o specifica\ie legat[ de Application User Interface
(de exemplu, felul @n care arat[ butoanele, meniurile, ferestrele, etc.). Aceste specifica \ii sunt f[cute @n
schimb de c[tre alte componente, ]i anume:
- window manager - este un tip special de client X ce controleaz[ felul @n care arat[ ceilal\i
clien\i X. El face ca to\i ceilal\i clien\i s[ aib[ caracteristici comune, control`nd amplasarea ]i felul @n care
arat[ ferestrele aplica\iilor ]i realiz`nd interfa\a grafic[ propriu-zis[. Un window manager poate crea o
interfa\[ asem[natoare cu cea din Microsoft Windows sau cu cea din Mac OS X. Exist[ multe astfel
de window manager-e1 , comerciale sau gratuite, prezente sub forma unor aplica\ii de sine st[t[toare.
Fiecare ofer[ o interfa\[ specific[ (aspectul ferestrelor ]i al componentelor grafice), introduc`nd facilit[\i
proprii.
- desktop environment (sau application-specific GUI) - include un window
manager, mai multe aplica\ii ]i o interfa\[ consistent[. GNOME ]i KDE sunt dou[ exemple de desktop
environment.
- display manager - este un tip special de client X care se ocup[ de autentificarea
utilizatorilor. El permite pornirea unei sesiuni pe un server X de pe acela]i calculator sau de pe unul aflat
la distan\[ (remote), afi]`ndu-i utilizatorului un ecran de login ]i permi\`ndu-i acestuia s[ introduc[
un nume de utilizator ]i o parol[. Dup[ ce autentificarea s-a realizat cu succes o noua sesiune este lansat[.
Exemple de display managere sunt: kdm, gdm, xdm.
#n ceea ce prive]te interfa\a cu utilizatorul, trebuie precizat c[ toate versiunile de Unix moderne
ofer[ at`t interfe\e grafice c`t ]i interfe\e @n linie de comand[. #n plus, acestea sunt foarte bine integrate
una cu cealalt[ ]i, @n toate sistemele Unix, interfa\a grafic[ poate fi aleas[ de c[tre utilizator dintr-o
ofert[ bogat[, @n func\ie de preferin\ele sale.

Instalarea, pornirea ]i oprirea interfe\ei grafice


#n cazul @n care interfa\a grafic[ nu este instalat[, instalarea pachetelor necesare se face cu
comanda:
apt-get install xserver-xorg x-window-system x-window-system-core
#n cazul @n care interfa\a grafic[ nu porne]te o dat[ cu sistemul de operare, ea poate fi pornit[
separat. Acest lucru se poate realiza folosind una dintre urm[toarele posibilit[ \i:
1. xinit - este un program care porne]te serverul X ]i un prim client care se conecteaz[ la el.
Atunci c`nd primul client @]i @ncheie activitatea, xinit va opri serverul X.
2. startx - este un front-end pentru xinit care ofer[ utilizatorului o interfa\[ mai
complex[. Adesea el ruleaz[ f[r[ a fi nevoie de alte argumente @n linia de comand[.
3. pornind un display manager - atunci c`nd un display manager este pornit pe
calculatorul local, el va porni mai @nt`i un server X, urm`nd ca apoi s[ prezinte utilizatorului
un ecran de login. Pornirea unui display manager se poate face, cu comanda start,
@n felul urm[tor:
 /etc/init.d/kdm start (pentru kdm)
 /etc/init.d/gdm start (pentru gdm)
Pentru a opri interfa\a grafic[ este suficient[ oprirea display manager-ului, cu ajutorul uneia
din comenzile:
kill -9 *dm
sau
/etc/init/d/*dm stop
Repornirea interfe\ei grafice se face prin repornirea display manager-ului:
/etc/init.d/*dm restart
De asemenea, restartarea serverului X se poate realiza ]i prin tastarea combina\iei de taste:
<Ctrl+Alt+Backspace>.

Configurarea serverului X
Configurarea serverului X se realizeaz[ printr-un fi]ier text. Pentru X.Org acest fi]ier este
/etc/X11/xorg.conf, iar pentru XFree86 fi]ierul este /etc/X11/XF86Config. Cele dou[
fi]iere au o structur[ asem[n[toare, fiind organizate @n sec\iuni, ce se pot @mp[r\i la r`ndul lor @n
subsec\iuni. Un exemplu de fi]ier xorg.conf este urm[torul:
1
De exemplu, window manager-ul din KDE se nume]te Kwin, iar cel din GNOME se nume]te Metacity.
2
3
Se observ[ c[ principalele sec\iuni ale fi]ierului de configurare sunt: Files, Module,
InputDevice (Keyboard ]i Mouse), Monitor, Device, Screen, ServerLayout, DRI.

Exemple de interfe\e grafice:

KDE
Mediul grafic KDE (K Desktop Environment), dezvoltat de organiza\ia cu acela]i nume
(http://www.kde.org), este un mediu open source ajuns @n prezent la versiunea 3.2.3, disponibil
pentru Linux ]i pentru alte variante de UNIX.
KDE este @nso\it de o suit[ de aplica\ii de birou, numit[ KOffice, precum ]i de un cadru de lucru
(framework) de dezvoltare de aplica\ii grafice. Pentru programarea aplica\iilor KDE se folose]te Qt, un
framework general de dezvoltare de aplica\ii C++.
KDE caut[ s[ acopere nevoia unui mediu de lucru UNIX u]or de utilizat, similar cu mediile
grafice din Mac OS sau Windows 95/NT. Instrumentele pentru atingerea acestui scop sunt comunica\ia
inter-aplica\ii, reutilizarea componentelor, drag-and-drop generalizat, aspect unitar ]i altele.

GNOME
Mediul grafic GNOME (GNU Network Object Modal Environment) este dezvoltat de
organiza\ia cu acela]i nume (http://www.gnome.org), ]i reprezint[ o parte a proiectului GNU. Este
un mediu open source ajuns @n prezent la versiunea 2.6, disponibil pentru Linux ]i pentru alte
variante de UNIX (Solaris, BSD, ].a.).
Pe l`ng[ faptul c[ este un mediu grafic, GNOME este ]i o platform[ de dezvoltare de aplica\ii
grafice, pentru programarea aplica\iilor GNOME folosindu-se GTK+ (GIMP ToolKit),
(http://www.gtk.org), un toolkit multi-platform[ destinat cre[rii de interfe\e grafice utilizator
(GUIs). GTK+ face parte ]i el din cadrul proiectului GNU ]i este distribuit gratuit, fiind dezvoltat dintr-un
proiect mai vechi de manipulare a imaginilor, GIMP (GNU Image Manipulation Program).
Principiile pe care este realizat[ interfa\a GNOME sunt urm[toarele: un program responsabil
pentru rularea ]i gestionarea aplica\iilor, un program pentru organizarea fi]ierelor ]i a documentelor, un
set de aplica\ii utilitare (agend[, po]t[ electronic[, internet, fax, calculator, editare de text, calcul tabelar,
muzic[ etc.). La acestea se adaug[ un set de conven\ii pe baza c[rora sunt create aplica\iile pentru
GNOME, astfel încâ`t ele s[ poat[ “colabora” eficient.

Fig. 3.1 Interfa\a GNOME, neconfigurat[, a]a cum arat[ imediat dup[ instalare

GNOME apare în mai mult variante. Modulele principale sunt scrise de GNU, @ns[ anumite firme
(de exemplu, Ximian ) mai adaug[interfe\ei grafice, diferite programe.
GNOME îndepline]te dou[ func\ii de baz[: rularea aplica\ilor ]i gestionarea fi]ierelor.

4
Programul care se ocup[ de rularea aplica\iilor este gnomepanel, acesta reprezentâ`nd efectiv
panourile de comand[ ale GNOME. Panourile sunt foarte asem[n[toare cu bara de stare din Windows,
exist`nd patru tipuri: meniu, panouri de col\, panouri laterale ]i panouri mobile.
Panoul meniu este unic ]i are o pozi\ie fix[ în partea superioar[ a ecranului, aici fiind plasat
meniul principal al GNOME (Applications2), echivalent cu meniul Start al Windows. De aici se
pot lansa toate programele distribuite împreun[ cu GNOME.
Tot în acest panou, în partea dreapt[, se afl[ un meniu cu aplica\iile deschise. El este reprezentat
de pictograma aplica\iei active la un moment dat. Efectu`nd un clic cu mouse-ul pe acea pictogram[, va fi
afi]at un meniu cu toate aplica\iile deschise.
Celelalte tipuri de panouri (de col\, laterale ]i mobile) se deosebesc doar prin locul unde pot fi
amplasate, în rest func\ionalitatea lor fiind aceea]i. Panourile pot fi mutate ]i redimensionate.
La fel ca toate celelalte interfe\e grafice, ]i GNOME suport[ conceptul de spa\ui de lucru
(workspace). Aceast[ tehnologie permite utilizatorului s[ foloseasc[ mai multe ecrane virtuale pe un
singur monitor. A]adar, în loc s[ apar[ toate aplica\iile deodat[ pe ecran, acestea pot fi rulate pe diferite
ecrane virtuale. Pentru a le accesa, utilizatorul trebuie doar s[ schimbe ecranul virtual curent, ecranul care
este afi]at la un moment dat pe monitor.
Set[rile GNOME destinate configur[rii interfe\ei sunt plasate @n meniul Applications,
sec\iunea Preferences. Acestea sunt accesibile ]i din Control Center, o fereastr[ similar[ cu
Control Panel din Microsoft Windows (figura 3.2).

Fig. 3.2 Fereastra Control Center

Pe lâ`ng[ set[rile legate de aspect ]i func\ionalitate, GNOME mai are un pachet de programe ce
permit setarea @n mod grafic a unor aplica\ii ]i periferice care \in de sistemul de operare ]i care, în mod
normal, ar trebui configurate din linia de comand[. Aceste programe se g[sesc acces`nd
Applications  System Settings  System Tools.
GNOME ofer[ o gam[ larg[ de aplica\ii ]i programe utilitare:
 Nautilus - program ce se ocup[ cu gestionarea fi]ierelor, fiind echivalentul Windows
Explorer;
 OpenOffice - suit[ similar[ suitei Office de la Microsoft;
 Evolution – program de po]t[ electronic[;
 Mozilla – program de navigare pe Internet;
 Xchat - program pentru IRC (Internet Real Chat) reprezent`nd alternativa GNOME la
mIRC;
 Gnome Messenger – echivalentul lui Yahoo Messenger;

2
Datorit[ multitudinii de versiuni ale GNOME (configurate de diverse firme) este posibil ca numele acestui
meniu s[ fie diferit în anumite distribu\ii.
5
 The GIMP - program pentru editarea imaginilor. Func\ioneaz[ pe acela]i principiu ca ]i
Adobe Photoshop;
 GQView - program pentru gestionarea imaginilor;
 Glade - desenator (creator) de interfe\e;
 XCDRoast - program pentru scrierea CD-urilor;
 xpdf - face posibil[ vizualizarea fi]ierelor în format PDF. Este echivalentul Acrobat
Reader;
 gedit - este echivalentul Notepad-ului din Windows;
 file-roller – este utilizat pentru arhivare, @n fapt fiind o interfa\[ pentru diferite
programe de arhivare (gzip, bz2, rar, zip, tar, lha, jar, era, lzh). Impune prezen\a
@n sistem a programelor de arhivare (cu interfa\[ în mod text);
 xsane - program folosit pentru scanarea imaginilor.

Exerci\ii

1. S[ se opreasc[ ]i s[ se reporneasc[ serverul X folosind metodele prezentate @n lucrare.


2. S[ se afi]eze con\inutul directorului /etc/rcN.d, unde N este runlevel-ul default
(cum se determin[ care este runlevel-ul default?). Care dintre link-urile din acest director este
cel care porne]te serverul X?
3. S[ se realizeze o copie de siguran\[ a fi]ierului /etc/X11/xorg.conf (copiindu-l @n
acela]i director sub un al nume)
4. S[ se configureze fi]ierul xorg.conf astfel @nc`t s[ avem o rezolu\ie de 800X600 la o
ad`ncime de culoare de 24 bi\i.
5. S[ se modifice set[rile interfe\ei grafice astfel @nc`t s[ avem:
 schema de culori pumpkin;
 fontul Courier 10 Pitch de dimensiune 10pt;
 stilul ferestrelor s[ fie Keramik;
 la Menu efect s[ fie efectul Animate;
 Taskbar-ul transparent;
 Desktop-ul va avea setat ca wallpaper imaginea Sea of Conero;
 screensaver-ul Fireworks 3D.
6. S[ se adauge o poz[ contului corespunz[tor utilizatorului logat @n sistem.

6
LUCRAREA NR. 4

Gestiunea utilizatorilor ]i grupurilor

UNIX este un sistem multiuser ]i multisesiune, utilizatorii put`nd avea deschise mai multe sesiuni
de lucru pe un acela]i calculator sau pe calculatoare diferite din re\ea.
Gestiunea utilizatorilor @n cauz[, precum ]i a grupurilor din care ace]tia fac parte, reprezint[ o
sarcin[ important[ a administratorului de sistem. Pentru @ndeplinirea acesteia UNIX-ul pune la dispozi\ie
c`teva instrumente ]i conven\ii care fac ca aceast[ sarcin[ s[ fie mai u]or de realizat. Astfel, accesul la
resursele unui sistem UNIX se realizeaz[, de regul[, prin intermediul unor conturi utilizator ce sunt setate
de c[tre administatorul de sistem, ulterior instal[rii sistemului de operare. Accesul se poate realiza ]i prin
intermediul unor conturi sistem, dintre acestea cel mai important fiind cel aferent utilizatorului root
(superuser).
Prin folosirea de conturi separate pentru fiecare utilizator, securitatea sistemului este mult mai
bine asigurat[, coresponden\a de unu-la-unu @ntre utilizatori ]i conturi f[c`nd ca activitatea de gestionare
a acestora s[ fie mai u]oar[.

Contul utilizatorului root


Este un cont creat automat la momentul instal[rii sistemului de operare UNIX. #n timp ce
majoritatea conturilor utilizatorilor sunt setate astfel @nc`t s[ se previn [ distrugerea accidental[ a
sistemelor de fi]iere, contul root nu prezint[ nici o restric\ie, accesul s[u la toate resursele sistemului,
fiind deplin. Din acest motiv, folosirea acestui cont revine numai administratorului de sistem, fiind
utilizat @n realizarea opera\iilor de configurare ]i @ntre\inere a sistemului UNIX.
Pentru prevenirea apari\iei unor incidente nedorite datorate folosirii necorespunz[toare a acestui
cont, este indicat[ crearea unor conturi asociate unor nume de utilizator, care s[ aib[ c a scop realizarea
anumitor sarcini de administrare a sistemului, sarcini ce nu necesit[ un acces deplin la resursele acestuia.
De exemplu, se poate seta un cont utilizator destinat efectu[rii copiilor de siguran \[ (backup), un altul
pentru accesul la po]ta electronic[, la Internet, etc.
Protec\ia contului utilizatorului root, dar ]i a celorlalte conturi utilizator, se realizeaz[ prin
asignarea de parole. Alegerea acestora este indicat s[ se fac[ astfel @nc`t depistarea lor de c[tre ceilal\i
utilizatori ai sistemului, s[ fie dificil[, iar schimbarea lor periodic[ se constituie @ntr-o m[sur[ de
securitate obligatorie.

Nume de utilizator implicite (standard)


A]a cum am men\ionat anterior, exist[ o serie de nume de utilizator implicite ale c[ror conturi
sunt create @n timpul procesului de instalare a sistemului de operare (@n fapt este vorba de crearea
fi]ierului /etc/passwd) (tabelul 4.1).
Tabelul 4.1
Nume utilizator standard
Nume utilizator UID GID Director home Shell
root 0 0 /root /bin/bash
bin 1 1 /bin
daemon 2 2 /sbin
adm 3 4 /var/adm
lp 4 7 /var/spool/lpd
sync 5 0 /sbin /bin/sync
shutdown 6 0 /sbin /sbin/shutdown
halt 7 0 /sbin /sbin/halt
mail 8 12 /var/spool/mail
news 9 13 /var/spool/news
uucp 10 14 /var/spool/uucp
operator 11 0 /root
games 12 100 /usr/games
gopher 13 30 /usr/lib/gopher-data
ftp 14 50 /home/ftp
nobody 99 99 /

1
Aceste nume sunt utilizate de c[tre sistemul de operare ]i administratorul de sistem, pentru
realizarea unor scopuri speciale.

Observa\ie:
Aceste nume de utilizator ]i conturile asociate nu trebuiesc modificate. #n fapt, ele sunt protejate
contra accesului neautorizat prin introducerea @n cadrul c`mpului lor de parol[ (din fi]ierul
/etc/passwd), a unui asterisc.

Fi]ierul /etc/passwd
Toate informa\iile referitore la conturile utilizatorilor sunt p[strate @n fi]ierul /etc/passwd.
Acest fi]ier se afl[ @n proprietatea utilizatorului root ]i are identificatorul grupului (GID) setat la zero.
Permisiunea de scriere este setat[ numai utilizatorului root, ceilal\i utilizatori av`nd numai permisiunea
de citire.
Con\inutul unui astfel de fi]ier, a]a cum apare el dup[ prima instalare a sistemului Linux, este
prezentat @n continuare:
root::0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
adm:*:3:4:adm:/var/adm:
lp:*:4:7:lp:/var/spool/lpd:
sync:*:5:0:sync:/sbin:/bin/sync
shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown
halt:*:7:0:halt:/sbin:/sbin/halt
mail:*:8:12:mail:/var/spool/mail:
news:*:9:13:news:/usr/lib/news:
uucp:*:10:14:uucp:/var/spool/uucppublic:
operator:*:11:0:operator:/root:/bin/bash
games:*:12:100:games:/usr/games:
gopher:*:13:30:gopher:/usr/lib/gopher-data:
ftp:*:14:50:ftp user:/home/ftp:
nobody:*:-1:100:nobody:/dev/null:
Se observ[ c[ ini\ial fi]ierul con\ine numele utilizator implicite, iar ad[ugarea ulterioar[ de noi
utilizatori, se va reflecta prin apari\ia de noi linii @n cadul fi]ierului1 :
ion:ncg3wyFNjd7dM:501:501:IonTudor:/home/ion:/bin/tcsh
stud1:hszeEDw3ioS91:502:502:MarinDan:/home/stud1:/bin/ksh
Liniile din fi]ierul /etc/passwd sunt divizate @n urm[torul format strict:
nume_utilizator:parola:UID:GID:comentariu:director_implicit:comanda_lo
gin
Fiecare linie este alc[tuit[ din c`mpuri ce sunt separate prin simbolul :. Dac[ @ntr-un c`mp nu
este nimic introdus, acesta va r[m`ne gol, iar simbolul : se va p[stra pentru a asigura c[ fiecare linie
con\ine ]apte c`mpuri. Denumirea c`mpurilor (de la st`nga la dreapta pentru fiecare linie) ]i semnifica\ia
lor, este urm[toarea:

C`mp Semnifica\ie
nume_utilizator Un identificator unic pentru utilizator
parola Parola utilizatorului (criptat[)
UID Un num[r unic care identific[ utilizatorul pentru sistemul de operare
GID Un num[r unic care identifc[ grupul la care apar\ine utilizatorul
comentariu Uzual, numele real al utilizatorului, sau o alt[ informa\ie referitoare la acesta
director_implicit Directorul @n care utilizatorii sunt plasa\i c`nd se conecteaz[ la sistem (director
home)
comanda login Comanda executat[ c`nd utilizatorul se conecteaz[, @n mod normal un shell

Descrierea detaliat[ a c`mpurilor respective este prezentat[ @n continuare.


nume_utilizator

1
Fiec[rui utilizator @i corespunde o linie.
2
Este un c`mp ce con\ine un ]ir format din opt caractere sau mai pu\in, ce identific[ @n mod unic
fiecare utilizator. #n specificarea numelui se pot folosi, pe l`ng[ litere, ]i linia de subliniere, numerele,
virgula ]i anumite caractere speciale. Deoarece cele mai multe comenzi UNIX sunt scrise cu litere mici,
conven\ia este ca numele de utilizator s[ fie ]i el scris tot cu litere mici.

parola
#n acest c`mp sistemul stocheaz[ parola criptat[ a utilizatorului. Informa\ia respectiv[ este foarte
sensibil[ la modific[ri necorespunz[toare, acestea put`nd conduce la blocarea contului utilizator c[ruia @i
este asociat[. Parola poate fi modificat[ numai de c[tre administratorul de sistem (care s-a conectat cu
numele de utilizator root), sau de c[tre utilizatorul @nsu]i. Comanda folosit[ @n acest scop este passwd.

Observa\ie:
Anumite versiuni de UNIX, datorit[ unor probleme poten\iale de securitate, nu stocheaz[ parolele
utilizatorilor @n fi]ierul /etc/passwd.

La momentul conect[rii unui utilizator la sistem, parola introdus[ de acesta se compar[ @n mod
logic cu un bloc de zero-uri, iar rezultatul este comparat cu intrarea corespunz[toare din fi]ierul de parole.
Utilizatorului @i este permis accesul numai dac[ cele dou[ informa\ii se potrivesc.
C`mpul de parol[ este folosit pentru restric\ionarea accesului la sistem. Astfel, dac[ se dore]te ca
un cont s[ nu poat[ fi folosit pentru accesarea sistemului, se plaseaz[ @n c`mpul de parol[ corespunz[tor
lui, un asterisc. #n exemplul prezentat anterior, se poate observa c[ multe conturi de utilizator standard au
un asterisc @n c`mpul de parol[, lucru ce efectiv blocheaz[ accesul.
#n situa\ia @n care acest c`mp nu con\ine nimic (este gol), la contul respectiv se permite un acces
nerestrictiv. Prin urmare, oricine poate folosi numele de utilizator respectiv pentru a i se acorda accesul
imediat, f[r[ a i se solicita introducerea unei parole.

Observa\ie:
Nu se va completa c`mpul de parol[ cu o parol[ (edit`ndu-se fi]ierul /etc/passwd)
deoarece @n acest fel, nu este posibil[ recrearea parolei criptate, iar contul utilizatorului respectiv se va
bloca.

UID
Fiecare nume de utilizator are asociat un identificator unic (UID). Acesta este folosit de c[tre
sistemul de operare UNIX pentru a identifica anumite informa\ii ce sunt asociate cu utilizatorul. Folosirea
UID @n locul numelui utilizatorului este preferabil[, deoarece cu numerele se lucreaz[
mai u]or dec`t cu caracterele, ]i @n plus ocup[ ]i mai pu\in spa\iu 2 .
Numerele UID sunt @n general asignate @ntr-un domeniu specific. Cele mai multe sisteme UNIX,
de exemplu, aloc[ numerele de la 0 la 99 pentru conturile utilizator standard, ]i numere UID de la 100 @n
sus pentru ceilal\i utilizatori. #n exemplul anterior, se poate observa c[ utilizatorul root are un UID egal
cu 0, iar conturile utilizatorilor standard au numere UID @n plaja 0 la 99. Contul utilizatorului nobody
este unul special folosit de c[tre sistemul de fi]iere NFS (Network File System) ]i posed[ un UID
egal cu -1, un num[r invalid. Asignarea numerelor UID pentru utilizatorii obi]nui\i ai sistemului, este
bine s[ se fac[ secven\ial.

GID
Identificatorul grupului, GID, este un num[r folosit pentru a p[stra urma grupului la care
utilizatorii apar\in c`nd ei se conecteaz[ la sistem (grup de startup). Numerele GID se situeaz[ @ntr-un
domeniu ce @ncepe cu 0 ].am.d., num[rul GID 100 fiind asignat grupului users ce con\ine to\i
utilizatorii neprivilegia\i ai sistemului.

comentariu
Acest c`mp este folosit de c[tre administratorul de sistem pentru ad[ugarea oric[rei informa \ii pe

2
De exemplu, sistemul de operare Linux p[streaz[ urma tuturor proceselor lansate @n execu\ie de c[tre
utilizator, folosind UID ]i nu numele acestuia.
3
care acesta o consider[ necesar[ @n identificarea utilizatorului. Tipic, aceast[ zon[ este folosit[ pentru a
introduce numele complet al utilizatorului, cu toate c[ anumi\i administratori de sisteme prefer[ s[ adauge
alte informa\ii (de exemplu numele departamentului unde lucreaz[ utilizatorul, sau num[rul de telefon al
acestuia). C`mpul respectiv mai este numit uneori ]i GECOS, dup[ denumirea primului sistem de operare
care l-a folosit.
Anumite comenzi ale sistemului de operare pot s[ foloseasc[ acest c`mp pentru a afi]a diverse
informa\ii despre utilizatori, prin urmare con\inutul s[u poate fi alterat.

directorul_implicit (home directory)


Acest c`mp specific[ directorul @n care va fi comutat utilizatorul
dup[ ce acesta s-a conectat la sistem (directorul curent). Fiecare utilizator din sistem trebuie s[ aib[
dedicat un director implicit propriu 3 , variabila de mediu HOME din cadrul fi]ierelor de startup fiind
ini\ializat[ cu aceast[ valoare. Directoarele implicite ale utilizatorilor sunt localizate @ntr-un director
comun, numit /home, ce este creat la momentul instal[rii sistemului Linux. Calea aferent[ directoarele
implicite g[site aici este de forma: /home/nume_utilizator.
Alte versiuni de UNIX folosesc ca directoare implicite directoarele /usr sau /u .

comanda_login
Reprezint[ comanda ce va fi executat[ c`nd procedura de conectare se termin[. #n cele mai multe
cazuri se lanseaz[ @n execu\ie o comand[ shell, cum este csh sau bsh, pentru a furniza utilizatorului
un interpretor de comenzi (C Shell , respectiv Bourne Shell).
Dac[ c`mpul este l[sat gol, sistemul de operare lanseaz[ ca implicit shell-ul Bourne.
Schimbarea shell-ului ce va fi lansat poate fi realizat[ cu ajutorul comenzilor chsh sau passwd –s.
Indiferent de comanda ce este folosit[, verificarea faptului c[ aceasta este permis[ se face prin c[utarea ei
@n fi]ierul /etc/shells. Numai comenzile care se afl[ @n acest fi]ier sunt permise ca ]i intr[ri valide.
Dac[ sistemul folose]te fi]ierul /etc/shells, trebuie verificat ca permisiunile de acces asupra sa ]i
proprietarul s[ fie acelea]i ca ale fi]ierului /etc/passwd, altfel un utilizator @]i va putea modifica
comanda_login.

Ad[ugarea de utilizatori
Exist[ dou[ modalit[\i @n care se pot ad[uga utilizatori la sistem. O prim[ modalitate este manual,
prin editarea fi]ierului /etc/passwd, iar o a doua, folosind un fi]ier script care la momentul
execu\iei solicit[ detaliile noului utilizator ]i scrie o nou[ linie @n cadrul fi]ierului /etc/passwd.
Modificarea fi]ierului @n cauz[ se poate face numai dac[ suntem conecta \i ca ]i root.
#nainte de a efectua orice modificare asupra fi]ierului respectiv se recomand[ realizarea unei
copii de siguran\[ a acestuia (pe dischet[).
Pentru a ad[uga o nou[ intrare @n fi]ierul /etc/passwd, se va utiliza un editor de texte care
salveaz[ informa\ia @n format ASCII. Se vor ad[uga noii utilizatori la sf`r]itul fi]ierului, folosind o linie
nou[ pentru fiecare utilizator. Se va verifica faptul c[ pentru fiecare utilizator s-au folosit nume ]i UID
unice.
Exemplu:
mihai::103:100:Mihai Ionescu:/home/mihai:/bin/sh
C`mpul aferent parolei este l[sat gol, deoarece la acest moment nu se poate introduce @n el o
parol[ criptat[. Dup[ salvarea modific[rilor efectuate asupra fi]ierului /etc/passwd, se va stabili o
parol[ pentru acest contul nou creat tast`nd comanda:
passwd nume_utilizator
Aceast[ comand[ va solicita introducerea unei parole ini\iale. Se va comunica parola
utilizatorului iar acesta o va schimba prima dat[ c`nd se va conecta (@n acest fel nici administratorul de
sistem nu va cunoa]te parola respectiv[).
Dup[ ad[ugarea liniei necesare la fi]ierul /etc/passwd, se va crea directorul implicit al
utilizatorului. Odat[ acesta creat, utilizatorul va fi declarat ca proprietar al directorului respectiv. |in`nd
cont de exmplul anterior se vor introduce comenzile urm[toare:
mkdir /home/mihai
chown mihai /home/mihai

3
#n cadrul sistemului Linux, acesta poart[ chiar numele utilizatorului.
4
To\i utilizatorii trebuie s[ apar\in[ unui grup. Dac[ sistemul are un singur grup definit, atunci se
va ad[uga numele utilizatorului @n linia din cadrul fi]ierului /etc/group care reprezint[ acel grup.
Dac[ noul utilizator trebui s[ apa\in[ mai multor grupuri, se va ad[uga numele utilizatorului @n fiecare
grup din cadrul fi]ierului /etc/group. #n final, fi]ierele de configurare pentru shell-urile
utilizatorilor vor trebui s[ fie copiate @n directorul lor implicit ]i setate pentru a le permite accesul pentru
personalizare. De exemplu, dac[ se copiaz[ fi]ierul de configurare aferent shell-ului Bourne
(.profile) de la un alt utilizator numit ion, va trebui s[ se tasteze comanda urm[toare:
cp /home/ion/.profile /home/mihai/.profile
chown mihai /home/mihai/.profile
Se va verifica fi]ierul de configurare cu ajutorul unui editor de texte, asigur`ndu-se c[ nu exist[
variabile de mediu care s[ fie setate incorect.
Pentru a preveni ca doi utilizatori diferi\i s[ editeze fi]ierul /etc/passwd @n acela]i timp, se va
folosi comanda vipw. Aceasta invoc[ editorul vi (sau orice alt editor sistem implicit care a fost setat) ]i
editeaz[ o copie temporar[ a fi]ierului /etc/passwd. Utilizarea unui fi]ier temporar ac\ioneaz[ ca un
mecanism de blocare. C`nd fi]ierul este salvat, vipw efectueaz[ o verificare simpl[ a consisten\ei
fi]ierului modificat, ]i dac[ acesta este @n regul[, se face actualizarea fi]ierului /etc/passwd.
Fi]ierele script, pentru Linux, au @n general denumirile useradd ]i adduser. C`nd sunt
executate, se va solicita introducerea de informa\ii ce sunt necesare pentru completarea fi]ierului
/etc/passwd. Va fi solicitat[ de asemenea o parol[ ini\ial[. Un avantaj al utiliz[rii acestor script-
uri, este acela c[ ele efectueaz[ o copie a tuturor fi]ierelor de configurare pentru shell-urile suportate,
automat, iar @n anumite cazuri efectueaz[ ]i modific[rile necesare asupra variabilelor de mediu.

}tergerea de utilizatori
Ca ]i @n cazul ad[ug[rii de noi utilizatori, ]tergerea acestora poate fi efectuat[ manual sau cu
ajutorul unui fi]ier script. Fi]ierele script sunt deluser ]i userdel ]i vor solicita introducerea
numelui utilizatorului ce se dore]te a fi ]ters, iar apoi intrarea aferent[ lui din cadrul fi]ierului
/etc/passwd este eliminat[. Dac[ se folose]te varianta de ]tergere manual[ a utilizatorilor, vor trebui
s[ se elimine intr[rile aferente acestora din cadrul fi]ierului /etc/passwd. Apoi se pot ]terge complet
fi]ierele ]i directorul lor implicit cu ajutorul comenzii:
rm -r -f /home/nume_utilizator
unde /home/nume_utilizator reprezint[ numele c[ii complete a directorului implicit al
utilizatorului.
Apoi se va ]terge fi]ierul spool al utilizatorului, care este localizat @n directorul
/usr/spool/mail/nume_utilizator. De exemplu pentru a elimina fi]ierul de po]t[ electronic[
al utilizatorului vasile se va tasta comada:
rm /usr/spool/mail/vasile
Pentru a completa aceast[ ]tergere, se va verifica dac[ utilizatorul nu are intr[ri @n cadrul
fi]ierului /etc/aliases. Pentru a efectua orice modific[ri @n acest fi]ier, trebuie executat[ comanda
newaliases. #n final se vor ]terge orice job-uri cron sau at (se poate afi]a fi]ierul crontab al
utilizatorului folosind comanda crontab).
Orice ]tegere a unui utilizator se poate efectua numai dac[ suntem conecta \i ca ]i root.

Observa\ii:
1. #n cazul @n care se dore]te invalidarea temporar[ a unui cont utilizator se va plasa un asterisc ca
prim caracter al parolei criptate. Nu se va altera nici un caracter al parolei existente, ci numai se va
ad[uga un asterisc @n fa\a acesteia. C`nd se dore]te reactivarea contului se va elimina asteriscul introdus
anetrior.
2. Pe l`ng[ cele dou[ modalit[\i, prezentate, de ad[ugare/]tergere a utilizatorilor, @n cadrul
sistemului Linux se poate folosi ]i utilitarul linuxconf.
3. Din cauza unor poten\iale probleme de securitate, anumite versiuni de UNIX nu p[streaz[
parolele @n fi]ierul /etc/passwd . Dac[ @n c`mpul de parol[ din cadrul tuturor liniilor ce compun acest
fi]ier, @nt`lnim caracterul x, atunci pentru stocarea parolelor este folosit un alt fi]ier, numit shadow
password file, situat @n directorul /etc/shadow, ]i care poate fi citit numai de c[tre utilizatorul
root.

5
Grupuri
Fiecare utilizator al unui sistem UNIX apar\ine unui grup. Un grup este o colec\ie de utilizatori
realizat[ @n virtutea faptului c[ membrii ei au o caracteristic[ comun[ (de exemplu, pot s[ lucreze to\i @n
cadrul aceluia]i departament, pot avea acces la un set de programe particular, pot avea acces la un
dispozitiv special cum este un scanner sau o imprimant[ laser, etc.) #n general utilizatorii ce apar\in unui
grup, au acelea]i permisiuni de acces asupra unor fi]iere ]i directoare particulare.
Utilizatorii pot apar\ine mai multor grupuri, dar la un moment dat, un utilizator poate fi membru
numai al unui grup (grup primar). Aceasta deoarece la orice moment de timp, este permis un GID per
utilizator.
Datorit[ faptului c[ grupurile pot avea setul lor de permisiuni de acces asupra unor fi]iere ]i
directoare, apartenen\a sau nu a unui utilizator la un grup anume, poate determina sau restric\iona accesul
la fi]ierele ]i directoarele respective.

Grupuri implicite (standard)


#n urma procesului de instalare a sistemului de operare UNIX sunt create mai multe grupuri
implicite (stanadard) (@n fapt este vorba de crearea fi]ierului /etc/group).
Apartenen\a la aceste grupuri (reprezentate @n tabelul 4.2) este restric\ionat[ pentru utilizatorii
obi]nui\i deoarece aceasta implic[ ob\inerea unor permisiuni de acces care sunt acelea]i cu cele ale
utilizatorului root. Ca urmare membri acestor grupuri sunt reprezenta\i de utilizatorii implici\i ai
sistemului.

Tabelul 4.2
Grupuri standard
Nume grup GID Membri
root 0 root
bin 1 root,bin,daemon
daemon 2 root,bin,daemon
sys 3 root,bin,adm
adm 4 root,adm,daemon
tty 5
disk 6 root
lp 7 daemon,lp
mem 8
kmem 9
wheel 10 root
mail 12 mail
news 13 news
uucp 14 uucp
man 15
games 20
gopher 30
dip 40
ftp 50
nobody 99
users 100
floppy 19

Informa\ia referitoare la grupuri este stocat[ @n fi]ierul /etc/group, care este similar @n format
cu fi]ierul /etc/passwd.
Un exemplu de fi]ier /etc/group implicit, de pe un sistem Linux pentru prima oar[ instalat,
este urm[torul:
root::0:root
bin::1:root,bin,daemon
daemon::2:root,bin,daemon
sys::3:root,bin,adm
adm::4:root,adm,daemon
tty::5:
disk::6:root,adm
6
lp::7:lp
mem::8:
kmem::9:
wheel::10:root
floppy::11:root
mail::12:mail
news::13:news
uucp::14:uucp
man::15:man
users::100:games
nogroup::-1:

Fiecare grup are o linie proprie @n cadrul acestui fi]ier, iar fiecare linie este compus[ din patru
c`mpuri ce sunt separate prin simbolul :. Dou[ simboluri : imediat al[turate semnific[ faptul c[ nu a fost
specificat[ o valoare anume pentru c`mpul respectiv (c`mpul este gol).
Formatul aferent fiec[rei linii din cadrul fi]ierului /etc/group este urm[torul:
nume_grup:parola_grup:GID:utilizatori
unde:
nume_grup
Este un c`mp ce con\ine un nume unic alc[tuit, @n general, din opt caractere sau mai pu \in (se
folosesc de regul[ numai caractere alfanumerice) ]i care specific[ numele grupului respectiv.

parola
Acest c`mp, de regul[, fie este liber, fie con\ine un asterisc. El poate con\ine totu]i ]i o parol[, pe
care utilizatorul trebuie s[ o introduc[ dac[ dore]te s[ se asocieze grupului. De]i nu toate versiunile de
UNIX folosesc c`mpul @n cauz[, el este p[strat din ra\iuni de compatibilitate cu versiunile mai vechi.

GID
Ca ]i @n cazul fi]ierului /etc/passwd, acest c`mp este folosit pentru a stoca un num[r ce
reprezint[ identificatorul grupului.

utilizatori
Este un c`mp ce con\ine o list[ a tuturor utilizatorilor ce apar\in acelui grup.

Ad[ugarea unui grup


Informa\ia din fi]ierul /etc/group poate fi modificat[ fie manual, folosind un editor ASCII,
fie utiliz`ndu-se fi]ierele script4 addgroup ]i groupadd.
Pentru a ad[uga manual un grup la fi]ierul /etc/group, mai @nt`i se efectueaz[ o copie de
siguran\[ a acestui fi]ier. Folosind un editor ASCII se adaug[ o linie la fi]ier pentru fiecare nou grup ce
se dore]te a fi creat. Se va avea grij[ ca sintaxa s[ fie corect[ deoarece intr[rile incorecte nu vor permite
utilizatorilor s[ devin[ membri ai grupului respectiv.
Exemplu de introducere a dou[ noi linii:
resurse::101:ion
scanner::102:mihai
Cele dou[ grupuri au GID 101 ]i 102, acestea fiind asignate (la fel ca ]i UID) secven\ial.
Utilizatorii care vor apar\ine grupurilor sunt ad[uga\i. #n exemplul anterior, din fiecare grup face parte
numai un singur utilizator.
Nu este necesar ca grupurile s[ fie ordonate dup[ numele sau GID-ul lor. De asemenea, se pot
ad[uga noi linii oriunde @n cadrul fi]ierului /etc/group. Acesta @ns[ va trebui s[ fie verificat @n ceea ce
prive]te permisiunile de acces asupra sa precum ]i identitatea proprietarului s[u. Astfel, permisiunile vor
trebui s[ previn[ ca nimeni, cu excep\ia utilizatorului root, s[ nu poat[ edita fi]ierul, iar utilizatorul
respectiv s[ fie ]i proprietar al fi]ierului.

4
Nu toate versiunile de UNIX posed[ aceste dou[ fi]iere script.
7
Ad[ugarea unui utilizator la noile grupuri
Utilizatorii pot s[ apar\in[ la mai multe grupuri, caz @n care numele lor trebuie s[ se reg[seasc[ @n
fi]ierul /etc/group @n liniile grupurilor la care ei apar\in. Fiecare nume de utilizator dintr-o astfel de
linie, este separat de alte nume de utilizator, din cadrul aceleia]i linii, printr-o virgul[. Teoretic nu exist[ o
limit[ asupra num[rului de utilizatori care pot s[ apar\in[ unui grup, dar @n practic[, lungimea liniei din
sistemul UNIX (255 de caractere) nu poate fi dep[]it[.
#n exemplul urm[tor de fi]ier /etc/group sunt specificate c`teva grupuri cu utilizatori
multipli:
student::52:ion,mihai,vasile,george
programe::53:dana,valeriu,george,alina,root
resurse::54:ion,dana,root
scanner::55:mihai,george
Numele utilizatorilor din cadrul fiec[rei linii nu trebuie s[ fie @ntr-o ordine prestabilt[.
A]a cum am men\ionat anterior, un utilizator, la momentul c`nd se conecteaz[ la sistem, poate fi
membru (apar\ine) numai al unui singur grup. Acest grup de @nceput (starting group), este dat de
c`mpul GID din cadrul fi]ierului /etc/passwd. Comutarea @ntre grupurile ale c[rui membru este
utilizatorul se poate face utiliz`nd comanda newgrp.
#n cazul @n care se dore]te schimbarea grupului la care apar\ine un fi]ier se va folosi comanda
chgrp.
Grupul trebuie s[ fie unul dintre grupurile la care apar\ine ]i proprietarul5 fi]ierului. De exemplu,
s[ presupunem c[ utilizatorul user1 este proprietarul fi]ierului test, ]i grupul c[ruia @i apar\ine fi]ierul
se nume]te student. Presupunem de asemenea c[ fi]ierul test apar\ine grupurilor ise ]i econ
(utilizatorul user1 este membru al acestor grupuri). Pentru a schimba proprietatea asupra fi]ierului de la
grupul student la grupul econ, se va tasta comanda:
chgrp econ test

}tergerea unui grup


Dac[ se decide ]tergerea unui grup, atunci linia corespunz[toare acestuia din cadrul fi]ierului
/etc/group va trebui eliminat[. Va trebui de asemenea s[ se verifice @n fi]ierul /etc/passwd
pentru a se observa dac[ exist[ vreun utilizator care are acel grup ca grup de startup, ]i dac[ da, s[ @i
fie atribuit un alt grup de startup, dintre cele la care utilizatorul este membru. Dac[ aceast[ opera\ie nu
este efectuat[, utilizatorii @n cauz[ nu vor fi capabili s[ se conecteze deoarece ei nu posed[ o afiliere la un
grup, valid[. De asemenea va trebui efectuat[ verificarea @ntregului sitem de fi]iere pentru a c[uta
fi]ierele ]i directoarele ce se afl[ @n proprietatea acelui grup, ]i s[ se schimbe pro prietatea acestora @n
favoarea altui grup. Acest lucru va preveni imposibilitatea de a accesa fi]ierele sau directoarele
respective.
Pentru efectuarea efectiv[ a ]tergerii liniilor din cadrul fi]ierului /etc/group se pot utiliza
dou[ fi]iere script numite delgroup ]i groupdel.

Exerci\ii

1. S[ se vizualizeze continutul fi]ierului /etc/passwd ]i s[ se interpreteze informa\ia afi]at[.


#n ce condi\ii se poate modifica con\inutul acestui fi]ier?
2. S[ se modifice setarea ce determin[ care este interpretorul de comenzi (shell-ul) ce se va
lansa automat @n execu\ie la @nc[rcarea sistemului de operare, astfel @nc`t acesta s[ fie tcsh.
3. S[ se vizualizeze con\inutul fi]ierului /etc/group ]i s[ se interpreteze informatia afi]at[. #n
ce condi\ii se poate modifica con\inutul acestui fi]ier?
4. S[ se adauge un nou utilizator @n sistem.
5. S[ se determine care sunt grupurile la care apar\ine utilizatorul student.
6. S[ se adauge un nou grup @n sistem.
7. Grupului c[ruia @i apar\ine utilizatorul stud1 s[ i se mai adauge un utilizator.

5
Grupul trebuie s[ fie sau grupul primar, sau unul dintre grupurile secundare ale proprietarului.
8
LUCRAREA NR. 5

Permisiunile de acces asupra fi]ierelor ]i directoarelor

Sistemul de operare UNIX este un sistem multiuser, iar permisiunile de acces asupra fi]ierelor ]i
directoarelor reprezint[ una dintre facilit[\ile de securitate ale acestui sistem.
#n fapt, este vorba de o modalitate prin care sistemul protejeaz[ fi]ierele ]i directoarele @mpotriva
oric[rui acces neautorizat, inten\ionat sau accidental.
Toate fi]ierele ]i directoarele UNIX au permisiuni de acces ]i proprietari.
La momentul cre[rii unui fi]ier sau director, utilizatorul ce le-a creat devine @n mod automat
proprietarul acestora (owner). Aceasta @nseamn[ c[ el are privilegiul de a schimba permisiunile
(specific[ cine ]i ce permisiuni are) sau poate schimba proprietarul fi]ierului (directorului)1 .
Schimbarea permisiunilor de acces sau a proprietarului are drept scop furnizarea unui acces mai
complet asupra fi]ierelor ]i directoarelor.
Schimbarea proprietarului unui fi]ier sau director se face cu comanda:
chown proprietar_nou nume_fisier
Utilizatorii (dar ]i fi]ierele ]i directoarele) apar\in grupurilor. Grupurile reprezint[ o modalitate
convenabil[ de a furniza autoriz[ri de acces mai multor utilizatori, dar nu oric[rui utilizator din sistem. La
momentul cre[rii unui utilizator, grupul implicit al acestuia este cel ce @i poart[ numele ]i care este creat
odat[ cu utilizatorul.
Comanda prin care se poate schimba grupul c[ruia @i apar\ine un fi]ier (director) este:
chgrp grup_nou nume_fisier
Proprietarul fi]ierului trebuie s[ fie membru al noului grup (grup_nou).

Observa\ie:
Grupul users este cel ce con\ine to\i utilizatorii neprivilegia\i ai sistemului.

Permisiunile de acces asupra fi]ierelor (directoarelor) acceptate de UNIX sunt:


 permisiunea de citire (r) - permite vizualizarea (citirea) con\inutului unui fi]ier. #n cazul
unui director permite afi]area con\inutul acestuia (utiliz`nd, de exemplu, comanda ls).
 permisiunea de scriere (w) - permite modificarea, ]tergerea ]i redenumirea unui fi]ier. #n
cazul unui director existen\a acestei permisuni permite actualizarea, ]tergerea ]i redenumirea
directorului.
 permisiunea de execu\ie (x) - permite executarea fi]ierului prin tastarea numelui acestuia.
Pentru directoare permite accesul (comutarea) @n directorul respectiv, ]i efectuarea de
opera\ii asupra fi]ierelor din cadrul s[u.

Observa\ii:
1. Dac[ un utilizator are permisiunea de scriere asupra unui director ce con \ine fi]iere,
permisiunile asupra fi]ierelor respectiv sunt rescrise de permisiunile pe acel direc tor.
2. Orice utilizator care are permisiunea de a citi un fi]ier poate s[ copieze acel fi]ier. C`nd un
fi]ier este copiat, copia se afl[ @n proprietatea utilizatorului care a efectuat copierea. Acesta poate s[
schimbe proprietarul ]i permisiunile, s[ editeze fi]ierul ].a.m.d.
3. }tegerea permisiunii de scriere asupra unui fi]ier nu permite ca acesta s[ fie ]ters.

Pentru a vizualiza permisiunile existente asupra unui fi]ier (director) se folose]te comanda:
ls –l nume_fisier
De exemplu, se tasteaz[:
ls –l test.txt
Se va afi]a:
-rw-rw-r--1 student student 150 Dec 19 08:08 test.txt
Interpretarea informa\iei afi]ate se face astfel:

1
Utilizatorul root are permisiunea de a citi, scrie, ]i executa orice fi]ier din sistem, indiferent cine este
proprietarul acestora.
1
Primul caracter din ]irul afi]at indic[ tipul fi]ierului. Astfel, dac[ acest caracter este - atunci este
vorba de un fi]ier normal. Dac[ caracterul este d, atunci este vorba de un director, iar dac[ caracterul este
l este vorba de o leg[tur[ simbolic[ c[tre un alt program sau fi]ier din sistem 2 .
Urm[toarele nou[ caractere din ]irul afi]at specific[, @n seturi de c`te trei, permisiunile de acces
pentru urm[toarele trei categorii diferite de entit[\i:
 proprietarul (owner) fi]ierului (directorului);
 grupul (group) (utilizatorii ce apar\in aceluia]i grup ca ]i proprietarul fi]ierului
/directorului)3 ;
 al\ii (others) (utilizatorii ]i grupurile altele dec`t proprietarul ]i cei din grupul c[ruia @i
apar\ine proprietarul).
Dac[ unul din caracterele ce specific[ permisiunile (r, w, x) va ap[rea ca fiind @nlocuit prin
caracterul -, atunci permisiunea respectiv[, pentru entitatea @n cauz[, nu va fi acordat[.
Alte informa\ii afi]ate de c[tre comanda ls –l includ: numele fi]ierului, data ]i timpul cre[rii
sale, m[rimea acestuia.

Schimbarea permisiunilor de acces asupra fi]ierelor


Pentru a schimba permisiunile de acces asupra fi]ierelor se utilizeaz[ comanda:
chmod indicator nume_fisier.
unde indicator se va @nlocui cu identitatea entit[\ii pentru care se face schimbarea de permisiune:
u utilizatorul care este proprietar al fi]ierului (owner)
g grupul c[ruia @i apar\ine utilizatorul
o al\ii (al\ii dec`t utilizatorul ]i grupul acestuia) (others)
a oricine (u, g ]i o) (everyone)
urmat[ de tipul ac\iunii ce se dore]te:
+ adaug[ o permisiune
- elimin[ o permisiune
= marcheaz[ permisiunea ca fiind singura acceptat[
]i litera (literele) aferente permisiunilor (r, w, x).

Observa\ii:
1. #n cadrul sintaxei comenzii chmod, indicator se poate @nlocui ]i cu un num[r format din
trei cifre, a c[rui codificare este explicat[ @n continuare.
2. At`t timp c`t suntem proprietar al unui fi]ier (director), sau suntem conecta\i ca utilizator
privilegiat (root), putem s[ modific[m permisiunile fi]ierului (directorului) @n orice combina\ie pentru
proprietar, grup ]i al\ii.

Exist[ dou[ modalit[\i de modificare a permisiunilor.


O prim[ modalitate este cea @n care se folosesc literele. Pentru a specifica entit[\ile pentru care se
schimb[ permisiunile, se vor tasta literele u, g, o sau a @n sintaxa comenzii chmod. Litera (literele) vor fi
urmate de unul dintre semnele +, -, sau =, pentru a ad[uga, ]terge sau marca permisiunea ca fiind singura
acceptat[ Semnul este urmat de litera permisiunii respective (r, w, x).
Exemple:
Presupunem c[ permisiunile ini\iale ale fi]ierului test.txt sunt:
-rw-rw-r--1 student student 150 Dec 19 08:08 test.txt
Conform permisiunilor afi]ate proprietarul (student) ]i grupul (student) pot citi ]i scrie @n
fi]ier. Oricine alt utilizator ce nu apar\ine grupului student poate numai s[ citeasc[ fi]ierul.
Dac[ tast[m comanda:
chmod o+rw test.txt
numai al\ii (ce nu sunt nici proprietari ]i nici nu apar\in grupului student) vor putea s[ citeasc[ ]i s[
scrie fi]ierul.
Deoarece utilizatorul student este proprietar al acestui fi]ier, el va putea @ntotdeauna s[ schimbe
permisiunile pentru a rec[p[ta accesul @n citire ]i scriere.

2
Sunt posibile ]i alte caractere. Semnifica\ia acestora este explicat[ @n lucrarea nr. 4.
3
Grupul din care face parte proprietarul.
2
Comanda ce se va tasta va fi:
chmod u+rw test.txt
cat test.txt
acesta este un test
S-a verificat ]i permisiunea @n citire cu ajutorul comenzii cat.
Pentru ]tergerea tuturor permisiunilor asupra fi]ierului test.txt pentru oricine, se va tasta
comanda:
chmod a-rw test.txt
S[ vedem dac[ fi]ierul poate fi citit:
cat test.txt
cat: test.txt: Permission denied
Mesajul de eroare returnat de sistem, Permission denied, semnific[ faptul c[ execu\ia
comenzii anterioare (cat), nu este posibil[ datorit[ lipsei permisiunii de citire necesare.
Alte exemple de set[ri ce pot fi folosite @n cadrul comenzii chmod sunt:
g+w adaug[ permisiunea de scriere pentru grup
o-rwx ]terge toate permisiunile pentru al\ii
u+x permite proprietarului fi]ierului s[ execute fi]ierul
a+rw pemite oricui s[ citeasc[ ]i s[ scrie @n fi]ier
ug+r permite proprietarului ]i grupului s[ citeasc[ fi]ierul
g=rx permite grupului numai s[ citeasc[ ]i s[ execute fi]ierul, f[r[ scriere

O a doua metod[ de modificare a permisiunilor asupra fi]ierelor este cea bazat[ pe un sistem de
codificare numeric[. Acesta permite specificarea permisiunilor asupra fi]ierelor sub forma unui num[r
din 3 cifre octale.
Este important de a @n\elege cum lucreaz[ acest sistemul de codificare, deoarece numerele @n
cauz[ sunt folosite, at`t pentru a schimba permisiunile asupra fi]ierelor, c`t ]i de c[tre mesajele de eroare
ce implic[ permisiunile.
#n cadrul unui astfel de num[r prima cifr[ codific[ permisiunile pentru proprietar, a doua pe cele
pentru grup ]i a treia pe cele pentru al\ii.
Conform sistemului de codificare respectiv, seturile de c`te trei permisiuni (rwx) pot fi
interpretate ca un num[r binar pe 3 bi\i. Astfel, o permisiune acordat[ corespunde unei cifre de 1, iar o
permisiune neacordat[ corespunde unei cifre de 0. Prin urmare pentru setul (r–x) combina\ia binar[
corespondent[ va fi 101 care @n zecimal este egal[ cu: 4+0+1=5.
Cifrele individuale sunt codificate prin @nsumarea tuturor permisiunilor, "permise" pentru acel
utilizator particular4 dup[ cum urmeaz[:
Permisiune citire 4
Permisiune scriere 2
Permisiune execu\ie 1
Sunt posibile urm[toarele combina\ii:
0 - nici o permisiune
4 - numai citire
2 - numai scriere
1 - execu\ie
6 - citire ]i scriere
5 - citire ]i execu\ie
3 - scriere ]i execu\ie
7 - toate
Prin urmare o permisiune asupra unui fi]ier, codificat[ prin num[rul 751, @nseamn[ c[
proprietarul are permisiunile r,w,x (4+2+1=7), grupul are permisiunile r ]i x (4+0+1=5) ]i al\ii au
numai permisiunea x (0+0+1=1).
Felul @n care metoda expus[ permite schimbarea permisiunilor asupra fi]ierelor se observ[ ]i din
exemplele urm[toare:
ls -l test.txt
-rw-r--r--1 student student 114 Dec 7 14:31 test.txt

4
Deci dintr-un set de trei.
3
chmod 345 test.txt
ls -l test.txt
--wxr--r-x 1 student student 114 Dec 7 14:31 test.txt
ls -l test.txt
-rw-r--r--1 student student 114 Dec 7 14:31 test.txt
chmod 664 test.txt
ls -l test.txt
-rw-rw-r-—1 student student 114 Dec 7 14:31 test.txt
Dac[ @n cadrul acestui exemplu se dore]te ca utilizatorii din grupul student s[ nu aib[
permisiunea de scriere dar s[ o aib[ pe cea de citire, asupra fi]ierului test.txt, va trebui eliminat[
permisiunea respectiv[ prin sc[derea lui 2 din cel de-al doilea set de permisiuni. Num[rul va deveni 644.
Se va tasta comanda:
chmod 644 test.txt
Pentru verificarea modific[rii se tasteaz[ comanda:
ls –l test.txt
-rw-r—r—1 student student 114 Dec 7 14:31 test.txt
Pentru a reda permisiunea de scriere grupului student asupra fi]ierului @n cauz[, se va ad[uga
valoarea 2 la cel de-al doilea set de permisiuni.
chmod 664 test.txt

Observa\ie:
Setarea permisiunilor 666 sau 777 va permite ca orice utilizator s[ poat[ citi ]i scrie @ntr-un
fi]ier sau director. Asemenea set[ri pot determina fraudarea fi]ierelor, ]i ca urmare nu sunt recomandate.

#n continuare sunt prezentate c`teva dintre cele mai obi]nuite set[ri, valori numerice, precum ]i
semnifica\ia lor:
-rw------- (600) - numai proprietarul are permisiunile r ]i w
-rw-r--r-- (644) - numai proprietarul are permisiunile r ]i w; grupul ]i al\ii pot numai s[
citeasc[
-rwx------ (700) - numai proprietarul are permisiunile r w x
-rwxr-xr-x (755) - proprietarul are permisiunile r w ]i x; grupul ]i al\ii pot numai s[
citeasc[ ]i s[ execute
-rwx--x--x (711) - proprietarul are permisiunile r w x; grupul ]i al\ii pot numai s[ execute

-rw-rw-rw- (666) - oricine poate s[ citeasc[ ]i s[ scrie @n fi]ier


-rwxrwxrwx (777) - oricine poate s[ citeasc[, s[ scrie, s[ execute.

Schimbarea permisiunilor asupra directoarelor


Se poate realiza exact @n acela]i fel ca ]i @n cazul fi]ierelor, deci tot cu ajutorul comenzii chmod.
Orice utilizator care are permisiunea de scriere @ntr-un director poate ]terge fi]iere din acel director, chiar
dac[ utilizatorul are sau nu permisiunea de scriere asupra fi]ierului.
Deoarece nu putem "executa" un director, c`nd se seteaz[ sau ]terge permisiunea de execu \ie
asupra acestuia, @n fapt se seteaz[ sau se ]terge permisiunea de a c[uta @n acel director.
De exemplu s[ tast[m:
chmod a-x aplicatii
pentru a ]terge permisiunea de execu\ie pentru to\i utilizatorii.
Iat[ ce se @nt`mpl[ c`nd se @ncearc[ folosirea comenzii cd @n directorul aplicatii:
cd aplicatii
bash:aplicatii: Permission denied
S[ restaur[m permisiunea de execu\ie pentru proprietar ]i pentru grupul acestuia:
chmod ug+x aplicatii
Acum, dac[ vom verifica cu ajutorul comenzii ls –dl se va vedea c[ numai others au
interzis accesul la directorul aplicatii.
Pentru a permite oricui de a avea acces @n citire ]i scriere asupra directorului aplicatii se va
tasta:
chmod –R a+rw aplicatii

4
Prin ad[ugarea indicatorului –R, se pot schimba permisiunile pentru @ntreaga structur[ director.
C`teva set[ri obi]nuite pentru directoare, sunt:
drwx------ (700) - numai proprietarul are permisiunile r, w, x @n acest director
drwxr-xr-x (755) - oricine poate citi directorul dar con\inutul s[u poate fi modificat numai
de c[tre proprietar

Observa\ii:
1. Modalitatea de a ob\ine acces la un fi]ier atunci c`nd nu avem permisiunile necesare, ]i f[r[ a
ne deconecta de la sistem, este de a utiliza comanda su. Acesta permite conectarea cu numele altui
utilizator ce are permisiunile necesare. Evident va trebui s[ cunoa]tem parola utilizatorului respectiv.
2. Unele versiuni de UNIX furnizeaz[ un bit suplimentar numit sticky bit ca parte a
permisiunii asupra unui director. Scopul acestui bit este de a permite numai proprietarului directorului,
proprietarului fi]ierului sau utilizatorului root s[ ]tearg[ ]i s[ redenumeasc[ fi]iere.

Permisiuni implicite
Atunci c`nd un utilizator se conecteaz[ la un sistem UNIX, @i sunt furnizate anumite permisiuni
implicite. Toate fi]ierele ]i directoarele pe care acesta le creeaz[ vor avea permisiunile definite @n umask.
Pentru a afla care sunt permisiunile definite implicit pentru un utilizator, acesta va tasta comanda:
umask
Rezultatul afi]at (masca) poate fi similar cu urm[torul:
022
umask este stocat ]i afi]at ca un num[r ce va fi sc[zut din 777. 022 @nseamn[ c[ permisiunile
implicite sunt: 777-022=755
umask-ul implicit, setat de obicei pentru to\i utilizatorii de c[tre administratorul de sistem, poate
fi modificat pentru a corespunde cerin\elor particulare ale unui utilizator. Modificarea se face de c[tre
utilizator prin executarea comenzii umask cu un argument, care reprezint[ masca pe care o dore]te.
De exemplu, dac[ dore]te ca permisiunile implicite s[ fie proprietar cu r, w, x (7); grup cu r, x
(5); ]i al\ii cu x (1), umask trebuie setat la 777-751=026. Deci se va executa comanda:
umask 026
#n general, comanda umask este folosit[ de c[tre administratorul de sistem pentru a seta valoarea
implicit[ a permisiunilor ce va fi asignat[ fiec[rui fi]ier creat de c[tre un utilizator.

setuid ]i setgid

Atunci c`nd un utilizator execut[ anumite programe, este posibil s[ fie necesar ca acesta s[ @]i
asume identitatea unui utilizator sau grup diferit.
Acest lucru este posibil prin setarea bitul SET USER ID (setuid) asupra unui fi]ier
executabil, astfel @nc`t atunci c`nd fi]ierul este executat, utilizatorul ce efectueaz[ opera\ia respectiv[ s[
@]i asume identitatea utilizatorului care este proprietarul fi]ierului @n cauz[.
De exemplu, dac[ se execut[ un fi]ier numit testprg, care se afl[ @n proprietatea utilizatorului
user1, pe durata execu\iei acestuia, utilizatorul care a ini\iat aceast[ opera\ie, @]i va asuma identitatea lui
user1.
Un alt exemplu referitor la modul @n care se folose]te bitul SET USER ID, este urm[torul.
S[ presupunem c[ se dore]te efectuarea unei copii de siguran\[ a tuturor fi]ierelor din sistem de
c[tre utilizatorul student. #n mod normal aceast[ opera\ie este efectuat[ de c[tre utilizatorul root.
Pentru ca opera\ia s[ poat[ fie efectuat[ de c[tre utilizatorul student, se va creea o copie a programului
ce permite realizarea copiei de siguran\[, cu bitul SET USER ID setat. Apoi utilizatorul student va
putea executa acest program ]i pe durata opera\iei de salvare @]i va asuma identitatea utilizatorului root.
#ntr-o manier[ similar[, dac[ bitul SET GROUP ID (setgid) al unui fi]ier executabil este
setat, executarea acelui fi]ier va avea ca efect asumarea identit[\ii grupului ce este proprietarul fi]ierului,
pe durata execu\iei acestuia.

Exerci\ii

1. #n directorul de lucru curent s[ se creeze un subdirector ]i s[ se vizualizeze permisiunile de

5
acces, interpret`ndu-se.
2. Pentru un director creat anterior de c[tre utilizatorul stud1, s[ se ]tearg[ permisiunea de
scriere aferent[ proprietarului, ]i s[ se adauge permisiunea de execu \ie pentru others. Pentru
specificarea permisiunilor se vor folosi literele.
3. Pentru un director creat anterior de c[tre utilizatorul studl, s[ se ]tearg[ permisiunea de
execu\ie aferent[ proprietarului, ]i s[ se adauge permisiunea de scriere pentru others. Pentru
specificarea permisiunilor se va folosi codificarea numeric[.
4. S[ se determine care sunt permisiunile implicite pentru utilizatorul stud1.

6
LUCRAREA NR. 6

Comenzi de baz[ pentru lucrul cu fi]iere ]i directoare

Comenzi pentru lucrul cu fi]iere

touch
Efectul utiliz[rii acestei comenzi este func\ie de existen\a sau nu, a fi]ierului ce este specificat ca
argument @n sintaxa ei. Astfel, dac[ fi]ierul nu exist[, utiliz`nd acest[ comand[ el va fi creat 1 . Dac[
fi]ierul exist[ deja, comanda touch va modifica timpul aferent ultimei modific[ri a acestuia.
Exemple:
Pentru a crea un fi]ier numit testfile @n directorul curent, se va executa urm[toarea comand[:
touch testfile
Pentru a crea fi]ierul testfile @n directorul /home/mihai/testdir, se va executa
comanda:
touch /home/mihai/testdir/tetsfile

rm
Se folose]te pentru ]tergerea unui fi]ier ]i recuperarea spa\iului pe disc ce a fost ocupat de c[tre
acesta. }tergerea are caracter permanent. Pentru a putea ]terge un fi]ier dintr-un director, nu este necesar
ca utilizatorul s[ aib[ permisiunile de citire sau de scriere asupra fi]ierului, dar este necesar s[ aib[
permisiunea de scriere asupra directorului ce con\ine fi]ierul.
#ntre indicatorii ce pot fi folosi\i cu comanda rm, se reg[sesc:
-i permite ]tergerea interactiv[ a fi]ierelor
-f permite ]tergerea fi]ierelor f[r[ ca utilizatorul s[ fie aten\ionat prin mesaje. Chiar @n cazurile
@n care fi]ierul ce se vrea a fi ]ters nu exist[, sau utilizatorul nu are permisiunea de a-l ]terge, sistemul nu
va afi]a nici un mesaj.
-r @n mod uzual comanda rm este folosit[ pentru a ]terge fi]iere, dar prin aceast indicator ea
permite ]tergerea at`t a fi]ierelor dintr-un director, c`t ]i a directorului ]i a subdirectoarelor acestuia.
Exemplu:
Dac[ se dore]te ]tergerea tuturor fi]ierelor din directorul curent, al c[ror nume @ncepe cuv`ntu l
test, se va executa comanda urm[toare:
rm test*

Observa\ie:
Utilizarea @n sintaxa comenzii rm a metacaracterelor (specificatorilor pentru nume de fi]ier
global) trebuie f[cut[ cu precau\ie deoarece odat[ ce un fi]ier a fost ]ters, el nu mai poate fi recuperat.
Pentru a preveni astfel de situa\ii este recomandat[ executarea comenzii @n mod interactiv
folosind @n acest scop @n sintaxa ei, indicatorul –i.

Dac[ nu se dore]te primirea a nici unui mesaj referitor la modul @n care s-a executat comanda rm,
se va folosi @n sintaxa acesteia indicatorul –f. Uzual comanda nu va furniza nici un mesaj chiar dac[
fi]ierul nu exist[ sau numele acestuia nu a fost tastat corect. Dac[ se execut[ comanda:
rm –f testfile
fi]ierul testfile va fi ]ters dac[ exist[, ]i nici o ac\iune nu va fi efectuat[ @n cazul @n care el nu exist[
#n ambele situa\ii utilizatorul nu va primi nici un mesaj de avertizare din partea sistemului.
Dac[ @n directorul curent exist[ un subdirector numit testdir, care la r`ndul s[u con\ine
fi]ierele testfile1 ]i testfile2, ]i se dore]te ]tergerea acestor fi]iere precum ]i a subdirectorului
ce le con\ine, se va executa comanda urm[toare:
rm –r testdir
Comanda rm proceseaz[ @ntr-o modalitate diferit[, un fi]ier legat hard.
Exemplu:

1
Utilizatorul va trebui s[ aib[ permisiunea de a scrie @n directorul ce urmeaz[ s[ con \in[ fi]ierul respectiv.
1
Presupunem c[ @n directorul curent avem un fi]ier numit testfile1. Vom executa urm[toarea
comand[ pentru a crea un fi]ier numit testfile2 care va fi legat hard la fi]ierul testfile1:
ln testfile1 testfile2
Vom ob\ine dou[ fi]iere identice: testfile1 ]i testfile2.
Execut`nd comanda:
ls –l testfile*
va fi afi]at urm[torul rezultat:
-rw-r—r-- 2 mihai student 10 Nov 3 14:28 testfile1
-rw-r—r-- 2 mihai student 10 Nov 3 14:28 testfile2
Se observ[ c[ ambele fi]iere, testfile1 ]i testfile2, arat[ num[rul de leg[turi ca fiind 2,
aceasta deoarece ele sunt legate utiliz`nd o leg[tur[ hard. Acum, dac[ ]tergem fi]ierul testfile1
utiliz`nd comanda:
rm testfile1
vor avea loc dou[ ac\iuni: va fi ]ters fi]ierul testfile1, ]i se va decrementa contorul de leg[turi al
fi]ierului testfile2 de la 2 la 1. Dac[ tast[m acum comanda ls -l, vom ob\ine urm[toarele
informa\ii:
-rw-r—r-- 1 mihai student 10 Nov 3 15:28 testfile2
Deci num[rul de leg[turi al fi]ierului testfile2 este acum 1.

mv
Aceast[ comand[ permite redenumirea unui fi]ier. Suplimentar, ea permite mutarea fi]ierelor
dintr-un director @n altul p[str`nd numele ini\ial al fi]ierului, lucru ce este echivalent cu copierea fi]ierului
din directorul surs[ @n directorul destina\ie ]i apoi ]tergerea fi]ierului din directorul surs[.
#ntre indicatorii ce pot fi folosi\i cu comanda mv, se reg[sesc:
-i permite mutarea sau redenumirea fi]ierelor, interactiv
-f permite mutarea sau redenumirea fi]ierelor f[r[ a transmite utilizatorului nici un mesaj.
Folosirea acestei op\iuni va inhiba afi]area de mesaje de avertizare, chiar @n situa\ia @n care se @ncearc[
redenumirea unui fi]ier inexistent, sau utilizatorul nu are permisiunea de a redenumi fi]ierul.
Comanda mv are dou[ argumente. Primul @l reprezint[ numele fi]ierului sau directorului surs[, ]i
al doilea @l reprezint[ numele fi]ierului sau directorului destina\ie. Comportamentul comenzii mv (mutare
sau redenumire) depinde de faptul dac[ numele fi]ierului sau directorului destina \ie exist[.
Dac[ sunt mutate fi]iere @n cadrul aceluia]i sistem de fi]iere, toate leg[turile c[tre alte fi]iere sunt
p[strate. Dar dac[ sunt mutate fi]iere @ntre sisteme de fi]iere, leg[turile nu sunt p[strate.
Exemple:
Pentru a redenumi @n directorul curent un fi]ier, se va folosi comanda:
mv fisier_sursa fisier_destinatie
Dac[ fisier_destinatie nu exist[, va fi creat un nou fisier_destinatie prin
copierea fisier_sursa @n el, iar fisier_sursa va fi ]ters.
Pentru a muta fisier_sursa din directorul curent @n directorul
/home/mihai/fis_destinatie, p[str`nd numele, se va executa una dintre urm[toarele comenzi:
mv fis_sursa /home/mihai/fis_destinatie
mv fis_sursa /home/mihai/fis_destinatie/.
Dac[ fi]ierul exist[ deja @n /home/mihai/fis_destinatie, fi]ierul existent este rescris.
Pentru a muta fis_sursa din directorul curent @n /home/mihai/fis_destinatie cu
numele de fis_destinatie, se va executa comanda:
mv fis_sursa dir_destinatie/fis_destinatie
Dac[ nu suntem siguri c[ fi]ierul fis_destinatie exist[, se va folosi indicatorul –i dup[
cum urmeaz[:
mv –i fis_sursa dir_destinatie/fis_destinatie
Dac[ fis_destinatie exist[, sistemul va afi]a un prompt cu un mesaj de confirmare pentru
mutarea fi]ierului.
Punctul, ca nume de fi]ier destina\ie indic[ faptul c[ numele fi]ierului surs[ va fi p[strat. Acest
lucru este util @n special c`nd se dore]te mutarea de fi]iere multiple @n alt director. Dac[ se dore]te s[ se
mute toate fi]ierele al c[ror nume @ncepe cu test @n directorul /home/mihai/dir_tinta, se va
executa comanda:
mv test* /home/mihai/dir_tinta/.
2
Pentru a redenumi un dir_sursa @n /home/mihai/dir_dest, se va executa comanda:
mv /home/mihai/dir_sursa /home/mihai/dir_dest
Dac[ director_dest nu exist[, directorul /home/mihai/dir_sursa este redenumit @n
/home/mihai/dir_dest.
Dac[ directorul /home/mihai/dir_dest exist[, ]i utilizatorul nu are permisiunea de scriere
@n el, toare fi]ierele ]i subdirectoarele din /home/mihai/dir_sursa sunt mutate @n
/home/mihai/dir_dest.

cp
Este o comand[ folosit[ pentru a efectua o copie a con\inutului unuia sau mai multor fi]iere surs[
ca fi]iere destina\ie specificate. Dac[ fi]ierul destina\ie exist[ deja, el va fi rescris cu con\inutul fi]ierului
surs[. Comportamentul comenzii cp variaz[ @n func\ie de faptul dac[ sursa ]i destina\ia sunt fi]iere sau
directoare.
#ntre indicatorii ce pot fi folosi\i cu comanda cp, se reg[sesc:
-p permite p[strarea datei ]i timpului modific[rii precum ]i permisiunile pentru fi]ierul surs[
-i permite executarea comenzii cp @ntr-un mod interactiv
-h pentru a urma leg[turile simbolice
-r permite copierea fi]ierelor @n directoarele specificate ]i @n subdirectoarele acestora. Trateaz[
fi]ierele speciale (cum ar fi de exemplu, fi]ierele legate), @n acela]i mod ca ]i pe cele normale.
Exemple:
Pentru a copia fisier_sursa @n fisier_destinatie @n cadrul directorului curent,
comanda are sintaxa:
cp fisier_sursa fisier_destinatie
Dac[ se dore]te copierea fisier_sursa @n directorul /home/ion/dir_dest p[str`nd
numele fi]ierului, se va executa urm[toarea comand[:
cp fisier_sursa /home/ion/dir_dest
Pentru a copia toate fi]ierele din /home/ion/dir_sursa @n directorul
/home/ion/dir_dest @n timp ce se vor p[stra numele fi]ierelor, data ]i timpul ultimei modific[ri, ]i
permisiunile, se va executa comanda urm[toare:
cp –p /home/ion/dir_sursa/* /home/ion/dir_dest
Pentru a copia toate fi]ierele @ntr-un director precum ]i subdirectoarele ]i fi]ierele @n acele
subdirectoare p[str`nd data ]i timpul ultimei modific[ri ]i permisiunile pentru toate fi]ierele ]i
subdirectoarele, se va folosi comanda:
cp –r /home/ion/dir_sursa /home/ion/dir_dest/.
Dac[ nu suntem siguri c[ fi]ierul destina\ie exist[ deja, se va folosi indicatorul –i. Ceea ce
urmeaz[ este un dialog pentru copierea fi]ierului fisier_test din directorul curent @n directorul
/home/ion/dir_test presupun`nd c[ fi]ierul fisier_test exist[ deja @n directorul
/home/ion/dir_test:
cp –i fisier_test /home/ion/dir_test/.
Rewrite /home/ion/dir_test/fisier_test? Yes

cat
Aceast[ comand[ permite concatenarea de fi]iere multiple @ntr-un singur fi]ier. Implicit, comanda
cat genereaz[ ie]iri la echipamentul de ie]ire standard (terminalul) ]i accept[ intr[ri de la echipamentul
de intrare standard (tastatura). Comanda poate con\ine ca argumente unul sau mai multe nume de fi]iere.
Fi]ierele sunt concatenate @n ordinea @n care ele apar @n sintaxa comenzii.
#ntre indicatorii ce pot fi folosi\i cu comanda cat, se reg[sesc:
-b permite eliminarea numerelor de linie de liniile goale c`nd este folosit @mpreun[ cu
indicatorul -n
-e permite afi]area unui caracter $ la sf`r]itul fiec[rei linii, c`nd este folosit @mpreun[ cu
indicatorul –v
-n permite afi]area de linii de ie]ire precedate de numere de linie, @n secven \[, @ncep`nd cu 1
-q permite eliminarea mesajului ce semnalizeaz[ situa\ia @n care comanda cat nu poate g[si
unul sau mai multe dintre fi]ierele de intrare
-v permite afi]area caracterelor netip[ribile din fi]ier ca ]i caractere tip[ribile

3
Observa\ie:
Dac[ se utilizeaz[ operatorul de redirectare a ie]irii (>) pentru a redirecta ie]irea standard a
comenzii cat, se va avea grij[ s[ nu se foloseasc[ unul dintre numele de fi]iere de intrare ca nume de
fi]ier de ie]ire. Dac[ acest lucru nu este respectat, fi]ierul de intrare va fi rescris. Unele sisteme UNIX
furnizeaz[ un mesaj de eroare @n aceast[ situa\ie, dar rescrierea fi]ierului se va face oricum.

Exemple:
Tastarea simpl[ a numelui comenzii, cat, va determina intrarea @n modul introducere. #n acest
mod utilizatorul poate introduce linii multiple de la echipamentul de intrare standard, iar @n final va tasta
combina\ia de taste <Ctrl><d> pentru a semnaliza sf`r]itul introducerii. Comanda cat va afi]a liniile
ce au fost introduse:
cat

Acesta este linia de test 1


Acesta este linia de test 1
Acesta este linia de test 2
Acesta este linia de test 2

Ctrl d

Utilizatorul trebuie s[ fie atent la faptul c[ aceast[ comand[, @n cazul anterior, nu furnizeaz[ nici
un mesaj. Dac[ se dore]te afi]area con\inutului unui fi]ier numit testfile aflat @n directorul curent, pe
ecranul terminalului, se va executa comanda:
cat testfile
Va fi generat[ ie]irea urm[toare:
Acesta este un fisier
Continutul sau este de tip text
C`nd se vizualizeaz[ un fi]ier mare, al c[rui con\inut va defila umpl`nd mai multe ecrane la
terminal, pentru a preveni situa\ia @n care se vor putea vedea numai ultimele c`teva linii ale acestuia, se va
folosi comanda:
cat testfile|more
Concatenarea de fi]iere multiple, pentru afi]area pe terminal, se va face utiliz`nd comanda:
cat testfile1 testfile2 testfile3
Este posibil ca rezultatul concaten[rii anterioare s[ se fac[ @n cadrul unui alt fi]ier numit, de
exemplu, testfile. Pentru aceasta se va utiliza operatorul de redirectare > dup[ cum urmeaz[:
cat testfile1 testfile2 testfile3>testfile
Dac[ fi]ierul testfile exist[ deja, el va fi rescris cu fi]ierele concatenate testfile1,
testfile2, testfile3. Dac[ fi]ierul testfile exist[ deja ]i se dore]te efectuarea concaten[rii la
sf`r]itul s[u, @n loc de a utiliza operatorul de redirectare >, se va utiliza operatorul >>, dup[ cum
urmeaz[:
cat testfile1 testfile2 testfile3>>testfile
Dac[ se @ncearc[ concatenarea unuia sau mai multor fi]iere ]i unul sau mai multe dintre acestea
nu exist[, cat va concatena toate fi]ierele disponibile, ]i la sf`r]itul opera\iei, va genera un mesaj
referitor la fi]ierele inexistente.
#n situa\ia @n care se dore]te s[ se concateneze dou[ fi]iere, testfile1 ]i testfile2 @n
fi]ierul testfile din directorul curent, ]i s-a tastat gre]it numele fi]ierului testfile2 ca
testtile2 c`nd se execut[ comanda:
cat testfile1 testtile2>testfile
utilizatorul va primi un mesaj similar cu urm[torul, ]i testfile va avea numai con\inutul lui
testfile1:
cat: cannot open testtile2
Inhibarea recep\ion[rii mesajelor de eroare se face folosind, @n sintaxa comenzii, indicatorul –q.
Dac[ @n directorul curent exist[ fi]ierul testfile ce are urm[toarele linii (ultima linie con\ine
caractere speciale), cat testfile va afi]a:
Acesta este un fisier de test
El nu contine nimic special

4
Acest fisier este un demo
^F^F^F^F^F
Dac[ se execut[ comanda cat cu indicatorul –n, ea va afi]a linii cu numere de linie, dar ultima
linia cu caractere speciale va fi afi]at[ ca o linie goal[:
cat –n testfile

1 Acesta este un fisier de test


2
3 El nu contine nimic special
4
5 Acest fisier este un demo
6
Pentru a verifica faptul c[ liniile goale afi]ate anterior nu con\in alte caractere dec`t cele
netip[ribile, se va folosi @n sintaxa comenzii cat indicatorul –v. Caracterele netip[ribile vor fi afi]ate ca
]i caractere tip[ribile, dup[ cum urmez[:
cat –v testfile

Acesta este un fisier de test


El nu contine nimic special
Acest fisier este un demo
^F^F^F^F^F

file
Aceast[ comand[ este folosit[ pentru a determina tipul unui fi]ier specificat. #n acest scop
comanda cite]te fi]ierul ]i efectueaz[ o serie de teste pentru a determina natura con\inutului acestuia.
Rezultatele testelor sunt afi]ate la echipamentul de ie]ire standard.
Dac[ fi]ierul pare ca fiind un fi]ier ASCII, comanda file examineaz[ primii 512 octe\i ai
acestuia ]i @ncearc[ s[ determine limba @n care acesta a fost scris. Dac[ fi]ierul nu pare ca fiind ASCII,
comanda efectueaz[ test[ri suplimentare pentru a distinge dac[ este vorba de un fi]ier binar sau de un
fi]ier text ce con\ine caractere extinse.
De exemplu, dac[ @n directorul curent exist[ un fi]ier numit test ]i el con\ine un text ASCII,
execut`nd comanda:
file test
va fi afi]at urm[torul rezultat:
test: commends text
Dac[ @ns[ fi]ierul respectiv este unul binar (deci fi]ier executabil), ]i se lucreaz[ pe un calculator
IBM RISC 6000 ce ruleaz[ sub verisunea de UNIX AIX V3.1, execut`nd comanda:
file test
va fi afi]at urm[torul rezultat:
test: executable (RISC System/6000 V3.1)
Se observ[ c[ @n acest caz, este afi]at[ ]i versiunea sistemului UNIX sub care ruleaz[ calculatorul
respectiv.
Dac[ directorul curent este /dev, ce con\ine toate fi]ierele speciale, ]i se execut[ comanda:
file hd1
pentru fi]ierul numit hd1 (ce corespunde unui disc hard pe care a fost definit un sistem de fi]iere) se va
afi]a urm[torul rezultat:
hd1: block special

rcp
Este o comand[ utilizat[ pentru a copia sau muta fi]iere situate pe acela]i calculator (local
host) sau pe calculatoare diferite, la distan\[ (remote host).
Numele fi]ierului de pe calculatorul la distan\[ este precedat de c[tre identificatorul acestui
calculator (numele s[u):
nume_calculator:/nume_director/nume_fisier
Este de asemenea posibil de a specifica numele utilizatorului de pe calculatorul la distan \[, sub
forma:
nume_utilizator@nume_calculator:/nume_director/nume_fisier
5
unde nume_utilizator este op\ional. Dac[ acesta nu este specificat, el va fi acela]i cu cel al
utilizatorului de pe calculatorul local.
De asemenea, dac[ nici fi]ierul surs[ ]i nici cel destina\ie nu specific[ numele calculatorului
gazd[, comanda rcp se comport[ similar cu comanda cp.
#n cazul @n care numele fi]ierului de pe calculatorul la distan \[ nu este specificat complet,
@ncep`nd cu directorul r[d[cin[, se presupune c[ numele s[u @ncepe cu directorul home al utilizatorului la
distan\[.
Dac[ fi]ierele nu exist[ deja pe calculatorul la distan\[, ele sunt create cu permisiunile implicite
ale utilizatorului la distan\[. Dac[ fi]ierele exist[ deja pe calculatorul la distan\[, permisiunile fi]ierelor
\int[ sunt p[strate. Ca ]i comanda cp, comanda rcp poate fi utilizat[ numai pentru a copia fi]iere ]i
directoare @n cadrul directoarelor.
C`\iva dintre indicatorii utiliza\i cu aceast[ comand[ sunt:
-p pentru a crea fi]ierul \int[ (destina\ie), p[str`nd data modific[rii, timpul ]i permisiunile
fi]ierului surs[
-r pentru a copia fi]ierele @n mod recursiv @n timp ce copiem directoare

Observa\ie:
Pentru a putea utiliza comanda rcp @n transferul de fi]iere de la/la un calculator la distan\[, este
necesar s[ avem numele calculatorului local definit @n fi]ierul /etc/hosts.equiv de pe calculatorul
la distan\[, sau ca numele calculatorului local ]i numele utilizatorului s[ fie definite @n fi]ierul .rhosts
din directorul home al utilizatorului de pe calculatorul la distan\[.

Exemplu:
Dac[ dorim s[ copiem fi]ierul testfile din directorul curent @n fi]ierul testfile din
directorul testdir din directorul home de pe calculatorul la distan\[, se va executa comanda:
rcp testfile home:testdir/testfile
Dac[ numele utilizatorului pe calculatorul local este testuser, aceast[ comand[ va presupune
c[ numele utilizatorului pe calculatorul la distan\[ este tot testuser. Dac[ numele testuser nu
exist[ pe calculatorul la distan\[ ]i trebuie s[ utiliz[m numele utilizator newuser pe calculatorul la
distan\[, vom executa comanda:
rcp testfile newuser@home:testdir/test file
Dac[ trebuie s[ transfer[m fi]ierul testfile de pe un calculator la distan\[ gazda_1 pe un alt
calculator la distan\[, gazda_2, ]i dorim s[ p[str[m data modific[rii, timpul ]i permisiunea, vom
executa comanda:
rcp -p testuser1@gazda_1:testfile testuser2@gazda_2:testfile
Ea va copia fi]ierul testfile din directorul home al utilizatorului testuser1 de pe
calculatorul la distan\[ gazda_1 @n fi]ierul testfile din directorul home al utilizatorului
testuser2 de pe calculatorul la distan\[ gazda_2.
Dac[ dorim s[ copiem toare fi]ierele din directorul /u/testuser/testdir de pe
calculatorul la distan\[ gazda_3 @n directorul curent de pe calculatorul local, vom executa comanda:
rcp testuser@gazda_3:/u/testuser/testdir/*
Aceasta nu va copia nici un subdirector pe care @l avem @n testdir sau orice fi]iere din acele
subdirectoare. Pentru a copia toate subdirectoarele ]i fi]ierele @n acele subdirectoare, vom folosi comanda:
rcp -r testuser@gazda_3:/u/testuser/testdir/*

find
Atunci c`nd un utilizator lucreaz[ @n acela]i timp, la proiecte multiple, este posibil ca acesta s[ nu
@]i aminteasc[ detalii referitoare la anumite dintre fi]ierele sale. #n acest caz, comanda find @l va ajuta s[
g[seasc[ numele unui fi]ier sau director, cu caracteristicile specificate.
Forma de baz[ a acestei comenzi este:
find . -print
Exist[ un num[r de argumente ce pot fi specificate @n cadrul sintaxei comenzii find, pentru
diferite atribute ale fi]ierelor ]i directoarelor. C`teva exemple dintre acestea sunt:
-name nume_fi]ier - caut[ fi]iere cu numele specificat. Dac[ se utilizeaz[ caractere pentru nume
de fi]ier global (wildcards), atunci nume_fi]ier trebuie introdus @ntre ghilimele. De exemplu, dac[ se
introduce ca nume_fi]ier, "test*", vor fi c[utate toate fi]ierele al c[ror nume @ncepe cu test. Dac[ se
6
specific[ "test[1-2]", vor fi c[utate fi]ierele al c[ror nume @ncepe cu test ]i au 1 sau 2 ca ultim
caracter (de exemplu test1 ]i test2).
-modify data - caut[ fi]ierele care au fost modificate @n data specificat[
-acces data - localizeaz[ fi]ierele care au fost accesate @n data specificat[
-perm permisiuni - caut[ fi]ierele ce au setate permisiunile specificate. Dac[ permisiunile
specificate nu sunt precedate de c[tre caracterul -, se va realiza o c[utare a fi]ierelor ale c[ror permisiuni
se potrivesc exact cu cele specificate. Dac[ se folose]te caracterul - @naintea permisiunilor specificate, se
va realiza opera\ia logic[ AND @ntre permisiunile fi]ierelor ]i permisiunile specificate. De exemplu, dac[
se dore]te g[sirea fi]ierelor al c[ror proprietar are permisiunea de citire se va utiliza: -perm -400.
-user nume_utilizator - caut[ fi]ierele al c[ror proprietar este cel specificat
-group nume_grup - caut[ fi]ierele care se afl[ @n proprietatea grupului specificat
-size num[r - caut[ fi]ierele cu m[rimea specificat[ prin num[r. M[rimea este specificat[ @n
blocuri. Pentru a c[uta fi]iere a c[ror m[rime este specificat[ @n octe\i, dup[ num[r se va pune litera c.
-type tip_fi]ier - caut[ fi]ierele de un anumit tip. Tipurile ce pot fi utilizate sunt:
b - fi]ier de dispozitiv bloc
c - fi]ier de dispozitiv caracter
d - director
f - fi]ier obi]nuit
l - leg[tur[ simbolic[
p - conduct[ cu nume (FIFO)
s - socket
Utiliz`nd comanda find este posibil a c[uta fi]iere ]i directoare care @ndeplinesc sau nu, condi\ii
multiple. De exemplu:
condi\ie -a condi\ie - pentru a avea condi\ii multiple cu func\ia logic[ AND @ntre ele
condi\ie -o condi\ie - pentru a avea condi\ii multiple cu func\ia logic[ OR @ntre ele
! condi\ie - pentru a nega o condi\ie
Suplimentar, comanda find posed[ un grup de argumente folosit pentru a specifica ac\iunea
care trebuie @ntreprins[ asupra fi]ierelor sau directoarelor care sunt g[site. De exemplu:
-print - afi]eaz[ numele fi]ierelor la ie]irea standard
-exec nume_comand[ - execut[ comanda specificat[

Observa\ie:
#ntotdeauna se va utiliza @n sintaxa comenzii find, op\iunea -print. Dac[ aceast[ op\iune nu
este utilizat[, comanda find se va executa dar nu va genera nici o ie]ire.

ls
Comanda poate fi utilizat[ pentru afi]area de diverse informa\ii (atribute) referitoare la unul sau
mai multe fi]iere sau directoare din cadrul sistemului. Pentru a putea utiliza comanda ls @n cadrul unui
director, utilizatorul trebuie s[ posede permisiunea de citire asupra acestuia. Implicit, lista fi]ierelor din
cadrul unui director este ordonat[ dup[ numele lor. Aceast[ ordine poate fi modificat[.
Comanda ls posed[ un num[r mare de indicatori, c`\iva dintre ace]tia fiind:
-l afi]eaz[ urm[toarele informa\ii despre fi]iere (de la st`nga la dreapta):
 tipul fi]ierului
 pemisiunile asupra fi]ierului
 num[rul de leg[turi
 proprietarul
 grup c[ruia @i apar\ine proprietarul
 m[rimea fi]ierului ]i data c`nd acesta a fost modificat
 numele fi]ierului
Valorile pentru tipul fi]ierului sunt:
- intrarea este un fi]ier obi]nuit
d intrarea este un director
b intrarea este un fi]ier de dispozitiv bloc
c intrarea este un fi]ier de dispozitiv caracter
l intrarea este o leg[tur[ simbolic[
7
p intrarea este un fi]ier FIFO (conduct[ cu nume)
s intrarea este un socket local
Exemplu:
Presupunem c[, @n directorul curent, execut[m comanda:
ls -l
Informa\iile afi]ate pot fi similare cu urm[toarele:
-rwxrwxrwx 1 stud1 ise 716 May 8 15:35 exemplu.c
drwxrwxrwx 3 stud1 ise 1536 Oct 19 00:54 exe
-rw-r--r-- 2 stud1 ise 10 Nov 3 14:28 file1
-rw-r--r-- 2 stud1 ise 10 Nov 3 14:28 file2
-a afi]eaz[ con\inutul unui director inclusiv fi]ierele ascunse (fi]iere al c[ror nume @ncepe cu
caracterul .)
-d restric\ioneaz[ afi]area informa\iilor numai la directorul specificat
-F afi]eaz[ caractere speciale @naintea fiec[rui fi]ier @n func\ie de tipul acestuia:
/ dup[ fiecare director
*dac[ fi]ierul este unul executabil
= dac[ fi]ierul este un socket
| dac[ fi]ierul este o conduct[ cu nume (FIFO)
@ dac[ fi]ierul este o leg[tur[ simbolic[
-n afi]eaz[ urm[toarea informa\ie pentru fi]ierele sau directoarele specificate:
 tipul fi]ierului
 permisiunile
 num[rul de leg[turi
 identificatorul proprietarului (owner id)
 identificatorul grupului (group id)
 m[rimea (@n octe\i)
 data la care s-a efectuat ultima modificare
-R afi]eaz[ recursiv toate subdirectoarele directorului specificat

Comenzi pentru lucrul cu directoare

mkdir
Permite crearea de directoare, @n cadrul sintaxei acestei comenzi put`ndu -se specifica ca
argumente nume multiple de directoare.
Pentru a crea un director, utilizatorul trebuie s[ aib[ permisiunea de scriere @n directorul p[rinte
@n care se dore]te a se crea directorul, iar directorul p[rinte trebuie s[ existe. Multe sisteme UNIX
furnizeaz[ pentru comanda mkdir un indicator –p, astfel @nc`t directorul p[rinte este de asemenea creat
dac[ el nu exist[. Permisiunile asupra noului director vor fi date de set[rile curente ale acestora (comanda
umask).
#ntre indicatorii ce pot fi folosi\i cu comanda mkdir, se reg[sesc:
-p permite crearea tuturor directoarelor ce au fost specificate ca argumente @n sintaxa comenzii,
dac[ acestea nu exist[
-m permite specificarea permisiunilor de acces pentru directorul ce va fi creat
De exemplu, dac[ directorul curent este /home/mihai, execut`nd comanda:
mkdir temp
se va crea un director numit temp @n directorul /home/mihai, a c[rui cale absolut[ este
/home/mihai/temp.
Comanda mkdir /home/mihai/temp va avea acela]i efect ca ]i comanda anterioar[.
Pentru crearea directorului /home/temp se poate folosi ]i comanda mkdir ../temp. S-a
folosit .. ca parte a numelui de cale relativ[ pentru a indica faptul c[ directorul temp va fi creat @n
directorul cu un nivel mai sus, /home.
Pentru a crea directoarele testdir1 ]i testdir2, se va folosi comanda:
mkdir testdir1 /home/mihai/temp/testdir2

8
Aceasta va crea testdir1 @n directorul curent ]i testdir2 @n /home/mihai/temp (presupun`nd
c[ exist[). #n acest exemplu, testdir1 folose]te un nume de cale relativ[ @n timp ce
/home/mihai/temp/testdir2 folose]te o cale absolut[.
Dac[ directorul testdir este deja prezent ]i se @ncearc[ crearea lui @nc[ o dat[, sistemul va
genera un mesaj similar cu urm[torul:
mkdir: cannot create testdir.
testdir: File exists
Pentru ca simultan cu crearea unui director (de exemplu, testdir) @n directorul curent s[ se
acorde asupra acestuia ]i permisiunile 770, se va executa comanda:
mkdir –m 770 testdir
Pentru a crea @n directorul curent un subdirector testdir, ]i @n acesta un subdirector temp,
simultan folosind o singur[ comand[, se va executa:
mkdir –p testdir/temp

rmdir
Se folose]te pentru ]tergerea de directoare. Un director poate fi ]ters numai dac[ acesta este gol,
adic[ toate fi]ierele ]i subdirectoarele din el au fost ]terse @n prealabil. #n cadrul sintaxei comenzii rmdir
se pot specifica ca argumente nume multiple de directoare. Pentru a putea ]terge un director, utilizatorul
trebuie s[ aib[ permisiunea de scriere @n directorul p[rinte al acestuia. Urm[torul indicator poate fi folosit
@n cadrul sintaxei comenzii rmdir:
-p permite ]tergerea tuturor directoarelor din calea specificat[.
De exmplu, dac[ directorul curent este /home/mihai ]i con\ine subdirectorul temp, pentru a
]terge temp se va folosi comanda:
rmdir temp
Dac[ directorul temp nu este gol, se va ob\ine un mesaj similar cu urm[torul:
rmdir: Directory temp is not empty.
Presupunem c[ suntem @n directorul /home/mihai ]i acesta con\ine un subdirector testdir
iar acesta la r`ndul s[u con\ine un subdirector numit temp. Pentru a ]terge directorul testdir din
directorul curent ]i subdirectorul temp din testdir, se va executa comanda urm[toare (presupun`nd
c[ toate fi]ierele ]i directoarele din ele au fost ]terse):
rmdir –p testdir/temp

Utilitarul Midnight Commander

Midnight Commander este o "clon[" a programului Norton Commander, folosit pentru


gestionarea fi]ierelor ]i directoarelor, dar ce poate fi utilizat ]i pentru transferuri prin ftp sau c[utarea
unui fi]ier pe disc. Asigur`nd o interfa\[ bazat[ pe meniuri, Midnight Commander, se lanseaz[ @n
execu\ie cu comanda mc (figura 6.1). Se observ[ c[ pe ecran apar 2 panouri ce reprezint[ con \inutul a
dou[ directoare. Comutarea @ntre panouri se realizeaz[ cu ajutorul tastei <Tab>.

Fig. 6.1 Ecranul Midnight Commander

9
Accesarea meniului se realizeaz[ cu ajutorul tastei <F9> ]i a tastelor s[ge\i. Ob\inerea help-ului
se face ap[s`nd tasta F1.
Utilitarul permite realizarea mai multor opera\ii cu fi]ierele ]i directoarele existente pe disc. #ntre
acestea se reg[sesc:
- vizualizarea con\inutului unui fi]ier – fi]ierele al c[ror con\inut poate fi vizualizat sunt de tip
text, html ]i arhiv[. Vizualizarea se realizeaz[ prin pozi\ionarea cursorului pe fi]ierul dorit ]i
ap[sarea tastei <F3>. Ie]rea din modul vizualizare se face ap[s`nd tasta <Esc> sau tasta
<F10>;
- editarea unui fi]ier (text) - Midnight Commander are @ncorporat un editor astfel @nc`t
pozi\ion`nd cursorul pe fi]ierul text ce se vrea a fi editat, ]i ap[s`nd tasta <F4> con\inutul
acestuia se poate modifica;
- crearea unui director – ap[s`nd tasta <F7> se poate crea un director nou @n directorul curent.
Crearea directorului @ntr-o alt[ loca\ie impune schimbarea directorului curent. Ap[s`nd apoi
tasta <F7> se lanseaz[ un dialog @n care utilizatorul va specifica numele noului director. #n
final se apas[ tasta <Enter> (figura 6.2):

Fig. 6.2 Crearea unui director

- copierea fi]ierelor ]i directoarelor - @n acest caz este necesar[ folosirea ambelor panouri:
unul reprezint[ fi]ierul sau directorul surs[, iar cel[lalt directorul destina\ie. Pentru copiere se
pozi\ioneaz[ cursorul pe fi]ierul (directorul) ce se dore]te a fi copiat. Daca se dore]te
copierea mai multor fi]iere, acestea se selecteaz[ cu ajutorul tastei <Insert>. Ca urmare a
select[rii numele fi]ierelor va ap[rea colorat @n galben. Se apas[ tasta <F5>. Pe ecran va
apare o caset[ de dialog @n care cere confirmarea copierii. Dup[ confirmare, prin ap[sarea
tastei <Enter>, @n panoul corespunz[tor directorului destina\ie va ap[rea fi]ierul copiat
(figura 6.3):

Fig. 6.3 Copierea fi]ierelor

10
- mutarea fi]ierelor ]i directoarelor - este asem[n[toare cu copierea, cu deosebirea c[ se
folose]te tasta <F6>. Aceast[ opera\ie poate fi utilizat[ ]i pentru redenumirea fi]ierelor, prin
completare @n caseta de dialog a noului nume (figura 6.4):

Fig. 6.4 Mutarea fi]ierelor

- ]tergerea fi]ierelor ]i directoarelor - se pozi\ioneaz[ cursorul pe fi]ierul (directorul) dorit. #n


cazul ]tergerii mai multor fi]iere acestea se selecteaz[ folosind tasta <Insert>. Se apas[
tasta <F8>, iar apoi se confirma ]tergerea cu ajutorul tastei <Enter> (figura 6.5):

Fig. 6.5 }tergerea fi]ierelor

- schimbarea permisiunilor asupra fi]ierelor ]i directoarelor – dup[ ce se pozi\ioneaz[


cursorul pe fi]ierul c[ruia i se dore]te schimbarea permisiunilor, se utilizeaz[ combina \ia de
taste <Ctrl><X>, ap[sate simultan. Se elibereaz[ aceste taste ]i se apas[ imediat tasta <C>.
Pe ecran apare o caset[ de dialog @n care se pot modifica permisiunile. La final se apas[
butonul <Set> (figura 6.6):

Fig. 6.6 Schimbarea permisiunilor


11
- c[utarea unui fi]ier – folosind tasta <F9> se acceseaz[ meniul iar din submeniul
<Command> se selecteaz[ op\iunea <Find file>. #n caseta de dialog ce apare se specific[
de unde va @ncepe c[utarea ]i ce fi]iere s[ se caute.
- vizualizarea fi]ierelor arhivate – se apas[ tasta <Enter> atunci c`nd cursorul este
pozi\ionat pe fi]ierul arhiv[.
- copierea fi]ierelor prin ftp – se deschide meniul cu tasta <F9>, ]i din submeniul Left sau
Right se alege comanda FTP link. #n caseta de dialog ce apare se introduc informa\ile
necesare stabilirii conexiunii ftp. Odat[ aceasta stabilit[, @ntr-unul din panouri se vor vedea
directoarele din calculatorul accesat prin re\ea. Sunt posibile toate opera\iile iar
copierea/mutarea fi]ierelor se face @ntre calculatoare (figura 6.7):

Fig. 6.7 Utilizarea ftp

Exerci\ii

1. S[ se ]tearg[, cu o singur[ comand[, directoarele din urm[toarea cale:


/testdir/mihai/ion.
2. S[ se creeze @n directorul test1 dou[ fi]iere fisier1 ]i fisier2 ]i un subdirector
test1. Folosind o singur[ comand[, @n mod interactiv, s[ se ]tearg[ toate acestea.
3. S[ se copieze, folosind o singur[ comand[, fi]ierul file1 din directorul curent, @n directorul
director1 ]i @n subdirectoarele subdir11 ]i subdir12 ale acestuia, p[str`ndu-se data ]i timpul
cre[rii fi]ierului precum ]i permisiunile sale de acces.
4. S[ se concateneze dou[ fi]iere existente @n directorul curent, @ntr-un al treilea la sf`r]itul
acestuia.
5. S[ se creeze un director numit test ]i s[ i se asigneze urm[toarele permisiuni de acces: citire,
scriere ]i execu\ie pentru proprietar, scriere pentru grup, ]i citire, scriere pentru others. Totul se va
realiza cu o singur[ comand[.

12
LUCRAREA NR. 8

Sistemul de fi]iere al UNIX

Un sistem de fi]iere reprezint[ modul de organizare ]i exploatare a informa\iilor stocate pe un


suport de memorie extern[ @n vederea acces[rii ]i prelucr[rii lor de c[tre sistemul de operare.
Orice sistem de operare trebuie s[ aib[ propriu s[u sistem de fi]iere, de aceea exist[ mai multe
tipuri de astfel de sisteme, ]i anume:
- sistemul FAT - pentru MS-DOS
- sistemul VFAT32 - pentru Windows95 OSR2
- sistemul NTFS - pentru Windows NT
- sistemul ext2fs - pentru Linux
Din punctul de vedere al utilizatorului, sistemele de fi]iere prezint[ o organizare bazat[ pe
conceptele de fi]ier ]i director.
Fi]ierele sunt entit[\i care @ncapsuleaz[ informa\ia de un anumit tip, iar directoarele grupeaz[ @n
interiorul lor fi]iere ]i alte directoare.
Deci sistemul de fi]iere are o organizare ierarhic[, fi]ierele fiind grupate @n directoare care sunt
structurate pe mai multe niveluri @ntr-o structur[ arborescent[. Directorul de nivel cel mai @nalt, din cadrul
acestei arborescen\e, se nume]te director r[d[cin[, ]i este simbolizat prin caracterul /.
Orice fi]ier sau director poate fi identificat prin numele s[u indicat ca nume de cale, fie @n mod
absolut, fa\[ de directorul r[d[cin[, fie @n mod relativ, fa\[ de directorul curent.

Observa\ie:
Sistemul de operare UNIX impune restric\ia ca un singur fi]ier s[ nu poat[ s[ se @ntind[ peste mai
mult de un sistem de fi]iere, dar un sistem de fi]iere poate avea mai mult de un fi]ier @n cadrul s[u.

Parti\ii
Un sistem de fi]iere este @n general creat pe hard disc. Sub sistemul de operare UNIX este
posibil[ instalarea mai multor sisteme de fi]iere, fiecare dintre acestea fiind plasat @ntr-o zon[ proprie pe
hard disc. Aceste zone @n care este subdivizat hard discul se numesc parti\ii1 .
La nivel utilizator, fiecare parti\ie se comport[ ca un disc de sine st[t[tor memor`nd un sistem de
fi]iere. Informa\ia referitoare la parti\ii se memoreaz[ la @nceputul discului, @n a]a-numita tabel[ de
parti\ii. Aceasta con\ine 4 intr[ri (c`te una pentru fiecare parti\ie posibil[) @n care sunt memorate
pozi\iile, dimensiunile ]i tipurile parti\iilor de pe disc. Cele 4 parti\ii se numesc parti\ii primare, fiind
posibil ca @n interiorul oric[reia dintre ele s[ se creeze c`te o nou[ tabel[ de parti\ii, referind parti\ii care
fizic se afl[ @n interiorul parti\iei curente ]i care se numesc parti\ii extinse.
Sistemul de operare UNIX necesit[ prezen\a a cel pu\in o parti\ie. Parti\ia necesar[ men\ionat[
anterior se nume]te parti\ie root. #n cadrul ei rezid[ software-ul de sistem ]i fi]ierele de configurare.
Deoarece parti\ia root nu are menirea de a p[stra datele utilizatorilor, este necesar[ crearea de parti\ii
separate pentru directoarele home ale utilizatorilor, pentru fi]ierele temporare, ].a.
#n UNIX, echipamentelor periferice le sunt asociate fi]iere de dispozitiv, ceea ce permite
utilizarea ]i @n cazul acestora, a comenzilor ce sunt folosite pentru fi]ierele obi]nuite. Acest lucru este
valabil ]i pentru hard discuri. Ca urmare, perntru identificarea lor se folose]te urm[toarea schem[, ce este
func\ie de tipul unit[\ii de control la care s-a conectat hard discul.
Astfel, sub sistemul Linux, hard discurile conectat la o unitate de control IDE, sunt denumite:
/dev/hd[unitate_hard_disc]
Fiecare unitate de hard disc IDE este identificat[ printr-o liter[. Astfel, discul master (primul)
din cadrul primei unit[\i de control este a, cel de-al doilea disc (slave) din cadrul aceleia]i unit[\i de
control este b. Primul disc ata]at celei de a doua unit[\i de control este c, ].a.m.d.
Pentru a referi parti\iile create pe astfel de hard discuri, se utilizeaz[ numere de ordine. De
exemplu, cea de a treia parti\ie a unit[\ii de hard disc slave de pe prima unitatea de control este referit[:
/dev/hdb3.

1
Fiecare parti\ie este o mul\ime continu[ de blocuri. Un bloc este format dintr-un sigur sector (cum este
cazul la dischete) sau din mai multe sectoare (cazul hard discurilor).
1
Unit[\ile de hard disc conectate unei unit[\i de control SCSI folosesc aceea]i schem[ de
identificare, cu excep\ia c[ @n loc s[ utilizeze drept prefix construc\ia /dev/hd, folosesc /dev/sd,
urmat[ de litera corespunz[toare. Referirea parti\iilor este similar[.
Astfel, c`nd ne referim la a doua parti\ie de pe primul hard disc ata]at unei unit[\i de control
SCSI, vom folosi specifica\ia: /dev/sda2. Atunci c`nd dorim s[ ne referim la @ntregul disc, vom
specifica toat[ informa\ia cu excep\ia num[rului asociat parti\iei. De exemplu, pentru a ne referi la
@ntregul disc master conectat pe prima unitatea de control SCSI, vom utiliza specifica\ia: /dev/sda.
#n cele dou[ scheme de identificare anterioare, /dev este numele directorului apar\in`nd
arborescen\ei standard UNIX, ce con\ine fi]ierele de dispozitiv asociate echipamentelor periferice din
cadrul sistemului.

Crearea unui sistem de fi]iere sub Linux


Crearea unui sistem de fi]iere se realizeaz[ @ntr-o parti\ie precizat[. Pentru a crea un sistem de
fi]ier de tip ext2fs pentru sistemul Linux, se utilizeaz[ comanda:
mkfs [indicatori] tip_sist_de_fis nume_partitie
De exemplu, vom crea un sistem de fi]iere pe a doua parti\ie a discului had folosind comanda:
mkfs -t ext2fs /dev/hda2
Indicatorul -t, @n acest caz, specific[ tipul sistemului de fi]iere.
Pentru a putea folosi o dischet[ @n mod specific cu sistemul Red Hat Linux, va fi necesar[
crearea pe aceasta a unui sistem de fi]iere numit ext2fs (Second Extended filesystem)2 .
Sistemul respectiv este cel mai folosit tip de sistem de fi]iere Linux.
Se utilizeaz[ comanda:
mke2fs -c /dev/fd0 1440
Sistemul de fi]iere se va crea pe o dischet[ de 1,44MB ]i 3,5”, iar indicatorul –c va determina,
ca @nainte de crearea sistemului de fi]iere, s[ se efectueze o verificare a dischetei @n ceea ce prive]te
existen\a blocurilor defecte.
#n Linux, /dev/fd0 se refer[ la prima unitate de dischet[.

Componentele sistemului de fi]iere


No\iunea de baz[ ce st[ la baza implement[rii sistemului de fi]iere este cea de bloc. M[rimea
unui disc hard este m[surat[ @n num[r de blocuri fizice, acestea av`nd de regul[ 512 octe\i, caracteristica
@n cauz[ fiind definit[ de c[tre unitatea de control a hard discului. Sistemele UNIX grupeaz[ adesea mai
multe blocuri fizice @ntr-un bloc logic mai mare. Exist[ astfel sisteme de fi]iere care asambleaz[ 2, 4 sau
8 blocuri fizice @ntr-un acela]i bloc logic.
De]i sistemele de fi]iere cunosc forme foarte diverse, la nivel mai jos dec`t fi]ierele individuale,
toate au acelea]i componente, ]i anume: blocul de boot, superblocul, lista de i-nod-uri, blocurile de
date (vezi figura 8.1).
nr. bloc 0 bloc de boot
1 superbloc
2 lista i-nod-uri

700 blocuri de date

14000

Fig. 8.1 Componentele sistemului de fi]iere

Blocul de boot este primul bloc (0) al fiec[rui sistem de fi]iere. El con\ine un program de
lansare ]i ini\ializare a ansamblului sistem. Nu este accesibil nici unui program utilizator. #n general

2
Sistemul poate fi creat inclusiv pe o parti\ie a discului hard.
2
numai primul sistem de fi]iere de pe discul hard con\ine acest program de lansare, celelalte blocuri de
boot fiind vide. Sub UNIX, blocul de boot are, de regul[, o m[rime de 2048 de caractere.
Superblocul, con\ine informa\ii destinate administr[rii sistemului de fi]iere, ]i anume: m[rimea
total[ a sistemului de fi]iere, @n blocuri; num[rul de blocuri libere @n cadrul sistemului de fi]iere; lista
blocurilor libere disponibile pentru sistemul de fi]iere; indexul urm[torului bloc liber @n cadrul listei de
blocuri libere; num[rul de blocuri rezervate pentru i-nod-uri; num[rul de i-nod-uri libere; lista i-
nod-urilor libere ale sistemului de fi]iere; indexul urm[torului i-nod liber din lista de disponibilit[\i;
numele sistemului de fi]iere; data instal[rii sistemului de fi]iere; ini\iala driver-ului unde se afl[ sistemul
de fi]iere; informa\ii referitoare la z[vor`rea urm[torului bloc sau i-nod liber; informa\ii ce specific[
modificarea sau nu a sistemului de fi]iere.
Datorit[ importan\ei pe care o are, @n cadrul anumitor implement[ri particulare pot exista mai
multe superblocuri, aceasta @n scopul cre]terii ]anselor de a g[si un superbloc valid @n cazul @n care pe
disc a ap[rut un defect hardware.
Un i-nod reprezint[ o structur[ de date ce con\ine toate informa\iile de identificare ale unui
fi]ier3 , cele mai multe dintre acestea fiind folosite de c[tre nucleul sistemului de operare. Pentru fiecare
fi]ier existent fizic exist[ un i-nod. Acestea sunt organizate sub form[ de liste, fiecare i-nod posed`nd
un num[r care @i este propriu, numit num[r i-nod. Pentru fiecare sistem de operare este indicat[ implicit
sau explicit care este m[rimea listei de i-nod-uri. Primul i-nod al sistemului de operare r[m`ne liber
]i neutilizat. Al doilea reprezint[ directorul r[d[cin[ al sistemului de fi]iere.
Informa\iile con\inute @ntr-un i-nod sunt: numele proprietarului fi]ierului, num[rul grupului la
care acest fi]ier apar\ine, tipul de fi]ier4 , drepturile de acces (care formeaz[ @mpreun[ cu tipul de fi]ier
ceea ce se nume]te file mode), m[rimea @n octe\i a fi]ierului, datele ]i orele de acces (data ]i ora
ultimei modific[ri, data ]i ora ultimului acces la fi]ier, data ]i ora ultimei modific[ri a i-nod-ului),
num[rul de leg[turi pe acel fi]ier, tabela de adrese a blocurilor de date.

Observa\ie:
De notat c[ i-nod-ul nu con\ine numele fi]ierului. Aceast[ informa\ie este p[strat[ @n fi]ierul
director.

Blocurile de date ocup[ restul spa\iului disponibil sistemului de fi]iere pe discul hard, dup[ lista
de i-nod-uri. Pentru cre]terea eficien\ei cu care sunt gestionate blocurile de date, anumite sisteme de
fi]iere folosesc h[r\i de blocuri ocupate ]i de blocuri libere. #n cadrul unei astfel de h[r\i, pentru fiecare
bloc este rezervat un bit. Dac[ bitul respectiv are valoarea 1, atunci blocul este considerat ca fiind ocupat,
iar dac[ bitul are valoarea 0, blocul este liber.

Comenzi privind gestiunea sistemului de fi]iere

df
Aceast[ comand[ df este folosit[ pentru a vizualiza atributele tuturor sistemelor de fi]iere
specificate. Tipic, atributele afi]ate sunt urm[toarele:
filesystem - numele sistemului de fi]iere
kbytes - m[rimea exprimat[ @n KB a sistemului de fi]iere
used - m[rimea spa\iului folosit
avail - m[rimea spa\iului r[mas disponibil
iused - num[rul de i-nod-uri folosite
capacity - procentul din capacitatea total[ folosit[
%iused - procentul din i-nod-uri deja folosite
mounted on - numele directorului de nivel cel mai @nalt
Dac[ suntem @n directorul nostru implicit ]i execut[m comanda urm[toare:
df .
aceasta va retura pe ecranul monitorului informa\ii similare cu urm[toarele:
Filesystem Total KB free %used iused %iused Mounted on
/dev/hd1 151552 41828 72% 5534 14% /home

3
#n func\ie de tipul de sistem de fi]iere, i-nod-ul poate con\ine p`n[ la peste 40 de informa\ii diferite.
4
Tipul de fi]ier 0 indic[ faptul c[ i-nod-ul este vid sau neutilizat.
3
ceea ce @nseamn[ c[ directorul nostru implicit se afl[ @n sistemul de fi]iere numit /dev/hd1 iar
directorul de nivel cel mai @nalt din cadrul acestui sistem de fi]iere se nume]te /home.
Pentru a ob\ine o list[ a tuturor sistemelor de fi]iere din cadrul sistemului, @mpreun[ cu atributele
lor, se va executa comanda df f[r[ nici un argument.

du
Comanda du permite afi]area num[rului de blocuri de pe disc utilizate de c[tre fi]ierele ]i
subdirectoarele con\inute @ntr-un director specificat.
De exemplu, dac[ din directorul nostru curent (ce con\ine mai multe subdirectoare) am executat
una din comenzile urm[toare:
du
sau
du .
putem ob\ine un rezultat similar cu urm[torul:
409 ./doc
945 ./lib
68 ./man
60 ./m4
391 ./src
141 ./intl
873 ./po
3402 .
Prima coloan[ indic[ num[rul de blocuri de pe disc folosite de c[tre un subdirector, iar cea de a
doua coloan[ indic[ numele subdirectorului ce este evaluat. La final este indicat num[rul total de blocuri
utilizate de subdirectoarele respective.
Pentru a vedea c`\i KB consum[ fiecare subdirector se va utiliza @n sintaxa comenzi indicatorul -
k.

find
Scopul acestei comenzi este de a g[si fi]iere sau modele de fi]iere. Sintaxa ei este urm[toarea:
find nume_director parametri
unde
director este directorul unde va @ncepe c[utarea, iar parametri definesc ceea ce este de c[utat. Cei mai
uzuali dintre parametri sunt:
-name specific[ numele fi]ierului5
-print implicit setat pe on, afi]eaz[ rezultatele execu\iei comezii find
-exec execut[ comanda specificat[ asupra fi]ierelor g[site ce corespund parametrului -name
-atime n fi]ierul a fost ultima oar[ accesat cu n zile @n urm[
-mtime n fi]ierul a fost ultima oar[ modificat cu n zile @n urm[
-size n[bckw]fi]ierul utilizeaz[ n unit[\i de spa\iu, unit[\ile fiind specificate prin:
b pentru blocuri de 512 octe\i
c pentru octe\i
k pentru KB
w pentru cuvinte de doi octe\i
Exemple:
find / -name test -mtime +7 -print
Aceast[ comand[ @ncepe c[utarea din directorul r[d[cin[ ]i caut[ toate fi]ierele ce poart[ numele
test care nu au fost modificate @n ultimele ]apte zile, afi]`ndu-le.
find /home -size +500k -print
Caut[ toate fi]ierele din directorul /home @n jos, ce au dimensiunea mai mare de 500 KB, ]i le
afi]eaz[.

fsck
Periodic este necesar[ verificarea integrit[\ii fiec[rui sistem de fi]iere pentru a vedea dac[
5
Pot fi utiliza\i ]i specificatori pentru nume de fi]ier global (wildcards), dar @n acest caz ei vor trebui
inclu]i @ntre ghilimele.
4
structura sa este corect[. Pentru realizarea acestei opera\ii UNIX pune la dispozi\ie un utilitar sofisticat
numit fsck.
fsck ruleaz[ @n cinci faze, fiecare dintre ele baz`ndu-se pe verific[rile ]i corec\iile realizate de
fazele anterioare.
Opera\ia de verificare a sistemului de fi]iere @ncepe cu verificarea superblocului. Continu[ apoi
cu blocurile de pe disc alocate, numele de c[i, conectivitatea directoarelor, num[rarea referin \elor
leg[tur[, lista blocurilor libere ]i a i-nod-urilor.
Apelarea acestui utilitar se face tast`nd @n linia de comand[:
fsck
Dac[ se dore]te verificarea unui sistem de fi]iere specific, se va introduce @n sintaxa comenzii,
numele de dispozitiv al acestuia. De exemplu:
fsck /dev/hda1

Exerci\ii

1. S[ se vizualizeze atributele tuturor sistemelor de fi]iere de pe hard disc.


2. S[ se afi]eze num[rul de blocuri de pe hard disc utilizate de c[tre fi]ierele ]i subdirectoarele
con\inute @n directorul home.

5
LUCRAREA NR. 9

Tipuri de fi]iere

#n cadrul sistemului de fi]iere al UNIX exist[ mai multe tipuri de fi]iere. Acestea sunt:
- fi]iere normale (obi]nuite)
- directoare (fi]iere catalog)
- leg[turi hard
- leg[turi simbolice
- socket-uri
- conducte cu nume (fi]iere FIFO)
- fi]iere de dispozitiv (fi]iere speciale)

Fi]iere normale
Un fi]ier normal este un fi]ier permanent, ce este privit de c[tre sistemul de operare ca un ]ir de
octe\i f[r[ o organizare logic[ special[, ]i a c[rui structur[ intern[ este irelevant[ din punctul de vedere al
administratorului de sistem.
Un astfel de fi]ier poate con\ine informa\ie binar[ (@n cazul unui fi]ier @n format executabil), sau
linii de text separate prin caracterul linie nou[ (0128), structurarea sa logic[ revenind exclusiv @n sarcina
programatorului.
O comand[ ls –l va afi]a @n cazul unui fi]ier normal, o informa\ie similar[ cu urm[toarea:
-rw------- 1 student ise 42 May 12 13:09 fistest
Se observ[ c[ primul caracter afi]at este -. Acesta semnific[ faptul c[ fi]ierul respectiv este un
fi]ier normal.

Directoare
Sunt fi]iere de un tip special ce con\in o list[ de alte fi]iere. Informa\iile din lista respectiv[ fac
referire la numele ]i loca\iile fi]ierelor, m[rimea lor, timpul aferent cre[rii ]i modific[rii acestora.
Directoarele pot ele @n]ile s[ con\in[ subdirectoare, care la r`ndul lor pot s[ con\in[ alte
subdirectoare, ].a.m.d., form`nd @n acest fel o structur[ ierarhic[ (arborescent[).
Se poate aprecia deci c[ fi]ierele director reprezint[ o modalitate de a structura logic sistemul de
fi]iere.
Un director poate fi citit numai de c[tre sistemul de operare UNIX sau de c[tre programe special
scrise pentru a efectua procesarea acestuia.
Cu ajutorul comenzii ls –l se pot identifica directoarele datorit[ apari\iei caracterului d ce este
plasat @naintea permisiunilor de acces:
drwx------ 2 student ise 512 May 12 13:08 public
#n fiecare director, se vor g[si @ntotdeauna dou[ intr[ri: . ]i..
. se refer[ la directorul curent, iar .. se refer[ la directorul cu un nivel mai sus (uneori numit ]i
director p[rinte).
De]i un director este tratat de c[tre UNIX ca un fi]ier, el posed[ anumite caracteristici speciale.
Astfel, un director are cel pu\in dou[ nume. De exemplu, dac[ directorul curent este /home/mihai ]i
am creat un subdirector numit testdir, vor fi create dou[ leg[turi:
/home/mihai/testdir
]i
/home/mihai/testdir/.
Intrarea /home/mihai/testdir este creat[ @n directorul /home/mihai, iar intrarea
/home/mihai/testdir/. este creat[ @n directorul /home/mihai/testdir.
#nt`i, intrarea /home/mihai/testdir este creat[ ca un director gol ]i apoi este legat[ la
/home/mihai/testdir/.
Cele dou[ leg[turi exist[ pe durata existen\ei directorului ]i sunt ]terse odat[ cu acesta.

1
Leg[turi la fi]iere
#n anumite circumstan\e este necesar1 , de a furniza nume alternative pentru un acela]i fi]ier.
Acest lucru poate fi realizat prin legarea unui nume de fi]ier la altul, o leg[tur[ fiind o modalitate
de a furniza un alt nume unui acela]i fi]ier 2 . Legarea unui fi]ier la un alt nume nu implic[ duplicarea
con\inutului fi]ierului respectiv.
Este posibil de a lega un fi]ier la un alt nume @n cadrul aceluia]i director sau la acela]i nume @n
cadrul unui alt director.
Orice opera\ie care se execut[ asupra fi]ierului leg[tur[ (mai pu\in ]tergerea) @]i va avea efectul
de fapt asupra fi]ierului indicat de leg[tur[. Dac[ este solicitat[ ]tergerea, efectul depinde de tipul
leg[turii respective.

Leg[turi hard (hard links)


Acest tip de leg[tur[ creeaz[ o referin\[ (un pointer) c[tre un fi]ier deja existent, f[r[ duplicarea
con\inutului fi]ierului respectiv. Deci, numele original al fi]ierului ]i numele fi]ierului leg[tur[ fac
referire c[tre aceea]i adres[ fizic[ (acela]i i-nod).
Ca urmare, la afi]area con\inutului unui director acesta apare c[ ar con\ine dou[ fi]iere identice,
lucru ce determin[ sistemul s[ le trateze @n consecin\[.
Exist[ dou[ limit[ri importante ale unei leg[turi hard, ]i anume: un director nu poate avea o
leg[tur[ hard, ]i o astfel de leg[tur[ nu poate exista peste mai multe sisteme de fi]iere deoarece ea
partajeaz[ un i-nod.
Este posibil de a ]terge numele fi]ierului original f[r[ a ]terge numele fi]ierului leg[tur[. Sub
aceste circumstan\e, fi]ierul nu este ]ters, dar intrarea @n director a fi]ierului original va fi ]tears[ iar
contorul num[rului de leg[turi este decrementat cu 1. Blocurile de date ale fi]ierului original sunt ]terse
atunci c`nd contorul num[rului de leg[turi devine zero.

Leg[turi simbolice (symbolic links)


Leg[turile simbolice sunt de fapt fi]iere distincte, marcate cu un cod special, care au ca ]i
con\inut numele complet al fi]ierului indicat.
Exist[ deci dou[ fi]iere: unul este fi]ierul original, ]i altul este fi]ierul leg[tur[ ce con \ine
numele fi]ierului original.
Spre deosebire de o leg[tur[ hard, o leg[tur[ simbolic[ poate s[
existe peste mai multe sisteme de fi]iere ]i poate fi folosit[ pentru a lega at`t directoare c`t ]i fi]iere.
Dezavantajul unui leg[trui simbolice este c[ pentru ea (fiind fi]ier) trebuie creat un i-nod
separat ]i, @n plus, ocup[ spa\iu pe disc prin con\inutul ei.
}tergerea unei astfel de leg[turi nu afecteaz[ fi]ierul original, dar dac[ acesta este ]ters, leg[tura
simbolic[ va face referire c[tre un fi]ier care nu mai exist[.
Pentru a genera leg[turi hard sau simbolice la fi]iere, se utilizeaz[ o comand[ sepcific[, numit[
ln. Sintaxa ei general[ este:
ln nume_fisier nume_legatura
unde nume_fisier este fi]ierul ce exist[ deja, iar nume_legatura, este numele fi]ierului leg[tur[
creat.
Implicit comanda creeaz[ o leg[tur[ hard.
De exemplu, dac[ @n directorul curent exist[ un fi]ier numit test1, ]i tast[m comanda ls -l,
se vor afi]a urm[toarele informa\ii:
-rw------- 1 stud1 ise 42 May 12 13:04 test1
Pentru a lega hard fi]ierul test1 la fi]ierul test2 @n directorul curent, vom executa comanda:
ln test1 test2
Tast`nd din nou comanda ls –l, se vor afi]a informa\iile:
-rw------- 2 stud1 ise 42 May 12 13:04 test2
-rw------- 2 stud1 ise 42 May 12 13:04 test1

1
De exemplu, dac[ dorim s[ permitem accesul altor utilizatori, la propriile noastre fi]iere, f[r[ ca pentru
aceasta s[ le punem la dispozi\ie o copie a fi]ierelor respective.
2
Practic, o leg[tur[ este v[zut[ de c[tre utilizator ca un fi]ier cu un nume propriu, dar care @n realitate face
referire la un alt fi]ier de pe disc.
2
Apar deci dou[ fi]iere care au aceea]i m[rime, 42. Totodat[ num[rul de leg[turi (coloana a
doua), a fost incrementat de la 1 la 2.
Tast`nd comanda ls –il, se vor afi]a informa\iile:
9180 -rw------- 2 stud1 ise 42 May 2 8:04 test2
9180 -rw------- 2 stud1 ise 42 May 2 8:04 test1
Se observ[ c[ ambele nume de fi]ier fac referire c[tre un acela]i i-nod, 9180. Este deci vorba
de dou[ nume care fac referire c[tre un acela]i fi]ier.
Unul dintre indicatorii cei mai utiliza\i ai comenzii ln este -s, folosirea acestuia pemi\`nd
generarea unei leg[turi simbolice. Formatul comenzii ln, @n acest caz, este:
ln -s nume_fisier nume_legatura
De exemplu, pentru a crea o leg[tur[ simbolic[ la fi]ierul test1 @n directorul curent, se va tasta
comanda urm[toare:
ln –s test1 test2
Aceasta creeaz[ un fi]ier test2 legat, care va con\ine numele lui test1.
Tast`nd o comand[ ls -l @n directorul curent, se vor afi]a informa\iile:
-rw------- 2 stud1 ise 42 May 12 13:04 test1
lrw------- 1 stud1 ise 42 May 12 13:04 test2test1
Fi]ierul test2 apare marcat ca fiind o leg[tur[ simbolic[ @n cadrul sistemului de fi]iere.

Socket-uri
Un socket nu este @n fapt un fi]ier real, ci un mecanism folosit de UNIX pentru a comunica
@ntre dou[ calculatoare gazd[, utiliz`nd pentru aceasta porturi re\ea.
Fi]ierele socket sunt identificate de c[tre set[rile lor de permisiuni ce @ncep cu caracterul s. O
comand[ ls –l asupra unui fi]ier socket afi]eaz[ o informa\ie similar[ cu urm[toarea:
srwxrwxrwx 1 root admin 0 May 10 14:38 X0
Pentru ]tergerea unui fi]ier socket se va folosi comanda rm.

Conducte cu nume (named pipes)


O conduct[ cu nume este un fi]ier temporar ce permite comunica\ia @ntre procese prin
mecanismul pipe (conduct[). Astfel, procesul emitent scrie date @n conducta cu nume, iar procesul
receptor cite]te datele din aceasta. Procesarea datelor din conducta cu nume se face pe baze FIFO.
Proces 1 Proces 2

Scrie fi]ier pipe Cite]te

Existen\a unui astfel de fi]ier este limitat[ la intervalul de timp @n care procesele comunic[.
Recunoa]terea conductelor cu nume se face datorit[ caracterului p cu care @ncepe informa\ia
aferent[ permisiunilor lor de acces, informa\ie afi]at[ la executarea unei comenzi ls – l:
prw------- 1 root admin 0 May 12 22:02 nume_conducta

Fi]iere de dispozitiv
O particularitate care diferen\iaz[ sistemul de operare UNIX de alte sisteme, o constituie
asocierea dispozitivelor periferice cu fi]iere de dispozitiv (fi]iere speciale). Fi]ierele de dispozitiv sunt
citite/scrise, din punctul de vedere al utilizatorului, exact ca ]i cele normale, rezultatul unei astfel de
opera\ii fiind activarea driver-ului asociat perifericului respectiv. Un program de aplica\ie poate deci
utiliza aceea]i sintax[ pentru a accesa un fi]ier normal sau un fi]ier de dispozitiv. Fie, de exemplu,
comanda de copiere a fi]ierului test.p:
cp test.p /usr/diploma/copie.p
Prin lansarea acestei comenzi se realizeaz[ copierea fi]ierului test.p @n fi]ierul destina\ie
/usr/diploma/copie.p. Dac[ numele fi]ierului destina\ie se @nlocuie]te cu un nume de fi]ier de
dispozitiv, de exmplu imprimanta (/dev/lp0), ob\inem o listare a fi]ierului test.p.
cp test.p /dev/lp0
Unui dispozitiv periferic @i este asociat cel pu\in un fi]ier de dispozitiv, care va con\ine
@ntotdeauna informa\ii despre driver-ul (programul de comand[) al acelui periferic. Toate fi]ierele de
dispozitiv rezid[ @n directorul /dev.
3
Spre exemplu, fiec[rei unit[\i de disc @i corespunde c`te un fi]ier @n directorul /dev. #n Linux,
primei unit[\i de dischet[ @i corespunde fi]ierul /dev/fd0, celei de-a doua /dev/fd1, ].a.m.d. Primei
unit[\i de hard disc cu interfa\[ IDE, din sistem, @i corespunde fi]ierul special /dev/hda, iar primei sale
parti\ii, fi]ierul /dev/hda1. A doua parti\ie de pe primul disc are ca ]i corespondent fi]ierul
/dev/hda2, a doua unitate de hard disc IDE este referit[ ca fiind /dev/hdb, ].a.m.d.
#n func\ie de unitatea de informa\ie pe care o transmit/recep\ioneaz[ la un moment dat,
dispozitivele periferice se @mpart @n dou[ tipuri:
- dispozitive orientate pe caractere (terminale, imprimante)
- dispozitive orientate pe blocuri (unit[\i de disc)
Evident, func\ie de aceast[ caracteristic[, dispozitivelor @n cauz[ le corespund fi]iere de
dispozitiv specifice.
#n cadrul unui sistem pot exista mai multe dispozitive periferice de acela]i tip. Pentru a distinge
@ntre ele, UNIX-ul asociaz[ fiec[rui dispozitiv, dou[ numere:
- un num[r major, care indic[ tipul dispozitivului (de exemplu, imprimanta)
- un num[r minor, care indic[ al c`telea dispozitiv periferic este @n clasa de dispozitive de
acela]i tip (de exemplu, a doua imprimant[)
Fi]ierele de dispozitiv caracter se g[sesc localizate @n directorul /dev ]i furnizeaz[ un mecansim
pentru comunicarea, un caracter la un moment dat, cu drivere-le dispozitivelor din sistem.
Informa\ia afi]at[ de o comand[ ls –l @n cazul unui astfel de fi]ier, este similar[ cu urm[toarea:
crw-rw-rw- 1 root wheel 21, 4 May 12 13:40 ptyp4
Se observ[ c[ permisiunile de acces @n acest caz @ncep cu caracterul c.
Fi]ierele de dispozitiv bloc se g[sesc, de asemenea, localizate @n directorul /dev, fiind folosite
pentru a comunica cu drivere-le de dispozitiv. Ele sunt asociate @ns[, unor dispozitive periferice ce
transfer[ blocuri mari de date la un moment dat (cum este hard discul).
Aceste fi]iere sunt identificate de c[tre caracterul b ce apare @n fa\a permisiunilor de acces, atunci
c`nd se tasteaz[ comanda ls –l:
brw------- 2 root staff 16, 2 Jul 29 2006 fd0c
Crearea fi]ierelor de dispozitiv, bloc sau caracter, c`t ]i a conductelor cu nume, se poate realiza
utiliz`nd comanda mknod. Sintaxa acestei comenzi este:
mknod fisier_dispozitiv b|c|p|u major minor
unde:
b semnific[ faptul c[ fisier_dispozitiv este un fi]ier asociat unui dispozitiv bloc
c ]i u semnific[ faptul c[ fisier_dispozitiv este un fi]ier asociat unui dispozitiv caracter
p semnific[ faptul c[ fisier_dispozitiv este un fi]ier asociat unei conducte cu nume
Unul dintre aceste argumente trebuie s[ fie prezent @n sintax a comenzii. Este necesar[, de
asemenea, specificarea numerelor major ]i minor (cu excep\ia cazului c`nd se creeaz[ o conduct[ cu
nume).
}tergerea fi]ierelor create cu comanda mknod se face cu ajutorul comenzii rm.

Exerci\ii

1. Care sunt tipurile de fi]iere existente @n sistemul de fi]iere al UNIX ?


2. Ce sunt fi]ierele de dispozitiv ?
3. S[ se determine tipul fi]ierelor situate @n directorul /dev.
4. Ce sunt leg[turile la fi]iere ?
5. S[ se creeze o leg[tur[ hard la un fi]ier numit proba1, numele fi]ierului leg[tur[ creat fiind
proba2. Ce valoare are contorul num[rului de leg[turi?
6. Se va ]terge fi]ierul proba1. Ce valoare are contorul num[rului de leg[turi? Con\inutul
fi]erului proba1 mai poate fi accesat? Dar con\inutul fi]ierului proba2 ?
7. S[ se creeze o leg[tur[ soft la un fi]ier numit user1, numele fi]ierului leg[tur[ creat fiind
user2. Ce valoare are contorul num[rului de leg[turi ?
8. Se va ]terge fi]ierul user1. Ce valoare are contorul num[rului de leg[turi? Con\inutul
fi]erului user1 mai poate fi accesat ? Dar con\inutul fi]ierului user2 ?

4
LUCRAREA NR. 10

Montarea sistemelor de fi]iere

#n UNIX, sistemele de fi]iere nu sunt disponibile p`n[ c`nd nu sunt montate @n sistemul de fi]iere
de baz[, aferent parti\iei r[d[cin[, parti\ie ce con\ine directorul r[d[cin[ (directorul de cel mai @nalt nivel)
al structurii arborescente de directoare.
Deci, @n acest context, montarea unui sistem de fi]iere @ntr-o structur[ de directoare @nseamn[
opera\ia de legare a sistemului de fi]iere de un director al unei alte parti\ii, @n vederea acces[rii. Ca
urmare, dup[ montare, @n directorul respectiv se va afla @ntreaga structur[ de fi]iere ]i directoare de pe
sistemul de fi]iere montat.
Mecanismul @n cauz[ este deosebit de puternic, deoarece ofer[ posibilitatea de a avea o structur[
de directoare unitar[, care grupeaz[ fi]iere de pe mai multe parti\ii sau discuri. Dac[ se adaug[ ]i sistemul
de fi]iere de re\ea NFS (Network File System), aceast[ structur[ de directoare va putea con\ine ]i
sisteme de fi]iere montate de la distan\[ (de pe alt[ ma]in[).
Ini\ial, la momentul @nc[rc[rii sistemului de operare (secven\a de boot) singura parti\ie la care se
are acces imediat este parti\ia r[d[cin[. Pentru ca @ntregul sistem de fi]iere cu parti\ii multiple s[ fie
accesibil este necesar ca celelalte parti\ii1 s[ fie montate la aceast[ parti\ie r[d[cin[.
Acest lucru se realizeaz[ @n mod automat pe durata procesului de boot, prin intermediul
comenzilor specifice de montare existente @n fi]ierele de startup, care vor determina montarea tuturor
sistemelor de fi]iere specificate @n fi]ierul /etc/fstab. Fiecare sistem de fi]iere care este montat pe
durata procesului de boot are o intrare ce specific[ numele dispozitivului unde acesta se afl[, punctul de
montare, tipul sistemului de fi]iere ]i eventual anumite op\iuni.
#nainte de a realizarea unei opera\ii de montare a unui sistem de fi]iere, este necesar[ selectarea
unui punct de montare.
Un punct de montare este un director din sistemul de fi]iere @n cadrul c[ruia se dore]te mo ntarea
altui sistem de fi]iere.
Evident, punctul de montare (directorul) va trebui s[ existe 2 @nainte de a putea efectua opera\ia de
montare.
Comanda cu ajutorul c[reia se realizeaz[ montarea este mount, ]i are urm[toarea sintax[
general[:
mount sistem_de_fisiere punct_de_montare
unde sistem_de_fisiere este sistemul de fi]iere aferent parti\iei ce se va monta, iar
punct_de_montare este directorul din sistemul de fi]iere al UNIX unde se va realiza montarea.
#ntre indicatorii utiliza\i de aceast[ comand[ se pot men\iona:
-t tip permite specificarea explicit[ a tipului de sistem de fi]iere care se monteaz[
-o optiune
unde optiune poate fi una din urm[toarele:
rw (citire/scriere)
ro (numai citire)
bg (montare @n background - dac[ montarea e]ueaz[, plaseaz[ procesul @n background ]i se
repet[ @ncercarea de montare p`n[ c`nd aceasta reu]e]te)
Un exemplu de utilizare a acestui indicator este:
mount -o rw,bg /dev/hda4 /usr
care monteaz[ sistemul de fi]iere aferent parti\iei 4 de pe prima unitate de disc a primei unit[\i de control
IDE, @n directorul /usr din sistemul de fi]iere de baz[ al UNIX, pemi\`nd citirea/scrierea acesteia,
montarea av`nd loc @n background.
Tastarea la linia de comnad[ a numelui comenzii, mount, f[r[ nici un argument sau indicator,
permite afi]area sistemelor de fi]iere montate @n momentul respectiv @n sistem.

1
De regul[, exist[ mai multe parti\ii, cum ar fi cele aferente fi]ierelor sistemului de operare ]i cea care
con\ine directoarele home ale utilizatorilor.
2
Un punct de montare poate s[ existe oriunde @n structura arborescent[ de directoare (cu excep \ia
directorului r[d[cin[).
1
Observa\ie:
De regul[, montarea de sisteme de fi]iere poate fi f[cut[ numai de c[tre utilizatorul root
(administratorul sistemului), dar se poate permite ]i unor utilizatorilor neprivilegia\i s[ monteze anumite
parti\ii sau unit[\i de disc.

Exemple:
1. S[ presupunem c[ exist[ create o parti\ie principal[ hda1 ]i o parti\ie secundar[ hda2 cu
urm[toarele structuri de directoare:

hda1 hda2

/ r[d[cin[ / r[d[cin[

date prog proiecte prog1 prog2 prog3

#n vederea acces[rii parti\iei hda2, aceasta trebuie montat[ @n structura de directoare a parti\iei
hda1, ]i anume @n directorul /prog, astfel:
mount /dev/hda2 /prog
Noua structur[ de directoare din parti\ia hda1 va deveni:
hda1

/ r[d[cin[

date prog proiecte

prog1 prog2 prog3

Dup[ aceast[ opera\ie, accesarea fi]ierelor de pe discul hda2 se va face prin precizarea c[ilor
/prog/prog1 sau /prog/prog2, respectiv /prog/prog3.

2. Dac[ se dore]te montarea unui CD-ROM conectat la o unitate de control SCSI, @n sistemul de
fi]iere de baz[ al UNIX, av`nd ca punct de montare directorul /usr/cdrom, se va folosi comanda:
mount /dev/scd0 /usr/cdrom
Directorul /usr/cdrom trebuie s[ fi fost creat @nainte de a executa aceast[ comand[.
#n cazul folosirii unui CD-ROM care este conectat la o unitate de control IDE, @n cadrul comenzii
anterioare se va @nlocui /dev/scd0 cu /dev/cd0:
mount /dev/cd0 /usr/cdrom
Pentru a specifica @n mod explicit tipul de sistem de fi]iere ce se va monta, se folose]te comanda:
mount -t iso9660 /dev/cd0 /usr/cdrom
Dac[ montarea sistemului de fi]iere s-a efectuat corect, comut`nd @n /usr/cdrom, vom putea
accesa toate fi]ierele existente pe CD-ROM ca ]i c`nd ele ar face parte din sistemul de fi]iere ini\ial.

3. Montarea sistemului de fi]iere aferent unei dischete se face similar cu montarea sistemului de
fi]iere aferent CD-ROM-ului.
Astfel, pentru a monta o dischet[ din prima unitate de dischet[, @n directorul /mnt, din cadrul
sistemului de fi]iere de baz[ al UNIX, se va utiliza comanda:
mount /dev/fd0 /mnt
unde /mnt este numele punctului de montare.

2
Observa\ie:
Orice sistem de fi]iere montat de pe o unitate de disc care permite schimbarea discului respectiv,
trebuie demontat @nainte de a putea scoate discul. De asemenea, @nainte de oprirea sau restartarea
calculatorului, trebuie demontate ]i sistemele de fi]iere de pe hard discuri.

Demontarea sistemelor de fi]ierelor


Opera\ia invers[ celei de montare se nume]te demontare ]i se realizeaz[ cu ajutorul comenzii:
umount sistem_de_fisiere_de_demontat
unde sistem_de_fisiere_de_demontat este sistemul de fi]iere aferent parti\iei ce se va
demonta.
sau
umount punct_de_montare
unde punct_de_montare este numele directorului @n care a fost montat sistemul de fi]iere.

Observa\ii:
1. Pentru a putea realiza opera\ia de demontare, directorul curent nu va fi cel aferent punctului de
montare.
2. Dac[ avem fi]iere deschise @ntr-un sistem de fi]iere montat, acesta nu va putea fi demontat
p`n[ c`nd fi]ierele respective nu sunt @nchise. #n cadrul unui sistem mare acest lucru se poate dovedi a fi
dificil. De]i nu este indicat, se poate utiliza indicatorul -f aferent comenzii umount, pentru for\area
demont[rii.

Exemplu:
Pentru demontarea sistemului de fi]iere aferent unei dischete, montat @n cadrul exemplului 3, se
va utiliza una din comenzile:
umount /dev/fd0
sau
umount /mnt
Dac[ se dore]te @nlocuirea dischetei al c[rui sistem de fi]iere a fost montat, cu alta, va trebui
efectuat[ mai @nt`i opera\ia de demontare, urmat[ de montarea sistemului de fi]iere de pe noua dischet[.

Exerci\ii

1. S[ se vizualizeze sistemele de fi]iere montate @n sistem.


2. S[ se monteze sistemul de fi]iere existent pe o dischet[. S[ se vizualizeze con \inutul acestuia,
s[ se editeze un fi]ier existent, ]i apoi s[ se demonteze.
3. S[ se monteze sistemul de fi]iere existent pe o dischet[, astfel @nc`t acesta s[ fie accesibil
numai @n citire.
4. S[ se monteze sistemul de fi]iere existent pe un CD-ROM. S[ se vizualizeze con\inutul acestuia,
s[ se copieze pe hard disc, ]i apoi s[ se demonteze.

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