目次
概要
Linux では、ファイルやディレクトリへの参照を「シンボリックリンク(symlink)」として作成できます。
しかし、リンク先のファイルが削除・移動された場合やパス指定が誤っている場合、「リンクが壊れている」「開けない」「Not a directory」などのエラーが発生します。
この記事では、シンボリックリンクが読めない・壊れている場合の原因と修復方法を、実際のコマンド例とともに詳しく解説します。
想定されるエラーメッセージ
bash: cd: sample_link: No such file or directory
ls: cannot access 'sample_link': No such file or directory
主な原因一覧
原因 | 内容 |
---|---|
リンク先ファイルが削除・移動された | 元ファイルが存在しないためリンクが無効になっている |
相対パス指定の誤り | シンボリックリンク作成時のパスが間違っている |
権限不足 | リンク先またはリンク元の権限でアクセスできない |
ファイルシステムの不整合 | マウントミスやファイルシステム破損により参照不可 |
原因①:リンク先ファイルが削除・移動された
🔍 確認方法
ls -l sample_link
✅ 正常例
lrwxrwxrwx 1 user user 15 Oct 4 10:00 sample_link -> /home/user/file.txt
(矢印の先 /home/user/file.txt
が存在)
❌ 異常例
lrwxrwxrwx 1 user user 15 Oct 4 10:00 sample_link -> /home/user/file.txt
ls: cannot access '/home/user/file.txt': No such file or directory
💡 解決方法
リンク先ファイルを再作成するか、リンクを再指定します。
ln -sf /correct/path/file.txt sample_link
原因②:相対パス指定の誤り
🔍 確認方法
readlink sample_link
✅ 正常例
../data/file.txt
実際に ../data/file.txt
が存在していればOK。
❌ 異常例
../data/file.txt
ls ../data/file.txt
ls: cannot access '../data/file.txt': No such file or directory
💡 解決方法
正しいパスで再作成します。
ln -snf ../correct_path/file.txt sample_link
原因③:権限不足
🔍 確認方法
ls -ld sample_link $(readlink sample_link)
✅ 正常例
lrwxrwxrwx 1 user user ... sample_link -> /var/data/file.txt
-rw-r--r-- 1 user user ... /var/data/file.txt
❌ 異常例
-rw------- 1 root root ... /var/data/file.txt
💡 解決方法
リンク先の権限を見直します。
sudo chmod 644 /var/data/file.txt
sudo chown user:user /var/data/file.txt
原因④:ファイルシステムの不整合・マウントミス
🔍 確認方法
mount | grep data
df -hT | grep data
❌ 異常例
リンク先ディレクトリのマウントが外れている、またはエラーになっている場合。
💡 解決方法
再マウントまたは修復を行います。
sudo mount -a
# 必要に応じてファイルシステムチェック
sudo fsck /dev/sdXn
🧾 状態確認コマンドまとめ
目的 | コマンド |
---|---|
シンボリックリンクの詳細確認 | ls -l |
リンク先の確認 | readlink <link> |
壊れリンクを一括検出 | find -L . -type l |
ファイルシステムの状態確認 | df -hT / mount |
✅ 原因と解決策対応表
原因 | 確認コマンド | 解決方法 |
---|---|---|
リンク先ファイル削除・移動 | ls -l | ln -sf /正しいパス リンク名 |
相対パス指定の誤り | readlink | 正しいパスで再作成 |
権限不足 | ls -ld | chmod / chown |
ファイルシステム不整合 | mount / df -hT | mount -a / fsck |
まとめ
シンボリックリンクが読めない場合、まずは「リンク先が存在するか」を確認し、次に「権限」や「ファイルシステムの状態」を確認するのがポイントです。
特に find -L . -type l
を使うと壊れたリンクを一括で洗い出せるため、定期点検にも活用できます。
あわせて読みたい


ハードリンクとシンボリックリンクの違い
Linuxではファイルの参照方法として「ハードリンク」と「シンボリックリンク」が存在します。これらはファイルシステムの管理に密接に関わる概念で、用途や動作が異なり…