GNU/Linux >> Znalost Linux >  >> Linux

Proč nelze pomocí inodu manipulovat se soubory?

Bezpečnostní důvody -- pro přístup k souboru potřebujete oprávnění k souboru STEJNĚ JAKO oprávnění prohledávat všechny adresáře z kořenového adresáře potřebné k tomu, abyste se k souboru dostali. Pokud byste mohli přistupovat k souboru pomocí inode, mohli byste obejít kontroly obsahující adresáře.

To vám umožní vytvořit soubor, ke kterému bude mít přístup množina uživatelů (nebo skupina skupin) a ne kdokoli jiný - vytvořit adresáře, které jsou přístupné pouze uživatelům (jeden adresář na uživatele), a poté hard- propojte soubor se všemi těmito adresáři – k souboru samotnému má přístup kdokoli, ale ve skutečnosti k němu může přistupovat pouze někdo, kdo má oprávnění pro vyhledávání v jednom z adresářů, do kterých je propojen.


Některé operační systémy dělají mít to zařízení. Například OS X jej potřebuje pro podporu Carbon File Manager a na Linuxu můžete použít debugfs . Samozřejmě to můžete udělat na jakémkoli UNIXu z příkazového řádku přes find -inum , ale skutečný důvod, proč nemůžete přistupovat k souborům pomocí inode, je ten, že to není nijak zvlášť užitečné. dělá trochu obcházet oprávnění k souborům, protože pokud existuje soubor, který můžete číst ve složce, kterou nemůžete číst nebo spustit, pak vám otevření inodu umožní jej objevit.

Důvodem, proč to není příliš užitečné, je to, že musíte najít číslo inodu pomocí *stat() zavolejte, kdy již máte název souboru (nebo otevřené fd)...nebo musíte uhodnout inum.


V reakci na váš komentář:Chcete-li "předat soubor", můžete použít fd předávání přes AF_LOCAL sokety pomocí SCM_RIGHTS (viz man 7 unix ).


Linux
  1. Jak tarovat (komprimovat) soubory, s výjimkou určitých souborů nebo adresářů

  2. Proč může Rm odebrat soubory pouze pro čtení?

  3. Porovnat adresáře, ale ne obsah souborů?

  1. Přesouvat soubory čtením jejich názvů souborů do různých adresářů?

  2. Proč nemohu rozdělit soubor .ape?

  3. Proč je setuid v adresářích ignorován?

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Snadný způsob, jak skrýt soubory a adresáře v Linuxu

  3. Proč nemohu tento soubor smazat jako root?