¿Cómo crear un enlace de solo lectura a un directorio?

18

Uno de mis scripts crea dinámicamente un enlace simbólico como este:

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

¿Cómo puedo hacer que el acceso a través del enlace sea de solo lectura?

Elmor
fuente

Respuestas:

18

Puede crear un montaje de enlace de solo lectura .

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

Sí, esto debe hacerse en dos pasos en los núcleos después de los núcleos de Linux 2.6.25 (consulte el enlace anterior para saber por qué).

O, alternativamente, como un /etc/fstabejemplo de línea ref :

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

En cualquier enfoque, un montaje de enlace vive en la capa del Sistema de archivos virtual (VFS), por lo que no es específico de ningún sistema de archivos, ni realmente 'monta' nada. Entonces, básicamente, esto está creando una especie de enlace simbólico para usted, pero esto no aparece como tal.

Y para responder al comentario a continuación sobre la pérdida de datos ... no, estas instrucciones no eliminan ningún archivo. En caso de que tenga archivos presentes en la ruta de destino, este montaje se colocará sobre esto. Simplemente desmonte para poder enumerar sus archivos en la ruta en el sistema de archivos debajo. Aun mejor; en general, evite montar encima de una ruta de destino no vacía.

gertvdijk
fuente
1
Ten cuidado. Seguí estos pasos y eliminó todo mi directorio de respaldo y lo hizo no escribible por mi demonio de respaldo.
¿puede proporcionar esta solución como una entrada fstab?
Ahogo
@Throoze There you go;)
gertvdijk
El comando de montaje probablemente debería ser: mount -o bind,remount,ro /path/to/destVer lwn.net/Articles/637501 de ese mismo hilo.
anon
mount -o remount,ro /path/to/destme da el siguiente error: mount: mount point is busy.@gertvdijk
Alper
2

para montar bind readonly con un solo comando:

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

desmontar

umount /path/to/dest/
Shimon Doodkin
fuente