Niveau :
Résumé : ln ; ln -s ; mount --bind
Pour ceux qui ne sont pas adeptes du lien symbolique dans le chroot et pour ceux qui veulent pouvoir se permettre de faire plusieurs chroots du même type (apache) il existe une alternative.
Des liens
Tous d'abord présentons les liens.
Le lien symbolique :
$ ln -s source destination
- Même cassé il existe encore
- Il fonctionne de n'importe où vers n'importe où, à la seule restriction que le système de fichier de destination doit les supporter (en gros tous sauf fat et ntfs)
- Attention, il peut être cassé si on supprime la source
- Attention, les droits sont gérés sur la source ET sur la destination
- Ne fonctionne pas de l'intérieur d'un chroot vers l'extérieur
Le lien dur :
$ ln source destination
- Ne se casse pas
- On peut supprimer indifféremment source ou destination sans perdre les données
- Ne fonctionne (sauf exception) sur les répertoires
- Ne peut être fait que si source et destination sont sur le même système de fichier
- Ne fonctionne pas sur certains systèmes de fichier (notamment fat et ntfs, mais pas seulement)
- Attention, les droits peuvent être différents entre source et destination, c'est le droit du fichier utilisé pour l'accès qui sont pris en compte
Le lien de montage :
$ mkdir destination $ mount --bind source destination
- Ne fonctionne que sur les répertoires
- Fonctionne partout
- Il faut les ajouter dans /etc/fstab pour qu'ils soient maintenus au reboot
- Attention aux effets de bord, s'il y a un point de montage dans un sous répertoire de source, il ne se retrouvera pas dans destination
De leur usage
Intéressons nous aux liens de montage. Ils sont bien utiles :
- Pour faire de simple liens
- Pour dupliquer un répertoire du système vers un chroot
$ mount --bind /usr/share/php /srv/chroot/usr/share/php
- Pour faire apparaître des fichiers par un point de montage :
# on regarde ce qui se passe $ mount > /dev/sda1 on / type ext3 (rw) $ ls /home > a b c # on monte une partition par dessus /home $ mount /dev/sda2 /home $ ls /home > d e f # et on récupère l'ancien home $ mount --bind / /mnt $ ls /mnt/home > a b c
Pratique pour récupérer la place après avoir transféré un simple répertoire dans une nouvelle partition.
Comments