Řekněme, že otevřete soubor, do kterého máte oprávnění k zápisu.
Mezitím změníte oprávnění a odeberete oprávnění k zápisu, zatímco máte soubor stále otevřený v nějakém editoru.
Co se stane, když jej upravíte a uložíte?
Přijatá odpověď:
Oprávnění souboru se kontrolují při otevření souboru. Změna oprávnění nemá vliv na to, co s ním mohou dělat procesy, které již mají soubor otevřený. To se někdy používá u procesů, které začínají s dodatečnými oprávněními, otevřou soubor a pak tato další oprávnění zahodí:mohou k souboru stále přistupovat, ale nemusí jej znovu otevřít.
Editoři však obvykle nenechávají soubor otevřený. Když editor otevře dokument, stane se pod pokličkou to, že editor načte obsah souboru do paměti a soubor zavře. Když dokument uložíte, editor soubor otevře a zapíše nový obsah.
Editoři mohou při ukládání souboru postupovat podle jedné ze dvou strategií. Mohou vytvořit nový soubor a poté jej přesunout na místo. Případně mohou otevřít existující soubor a přepsat starý obsah. Přepsání má tu výhodu, že se nemění oprávnění a vlastnictví souboru a že funguje i v adresáři pouze pro čtení. Hlavní nevýhodou přepisování je, že pokud se ukládání uprostřed nezdaří (selhání editoru, pád systému, plný disk, …), zůstane vám oříznutý dokument. Různí editoři volí různé strategie; ten dobrý udělá, pokud je to možné, zápis do nového a poté přesun a přepíše pouze do adresáře pouze pro čtení (po vytvoření zálohy někde jinde).
Pokud editor postupuje podle strategie nové a poté přesunout, na oprávněních k souboru nezáleží:editor vytvoří nový soubor a potřebuje k tomu pouze oprávnění k zápisu do adresáře. Existují dvě výjimky:pokud má adresář sticky bit, může změna vlastnictví souboru (ale ne oprávnění) znemožnit procesu přesunutí nového souboru na místo. Další výjimkou jsou systémy, které podporují oprávnění k odstranění prostřednictvím seznamů ACL (jako je OSX):zrušení oprávnění k odstranění ze souboru může znemožnit přesun.
Pokud editor dodržuje strategii přepisování, zrušení oprávnění k zápisu znemožní ukládání. (Některé editory, které ve výchozím nastavení přepisují, se však mohou vrátit k novému a poté přesunout.)
Související:Jak změnit název souboru obsahujícího znaky?
Ve Vimu můžete vynutit strategii přepisu vypnutím backupcopy
volba; viz také, proč se hodnota inode mění, když upravujeme v editoru „vi“?. V Emacsu můžete vynutit strategii přepisu nastavením backup-by-copying
proměnná na t
.