Manipulace se soubory na souborovém systému s přístupovými právy
Článek by se dal zjednodušeně popsat jako rozdíl mezi kopírováním a přesunutím souboru. Uživatelé jsou mnohdy překvapeni, co se to vlastně děje, budu se snažit nenásilnou formou vysvětlit chování systému.
K popisované situaci dochází často na sdílených discích na serveru, ať už je to NTFS nebo Samba, kde jsou složky s nastavenými přístupy pro různé skupiny uživatelů a přístupy se často různě prolínají.
Souborových systémů s možností nastavování práv je mnoho. Zastoupeny jsou snad ve všech modernějších desktopových operačních systémech a už hodně dlouhou dobu jsou nedílnou součástí serverových systémů.
Pro zjednodušení si budeme příklad vysvětlovat na souborovém systému NTFS (svět Windows).
Systém přístupových práv v souborovém systému je založen na objektech – v našem případě to budou soubory a složky. Složka je kontejner pro další objekty. Může obsahovat další složky nebo soubory. V základním nastavení, se kterým se setkáte nejčastěji, budou objekty nastaveny tak, že se práva budou dědit z nadřízených objektů na podřízené. Znamená to, že když změníte nějaký přístup na složce, projeví se to i u všech objektů uvnitř. Toto chování můžete ovlivnit, můžete dědění zrušit, můžete nastavovat práva pro jednotlivé objekty, ale ve většině případů k tomu není důvod.
Vraťme se k našemu příkladu. Máme sdílený disk, na kterém budou složky „modrá“ a „oranžová“. Do modré složky budou moci pouze „modří“ uživatelé, do oranžové složky zase oranžoví. A máme jednoho „dvoubarevného“ uživatele Frantu, který může do obou složek.
Co se stane, pokud vezmu soubor třeba z flashdisku nebo vytvořím nový soubor v textovém editoru a uložím jej do některé modré složky? Do té chvíle „bezbarvý“ soubor se po vložení do složky „obarví“ příslušnou barvou – převezme nastavení práv nadřízeného objektu (složky). Takže v tuto chvíli máme obarvený „modrý“ soubor v modré složce.
Případ 1 – Franta soubor přesune
Oranžový uživatel požádá Frantu, aby soubor z modré složky dal do oranžové složky. Franta, protože je líný soubor přesune (obdoba vyjmout - vložit). Jak vypadá teď náš soubor? Přesunutím se se souborem nic nestane z pohledu přísupových práv. Soubor už jednou barvu dostal (modrou), takže v oranžové složce skončí po přesunutí modrý soubor. A nastává situace, kdy se modří uživatelé k souboru nedostanou, protože do oranžové složky nemohou a oranžoví uživatelé sice mohou do své složky, ale modrý soubor neotevřou – nemají na to práva. Při pokusu o otevření souboru dostanou hlášení: „Přístup k souboru byl odepřen“.
Systém totiž v případě, kdy objekt už má nějaká práva přiřazena a ten objekt pouze přesouváme, tato práva zachová.
Teď musí přijít opět Franta, který to všechno spískal a soubor přesunout zpět do modré složky a udělat to podle následujícího scénáře.
Případ 2 – Franta soubor zkopíruje
Oranžový uživatel požádá (opět) Frantu, aby jim soubor z modré složky dal do oranžové, ale tentokrát tak, aby jej oranžoví uživatelé mohli otevřít. Franta, tentokrát již správně provede zkopírování souboru (obdoba kopírovat - vložit). Kopírováním se vytvoří nový „bezbarvý“ soubor, který po vložení do oranžové složky získá oranžovou barvu a bude dostupný pro oranžové uživatele.
V takovém případě se systém zachová tak, že vytvoří kopii objektu, tentokrát však bez uživatelských práv a po vložení do kontejneru (složky) objekt (soubor) zdědí nastavení práv.
Pokud soubor přesuneme na médium, které nepodporuje práva na úrovni systému souborů (typicky FlashDisk), nic se neděje, soubor pak půjde otevřít.
Mnohem zábavnější to bude, pokud bude jedna nebo obě složky šifrované. Pokud bychom soubor přesunuli, soubor zůstane zašifrovaný a na FlashDisku nám k ničemu nebude – k obsahu se nedostaneme. V tomto případě pomůže opravdu jen zkopírování souboru ze šifrované složky.