Nueva respuesta (2015-03-22)
( Nota: esta respuesta es más simple que la anterior, pero no es más segura. Mi primera respuesta es más sólida porque podría mantener los archivos de solo lectura mediante las opciones de montaje fs antes de las marcas de permiso. Por lo tanto, forzar la escritura de archivos sin permiso para escribir no funcionará en absoluto.)
Sí, en Debian , hay un paquete: fsprotect ( página de inicio ).
Utiliza aufs
(de forma predeterminada, pero podría usar otra unionfs
herramienta) para permitir cambios de sesión en vivo pero en RAM de forma predeterminada, por lo que todo se olvida al reiniciar.
Puede instalarlos ejecutando simplemente:
apt-get install fsprotect
Una vez hecho, del documento en línea:
Después de esto:
- Edite
/boot/grub/menu.lst
o /etc/default/grub2
o /etc/lilo.conf
y agregue " fsprotect=1G
" a los parámetros del núcleo.
- Modifique 1G según sea necesario.
- Aplicar cambios (es decir, ejecutar
update-grub
)
- Edite
/etc/default/fsprotect
si desea proteger sistemas de archivos que no sean /
.
- reiniciar
También es posible que desee proteger con contraseña el gestor de arranque grub o prohibir cualquier cambio en él.
A partir de ahí, si algún archivo está protegido contra cambios, para muestra por
chmod ugo-w myfile
Si utiliza para la muestra vi myfile
e intenta escribir en ella con el comando :w!
, esto funcionará y su myfile
cambio. Puede reiniciar para recuperar sin modificar myfile
.
Eso ni siquiera es posible con mi siguiente primera solución:
Antigua (primera) respuesta:
Sí, es una solución fuerte, ¡pero poderosa!
Hacer r / o utilizable
Tienes que montar algunos directorios en rw , like /var
, /etc
y maybe /home
. Esto podría hacerse usando aufs o unionfs . Me gusta esto de otra manera , usando /dev/shm
y mount --bind
:
cp -a /var /dev/shm/
mount --bind /dev/shm/var /var
Antes, podía mover todos los directorios que no tienen que cambiar en la operación normal en a static-var
, que crear enlaces simbólicos en / var:
mkdir /static-var
mkdir /static-var/cache
mkdir /static-var/lib
mv /var/lib/dpkg /static-var/lib/dpkg
ln -s /static-var/lib/dpkg /var/lib/dpkg
mv /var/cache/apt /static-var/cache/apt
ln -s /static-var/cache/apt /var/cache/apt
... # an so on
Así que cuando vuelva a montar en el ro, copiando /var
en /dev/shm
no tomar demasiado espacio como la mayoría de los archivos se mueven a /static-var
y sólo enlaces simbólicos se van a copiar en la memoria RAM.
La mejor manera de hacer esto finamente es hacer un ciclo de energía completo, un día de trabajo completo y ejecutar finamente un comando como:
find / -type f -o -type f -mtime -1
Entonces verá qué archivos deben ubicarse en la partición de lectura-escritura.
Inicio sesión
Como en este host no existe memoria estática grabable, para almacenar el historial y otros registros, debe configurar un syslog
servidor remoto .
echo >/etc/syslog.conf '*.* @mySyslogServer.localdomain'
De esta manera, si su sistema se rompe por algún motivo, todo lo anterior se registra.
Actualización
Cuando se ejecuta con algunos mount --bind
en uso, para realizar dicha actualización mientras el sistema está en uso (sin necesidad de ejecutar init 1
, para reducir el tiempo de inactividad), la forma más sencilla es reconstruir una raíz limpia , capaz de realizar la actualización:
Después de volver a montar '/' en modo lectura-escritura :
mount -o remount,rw /
for mpnt in /{,proc,sys,dev{,/pts}};do
mount --bind $mnpt /$mnt$mpnt;
done
chroot /mnt
apt-get update && apt-get dist-upgrade
exit
umount /mnt/{dev{/pts,},proc,sys,}
sync
mount -o remount,ro /
Y ahora:
shutdown -r now
Solo tengo experiencia usando un buildroot más reciente (2014-02). En esa versión puede deshabilitar 'volver a montar el sistema de archivos raíz de arranque de lectura y escritura' en el archivo de configuración con:
BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW no está configurado
Logré crear una imagen que solo usa su ext4 / partición como solo lectura para que desconectar el poder del sistema no dañe en absoluto. Funciona muy bien, por lo que si no necesita escribir en su sistema de archivos, tal vez esta sea una solución mucho más simple que la mencionada anteriormente (que parece más o menos aplicable a un sistema Debian en lo que se refiere a apt-get).
fuente
/etc/inittab
si/
allí se vuelve a montar . Si es así, cámbielo a sus necesidades.