Documente Academic
Documente Profesional
Documente Cultură
2
6.1. Noiuni generale..........................................................................................................................................................2
6.1.1. Funciile unui sistem de gestiune a fiierelor.......................................................................................................2
6.1.2. Organizarea general a unui sistem de gestiune a fiierelor.................................................................................2
6.2. Organizarea logic a fiierelor.....................................................................................................................................3
6.2.1. Introducere............................................................................................................................................................3
6.2.2. Acces secvenial....................................................................................................................................................4
6.2.3. Acces direct..........................................................................................................................................................5
6.2.3.1. Cheie unic....................................................................................................................................................5
6.2.3.2. Chei multiple.................................................................................................................................................7
6.3. Organizarea fizic a fiierelor......................................................................................................................................8
6.3.1. Implantare secvenial..........................................................................................................................................8
6.3.2. Implantare non contigu.......................................................................................................................................9
6.3.2.1. Blocuri nlnuite...........................................................................................................................................9
6.3.2.2. Tabele de implantare......................................................................................................................................9
6.3.3. Alocarea memoriei secundare.............................................................................................................................11
6.4. Realizarea funciilor de acces elementar...................................................................................................................12
6.4.1. Organizarea descriptorilor..................................................................................................................................12
6.4.1.1. Localizarea fizic.........................................................................................................................................12
6.4.1.2. Informaii de utilizare..................................................................................................................................12
6.4.2. Crearea i distrugerea.........................................................................................................................................12
6.4.2.1. Crearea.........................................................................................................................................................12
6.4.2.2. Distrugerea..................................................................................................................................................13
6.4.3. Deschiderea i nchiderea...................................................................................................................................13
6.4.3.1. Deschiderea.................................................................................................................................................13
6.4.3.2. nchiderea....................................................................................................................................................14
6.4.4. Acces elementar la informaii.............................................................................................................................14
6.5. Securitatea i protecia fiierelor...............................................................................................................................15
6.5.1. Despre securitate i protecie..............................................................................................................................15
6.5.2. Securitatea fiierelor...........................................................................................................................................15
6.5.2.1. Redundana intern i restabilirea informaiilor..........................................................................................15
6.5.2.2. Salvare periodic.........................................................................................................................................16
6.5.3. Protecia fiierelor..............................................................................................................................................16
6.5.4. Autentificarea n Windows NT...........................................................................................................................16
6.5.4.1. Funcia LogonUser.......................................................................................................................................17
6.5.4.2. Autentificare cu ajutorul Security Support Provider Interface.....................................................................19
6.5.4.3. Funcia NetUserChangePassword................................................................................................................20
6.6. SGF din sistemul de operare Unix.............................................................................................................................21
6.6.1. Caracteristici generale........................................................................................................................................21
6.6.2. Organizarea datelor.............................................................................................................................................21
6.6.2.1. Descriptorii..................................................................................................................................................21
6.6.2.2. Implantarea fizic........................................................................................................................................22
6.6.2.3. Administrarea perifericelor..........................................................................................................................23
6.6.2.4. Volume amovibile........................................................................................................................................23
......................................................................................................................................................................................24
6.6.3. Funcionarea i utilizarea....................................................................................................................................24
6.6.3.1. Gestiunea descriptorilor. Nume locale.........................................................................................................24
6.6.3.2. Primitive de acces........................................................................................................................................24
6.6.3.3. Protecia fiierelor n UNIX........................................................................................................................24
Interpretarea Interpretarea
numelor locale numelor externe
Nume Realizarea
interne funciilor de acces
logic
Aceast schem nu trebuie s fie considerat drept un cadru rigid, care ar putea ine cont de toate modurile de
organizare a SGF, ci doar ca un ghid pentru stabilirea funciilor i structurilor de date mai frecvente. Planul adoptat pentru
restul capitolului va urma, ntr-un mod descendent, ierarhia astfel stabilit.
Metodele de organizare logic a fiierelor (reprezentarea datelor, realizarea funciilor de acces) sunt aplicaii directe
ale structurilor de date: tabele, fire de ateptare, liste, etc., care sunt tratate n alte discipline. Ne vom opri la o succint
descriere a organizrii uzuale, fcnd trimitere la literatura de specialitate pentru studii mai aprofundate. Interesul
principal al acestei descrieri este de a elucida restriciile introduse de organizarea fizic a fiierelor.
6.2.2. Acces secvenial
n cadrul unei organizri secveniale nregistrrile sunt ordonate i pot fi desemnate de valori ntregi consecutive.
Totui, aceste numere de ordine nu pot fi folosite n cadrul funciilor de acces; este permis doar utilizarea funciei
succesor. Accesul secvenial este modul obinuit de utilizare a unui fiier, implantat fizic pe un suport n care accesarea
amplasamentelor este ea nsi secvenial, cum ar fi banda magnetic.
Un fiier f poate fi deschis pentru citire sau scriere. Unele organizri autorizeaz scrierea ncepnd de la o nregistrare
oarecare (v. exemplul din capitolul 9). Considerm, c scrierea se face la sfritul fiierului i deschiderea pentru scriere
iniializeaz fiierul n vid.
Deschiderea pentru scriere este realizat prin operaia:
deschide(mod):
if mod=citire then
f.rest:=<irul nregistrilor fiierului>
else
f:=<vid>
endif;
f.mod:=mod;
avansare
unde funcia avansare este definit dup cum urmeaz:
articol 2 al2=f(cheie2)
f(cheie2)= f(cheie3)
cheie 1
cheie 2 funcie de f(cheie1) al1=f(cheie1)
dispersare articol 1
cheie 3
tratare
coliziuni
(coliziune ntre cheie1 i cheie3)
articol 3 al 3
Cheie 1
Cheie 2 articol 1
Cheie 3
articol 3
tabelul indicilor
autorilor
tabelul indicilor
editorilor
adres logic
tabelul
indicilor
referinelor
tabelul indicilor
autorilor nregistrri
tabelul indicilor
editorilor
tabelul indicilor
anilor
Problema principal a organizrii secveniale indexate vine de la inserarea i suprimarea nregistrrilor. Chiar de la
crearea iniial a fiierului, pot fi lsate amplasamente libere n fiecare zon, care este apoi modificat prin compresie,
atunci cnd au loc modificri. Dac toate amplasamentele rezervate sunt ocupate, sunt utilizate zone de depire: fiecrui
tabel secundar i se asociaz o zon de depire, nregistrrile fiind ordonate n ordinea inserrii. Cutarea unui articol are
o durat mai mare, iar atunci cnd zonele de depire sunt foarte pline este preferabil s fie reorganizat fiierul n
ntregime, alocnd zone noi i crend, la necesitate, tabele secundare noi.
6.3.3. Alocarea memoriei secundare
Problema alocrii memoriei secundare poate fi pus n termeni similari cu cea a memoriei principale; restriciile
principale sunt:
alocarea prin blocuri de lungime fix,
costul ridicat al accesului,
caracteristicile proprii fiecrui suport: organizarea pe piste, dispozitive de citire-scriere mobile sau fixe.
Interfaa alocatorului memoriei secundare conine dou primitive:
cerere_zon(n,a) date : n (ntreg), numrul de blocuri contigue cerute
rezultat : a (adres), adresa primului bloc
excepie : numr de blocuri insuficiente
eliberare_zon(n,a) date :
n (ntreg), numrul de blocuri contigue eliberate
a (adres), adresa primului bloc
excepie : numr de blocuri eliberate
Cazul n=1 este ntlnit frecvent i poate justifica folosirea primitivelor particulare (cerere_zon, eliberare_zon).
Structura de date cel mai des utilizat pentru a descrie starea de ocupare a memoriei este un lan de bii, bitul cu
numrul i indicnd starea (ocupat sau liber) a blocului cu acelai numr.
Acest tabel de ocupare poate atinge dimensiuni importante; de exemplu, sunt necesari 12,5 Ko pentru a descrie
ocuparea unui disc de 200 Mo alocai prin blocuri de 2 Ko. Pentru a spori eficiena algoritmilor de alocare tabelul poate fi
organizat pe mai multe niveluri.
Exemplul 6.3. Discurile cu brae mobile sunt organizate pe cilindre (mulime de blocuri, accesibile pentru o poziie dat a braului mobil). Fiecare
cilindru conine tabelul de ocupare a blocurilor pe care intr n componena sa; mai mult, un tabel care duce evidena umplerii
Din raionamente de securitate (v. 6.5), starea liber sau ocupat a unui bloc este pstrat chiar n blocul propriu-zis.
HANDLE hToken;
if (pszDomainName == NULL)
{
BYTE bSid[8 + 4 * SID_MAX_SUB_AUTHORITIES];
ULONG cbSid = sizeof(bSid);
ULONG cchDomainName = countof(szDomainName);
SID_NAME_USE Use;
if (phToken == NULL)
_VERIFY(CloseHandle(hToken));
else
*phToken = hToken;
return TRUE;
}
Cteva comentarii sunt necesare. n primul rnd, toate string-urile de intrare sunt copiate n masive speciale din stiva
funciei. Aceasta este necesar din cauza c toi parametrii funciei sunt declarai constante string, iar LogonUser primete
indicatori la string-uri, care pot fi modificate. n unele condiii LogonUser poate scrie n parametrii pe care i primete
ceea ce poate conduce la prohibitarea proteciei memoriei. Doi: conform celor menionate mai sus, unele versiuni timpurii
ale sistemului de operare Windows NT nu permit valoarea NULL pentru numele domenului. Aceast situaie va fi tratat
n mod individual i numele corespunztor pentru domen este depistat cu ajutorul funciei LookupAccountName.
Observm, c utilizarea funciei LogonUser nu este complicat, dar n Windows NT i Windows 2000 are o restricie
substanial: utilizatorul, care apeleaz aceast funcie trebuie s posede prioritatea SE_TCB_NAME. Este o prioritate
foarte nalt, chiar nici administratorii nu o posed, semnificnd controlul total asupra sistemului. TCB - Trusted
Computing Base (Baza Calculelor Sigure, n care poi avea ncredere) este o component a sistemului de calcul, care
asigur ndeplinirea politicii securitii. Este un cod, executat n regim de nucleu i un cod de regim user, executat n
contextul informaiilor de eviden, care are prioritatea TCB. Dei nu este periculos s fie acordat aceast prioritate
nregistrrii de eviden, destinate execuiei unui serviciu de sistem, Microsoft nu recomand acest lucru, ci recomand s
fie executat un cod, care cere prezena prioritii TCB n contextul nregistrrii de eviden de sistem. Folosirea
nregistrrii de eviden de sistem are un avantaj: aceasta nu posed parol, n rezultat ea nu poate fi furat sau calculat.
Dac nu este respectat recomandarea Microsoft, securitatea sistemului este redus la zero, controlul parolei devenind
inutil.
Necesitatea prezenei prioritii TCB restricioneaz substanial domeniul de utilizare a metodei date. n Windows XP
LogonUser nu mai cere prezena prioritii TCB la apelant, dar numrul de copii Windows NT i Windows 2000 este
nc foarte mare.
ULONG lRes;
CSspiClient Client;
CSspiServer Server;
Client.FreeBuffer(pRequest);
pRequest = NULL;
Server.FreeBuffer(pResponse);
pResponse = NULL;
}
if (pRequest != NULL)
Client.FreeBuffer(pRequest);
if (pResponse != NULL)
Server.FreeBuffer(pResponse);
if (lRes != ERROR_SUCCESS)
return SetLastError(lRes), FALSE;
return TRUE;
}
n codul iniial al funciei CheckPassword_SSPI nu exist apelri directe a funciei SSPI toate apelurile sunt incluse
n superclasele SspiClient i CsspiServer. Aceasta permite pe de o parte evidenierea schimbului de mesaje ntre
client i server, iar pe de alt parte folosirea acestor clase n calitate de baz, dac se dorete realizarea autentificrii de
reea n aplicaie.
Lucrul ncepe cu crearea i iniializarea obiectelor clientului i ale serverului, n procesul de iniializare obiectului
clientului fiindu-i transmise informaii despre utilizator. Apoi este apelat metoda CSspiClient::Start, pentru a genera
cererea iniial de autentificare i are loc trecerea n ciclul de mesaje. Aici funcia apeleaz metoda
CSspiServer::Continue i CSspiClient::Continue. Aceste metode primesc la intrare mesajul celeilalte pri i
returneaz mesajul de rspuns. Ciclul de mesaje dureaz pn n momentul n care serverul stabilete, c autentificarea s-a
petrecut cu succes sau invers. Pentru autentificarea NTLM n Windows NT 4.0 i Windows 2000 este caracteristic
urmtorul moment: dac un client ncearc s intre n sistem cu un nume necunoscut nici pentru sistemul local, nici
pentru domene, i n sistemul local nu este blocat nregistrarea de eviden a oaspeilor, atunci autentificarea se termin
cu succes, iar clientul intr n sistem sub numele nregistrrii locale de eviden a oaspeilor. Aceasta s-a realizat din
dorina compatibilitii cu produsul mai vechi al firmei Microsoft NT Lan Manager (de unde i vine numirea NTLM).
De aceea, n caz de succes, este apelat metoda CSspiServer::CheckGuest, care controleaz, dac nu cumva succesul
autentificrii se datoreaz acestui moment. n sfrit, dac este necesar token-ul utilizatorului, funcia apeleaz metoda
CSspiServer::GetToken, responsabil de obinerea token-ului. Cercetarea claselor CSspiClient i CsspiServer, care
necesit o studierea mai amnunit a interfeei SSPI, este lsat ca exerciiu.
6.5.4.3. Funcia NetUserChangePassword
Utilizarea acestei funcii pentru autentificare are loc conform codului care urmeaz:
BOOL CheckPassword_ChangePwd(
IN PCTSTR pszDomainName,
IN PCTSTR pszUserName,
IN PCTSTR pszPassword,
USES_CONVERSION;
if (lRes == ERROR_INVALID_PASSWORD ||
lRes == NERR_UserNotFound)
return SetLastError(ERROR_LOGON_FAILURE), FALSE;
return TRUE;
}
Exist mai multe considerente, care nu recomand utilizarea acestei funcii pentru autentificare. Principalul considerent
este faptul, c funcia NetUserChangePassword nu este destinat autentificrii utilizatorilor.
catalog
fiier obinuit
fiier special
SGF la distan
cale
TDA
nume local
0
TFD
nmax
exec ptr2
utilizatorul 2
[n memorie]
[pe disc]
descriptor
zona descriptorilor
blocuri
Fig.6.12. Descriptorii fiierelor n Unix
Citirea i scrierea are loc pornind de la o poziie curent, definit de un pointer. Aceste operaii incrementeaz n mod
automat pointerul cu numrul de caractere citite sau scrise. Primitiva lseek permite deplasarea explicit a pointerului.
Denumirea operaiei Efectul Rezultatul
open(nume fiier, mod de acces) deschide fiierul cu modul de acces indicat nume local alocat (-1 dac eec)
close(nbloc) abrog asocierea ntre numele local nbloc i succes 0, eroare -1
fiierul (sau tub) asociat
dup(nbloc) dac nbloc este numele local al unui fiier succes nbloc1, eroare -1
deschis, aloc un alt nume local nbloc1
sinonimul lui nbloc (desemnnd acelai
fiier)
read(nbloc,tampon,ncar) citete ncar caractere din fiierul (sau tub) numrul de caractere citite efectiv
cu numele local nbloc n zona tampon (mai mic dect ncar, dac s-a
ajuns la sfritul fiierului)
write(nbloc,tampon,ncar) scrie ncar caractere din zona tampon n numrul de caractere efectiv scrise
fiierul (sau tubul) cu numele local nbloc
lseek(nbloc,depl,orig) deplaseaz pointerul de citire-scriere depl poziia curent nou, (-1 n caz de
caractere, pornind de la poziia definit de eroare)
orig: 0 nceputul fiierului,
1 poziia curent a pointerului
2 sfritul fiierului
Notm, c este posibil s deplasm pointerul dup sfritul fiierului. Efectul este sporirea lungimii fiierului, poziiile
intermediare rmnnd goale; aceste guri nu ocup loc n memorie.
6.6.3.3. Protecia fiierelor n UNIX
Protecia este asigurat cu ajutorul listelor de acces conform principiului din 6.5.3. Exist trei moduri de acces
elementar: citire, execuie, scriere pentru un fiier; consultare, acces, modificare pentru un catalog.
Pentru controlul drepturilor, utilizatorii nu sunt individualizai, ci partajai n trei clase: proprietarul fiierului, membrii
unui grup de utilizatori, restul utilizatorilor. Lista de acces la un fiier este, deci, de lungime fix; ea enumr drepturile
de acces ataate fiecrei grupe; ea poate fi modificat doar de proprietarul fiierului sau de administratorul sistemului. O
caracteristic original a sistemului de protecie este c proprietarul unui fiier poate fi schimbat.
De la nceputuri UNIX a fost gndit ca un sistem de operare interactiv. Pentru a ncepe lucrul un utilizator trebuie s
intre n sistem, introducnd de la terminal numele propriu de eviden (contul, account name) i, poate, parola
(password), devenind astfel utilizator nregistrat al sistemului. Noii utilizatori sunt introdui (nregistrai) de ctre
administrator. Utilizatorul nu-i poate modifica contul propriu, n schimb parola este la discreia lui. Parolele sunt
codificate i pstrate ntr-un fiier separat. Nici administratorul nu poate restabili o parol uitat. Fiecrui utilizator
nregistrat i corespunde un catalog propriu al SGF, numit home. La intrare utilizatorului i se confer acces total la acest
catalog, inclusiv i la toate cataloagele i fiierele, care se conin aici. Accesul la alte cataloage i fiiere poate fi
restricionat.
Deoarece UNIX este un sistem de operare multiuser, o problem foarte actual este problema autorizrii accesului
utilizatorilor la fiierele SGF. Prin autorizarea accesului sunt considerate aciunile sistemului, care conduc la permiterea
sau interzicerea accesului unui utilizator concret la un fiier dat n dependen de drepturile de acces ale utilizatorului i