Cómo borrar un disco duro en Mac con un script de bash de forma remota

Como profesional de TI o proveedor de servicios gestionados (MSP), la tarea de gestionar cuentas de usuario en una red de ordenadores Mac puede ser todo un reto. Imagínate tener que reutilizar un dispositivo, solucionar problemas graves o asegurarte de que los datos confidenciales se eliminan por completo: son tareas que pueden parecer intimidantes y requerir una cantidad significativa de tiempo y recursos.

Aquí es donde entra en juego el script de bash «Borrar un disco duro de forma remota». Hoy vamos a profundizar en cómo este potente script de bash puede mejorar tus operaciones de TI. 

Presentación del script de bash «Borrar un disco duro de forma remota»

Este script de bash no es una simple herramienta, sino una potente solución diseñada para hacer frente a algunas de las situaciones más complicadas de la gestión de TI. ¿Su función principal? Borrar el disco duro de un Mac de forma remota. Pero ofrece más que eso: proporciona un control granular que permite a los profesionales de TI conservar determinadas cuentas de usuario y eliminar otras. 

#!/usr/bin/env bash
# Description: Remove all users and their data.
#
# Release Notes: Initial Release
# (c) 2023 NinjaOne
#   By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
#   Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
#   Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
#   Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
#   Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
#   Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
#   Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
#   EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#
# Usage: <url> <download file path> [expected md5 sum]
# <> are required
# [] are optional
# Example: https://www.nirsoft.net/utils/advancedrun.zip /tmp/advancedrun.zip
#  Downloads advancedrun.zip
# Example: https://www.nirsoft.net/utils/advancedrun.zip /tmp/advancedrun.zip 1f0913135878bb6cd30c1f3f6cf4b882
#  Downloads advancedrun.zip, verify's the provided md5 summed hash
#
# Notes: If the path doesn't exist this script will create the folders needed to place it there.
#  If you used /tmp/MyFiles/advancedrun.zip and the MyFiles folder didn't exist then it would create it.
#  The same for /tmp/MyFiles/Tools/advancedrun.zip, it would create MyFiles and Tools.
#
# To exclude users from being removed, specify each user as a parameter.
# Usage:
# [user1] [user2] ... [userN]
# Example:
# Admin HelpDesk Bob

