V této části přípravy na zkoušku RHCSA se zaměříme na odkazy. Existují dva typy odkazů, pevné odkazy a měkké odkazy. V tomto článku budeme hovořit o tom, jak vytvářet a odstraňovat odkazy, a také probereme základní pozadí obou, pevných odkazů a měkkých odkazů.
V tomto tutoriálu se naučíte:
- Co jsou symbolické (měkké) odkazy
- Co jsou pevné odkazy
- Jak vytvořit symbolický odkaz
- Jak vytvořit pevný odkaz
- Jak odstranit odkaz
Manuální stránka
ln
příkaz Požadavky na software a použité konvence
Kategorie | Požadavky, konvence nebo použitá verze softwaru |
---|---|
Systém | Red Hat Enterprise Linux 8 nebo jakákoli jiná distribuce GNU/Linux |
Software | Není k dispozici |
Jiné | Privilegovaný přístup k vašemu systému Linux jako root nebo prostřednictvím sudo příkaz. |
Konvence | # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo příkaz$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel |
Co jsou odkazy v systémech GNU/Linux
Každý soubor má v tzv. inode uloženou informaci o datu vytvoření, modifikaci, přístupu a také vlastnictví souboru a jeho oprávnění. . Kromě již zmíněných uložených metadat, inode také ukládá informace o datovém bloku, kde je v systému souborů uložen skutečný obsah souboru.
Proto je hlavní funkcí inode je popis objektu souborového systému, jako je soubor nebo adresář. Chcete-li získat přístup k objektu systému souborů spojenému s konkrétním inodem musíme uživateli poskytnout pevný odkaz což je skutečný název souboru nebo adresáře.
To vysvětluje první typ odkazů, které jsou pevné odkazy . Druhým typem odkazů v operačním systému GNU/Linux jsou symbolické odkazy a.k.a měkké odkazy. Rozdíl mezi pevnými a symbolickými odkazy je v tom, že symbolické odkazy ukazují pouze na pevné odkazy, to znamená, že ukazují na existující názvy souborů nebo adresářů. Stručně řečeno, odkazy umožňují uživateli přistupovat k souborům nebo adresářům pomocí více jmen.
Pevné odkazy
Od pevných odkazů jsou spojeny s inody které jsou zase funkcí souborového systému, pevné odkazy nemohou křížit souborové systémy, a proto jsou platné pouze v rámci stejného souborového systému. Kromě toho není možné vytvářet pevné odkazy na adresáře. Jakýkoli pokus o vytvoření pevného odkazu z adresáře bude mít za následek hard link not allowed for directory
chybové hlášení.
Vytvoříme několik pevných odkazů. V tomto příkladu nejprve vytvoříme libovolný soubor s názvem sandbox
obsahující text linuxconfig.org
. Jakmile budete připraveni, vytvoříme několik pevných odkazů na tento soubor směřující z různých míst.
- Vytvořte soubor s názvem
sandbox
obsahující textRHCSA
v domovském adresáři uživatele~/
.$ echo "RHCSA" > ~/sandbox
Zkontrolujte obsah souboru pomocí
cat
příkaz:$ cat ~/sandbox RHCSA
- Stále umístěné v domovském adresáři uživatele vytvořte pevný odkaz na
sandbox
soubor z/tmp/
adresář s názvemhardlink1
.$ ln sandbox /tmp/hardlink1
Nyní zkontrolujte obsah nově vytvořeného pevného odkazu
/tmp/hardlink1
. Obsah/tmp/hardlink1
a původnísandbox
soubor by měl být stejný:$ cat /tmp/hardlink1 RHCSA
- Zkontrolujte informace o odkazu spojené s oběma názvy souborů
sandbox
a/tmp/hardlink1
.$ ls -l /tmp/hardlink1 -rw-rw-r--. 2 linuxconfig linuxconfig 6 Jul 25 10:20 /tmp/hardlink1 $ ls -l ~/sandbox -rw-rw-r--. 2 linuxconfig linuxconfig 6 Jul 25 10:20 /home/linuxconfig/sandbox
Poznamenejte si přidružené číslo
2
jak ukazuje výše uvedený výstup. Toto číslo udává počet pevných odkazů spojených s konkrétním inodem.POZNÁMKA
V této fázi je důležité pochopit, že mezi původnímsandbox
není skutečný rozdíl a nově vytvořený/tmp/hardlink1
soubor. Oba ukazují na stejný node pomocí různých názvů souborů. - Odstraňte pevný odkaz pomocí
unlink
neborm
příkaz.
$ unlink sandbox $ ls -l /tmp/hardlink1 -rw-rw-r--. 1 linuxconfig linuxconfig 6 Jul 25 10:20 /tmp/hardlink1
V tomto případě obě rm
nebo unlink
příkazy odstraní pevný odkaz, ale ne aktuální přidružená data a inode. Od sandbox
pevný odkaz byl odstraněn, existuje pouze 1
pevný odkaz vlevo spojený s původním inodem. Dále odstraníme poslední pevný odkaz spojený s tímto souborem:
$ rm /tmp/hardlink1
V tomto okamžiku se ztrácí odkaz na inode ukazující na obsah našeho původního souboru, a proto tento soubor považujeme za odstraněný. Pokud neexistují žádné pevné odkazy směřující na inode, souborový systém nyní může přepsat umístění tohoto inodu novými daty.
Můžete odstranit jakýkoli soubor (pokud máte správná oprávnění) pomocí příkazu unlink? Zkuste to nyní:
$ touch file $ unlink file
Pokud jste porozuměli výše uvedeným příkazům, pak jste zvládli pevné odkazy GNU/Linux, jak je vysvětleno v tomto tutoriálu.
Symbolické odkazy
Kromě pevných odkazů je v operačním systému GNU/Linux k dispozici také jiný typ odkazů. Symbolické odkazy může křížit souborové systémy a je také možné vytvořit symbolický odkaz adresáře. Místo skutečného node však symbolické odkazy , pouze odkaz na existující pevné odkazy (název souboru nebo adresáře). Z tohoto důvodu, pokud je odstraněn skutečný pevný odkaz, na který symbolický odkaz ukazuje, symbolický odkaz se přeruší.
- Pojďme nejprve vytvořit nějaké objekty izolovaného prostoru, se kterými si budeme hrát. V tomto případě vytvoříme adresář s názvem
mydir
a v tomto adresáři vytvoříme soubor s názvemmyfile
.$ mkdir mydir $ touch mydir/myfile
- Dále vytvoříme nový symbolický odkaz na existující adresář mydir pomocí
ln
příkaz s kombinací-s
volba.$ ln -s ~/mydir /tmp/symdir
Nyní jsme vytvořili symbolický odkaz nazvaný
symdir
umístěný v/tmp
adresář.$ cd /tmp/ $ ls -l symdir lrwxrwxrwx. 1 linuxconfig linuxconfig 23 Jul 25 14:05 symdir -> /home/linuxconfig/mydir
Všimněte si prvního znaku výše uvedeného výstupu. V tomto případě znak
l
označuje, že máme co do činění se symbolickým odkazem.POZNÁMKA
Při vytváření symbolických odkazů mějte na paměti, želn
příkaz ukládá skutečnou cestu zadanou jako řetězec. Pokud se nenachází ve stejném adresáři, v mnoha případech musíte poskytnout úplnou cestu k objednávce, aby symbolický odkaz fungovalNově vytvořený
symdir
by měl obsahovat dříve vytvořený soubormyfile
:$ cd symdir $ ls myfile $pwd /tmp/symdir
Cvičení
- Hrajte si se symbolickými odkazy. Vytvořte symbolický odkaz na soubor, poté odstraňte původní soubor a podívejte se, co se stalo s vaším symbolickým odkazem.
- Co se stane, když spustíte
ls
příkaz pouze s jedním argumentem. Spusťte například následující příkazln -s /etc/services
. Co se stalo? - Určete, zda musíte soubor vlastnit, abyste na něj vytvořili symbolický odkaz. Platí stejné pravidlo pro pevné odkazy?