LoginSignup
0
0

"ls -l"した時に権限の後ろについてる数字はなに?

Posted at

この部分
image.png

発端

ある日いつものようにファイルの権限を見ようと ls -l したところ、いつもはスルーしてた上記の個所がふと気になったので調べました。

結論

「ハードリンク」の数

ハードリンクとは?

前提

ext4など、linuxでよく使用されるファイルシステムでは以下の3つに分けてファイルを管理しています。

  • ディレクトリエントリ
    • ファイル名orディレクトリ名とi-node番号(後述)の組み合わせのみを保持
  • i-node
    • ユニークなi-node番号を持つ
    • ファイルorディレクトリのメタデータを保持
      • 例)
        • ファイルタイプ(通常のファイル、ディレクトリなど)
          • ls -lした時のパーミッションの先頭についている文字のやつ
        • パーミッション
        • 所有者
        • ファイルサイズ
        • データブロックへのポインタ
  • データブロック
    • ファイルの実体
    • ディレクトリの場合は子のファイル/ディレクトリのディレクトリエントリが格納されている

ではハードリンクとは

既存のi-nodeに別のファイル名を紐づけたもの。
i-node、データブロックは既存のものと共通なのでハードリンクからファイルを編集すると元のディレクトリエントリからファイルを開いても編集が反映される。

似たようなの:シンボリックリンク

リンク先のファイルへの参照を保持するファイル。
ハードリンクと異なりまったく別個のi-node、データブロックを持つ。

データブロックにリンク先のパスを保持する。

catなどをシンボリックリンクに対して実行すると、ファイルシステムはシンボリックリンクのi-nodeからそれがシンボリックリンクであることを認識し、リンク先を参照しに行く。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0