Co je symbolický odkaz v Linuxu a proč se používá?
Symbolický odkaz, také známý jako symbolický odkaz nebo měkký odkaz , je speciální typ souboru, který jednoduše ukazuje na jiný soubor nebo adresář stejně jako zástupci ve Windows. Vytvoření symbolického odkazu je jako vytvoření aliasu skutečného souboru.
Pokud se pokusíte získat přístup k symbolickému odkazu, ve skutečnosti přistoupíte k cílovému souboru, na který symbolický odkaz ukazuje. Změny provedené v obsahu souboru odkazu změní obsah skutečného cílového souboru.
Pokud použijete příkaz ls s volbou -l, symbolický odkaz vypadá takto:
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
Ve většině distribucí Linuxu jsou odkazy zobrazeny jinou barvou než ostatní položky, takže můžete odlišit odkazy od běžných souborů a adresářů.
Symbolické odkazy nabízejí pohodlný způsob organizace a sdílení souborů. Poskytují rychlý přístup k dlouhým a matoucím adresářovým cestám. V Linuxu se hojně používají při propojování knihoven.
Nyní, když víte něco o symbolických odkazech, pojďme se podívat, jak je vytvořit.
Jak vytvořit symbolický odkaz v Linuxu
Chcete-li vytvořit symbolický odkaz na cílový soubor z názvu odkazu , můžete použít příkaz ln s volbou -s takto:
ln -s target_file link_name
Důležitá je zde volba -s. Určuje, že odkaz je měkký odkaz. Pokud jej nepoužíváte, vytvoří pevný odkaz. Rozdíl mezi měkkými a pevnými odkazy vysvětlím v jiném článku.
Na co je třeba pamatovat u symbolických odkazů
Symbolické odkazy mohou být občas matoucí, proto byste měli mít na paměti několik věcí.
Změny provedené v odkazu se projeví v původním souboru
To je ostatně celý účel odkazů. K cílovému souboru se dostanete pomocí odkazu. Pomocí odkazů můžete provést změny v cílovém souboru. Podívejme se na příklad.
Mám soubor prog.py v newdir/test_dir. Má následující atributy:
-rw-r--r-- 1 abhishek abhishek 163 Apr 13 15:07 newdir/test_dir/prog.py
Nyní vytvořím měkký odkaz na tento soubor v mém současném adresáři:
ln -s newdir/test_dir/prog.py link_prog
Zde jsou atributy nově vytvořeného odkazu:
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
Všimněte si l (je to L, ne jedno) na začátku řádku? Pokud jste obeznámeni s oprávněními k souborům v Linuxu, měli byste vědět, že „l“ znamená odkaz, a tak vám říká, že tento soubor je ve skutečnosti odkaz. Pro obnovení paměti – znamená soubor a d znamená adresář.
Pokud nyní použiji tento odkaz ke změně obsahu nebo atributů, totéž se projeví v cílovém souboru. Například používám dotykový příkaz na softwarovém odkazu a všimnete si, že změní časové razítko cílového souboru.
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
Odkazuje to na soubor nebo adresář? Možná nevíte!
Jak byste věděli, zda odkaz ukazuje na soubor nebo adresář? Nemůžete to vědět, dokud nebudete sledovat cestu a nezpřístupníte samotný cílový soubor.
Můžete vytvořit odkazy na neexistující soubor nebo adresář
Ano, to je zcela možné. To je důvod, proč byste měli být opatrní při vytváření měkkých odkazů v Linuxu. Cílový soubor, na který odkazujete, nemusí existovat. Při vytváření odkazu na soubor/adresář, který neexistuje, neobdržíte žádnou chybu ani varování.
Chyba se zobrazí pouze při pokusu o přístup k cílovému souboru, buď prostřednictvím odkazu, nebo samostatně. Příkaz ls však bude stále fungovat.
ln -s non_existant_dir link_dir
less link_dir
link_dir: No such file or directory
Symbolické odkazy jsou vytvořeny s povolením 777, ale to nic neznamená
Všimli jste si oprávnění k souboru na symbolickém odkazu? Symbolické odkazy jsou vždy vytvářeny s oprávněním 777 (rwxrwxrwx). U běžného souboru by to znamenalo, že k souboru má přístup kdokoli. To ale neplatí pro odkazy.
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
Pokud by se s oprávněními k souborům u odkazů zacházelo tak, jak jsou, mohl by každý uživatel vytvořit symbolický odkaz na zabezpečený soubor a volně k němu přistupovat. To by byl zásadní bezpečnostní problém. Naštěstí se tak neděje. Protože na oprávnění k cílovým souborům záleží, ne na oprávnění k odkazům.
Ke změně oprávnění k odkazu můžete použít příkaz chmod, ale změní se tím oprávnění odkazovaného souboru, nikoli odkazu samotného.
Můžete odkazovat na odkaz odkazu neboli zřetězeného symbolického odkazu
Můžete vytvořit symbolický odkaz, který ukazuje na jiný odkaz a tak dále. Tomu se říká zřetězený symbolický článek. Je lepší se jim vyhnout, protože to vytváří další zmatek.
No, to je vše. Předpokládám, že nyní máte lepší znalosti o měkkých odkazech a víte, jak vytvořit symbolické odkazy v Linuxu. Můžete si přečíst o příkazu symbolické odkazy, který vám může pomoci najít poškozené symbolické odkazy v Linuxu a snadno je spravovat.
Pokud máte dotazy nebo návrhy, zanechte prosím níže komentář.