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?
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?
Respuestas:
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
i
atributo 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 laCAP_LINUX_IMMUTABLE
capacidad puede establecer o borrar este atributo.
chflags schg
Grabarlo en un CD. Coloque el CD en una unidad de CD-ROM y acceda desde allí.
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
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
squashfs
o cramfs
que están comprimidos y de solo lectura. Necesita una herramienta especial para construir el sistema de archivos.
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.
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.
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.
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
.
umount
el archivo obtenga permisos de escritura nuevamente
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:
¿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.
shred
en 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.
chattr +i
podría ayudar, pero también hará que el archivo sea de solo lectura (y puede ser reemplazadochattr -i
), también puede intentar protegerlo con SELInux, etc.