Tengo CentOS 6.8 instalado en una unidad flash y debido a su ciclo de vida limitado (100.000 escrituras (tiempo medio antes de fallar para cada sector)), quiero montarlo como de solo lectura.
El kernel supuestamente se lanza como ro. Al menos, el resultado de cat /proc/cmdline
comienza con "ro...".
He configurado /etc/fstab
para montar solo lectura:
UUID=4addd4a7-97f6-4399-89e4-6d3728bd2979 / ext4 defaults,noatime,ro 1 1
UUID=21a81149-6534-4313-8696-e203896d5881 /boot ext4 defaults,noatime,ro 1 2
UUID=D64B-DD9C /boot/efi vfat noatime,ro,umask=0077,shortname=winnt 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
tmpfs /var/log tmpfs defaults 0 0
Cuando ejecuto mount
, veo que /etc/fstab
se siguieron las especificaciones. A pesar de esto, todavía puedo modificar archivos y escribir archivos nuevos. Se están ejecutando más pruebas de que la montura se puede escribir lsof
(segúnesta publicación). Los resultados muestran algunos archivos abiertos para escritura, principalmente en /home. (Para llegar a esto, tuve que montar /var/log
como tmpfs
).
¿Es esto un error en CentOS 6.8? ¿Existe alguna solución?
Respuesta1
Recuerdo haber leído en algún lugar, probablemente en las páginas de manual, que hay una especie de error que significa que para hacer que un dispositivo sea de solo lectura, también hay que volver a montarlo.
mount -o remount,ro ...
intente agregar un reinicio después de las otras entradas en fstab, a ps mount se le puede proporcionar el sistema de archivos "ninguno" en fstab.
ACTUALIZAR:
Encontré la entrada del hombre relevante;
mount(8) since v2.27 allows to change the mount options by passing the relevant options along with --bind. For example:
mount --bind,ro foo foo
This feature is not supported by the Linux kernel; it is implemented in userspace by an additional mount(2) remounting syscall. This solution is not atomic.
The alternative (classic) way to create a read-only bind mount is to use the remount operation, for example:
mount --bind olddir newdir
mount -o remount,ro,bind olddir newdir
Note that a read-only bind will create a read-only mountpoint (VFS entry), but the original filesystem superblock will still be writable, meaning that the olddir will be
writable, but the newdir will be read-only.
It's impossible to change mount options recursively (for example with -o rbind,ro).
En base a esto, puedes intentar usar las opciones de fstab;
default,rbind,ro
en su defecto, agregue una entrada para volver a montar.
ACTUALIZACIÓN 2 (man 8 mount / man 8 mount blockdev);
-r, --read-only
Mount the filesystem read-only. A synonym is -o ro.
Note that, depending on the filesystem type, state and kernel behavior, the system may still write to the device. For example, ext3 and ext4 will replay the journal if
the filesystem is dirty. To prevent this kind of write access, you may want to mount an ext3 or ext4 filesystem with the ro,noload mount options or set the block device
itself to read-only mode, see the blockdev(8) command.
Eso significa que tienes la opción de;
ro,noload
o para usar;
blockdev --setro /dev/...