Revista Informática

Cómo prevenir la sobreescritura de ficheros en Linux

Publicado el 07 junio 2016 por Drassill
En más de una ocasión hemos introducido comandos "fatales" en Linux de los que uno se puede llegar a arrepentir profundamente; a veces dichos comandos son prácticamente insalvables (como puede ser rm -rf /) pero otras veces son "simples" sobreescrituras accidentales de archivos; sobreescrituras que pueden jugarnos una mala pasada en caso de que el contenido sea importante. ¿A quien lo he pasado alguna vez que en vez de hacer un echo de algo, en vez de escribir >> ruta_destino, ha escrito únicamente un >, machacando todo aquello que había antes?  ¿Quien no ha descubierto demasiado tarde que acaban de borrar todo el contenido previo de un fichero? A mí personalmente me pasó una vez, si bien por suerte tenía una copia de seguridad que me salvó la vida... Es por ello que hoy os traigo un pequeño artículo que a más de uno le podrá sacar las castañas del fuego.
Portada_clobber
Una de las opciones por las que podríamos optar para evitar estos casos (recomendable), sería el jugar con los diferentes permisos de los ficheros para evitar desastres; pero si bien esas medidas evitarían que gente indeseable pudiese escribir en ficheros delicados, no evitaría que nosotros mismos pudiésemos sobreescribir accidentalmente ficheros; ya sea como root o como superusuario. Es por eso que a veces es necesario recurrir a medidas adicionales; en este caso, al uso de noclobber.
El concepto clobber proviene del concepto clobbering que vendría a ser la sobreescritura accidental de un contenido determinado, ya sea mediante un programa determinado o mediante el volcado de un texto sobre un fichero... La cuestión está en que noclobber tiene como objetivo manipular el clobber para que éste se encuentra activo o no...
La desactivación del clobbering; es decir de la sobreescritura, se realizaría mediante el comando:
set-o noclobber
Rápido y sencillo. Gracias a este comando cualquier intento de sobreescritura se vería frustrado; he aquí un pequeño ejemplo del resultado que nos daría dicho intento:
no_clobber
Hemos de tener en cuenta que el hecho de no poder sobreescribir un fichero no siempre es bueno; hay programas que necesitan sobrescribir ciertos contenidos para poder funcionar correctamente, ficheros de configuración que son sobreescritos, ficheros alojados en el directorio virtual proc que necesitan ser modificados para poder ejecutar ciertas tareas... Es decir que la desactivación del clobbering no siempre es algo idóneo, así que es importante tenerlo claro antes de decantarse por dicha desactivación. Si aún así quisiésemos asegurarnos de que siempre que nos logueemos en el sistema tuviésemos el clobbering desactivado; simplemente tendríamos que agregar el comando al fichero .bashrc del usuario tal y como se muestra en el siguiente ejemplo:
  1. echo 'set -o noclobber' >> /root/.bashrc
  2. echo 'set -o noclobber' >> /home/ivan/.bashrc

Si en algún momento deseasemos activarlo de nuevo, únicamente tendríamos que cambiar el parámetro -o por +o:
set +o noclobber
Con esto ya tendríamos de nuevo activada la sobreescritura. A modo de recomendación personal, recomendaría desactivarlo en momentos que sepamos que vamos a ejecutar tareas delicadas, si bien esto depende de la situación de cada uno y del uso que cada uno le de a su equipo.
Espero que os haya resultado útil.
Saludos.

También podría interesarte :

Volver a la Portada de Logo Paperblog

Quizás te interesen los siguientes artículos :

Revista