Linux: ¿hay alguna manera de evitar / proteger que un archivo se elimine incluso por root?


89

Tengo un archivo muy importante que utiliza una aplicación en mi lugar de trabajo, debo asegurarme de que no se borre, ¿cómo puedo hacer eso?

linux  files 

13
Haga una copia de seguridad, para que pueda restaurarla ... Aparte de eso, chattr +ipodría ayudar, pero también hará que el archivo sea de solo lectura (y puede ser reemplazado chattr -i), también puede intentar protegerlo con SELInux, etc.
Sven

43
¿Puede root crear un proceso que incluso root no puede matar?
Mark Gabriel

44
@MarkGabriel Sí. Una bomba tenedor. :)
reirab


8
El administrador de HW puede venir y quitar el disco, triturarlo, quemar los restos y alimentarlos a Hoghs. O, mejor, algún programador de C (++) puede inducir algunos demonios nasales. Lo que sea importante para ti, haz una copia de seguridad. Dos veces.
Pavel

Respuestas:


133

Sí, puede cambiar los atributos del archivo a solo lectura.

El comando es:

chattr +i filename

Y para deshabilitarlo:

chattr -i filename

De man chattr:

Un archivo con el iatributo no se puede modificar: no se puede eliminar ni renombrar, no se puede crear ningún enlace a este archivo y no se pueden escribir datos en el archivo. Solo el superusuario o un proceso que posee la CAP_LINUX_IMMUTABLEcapacidad puede establecer o borrar este atributo.


11
Para los interesados, el equivalente de bsd eschflags schg
Andrew Domaszek, el

85
Tenga en cuenta que un usuario con acceso de root puede desactivar esa marca y luego eliminar el archivo. Es poco probable que eso suceda por accidente, pero no protege contra la eliminación intencional.
Grant

66
@Grant, no si Securelevel está configurado lo suficientemente alto. El proceso de inicio establece el nivel de seguridad en 2 antes de que la red esté habilitada, por lo que restablecer el indicador requiere acceso a la máquina local (pero esto significa que los archivos utilizados en el proceso de inicio antes de ese momento también deben ser inmutables).
Simon Richter

16
@Grant Si uno quiere llevarlo al extremo, no puede evitar que la partición se elimine o que el disco se ponga en un horno o que los protones se descompongan en 10 ^ 30 años ...
Hagen von Eitzen

2
@Itai Ganot man Ojalá lo hubiera leído hace 4 días. Fui una pregunta en un examen que tomé = /
vfbsilva

84

Grabarlo en un CD. Coloque el CD en una unidad de CD-ROM y acceda desde allí.


15
+1 por pensar fuera de la caja. Y, afaik, también se ha usado antes en algunas circunstancias (unidad de cdrom de caja negra con cd enviado a su destino). De todos modos, puede no ser apropiado si alguien puede desconectar la unidad.
Alex Mazzariol

1
BESO me encanta! +1
MonkeyZeus

2
Creo que esa es la respuesta correcta a esta pregunta. Cambiar el atributo de archivo (chattr -i) no puede evitar acciones maliciosas.
Bruno von Paris

77
Hoy en día, una tarjeta SD de tamaño completo en un lector de tarjetas incorporado puede ser una mejor solución: menor consumo de energía, acceso más rápido en muchos casos y más duradero en el uso sin escritura.
Chris H

3
@ jpmc26, por lo tanto, unidad de CD-ROM. Esos son de solo lectura.
Thorbjørn Ravn Andersen

29
  1. Crea una imagen del sistema de archivos.
  2. Monta la imagen.
  3. Copie el archivo a la imagen montada.
  4. Desmonte la imagen y vuelva a montarla como solo lectura.
  5. Ahora no puedes borrarlo.

Ejemplo:

