Dans cette partie de la préparation à l'examen RHCSA, nous porterons notre attention sur les liens. Il existe deux types de liens, les liens durs et les liens souples. Dans cet article, nous parlerons de la façon de créer et de supprimer des liens et discuterons également de quelques informations de base derrière les liens physiques et les liens symboliques.
Dans ce didacticiel, vous apprendrez :
- Qu'est-ce qu'un lien symbolique (soft) ?
- Qu'est-ce qu'un lien physique ?
- Comment créer un lien symbolique
- Comment créer un lien physique
- Comment supprimer le lien
Page de manuel du
ln
commande Configuration logicielle requise et conventions utilisées
Catégorie | Exigences, conventions ou version du logiciel utilisée |
---|---|
Système | Red Hat Enterprise Linux 8 ou toute autre distribution GNU/Linux |
Logiciel | N/A |
Autre | Accès privilégié à votre système Linux en tant que root ou via le sudo commande. |
Conventions | # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo commande$ – nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié |
Que sont les liens sur les systèmes GNU/Linux
Chaque fichier contient une information sur sa date de création, sa modification, son accès ainsi que la propriété du fichier et ses autorisations stockées dans un soi-disant inode . En plus des métadonnées stockées déjà mentionnées, l'inode stocke également une information sur un bloc de données où le contenu réel du fichier est stocké sur le système de fichiers.
Par conséquent, la fonction principale de l'inode est de décrire un objet du système de fichiers tel qu'un fichier ou un répertoire. Afin d'accéder à l'objet du système de fichiers associé à un inode spécifique nous devons fournir à l'utilisateur un lien physique qui est le nom réel du fichier ou du répertoire.
Ceci explique le premier type de liens qui sont des liens physiques . Le deuxième type de liens sur le système d'exploitation GNU/Linux sont les liens symboliques alias liens souples. La différence entre les liens physiques et symboliques est que les liens symboliques ne pointent que vers des liens physiques, c'est-à-dire qu'ils pointent vers les noms de fichiers ou de répertoires existants. En résumé, les liens permettent à l'utilisateur d'accéder à des fichiers ou des répertoires via plusieurs noms.
Liens physiques
Depuis les liens physiques sont associés aux inodes qui sont à leur tour une fonctionnalité du système de fichiers, les liens physiques ne peuvent pas traverser les systèmes de fichiers et ne sont donc valides qu'au sein du même système de fichiers. De plus, il n'est pas possible de créer des liens physiques sur les annuaires. Toute tentative de création d'un lien physique à partir d'un répertoire entraînera un hard link not allowed for directory
Message d'erreur.
Créons des liens physiques. Dans cet exemple, nous allons d'abord créer un fichier arbitraire appelé sandbox
contenant un texte linuxconfig.org
. Une fois prêt, nous créerons plusieurs liens physiques vers ce fichier pointant depuis différents emplacements.
- Créez un fichier appelé
sandbox
contenant un texteRHCSA
dans un répertoire personnel d'utilisateur~/
.$ echo "RHCSA" > ~/sandbox
Vérifiez le contenu du fichier en utilisant le
cat
commande :$ cat ~/sandbox RHCSA
- Toujours situé dans le répertoire d'accueil d'un utilisateur, créez un lien physique vers le
sandbox
fichier de/tmp/
répertoire appeléhardlink1
.$ ln sandbox /tmp/hardlink1
Vérifiez maintenant le contenu du lien dur nouvellement créé
/tmp/hardlink1
. Le contenu du/tmp/hardlink1
et lesandbox
d'origine le fichier doit être le même :$ cat /tmp/hardlink1 RHCSA
- Vérifiez les informations de lien associées aux deux noms de fichiers
sandbox
et/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
Notez le numéro associé
2
comme le montre la sortie ci-dessus. Ce nombre indique le nombre de liens physiques associés à un inode spécifique.REMARQUE
À ce stade, il est important de comprendre qu'il n'y a pas de réelle différence entre lesandbox
d'origine et le nouveau/tmp/hardlink1
dossier. Ils pointent tous les deux vers le même inode en utilisant des noms de fichiers différents. - Supprimer le lien physique en utilisant
unlink
ourm
commande.
$ unlink sandbox $ ls -l /tmp/hardlink1 -rw-rw-r--. 1 linuxconfig linuxconfig 6 Jul 25 10:20 /tmp/hardlink1
Dans ce cas, les deux rm
ou unlink
Les commandes supprimeront un lien physique mais pas les données et l'inode associés. Depuis le sandbox
le lien dur a été supprimé il n'y a que 1
lien dur laissé associé à l'inode d'origine. Ensuite, nous supprimerons le dernier lien physique associé à ce fichier :
$ rm /tmp/hardlink1
À ce stade, le lien vers l'inode pointant vers le contenu de notre fichier d'origine est perdu, nous considérons donc ce fichier comme supprimé. S'il n'y a pas de liens physiques pointant vers un inode, le système de fichiers peut maintenant remplacer l'emplacement de cet inode par une nouvelle donnée.
Vous pouvez supprimer n'importe quel fichier (à condition que vous disposiez des autorisations appropriées) à l'aide de la commande unlink ? Essayez-le maintenant :
$ touch file $ unlink file
Si vous avez compris les commandes ci-dessus, alors vous maîtrisez les liens physiques GNU/Linux comme expliqué dans ce tutoriel.
Liens symboliques
En plus des liens physiques, il existe également un autre type de liens disponibles sur le système d'exploitation GNU/Linux. Liens symboliques peut traverser des systèmes de fichiers, et il est également possible de créer un lien symbolique d'un répertoire. Cependant, des liens symboliques au lieu du véritable inode , uniquement un lien vers un lien physique existant (nom de fichier ou de répertoire). Pour cette raison, si le lien réel vers lequel pointe le lien symbolique est supprimé, le lien symbolique est rompu.
- Commençons par créer des objets bac à sable avec lesquels jouer. Dans ce cas, nous allons créer un répertoire appelé
mydir
et dans ce répertoire, nous allons créer un fichier appelémyfile
.$ mkdir mydir $ touch mydir/myfile
- Ensuite, nous allons créer un nouveau lien symbolique du répertoire existant monrépertoire en utilisant le
ln
commande avec une combinaison de-s
option.$ ln -s ~/mydir /tmp/symdir
Maintenant, nous avons créé un lien symbolique appelé
symdir
situé dans le/tmp
annuaire.$ cd /tmp/ $ ls -l symdir lrwxrwxrwx. 1 linuxconfig linuxconfig 23 Jul 25 14:05 symdir -> /home/linuxconfig/mydir
Notez le premier caractère de la sortie ci-dessus. Dans ce cas le caractère
l
indique qu'il s'agit d'un lien symbolique.REMARQUE
Lorsque vous créez un lien symbolique, gardez à l'esprit que leln
La commande stocke le chemin réel fourni sous forme de chaîne. Si ce n'est pas dans le même répertoire, dans de nombreux cas, vous devez fournir le chemin complet de la commande pour que le lien symbolique fonctionneLe nouveau
symdir
doit contenir un fichier précédemment créémyfile
:$ cd symdir $ ls myfile $pwd /tmp/symdir
Exercices
- Jouez avec les liens symboliques. Créez un lien symbolique vers un fichier après avoir supprimé le fichier d'origine et voyez ce qui s'est passé avec votre lien symbolique.
- Que se passe-t-il lorsque vous exécutez
ls
? commande avec un seul argument. Par exemple, exécutez la commande suivanteln -s /etc/services
. Que s'est-il passé ? - Déterminez si vous devez être propriétaire du fichier afin de créer un lien symbolique vers celui-ci. La même règle s'applique-t-elle aux liens physiques ?