Chci skrýt některé soubory tak, že ani ls -a
může to najít. Nemluvím o přidání ‚.‘ před název souboru.
Přemýšlel jsem, jestli bych mohl vytvořit samostatná systémová volání pro přístup k těmto souborům. Skutečná potřeba je skrýt před uživatelem některé soubory protokolu. Ukládám data MAC některých souborů a nechci, aby uživatel viděl tyto soubory protokolu. V současné době znám pouze jeden způsob, jak skrýt data, tj. přidáním „.“ před název souboru. Soubor ale může uživatel vidět jednoduchým voláním ls -a
. Takže chci vědět, jestli existuje nějaký jiný způsob, jak skrýt tato data protokolu?
Přijatá odpověď:
Jak poznamenali jiní, je-li účelem toho zabránit v přístupu k trvalému souboru, je skrytí pravděpodobně špatný přístup. V tomto případě může být řešením použití vhodných opatření pro řízení přístupu nebo dokonce kryptografie, pokud to aplikace zaručuje. Na druhou stranu vytváření „skrytých“ dočasných soubory je naprosto legitimní případ použití.
V Linuxu je od verze jádra 3.11 open()
systémové volání podporuje O_TMPFILE
příznak, který lze použít k vytvoření nepojmenovaných dočasných souborů. Když je použit tento příznak, název cesty argument na open()
se používá k určení adresáře, pod kterým se vytvoří nepojmenovaný inode. Nicméně jako hlavní případ použití pro O_TMPFILE
je, jak název napovídá, vytvoření dočasného souborů, toto není vhodné pro trvalé ukládání, protože soubor bude ztracen, když se zavře poslední deskriptor souboru k souboru, pokud není soubor pojmenován. Soubor může být pojmenován pomocí linkat()
systémové volání, pokud není O_EXCL
příznak byl zadán navíc k O_TMPFILE
, v takovém případě je zabráněno propojení souboru se systémem souborů.
Nedávno přidaný O_TMPFILE
funkce je významná, protože ji lze použít k poskytnutí následujících vlastností dočasným souborům:
- Volná tvorba pro závody.
- Automatické smazání při zavření.
- Nedostupný přes žádnou cestu.
- Není vystaven útokům pomocí symbolických odkazů.
- Volající nemusí vymýšlet jedinečná jména.
Kromě toho lze funkcionalitu použít k vytvoření souborů, které jsou zpočátku neviditelné, přičemž v tomto okamžiku mohou být na souboru upraveny příslušné atributy souborového systému před jeho propojením se systémem souborů v jedné atomické operaci. Toho lze využít, abyste se vyhnuli určitým podmínkám závodu TOCTOU.
Související:Stáhnout data CSV z adresy URL do tabulky Google?
Nevýhodou O_TMPFILE
příznakem je, že podporu pro něj poskytuje pouze podmnožina souborových systémů. Zpočátku byla podpora poskytována v souborových systémech ext2, ext3,
ext4, UDF, Minix a shmem. Podpora XFS byla přidána v Linuxu 3.15.