ディレクトリにリンクの設定はできないの?

ディレクトリのリンクはシンボリックリンクの設定をすることで実現できます。
ls -lで表示される項目の1文字目がlにななっているものは、シンボリックリンクで、 ファイル名には、リンク情報があわせて表示されます。

たとえば
% ls -l /bin
lrwxrwxrwx 1 root root 9 May 29 1996 /bin -> ./usr/bin

これは、/binディレクトリの実体は ./usr/bin(/usr/bin)にあるよ、ということを表しています。 シンボリックリンクは、ln コマンドに-sオプションをつけて指定します。 これに対して、-sオプションなしのリンクをハードリンクと呼びます。

UNIX Begginer's Handymanual: ln

 

リンクの設定状況を確認するには?

リンク数を確認するだけなら、ls -lの第2フィールドに表示されます。

どのファイルとどのファイルがリンクされているかを確認するには、

  1. ls -iで調べたいファイルのiノード番号*を調べる。
  2. find 検索ディレクトリ -inum iノード番号 -printで、同じiノード番号のファイルを探す。

この結果がリンクしている相手のファイルとなります。 ただし、ファイルシステム(ディスクのパーティション)が異なると、同じ番号を持っていてもリンクされているわけでは ありませんので注意して確認してください。どのディレクトリが違うファイルシステムかを確認したい場合は、 /usr/sbin/df -kコマンドのmount pointの欄を参考にしてください。

*iノード番号について
ファイルの詳細情報(ファイルのサイズや所有者、アクセス権など)を保存するiノードには それぞれ番号がついていて、それをiノード番号といいます。 リンクでは、同じiノード情報を見ることによって同一ファイルを異なるパスでアクセスできるようにしています。

UNIX Begginer's Handymanual: ln

 

リンクにアクセス許可は関係する?
リンクしたいファイルがあるディレクトリに、x権が設定されていなければ リンクできません。
たとえば、otaファイルに rwxr--r--と所有者以外のx権がないのに、

ln ota/syoko sample

としてもsyokoファイルがアクセスできないのでリンクできません。

ディレクトリにx権があれば、対象ファイルのrおよびw権がなくても リンクはできます。ただし、ファイルの所有者やアクセス権は、リンク元のままなので ファイルを参照、書き換えようとしても拒否されます。

UNIX Begginer's Handymanual: ln

 

リンクの数に制限はあるの?
ファイルの詳細情報を登録するinodeのリンク数を管理する領域が4バイトなので、 単純計算すると4,294,967,295あたりが制限値になりそう。従って、事実上 制限はないと考えてよいと思います。

UNIX Begginer's Handymanual: ln

 

リンクの設定はいつまで有効なの?
rmで削除したり、mvで名前を変えたりするまで有効です。

UNIX Begginer's Handymanual: ln