Linuxのシンボリックリンクとは何ですか。なぜ使用されるのですか?
シンボリックリンク、シンボリックリンクまたはソフトリンクとも呼ばれます は、Windowsのショートカットのように、単に別のファイルまたはディレクトリを指す特殊なタイプのファイルです。シンボリックリンクの作成は、実際のファイルへのエイリアスの作成に似ています。
シンボリックリンクにアクセスしようとすると、実際には、シンボリックリンクが指すターゲットファイルにアクセスします。リンクファイルの内容に変更を加えると、実際のターゲットファイルの内容が変更されます。
オプション-lを指定してlsコマンドを使用すると、シンボリックリンクは次のようになります。
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
ほとんどのLinuxディストリビューションでは、リンクは他のエントリとは異なる色で表示されるため、通常のファイルやディレクトリとリンクを区別できます。
シンボリックリンクは、ファイルを整理および共有するための便利な方法を提供します。これらは、長くて紛らわしいディレクトリパスへの迅速なアクセスを提供します。 Linuxでライブラリをリンクする際に頻繁に使用されます。
シンボリックリンクについて少し理解できたので、それらを作成する方法を見てみましょう。
Linuxでシンボリックリンクを作成する方法
リンク名からターゲットファイルへのシンボリックリンクを作成するには 、次のように-sオプションを指定してlnコマンドを使用できます。
ln -s target_file link_name
ここでは-sオプションが重要です。リンクがソフトリンクであると判断します。使用しない場合は、ハードリンクが作成されます。別の記事でソフトリンクとハードリンクの違いについて説明します。
シンボリックリンクは混乱を招くことがあるため、いくつかの点に注意する必要があります。
結局のところ、それがリンクの全体的な目的です。リンクにアクセスして、ターゲットファイルにアクセスします。リンクを介してターゲットファイルに変更を加えることができます。例を挙げて見てみましょう。
newdir/test_dirにprog.pyファイルがあります。次の属性があります:
-rw-r--r-- 1 abhishek abhishek 163 Apr 13 15:07 newdir/test_dir/prog.py
次に、現在のディレクトリにこのファイルへのソフトリンクを作成します。
ln -s newdir/test_dir/prog.py link_prog
新しく作成されたリンクの属性は次のとおりです。
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
lに注意してください (1つではなくLです)行の先頭にありますか? Linuxでのファイルのアクセス許可に精通している場合は、「l」がリンクを意味していることをご存知でしょう。したがって、このファイルは実際にはリンクであることがわかります。メモリを更新するには、–はファイルを意味し、dはディレクトリを意味します。
このリンクを使用してコンテンツまたは属性を変更すると、同じことがターゲットファイルに反映されます。たとえば、ソフトリンクでタッチコマンドを使用していると、ターゲットファイルのタイムスタンプが変更されることに気付くでしょう。
touch link_prog
ls -l newdir/test_dir/prog.py
-rw-r--r-- 1 abhishek abhishek 163 Jul 2 10:04 newdir/test_dir/prog.py
ファイルまたはディレクトリにリンクしますか?知らないかもしれません!
リンクがファイルを指しているのかディレクトリを指しているのかをどうやって知ることができますか?パスをたどってターゲットファイル自体にアクセスするまで、それを知ることはできません。
はい、それは完全に可能です。これが、Linuxでソフトリンクを作成する際に注意する必要がある理由です。リンク先のターゲットファイルが存在する必要はありません。存在しないファイル/ディレクトリへのリンクを作成しても、エラーや警告は表示されません。
リンクを介して、またはそれ自体でターゲットファイルにアクセスしようとした場合にのみ、エラーが発生します。ただし、lsコマンドは引き続き機能します。
ln -s non_existant_dir link_dir
less link_dir
link_dir: No such file or directory
シンボリックリンクは777の許可を得て作成されていますが、何の意味もありません
シンボリックリンクのファイルパーミッションに気づきましたか?シンボリックリンクは常に777パーミッション(rwxrwxrwx)で作成されます。通常のファイルの場合、これは誰でもファイルにアクセスできることを意味します。しかし、それはリンクには当てはまりません。
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
リンクのファイル権限がそのまま扱われると、どのユーザーも安全なファイルへのシンボリックリンクを作成して自由にアクセスできます。これはセキュリティ上の大きな問題になります。ありがたいことに、それは起こりません。リンクの権限ではなく、ターゲットファイルの権限が重要であるため。
chmodコマンドを使用してリンクの権限を変更できますが、リンク自体ではなく、リンクされたファイルの権限が変更されます。
別のリンクなどを指すシンボリックリンクを作成できます。これは、連鎖シンボリックリンクと呼ばれます。混乱が増えるため、避けることをお勧めします。
まあ、それだけです。あなたは今ソフトリンクについてよりよく知っており、Linuxでシンボリックリンクを作成する方法を知っていると思います。 Linuxで壊れたシンボリックリンクを見つけて簡単に管理するのに役立つシンボリックリンクコマンドについて読むことができます。
ご質問やご提案がございましたら、下にコメントを残してください。