¿Cómo puedo hacer que rm se elimine de forma segura de un solo paso en macOS?

De acuerdo con la página de manual de rm, rm -P ...sobrescribe los elementos tres veces para eliminarlos de forma segura:

-P Sobrescribir archivos normales antes de eliminarlos. Los archivos se
                sobrescriben tres veces, primero con el patrón de bytes 0xff,
                luego 0x00 y luego 0xff nuevamente, antes de que se eliminen.

¿ Es posible eliminar elementos de forma segura con una sola pasada rm ...?

Notas:

  • ¡No quiero usar srm ! Solo necesito rm, por favor.
  • Uso una MacBook con HDD y macOS 10.13.
¿ Por qué no quieres usar srm? Esto es para lo que está diseñado.

Respuestas (3)

No, eso no es posible con el comando rm estándar.

Puede descargar el código fuente de rm (rm.c) de opensource.apple.com y editar la función rm_overwrite() para realizar una sola pasada.

O puede usar un programa alternativo que sobrescriba el archivo y luego usar rm para eliminarlo. Tal programa alternativo podría ser simplemente usar cat o dd para copiar bytes de /dev/urandom o /dev/null sobre el archivo.

No puedes rmhacer algo que no tiene la capacidad de hacer. Por otro lado srmfue diseñado expresamente para este fin. Entonces, ¿cómo se llega rma hacer algo que srmsale de la caja?

hacer un alias

Si desea "usar" (el comando, no el programa real) rmpara hacer un solo paso, use un alias . Para ello, necesitarás tenerlo srminstalado en tu sistema (disponible en MacPorts ).

$ alias rm="srm -s"

Ahora, cada vez que emita el comando rm, en realidad llamará srmcon el -sindicador de "sobrescritura de un solo paso".

Ejemplo de uso: suponga que tiene un directorio llamado foocon una cantidad de archivos que desea eliminar. Emitir el comando

$ rm -rf foo

y lo que realmente se ejecutará es:

$ srm -s -rf foo

Hacer que el Alias ​​sea permanente

Edite su ~/.bash_profiley agregue la entrada de alias. Reinicie su sesión de bash y el " rmcomando de un paso" ahora estará disponible.

¿No está disponible srm en la instalación predeterminada de High Sierra? En 10.9-10.11 es...
srm no está en 10.12

Como se mencionó en esta respuesta, la sobrescritura de archivos ya no es una forma adecuada de garantizar que los archivos se eliminen de forma segura en máquinas con unidades SSD, ya que la forma en que se almacenan/eliminan los archivos en ellas es diferente debido a los sistemas subyacentes que brindan nivelación de desgaste, eficiencia , etc. Además, los sistemas de archivos de diario pueden complicar las cosas.

El mejor enfoque es usar FileVault de Apple para que los archivos eliminados solo persistan potencialmente como fragmentos cifrados.

Si está utilizando otros tipos de unidades o más antiguos, la sobrescritura puede ayudar a garantizar que los archivos se eliminen correctamente. En cuyo caso, hay GNU gshredque se pueden instalar como parte del paquete GNU coreutils , por ejemplo, usando brew:

brew install coreutils

La gshredherramienta permite controlar la cantidad de sobrescrituras con el -nargumento y también permite controlar cómo se produce la eliminación con el --removeargumento. Entonces, para sobrescribir solo una vez y unlinkusar el archivo:

gshred -n 1 --remove=unlink file_to_overwrite_and_delete