ハードリンクとソフトリンクは内部的にどのように機能しますか?

ハードリンクとソフトリンクは内部的にどのように機能しますか?

次の説明を探しています。

  • ソフトリンクとハードリンクを作成すると、Linuxで何が起こりますか?
  • アクセス方法
  • シンボリックリンクに常に777権限が表示されるのはなぜですか?

答え1

Unixでは、ファイル(またはすべてのファイルシステムオブジェクト)はinode(間接ノード)として表示されます。ファイルに関するすべての情報(サイズ、タイムスタンプ、権限)はinodeに保存され、ディレクトリは本質的にinodeにマップされた名前のファイルです。 inode は、同じディレクトリーから別の名前で、または異なるディレクトリーで複数回参照することができます。各ファイルはまったく同じファイルで、プライマリファイルとセカンダリファイルはありません。 inodeのデータの1つはリンクの数です。ファイルを削除すると、単にディレクトリの名前が削除され、リンク数が減ります。数が0になると、ファイルが見つからなくなり破棄される可能性があります。ファイルへの各言及はハードリンク

シンボリックリンクは、デフォルトではファイル名を含む特別なファイルです。シンボリックリンクをたどるたびに含まれているファイル名を読み取り、ファイルを正常に検索します。シンボリックリンクの宛先が削除された可能性があり、そのリンクを変更するためにそのリンクがどこにあるかを知る方法はありません。その結果、リンクが切断されました。

シンボリックリンクに対する権限はまったく関係がなく、関連するものは宛先パスに対する権限です。通常、シンボリックリンクには0777(8進数)権限があります。

いくつかの制限があります。ハードリンクは同じファイルシステム内のファイルにのみ追加できます(inodeはローカルでのみ知られています)、ディレクトリを参照することはできません(およびエントリを.除く..)。最後にループを避けることです。ループを実行するには、アイテムを削除できることを確認するために高価なガベージコレクションが必要です。

シンボリックリンクは、ファイルシステム全体にわたってディレクトリを指すことができます。ただし、ポイントはパスの権限によって制限され、壊れる可能性があります。

関連情報