セキュリティ上の理由 -- ファイルにアクセスするには、ファイルにアクセスするために必要なルートからすべてのディレクトリを検索するためのパーミッションと同様に、ファイルに対するパーミッションが必要です。 inode でファイルにアクセスできる場合は、ファイルを含むディレクトリのチェックをバイパスできます。
これにより、一連のユーザー (または一連のグループ) がアクセスできるファイルを作成でき、他のユーザーはアクセスできなくなります。ユーザーのみがアクセスできるディレクトリ (ユーザーごとに 1 つのディレクトリ) を作成し、その後ハード-ファイルをこれらすべてのディレクトリにリンクします。ファイル自体には誰でもアクセスできますが、実際には、リンク先のディレクトリの 1 つに対する検索権限を持つユーザーのみがアクセスできます。
一部のオペレーティング システムでは 動作 その施設を持っています。たとえば、OS X では Carbon File Manager をサポートするために必要であり、Linux では debugfs
を使用できます。 .もちろん、コマンドラインから find -inum
を介して任意の UNIX で実行できます。 ですが、inode でファイルにアクセスできない本当の理由は、それがあまり役に立たないからです。 する 読み取りまたは実行できないフォルダーに読み取り可能なファイルがある場合、inode を開くとそれを検出できるため、一種のファイル アクセス許可を回避します。
あまり役に立たない理由は、*stat()
経由で inode 番号を見つける必要があるからです。 その時点ですでに 持っている ファイル名 (または開いている fd)...または inum を推測する必要があります。
あなたのコメントに応えて:「ファイルを渡す」には、 SCM_RIGHTS
によって AF_LOCAL ソケットを渡す fd を使用できます (man 7 unix
を参照) ).