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
).