Réponse directe de l'article de LWN :
mount --bind /vital_writable_data /untrusted_container/vital_data
mount -o bind,remount,ro /untrusted_container/vital_data
Pris en charge depuis Linux 2.6.26.
D'après cet article, c'est possible. Vous avez besoin d'un noyau récent.
mount --bind -o ro /vital_data /untrusted_container/vital_data
Dans Squeeze, cela ne fonctionnait qu'avec :
mount --bind /src /dst
alors
mount -o remount,ro /dst
Maintenant, dans Debian Wheezy, vous devez faire :
mount -o remount,ro,bind /dst
pour se débarrasser du :message de ressources occupées.
Edit : Maintenant, dans Debian Jessie, mount essaie d'être intelligent et monte des sous-répertoires, qui, s'ils sont déjà montés avec bind, deviennent récursifs et de mauvaises choses se produisent :)
Il existe une option spéciale qui force util-linux à être à nouveau "stupide". La solution est la suivante :
mount --bind --make-rprivate /sbin/ $prefix/sbin/
mount -o remount,ro,bind $prefix/sbin/
Ensuite, vous pouvez monter --bind $prefix/sbin dans un autre répertoire.
À partir de la page de manuel :
Les opérations de sous-arborescence partagée. Depuis Linux 2.6.15, il est possible de marquer un montage et ses sous-montages comme partagés, privés, esclaves ou non liés. Un montage partagé offre la possibilité de créer des miroirs de ce montage de sorte que les montages et démontages dans l'un des miroirs se propagent à l'autre miroir. Un montage esclave reçoit la propagation de son maître, mais pas l'inverse. Une monture privée n'a aucune capacité de propagation. Un montage non lié est un montage privé qui ne peut pas être cloné via une opération de liaison. La sémantique détaillée est documentée dans le fichier Documentation/filesystems/sharedsubtree.txt dans l'arborescence des sources du noyau. Les opérations prises en charge sont :
mount --make-shared mountpoint mount --make-slave mountpoint mount --make-private mountpoint mount --make-unbindable mountpoint
Les commandes suivantes permettent de modifier récursivement le type de tous les montages sous un point de montage donné.
mount --make-rshared mountpoint mount --make-rslave mountpoint mount --make-rprivate mountpoint mount --make-runbindable mountpoint
mount(8) ne lit pas fstab(5) lorsqu'une opération --make-* est demandée. Toutes les informations nécessaires doivent être spécifiées sur la ligne de commande. Notez que le noyau Linux ne permet pas de modifier plusieurs drapeaux de propagation avec un seul appel système mount(2), et les drapeaux ne peuvent pas être mélangés avec d'autres options de montage.
Depuis util-linux 2.23, la commande mount permet d'utiliser plusieurs drapeaux de propagation ensemble et également avec d'autres opérations de montage. Cette fonctionnalité est EXPERIMENTALE. Les drapeaux de propagation sont appliqués par des appels système mount(2) supplémentaires lorsque les opérations de montage précédentes ont réussi. Notez que ce cas d'utilisation n'est pas atomique. Il est possible de spécifier les drapeaux de propagation dans fstab(5) comme options de montage (private, slave, shared, unbindable, rprivate, rslave, rshared, runbindable).