iNodeとファイルの権限を理解しようとしています。単一ファイルの権限を保持するinodeがあると思います。オペレーティングシステムは、個々のファイルに対する権限を確認するために、個々のinodeをメモリにドラッグします。これ本のスライド私のコンピュータセキュリティクラスでは、これが正しく機能する方法です。しかし、彼らはまた、「複数のファイルノードを単一のinodeに関連付けることができる」と言います。これは矛盾しているようです。本にエラーがありますか?私が逃したものは何ですか?どうなりますか?
答え1
(しかし、一般的にiNodeではなくinodeと呼ばれます。)
この本はおそらく次の意味です:複数の文書名前単一のinodeに関連付けることができます。つまり、同じinodeに複数の異なる名前でアクセスできます。つまり、ファイルには複数のハードリンクがある可能性があります。
答え2
「ファイルノード」と「inode」の意味によって異なります。本はありませんが、ご質問にお答えします。
伝統的に、「inode」という用語はファイルのディスクメタデータを表します。これには、所有者ID、権限、ファイルサイズ(バイト)、ファイルの実際のデータを含むディスクブロックへの参照が含まれます。ああ、そして参照カウントがあります。
従来、ディレクトリは特別な形式のデータと、「このファイルはディレクトリを構成します」というタグがインデックスノードにあるファイルでした。特殊形式データの各項目は、名前(ヌルで終わるバイト配列、C言語文字列)とアノード番号で構成されています。 inode番号に基づいて、カーネルはinode(ディスクのメタデータ)を見つけることができる場所を見つけることができます。各ディレクトリエントリに対して、カーネルのファイルシステムコードはinodeの参照カウントを増やす必要があります。ほとんどのLinxでは、このstat
コマンドを使用して何らかの方法でこのリンク数を表示できます。
「ファイルノード」という用語は、デフォルトでファイル名であるディレクトリエントリを表すことができます。多くのファイル名が同じinodeを参照でき、ファイル名が追加されるたびにリンク数が1ずつ増えます。
自分に見せることができるものがたくさんあります。
touch somefilename
ln somefilename anothername
ls -li somefilename anothername
ls -li
どちらのファイルも、出力の最初のフィールドと同じ番号(inode番号)を表示する必要があります。stat somefilename
とを使用して、stat anothername
inode番号とリンク数を確認できます。いずれかのファイルを削除してから、残りのファイルstat
に対して操作を実行して、リンク数が減っていることを確認してください。