Comment créer un lien en lecture seule vers un répertoire?

18

Un de mes scripts crée dynamiquement un lien symbolique comme ceci:

ln -s /home/hosting/projects/images /home/hosting/projects/demo/images

Comment puis-je faire en sorte que l'accès via le lien soit en lecture seule?

Elmor
la source

Réponses:

18

Vous pouvez créer un montage de liaison en lecture seule .

mount --bind /path/to/source/ /path/to/dest/
mount -o bind,remount,ro /path/to/dest

Oui, cela doit être fait en deux étapes dans les noyaux après les noyaux Linux 2.6.25 (voir le lien ci-dessus pour savoir pourquoi).

Ou, alternativement, comme un /etc/fstabexemple de ligne ref :

/path/to/source/ /path/to/dest/ none bind,ro

Dans l'une ou l'autre approche, un montage de liaison réside dans la couche Virtual Filesystem (VFS), donc ce n'est spécifique à aucun système de fichiers, et vous ne «montez» vraiment rien. Donc, fondamentalement, cela crée une sorte de lien symbolique pour vous, mais cela n'apparaît pas comme tel.

Et pour répondre au commentaire ci-dessous sur la perte de données ... non, ces instructions ne suppriment aucun fichier. Si vous avez des fichiers présents sur le chemin de destination, ce montage se superposera à cela. Démontez simplement pour pouvoir lister vos fichiers dans le chemin du système de fichiers en dessous. Encore mieux; en général, évitez de monter au-dessus d'un chemin de destination non vide.

gertvdijk
la source
1
Faites attention. J'ai suivi ces étapes et il a supprimé tout mon répertoire de sauvegarde et l'a rendu non accessible en écriture par mon démon de sauvegarde.
pouvez-vous s'il vous plaît fournir cette solution en tant qu'entrée fstab?
Throoze
@Throoze Voilà!)
gertvdijk
La commande remount devrait probablement être: mount -o bind,remount,ro /path/to/destVoir lwn.net/Articles/637501 à partir de ce même thread.
Anon
mount -o remount,ro /path/to/destme donne l'erreur suivante: mount: mount point is busy.@gertvdijk
alper
2

pour monter bind en lecture seule avec une seule commande:

mount --bind -r /path/to/source/ /path/to/dest/

démonter

umount /path/to/dest/
Shimon Doodkin
la source