LinuCレベル1 101試験の例題と解説
1.02.3ハードリンクとシンボリックリンク
LinuCレベル1 101試験の出題範囲から「1.02.3 ハードリンクとシンボリックリンク」についての例題を解いてみます。ここでは、ハードリンクについて確認しておきましょう。
例題
以下は、ls -li コマンドを使用して表示されたファイルの情報です。
# ls -li /home
78151 -rw-r--r--. 2 user group 6 Aug 1 09:24 file1
78152 lrwxrwxrwx. 1 user group 5 Aug 1 09:25 file2 -> file1
78151 -rw-r--r--. 2 user group 6 Aug 1 09:24 file3
78154 -rwxr-xr-x. 1 user group 6 Aug 1 09:26 file4
上記の中で、ハードリンクになっているファイルはどれか、全て選択してください。
- file1
- file2
- file3
- file4
※この例題は実際の試験問題とは異なります。
解答と解説
正解は、「1. file1」「3. file3」です。
まず、ハードリンクの機能や特徴について説明します。
ハードリンクは、Linux OSにおいて、1つの物理データを参照する複数のファイルを作る機能です。この仕組みを理解するためには「inode」の理解が必要です。
inodeとは
inodeとは、ファイルやディレクトリに関するメタデータを格納する情報のことです。具体的には、ファイルサイズ、所有者、アクセス権限、タイムスタンプなどの情報が含まれており、ファイルシステムはinodeによって物理的なデータの位置を特定します。
各inodeには一意の番号(inode番号)が割り当てられています。ファイルシステムは、この番号を使用してファイルを識別することができます。
ハードリンクの特徴は以下の通りです。
- ハードリンクのファイルは、元のファイルと同じinode番号を共有します。これにより、複数のファイル名で同じファイルデータを指すことができます。
- ハードリンクは同じ物理的データを共有するため、どちらかのハードリンクを変更すると、その変更はすべてのハードリンクに反映されます。
- ハードリンクの1つを削除しても、他のハードリンクが存在する限り、ファイルデータは削除されません。すべてのハードリンクが削除されたときに初めて、ファイルデータが削除されます。
続いて、ハードリンクの作成について説明します。
ハードリンクの作成は、lnコマンドを使用して行います。
ln [リンク先] [リンク名]
例えば、/tmp/test1を指すハードリンク/tmp/test2を作成する場合、以下のように実行します。
ln /tmp/test1 /tmp/test2
以下のようにハードリンクが作成されます。
# ls -li /tmp
170186 -rw-r--r--. 2 user group 6 Aug 1 11:00 test1
170186 -rw-r--r--. 2 user group 6 Aug 1 11:00 test2
この出力の書式は次のようになっています。
inode番号 パーミッション情報 ハードリンク数 所有者 グループ サイズ 変更日時 ファイル名
inode番号が一致するファイルが同じ物理データを参照するハードリンクです。またハードリンク数を見ることで、同じ物理データを参照するハードリンクがいくつあるか知ることができます。
lnコマンドでは、オプションを利用してシンボリックリンクという別のリンクを作成することもできます。シンボリックを作成する場合、-sオプションを使用して、以下のように実行します。
ln -s [リンク先] [リンク名]
選択肢の解説は以下です。
ハードリンクを見分けるには、以下のポイントを確認します。
・inode番号
・ハードリンク数
# ls -li /home
78151 -rw-r--r--. 2 user group 6 Aug 1 09:24 file1
78152 lrwxrwxrwx. 1 user group 5 Aug 1 09:25 file2 -> file1
78151 -rw-r--r--. 2 user group 6 Aug 1 09:24 file3
78154 -rwxr-xr-x. 1 user group 6 Aug 1 09:26 file4
出力結果を見ると、file1とfile3 のinode番号が同じ (78151) であること、ハードリンク数が"2"になっていることが分かります。これにより、file1とfile3 がハードリンクであることが確認できます。
よって、正しい選択肢は「1. file1」「3. file3」です。
file2
78152 lrwxrwxrwx. 1 user group 5 Aug 1 09:25 file2 -> file1
ファイル file2 は、シンボリックリンクであることを示しています。パーミッション"lrwxrwxrwx"で、判別ができます。
"l" がシンボリックリンクを意味しています。
今回は、ハードリンクファイルの見分け方について確認しました。ハードリンクの特徴について理解して簡単に見分けられるようにしておきましょう。
例題作成者
株式会社デージーネット 経営企画室 宮本 郁実