# store arguments in a special array
args=("$@")
# get number of elements
USER_COUNT=${#args[@]}

# Print out list of user and count the number of users
EXCLUDED_USERS=("${args[*]}")
echo "User that will be excluded: ${EXCLUDED_USERS[*]}"

# List all users that should be under /Users/
USERS=("$(dscacheutil -q user | grep -A 3 -B 2 -e uid: 5'[0-9][0-9]' | grep -E "^name: " | awk '{print $2}')")
# Don't filter out user if we don't have a list to exclude
if ((0 == USER_COUNT)); then
    USER_LIST=("${USERS[@]}")
    # We have decided to not exclude any users
    # Remove the .AppleSetupDone file so that on reboot we prompt to create a new first user
    rm -rf "/var/db/.AppleSetupDone"
else
    # Filter out users that we want to exclude
    USER_LIST=()
    while IFS='' read -r line; do USER_LIST+=("$line"); done < <(echo "${USERS[@]}" "${EXCLUDED_USERS[@]}" | tr ' ' 'n' | sort | uniq -u)
fi

# Remove users from system, along with their data.
for USER in "${USER_LIST[@]}"; do
    echo "Removing user: ${USER}"
    echo "Running: dscl . -delete "/Users/${USER}""
    dscl . -delete "/Users/${USER}"
    status=$?
    # Output result
    # If status is 0 and USER is not an empty string and /Users/${USER} is a folder
    if [ $status -eq 0 ]; then
        echo "Removed ${USER} from login"
        if [ -n "${USER}" ] && [ -d "/Users/${USER}" ]; then
            # Double quote prevent spaces from breaking things,
            #  even though user names should never have spaces in them
            # ${} around a variable prevent globbing: https://tldp.org/LDP/abs/html/globbingref.html
            rm -rf "/Users/${USER}"
            rmStatus=$?
            [ $rmStatus -eq 0 ] && echo "Removed /Users/${USER}" || echo "Failed to remove /Users/${USER}"
        else
            echo "Folder /Users/${USER} is not a folder or doesn't exist"
        fi
    else
        echo "Failed to remove ${USER} from login"
    fi
done
# Wait 1 minute so we can report back
echo "Rebooting in 1 minute."
echo "If this computer doesn't reboot, manual rebooting might be needed."
shutdown -r +2
osascript -e 'tell app "System Events" to restart'

Profundicemos: cómo funciona el script «Borrar un disco duro Mac a distancia»

El script opera identificando y eliminando cuentas de usuario en un Mac, eliminando de forma efectiva todos los datos asociados. Para ello, utiliza el comando `dscl`, una utilidad de línea de comandos de servicio de directorio nativa de macOS. Este comando permite crear, leer y gestionar datos del Servicio de Directorio. 

Y aquí viene lo interesante: puedes especificar las cuentas de usuario que el script debe excluir de la operación de borrado. Esto significa que puedes mantener intactas las cuentas de administrador o de servicio de asistencia mientras eliminas todas las demás, una función fundamental cuando necesitas borrar el disco duro de un Mac de forma remota pero manteniendo el control sobre el sistema. 

Además, el script se encarga del archivo `.AppleSetupDone`. Cuando se elimina este archivo, el Mac activa el proceso de configuración para crear un nuevo usuario en el siguiente arranque. Este es un paso esencial para recuperar el control del sistema tras el borrado. 

Por último, el script emite un comando de reinicio, reiniciando el sistema y sellando todos los cambios realizados. 

Posibles aplicaciones

Este script tiene multitud de aplicaciones, lo que lo convierte en una herramienta esencial en el arsenal de un profesional de TI o MSP. He aquí algunos escenarios en los que este script resulta excelente: 

  1. Reutilización de dispositivos: restablece rápidamente una máquina a su estado de configuración inicial, perfecto para cuando hay que asignar un dispositivo a un nuevo usuario.
  2. Solución de problemas: en situaciones en las que problemas extensos han hecho inestable un perfil de usuario, un borrado completo puede ser la solución más rápida.
  3. Seguridad de los datos: cuando finaliza el mandato de un usuario o se retira un dispositivo, el script puede garantizar que los datos confidenciales no caigan en manos equivocadas eliminando por completo los datos del usuario.

Implicaciones para la seguridad: protección de datos

Por muy potente que sea el script, es fundamental tener en cuenta las implicaciones de seguridad. El script está diseñado para borrar datos, así que una vez ejecutado, los datos desaparecen para siempre. Por lo tanto, es imperativo tener siempre una copia de seguridad de los datos necesarios antes de ejecutar el script. Recuerda siempre la regla de oro de la TI: los datos de los que no se hace copia de seguridad se consideran perdidos. 

Además, esta herramienta sólo debe utilizarse de forma responsable y dentro del ámbito de tus propias autorizaciones. El uso no autorizado de estas herramientas puede acarrear graves repercusiones legales. 

Reflexiones finales

En el vertiginoso mundo de las TI, herramientas como este script no sólo son prácticas, sino necesarias. Este script de bash permite borrar el disco duro de un Mac de forma remota, ahorrando tiempo y garantizando una sólida seguridad de los datos. En el gran esquema de la gestión de TI, son recursos como estos los que pueden marcar la diferencia.  

Recuerda que un gran poder conlleva una gran responsabilidad. Asegúrate siempre de contar con los permisos y copias de seguridad necesarios antes de ejecutar cualquier operación que pueda provocar la pérdida de datos. «Borrar un disco duro de forma remota» es una herramienta poderosa, pero siempre debe utilizarse con cuidado. 

A la hora de gestionar cuentas de usuario de Mac de forma remota, NinjaOne puede ser una herramienta de gran valor. Como plataforma de gestión y monitoreo remoto basada en la nube, NinjaOne soporta sin problemas scripts como el «Borrar un disco duro de forma remota». No sólo permite una ejecución eficaz del script en muchos dispositivos, sino que también ofrece sólidas funciones de seguimiento y elaboración de informes.

Esto significa que los profesionales de TI y los MSP pueden ejecutar el script, supervisar su progreso y documentar los resultados, todo dentro de una única plataforma. Como tal, NinjaOne puede mejorar en gran medida la facilidad y la eficacia de la utilización de scripts como éste en entornos de TI a gran escala.

Puede que te estés preguntando: «¿Y para borrar los datos de un disco duro de Windows?». También tenemos respuesta a esto. Échale un vistazo a nuestra entrada sobre cómo borrar un disco duro de Windows con PowerShell.

Prueba este script en NinjaOne.

Categorías:

Quizá también te interese…

×

¡Vean a NinjaOne en acción!

Al enviar este formulario, acepto la política de privacidad de NinjaOne.

Términos y condiciones de NinjaOne

Al hacer clic en el botón “Acepto” que aparece a continuación, estás aceptando los siguientes términos legales, así como nuestras Condiciones de uso:

  • Derechos de propiedad: NinjaOne posee y seguirá poseyendo todos los derechos, títulos e intereses sobre el script (incluidos los derechos de autor). NinjaOne concede al usuario una licencia limitada para utilizar el script de acuerdo con estos términos legales.
  • Limitación de uso: solo podrás utilizar el script para tus legítimos fines personales o comerciales internos, y no podrás compartirlo con terceros.
  • Prohibición de republicación: bajo ninguna circunstancia está permitido volver a publicar el script en ninguna biblioteca de scripts que pertenezca o esté bajo el control de cualquier otro proveedor de software.
  • Exclusión de garantía: el script se proporciona “tal cual” y “según disponibilidad”, sin garantía de ningún tipo. NinjaOne no promete ni garantiza que el script esté libre de defectos o que satisfaga las necesidades o expectativas específicas del usuario.
  • Asunción de riesgos: el uso que el usuario haga del script corre por su cuenta y riesgo. El usuario reconoce que existen ciertos riesgos inherentes al uso del script, y entiende y asume cada uno de esos riesgos.
  • Renuncia y exención: el usuario no hará responsable a NinjaOne de cualquier consecuencia adversa o no deseada que resulte del uso del script y renuncia a cualquier derecho o recurso legal o equitativo que pueda tener contra NinjaOne en relación con su uso del script.
  • CLUF: si el usuario es cliente de NinjaOne, su uso del script está sujeto al Contrato de Licencia para el Usuario Final (CLUF).