Moderni OS pouzivaji temer vyhradne hiearchicky system souboru (adresare, podadresare, ...). Ve starych OS nebyl (CP/M, OS-MFT, OS-MVT, IBM v 60. letech, MS-Windows).
Existuji ruzne pristupy k vice diskum:
Ve starsich OS byla znacna omezeni na jmena souboru: kratka jmena (CP/M maximalne 6+3 znaky, MS-DOS 8+3, Unix 14), nerozlisuji se mala a velka pismena, mnozina znaku, ktere mohou tvorit jmeno souboru je znacne omezena. Novejsi OS casto rozlisuji mala a velka pismena, povoluji specialni znaky (mezera, +, !, :) a narodni znaky (escrzyaie...). V pojmenovavani souboru vyvoj smeruje k dlouhym jmenum (desitky znaku).
Udrzuji se i starsi verze souboru. Pro odkaz na soubor, lze pouzivat bud pouze jmeno (odpovida nejnovejsi verzi souboru) nebo jmeno;generace. V OS VMS jsou generacni soubory soucasti systemu. V Unixu se resi programove (RCS - Revision Control System).
OS zpravidla o souboru udrzuje dalsi informace:
Atributy (jen pro cteni, apod.). MS-DOS atributy:
R | read-only, jen pro cteni |
H | hidden, skryty |
S | system, systemovy |
A | archive, nebyl archivovan |
Datumy a casy; u nekterych systemu jeden u jinych vice:
Typy souboru (Macintosh)
V nekterych systemech jsou soubory cleneny na datovou cast a resource cast (texty, obrazky, ikony, dialogy). Tyto OS zpravidla umoznuji zmenu resource casti programu bez nutnosti noveho prekladu programu. U pocitacu Macintosh skutecne dve casti souboru; programy v MS-Windows - vse v jednom souboru.
Odkazy v systemu souboru (v Unixu link, na pocitacich Macintosh zastupci)
Unix umoznuje pro kazdy soubor nebo adresar definovat prava pro vlastnika, skupinu a pro ostatni uzivatele. Vlastnik neprebira prava skupiny a ostatnich. Vlastnik souboru muze byt jen jeden. V nekterych Unixech muze uzivatel byt v danem okamziku clenem vice skupin, v jinych muze menit clenstvi ve skupine, ale v kazdem okamziku muze byt clenem pouze jedne skupiny. V nasledujici tabulce vlastnik nemuze nic, skupina muze cist a ostatni mohou vsechno. Zpravidla vsak nema vlastnik mensi prava nez skupina a skupina nema mensi prava nez ostatni.
Vlastnik | Skupina | Ostatni |
--- | r-- | rwx |
r | cteni obsahu souboru |
w | zmena obsahu souboru |
x | spousteni souboru (vsechny programy mosi mit 'x') |
pro mazani a prejmenovavani souboru staci mit prava 'wx' v adresari |
r | lze pouze precist jmena souboru a podadresaru daneho adresare (nic |
jineho, nelze ani zjistit, zda se jedna o soubory nebo podadresare) | |
w | samo o sobe neni k nicemu; spolu s pravem x umoznuje vytvoreni, |
prejmenovani a zruseni souboru a prazdnych podadresaru v adresari | |
x | umoznuje se prepnout do adresare, cteni a zapis do souboru, zmena vlastnika |
a prav souboru a podadresaru, neni-li pravo r, je nutne znat jmena souboru | |
v adresari |
Nazev pochazi ze slov nastavit uid a gid (User Identifier = cislo uzivatele, Group Identifier = cislo skupiny).
Jestlize ma program nastaveno pravo setuid (misto prava x pro vlastnika se vypisuje s), ma uzivatel pri jeho spusteni stejna prava jako vlastnik programu. Podobne funguje setgid pro skupinu.
Priklad pouziti: v Unixu jsou informace o uzivatelich (vcetne zakodovanych hesel) ulozeny v souboru /etc/passwd. Jeho vlastnikem je root (spravce systemu) a prava jsou rw-r--r--. Soubor tedy muze kdokoli cist, menit jej vsak smi pouze root. Aby si uzivatele mohli sami menit hesla, ma program, ktery se pouziva pro zmenu hesel, nastaveno pravo setuid (a jeho vlastnikem je root).
Vyse zmineny program musi byt ale spolehlivy a delat jen to co ma, jinak narusime bezpecnost systemu (napr. jakykoliv uzivatel bude moci zmenit jinym uzivatelum hesla a pak zneuzit jejich konta).
U nekterych Unixu se pouziva tzv. ACL (Acces Control List). Pro kazdy soubor a adresar existuje seznam uzivatelu a skupin, u kazdeho jsou uvedena prava (podobne jako u Novellu).
Pravo | Adresar | Soubor |
S (supervisory) | vsechna prava pro adresar | vsechna prava k souboru |
a cely podstrom neomezen | ||
maskou zdedenych prav | ||
muze pridelovat prava ostatnim | ||
R (read) | otevrit a cist soubory | otevrit a cist soubor |
(neni-li F, musi znat jmeno | ||
souboru) | ||
W (write) | otevrit a zapisovat do exist. | zapisovat do souboru |
souboru | ||
C (create) | vytvaret soubory a adresare, | obnovit soubor (SALVAGE) |
zapisovat do nove vytvorenych | po smazani | |
souboru | ||
E (erase) | smazat soubory nebo prazdne | smazat soubor |
adresare | ||
M (modify) | menit jmena a atributy souboru | -> totez |
a podadresaru (ne mazat a | ||
menit jejich obsah) | ||
F (file scan) | je videt obsah adresare po DIR | videt soubor pri DIR |
A (acces control) | umoznuje menit prava ostatnich | -> totez |
uzivatelu (s vyjimkou S) | ||
i ta co sami nemame |
U kazdeho adresare a souboru lze definovat seznam tvoreny dvojicemi: uzivatel nebo skupina - prava. Uzivatel muze byt clenem vice skupin. Vysledna prava jsou sjednocenim prav uzivatele a vsech skupin, kterych je clenem. Navic se prava prebiraji z nadrizeneho adresare (dedeni). Toto prebirani prav je mozne pro jednotlive adresare omezit tzv. maskou dedicnych prav.
Atributy pro soubory a adresare:
H | hidden | skryty soubor, nevypise se pri DIR |
S | system | systemovy soubor, nevypise se pri DIR |
D | delete inhibit | nelze smazat |
R | rename inhibit | nelze prejmenovat |
P | purge | nelze obnovit po smazani |
Atributy pouze pro soubory:
A | archive | nebyl archivovan |
Ro | read only | pouze pro cteni |
Rw | read write | pro cteni i pro zapis |
X | execute only | nelze kopirovat, pouze spustit |
I | indexed | pro urychleni pristupu k velkym souborum |
T | transactional | lze definovat transakce = sady akci, ktere se |
bud provedou cele, nebo se soubor automaticky | ||
obnovi do puvodniho stavu | ||
S | shareable | sdilitelny soubor -> muze ho otevrit vice |
uzivatelu soucasne |
Pri zapisu do souboru (databaze) se cely soubor nebo urcita cast souboru uzamkne a ostatni procesy nebo uzivatele nemohou po dobu uzamceni obsah prislusne oblasti menit (nebo ani cist). Pouziva se napriklad pro pristup k databazim (priklad: databaze mistenek pristupna z nekolika predprodeju v ruznych mestech).
Pri otevreni souboru se definuje:
Omezeni prostoru na disku (discich) zabraneho jednim uzivatelem. Pouziva se u NOVELL, Unix, VMS. Casto se pouziva tvrda a mekka kvota. Tvrdou nelze v zadnem pripade prekrocit, mekkou lze prekrocit na omezenou dobu.