# dd if=/dev/zero of=readonly.img bs=1024 count=1024
# mkfs.ext2 readonly.img
# mkdir readonlyfolder
# mount readonly.img readonlyfolder/
# echo "can't delete this" > readonlyfolder/permanent.txt
# umount readonlyfolder
# mount -o ro readonly.img readonlyfolder
# cat readonlyfolder/permanent.txt 
can't delete this
# rm readonlyfolder/permanent.txt 
rm: cannot remove `readonlyfolder/permanent.txt': Read-only file system

3
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
Kaz Wolfe

3
Llevando esto un poco más lejos, puede usar squashfso cramfsque están comprimidos y de solo lectura. Necesita una herramienta especial para construir el sistema de archivos.
Zan Lynx

7

Linux tiene la llamada opción de montaje de enlace, que es una característica bastante poderosa y útil para saber :

%  cd $TMP && mkdir usebindmountluke && cd usebindmountluke
%  echo usebindmountluke > preciousfile
%  sudo mount -B preciousfile preciousfile
%  sudo mount -oremount,ro preciousfile
%  echo sowhat > preciousfile
zsh: read-only file system: preciousfile
%  rm preciousfile
rm: cannot remove ‘preciousfile’: Read-only file system

- lo que se está haciendo aquí es un archivo bind-mount para sí mismo (sí, puede hacerlo en Linux), luego se vuelve a montar en modo R / O. Por supuesto, esto también se puede hacer en el directorio.


6

También debe crear múltiples enlaces duros al archivo. Deben estar en varios lugares a los que los usuarios normales no puedan acceder.

De esta manera, incluso si logran anular su protección de chattr, los datos permanecerán y puede restaurarlos fácilmente donde su aplicación los está buscando.


11
Los enlaces duros no protegerán el contenido del archivo.
200_success

Sin embargo, proporcionarán protección adicional contra ELIMINACIÓN, que era la pregunta original.
barbacoa

2
@barbecue Si el archivo está desvinculado con el nombre que busca una aplicación, no importa que el contenido del archivo exista bajo otro nombre. Para cualquier cosa que busque el archivo con el nombre esperado, el archivo aún se ha eliminado.
un CVn

5

Otros han respondido tu pregunta como tú la has hecho. Como @Sven mencionó en un comentario, la solución general a la pregunta, "¿Cómo me aseguro de nunca perder un archivo?" es crear una copia de seguridad del archivo. Haga una copia del archivo y guárdelo en varios lugares. Además, si el archivo es extremadamente importante y su empresa tiene una política para realizar copias de seguridad de datos importantes con un servicio de copia de seguridad, puede considerar incluir este archivo en el servicio.


2
Bueno, por supuesto, el archivo está siendo respaldado regularmente, solo quería otra capa de protección contra usuarios que a veces trabajan en la caja con permisos de usuario root.

5

En Linux la inmutable bandera sólo se admite en algunos tipos de sistema de archivos (la mayoría de los nativos como ext4, xfs, btrfs...)

En los sistemas de archivos donde no es compatible, otra opción es unir y montar el archivo sobre sí mismo en modo de solo lectura. Eso tiene que hacerse en dos pasos:

mount --bind file file
mount -o remount,bind,ro file

Sin embargo, eso debe hacerse en cada arranque, por ejemplo a través de /etc/fstab.


Espero que alguien umountel archivo obtenga permisos de escritura nuevamente
whoan

3

En un comentario a la respuesta de Kevin , Jerry menciona:

Bueno, por supuesto, el archivo está siendo respaldado regularmente, solo quería otra capa de protección contra usuarios que a veces trabajan en la caja con permisos de usuario root. -

Asumiré que no puedes cambiar esta práctica, ya que es una muy, muy mala idea.

Todas las sugerencias sobre el uso de un dispositivo de solo lectura tienen el mismo problema: hace que sea una PITA para que pueda realizar cambios legítimos cuando lo necesite. En el caso de una unidad bloqueable, como una tarjeta SD, te encuentras con el problema de que de repente eres vulnerable cuando la desbloqueas para hacer tus cambios.

En cambio, lo que recomendaría es configurar otra máquina como servidor NFS y compartir el directorio con los archivos importantes en las máquinas en las que los usuarios tienen root. Comparta la montura como de solo lectura, para que las máquinas con usuarios en los que no confía no puedan realizar ninguna modificación. Cuando necesite hacer cambios legítimamente, puede conectarse al servidor NFS y hacer nuestros cambios allí.

Usamos esto para nuestros servidores web, de modo que un exploit exitoso contra el servidor web no podrá insertar o cambiar ningún archivo que el servidor luego devolverá, o cambiará la configuración.

Tenga en cuenta que esto puede evitarse de la misma manera que todos los relacionados con el punto de montaje pueden ser:

  • Haga una copia del directorio protegido.
  • Desmontar el directorio
  • Mueva la copia en lugar del soporte, o enlace simbólicamente si ese soporte no tiene suficiente espacio.

¿Por qué es una "muy, muy mala idea" hacer una copia de seguridad de un archivo importante regularmente y también hacer un esfuerzo para proteger el original contra la eliminación accidental? En la pregunta original del OP, y del comentario del OP sobre la respuesta a la que hizo referencia, está claro que la preocupación no es una actividad maliciosa, sino una actividad accidental / incompetente.
Craig

1
@ Craig: es una mala idea tener muchos usuarios con root, especialmente si no se confía en ellos para no meterse con archivos críticos.
Joe H.

Ah ... bueno, por supuesto que lo es. :-) Pero ese no era el quid de la pregunta del OP. El PO afirmó que no son usuarios con acceso root que deben estar protegidas contra el borrado accidental de un archivo.
Craig

@ Craig: puede que no sea el meollo de la pregunta, pero es el meollo del problema (¿problema XY?) ... pero no tengo idea de lo que están haciendo como raíz, así que si pudieran hacer uso de setuid y / o privilegios limitados de sudo. Y debería volver a leer la pregunta, ya que no veo que Jerry mencione que solo está tratando de proteger contra la eliminación involuntaria ("necesito asegurarme de que no se elimine en absoluto"), y solo dio un seguimiento que yo ver (lo que provocó mi respuesta).
Joe H.


2

¿Por qué no crear una imagen ISO 9660, que es de solo lectura por diseño?

Monte la imagen ISO, y se verá como un CD-ROM, pero con el rendimiento de un disco duro, y los archivos en la imagen montada estarán tan seguros de ser eliminados como los archivos en un CD-ROM físico.

La idea de grabar el archivo sensible en un CD y ejecutarlo desde un CD-ROM es interesante, suponiendo que establecer el bit inmutable en el archivo no se considera suficiente.

Existen posibles problemas negativos al ejecutarlo desde un CD físico, incluido el rendimiento (las unidades de CD-ROM son mucho, mucho más lentas que las unidades de disco duro o SSD). Existe la posibilidad de que un individuo bien intencionado retire el CD-ROM y lo reemplace con un disco diferente al que necesitan acceso. Existe la posibilidad de que una parte maliciosa simplemente saque el disco y lo arroje al microondas (o la basura), y así "elimine" su archivo. Existe el inconveniente de tener que tener una unidad de CD-ROM de hardware dedicada solo para ese archivo y otros factores.

Pero el OP dejó en claro que la intención principal es proteger contra la eliminación accidental, no contra actos maliciosos, y que los archivos en cuestión están respaldados y son recuperables en caso de que ocurra un accidente, pero es altamente deseable que el archivo nunca ser borrado accidentalmente

Parece que ejecutar el archivo desde una imagen ISO montada satisfaría el requisito.


1
Root aún puede eliminar un archivo manipulando la imagen directamente. Es solo un archivo normal que está montado.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen ¿Cómo es eso? ISO 9660 por diseño es inmutable. La parte que realiza ese cambio tendría que eliminar y reemplazar todo el archivo ISO. No es que no pudieran hacer eso. Pero no pudieron entrar y eliminar quirúrgicamente un archivo sin una gran experiencia, incluso así. Sería mucho más fácil quitar un CD-ROM físico de una unidad y tirarlo a un contenedor de basura. ;-)
Craig

No es necesario ser sofisticado: simplemente sobrescriba el archivo de imagen con ceros.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen Reconoceré ese punto con bastante facilidad. La advertencia es que requeriría desmontar intencionalmente la imagen y sobrescribirla. Un asesino completo lo haría justo shreden ese punto. Pero a menos que esté negando el acceso físico a la máquina, aún parece más fácil sacar un CD físico de la unidad y tirarlo al contenedor de basura que desmontar y sobrescribir el archivo ISO, aunque es fácil. Y el OP ha declarado que el archivo importante se respalda regularmente, por lo que esto es solo una medida adicional contra daños accidentales, no contra daños maliciosos.
Craig

He señalado cómo cambiar una imagen ISO9660 incluso si se supone que no se puede cambiar. Mi punto es que si un bit es escribible, la raíz puede escribirlo.
Thorbjørn Ravn Andersen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.