Desde hace varios años, la rm
utilidad GNU no se eliminará a /
menos que se llame con la --no-preserve-root
opción. Sin embargo, el comando rm -rf /
se ha alojado en el subconsciente colectivo como peligroso durante mucho tiempo y la gente todavía lo cita como un comando "aterrador".
Me preguntaba cuándo apareció por primera vez esta regla que rm
no se puede eliminar /
. Verifiqué las especificaciones POSIX, y puedo ver que si bien POSIX: 2008 incluye esta característica de seguridad, POSIX: 2001 no. Como las versiones en línea de las especificaciones POSIX se actualizan de vez en cuando, con cada nueva publicación secundaria, también verifiqué la máquina wayback y encontré la página relevante de POSIX: 2008 desde 2010 y pude confirmar que la regla rm
no puede eliminarse /
ya estaba en la lista entonces.
Entonces, mis preguntas son:
- ¿Cuándo se agregó la regla que
rm
no se puede eliminar/
a las especificaciones POSIX? ¿Estaba en la edición original de 2008 de la versión 4 de la especificación UNIX única o se agregó en una revisión? - ¿Cuándo se agregó esta limitación a GNU
rm
? Estoy bastante seguro de que era antes de que se agregara a POSIX, pero ¿cuándo sucedió?
Respuestas:
Puede encontrar la versión HTML de todas las ediciones de POSIX 2008 en línea:
Eso fue agregado en la edición de 2008.
Las correcciones técnicas generalmente no agregan nuevas características.
Puede ver que la versión anterior ( http://pubs.opengroup.org/onlinepubs/009695399/utilities/rm.html ) (POSIX 2004) no tenía ese texto.
El nuevo texto fue aceptado en la conferencia del grupo Austin de 2009-05-09 para su inclusión en una revisión posterior de la norma.
Fue solicitado por John Beck de Sun Microsystems en marzo de ese mismo año (el enlace requiere el registro de opengroup, consulte también la Solicitud de mejora número 5 aquí ).
GNU
rm
agregó--preserve-root
y las--no-preserve-root
opciones en esta confirmación 2003-11-09 , pero--preserve-root
solo se convirtió en la predeterminada en esta confirmación 2006-09-03 , por lo que en coreutils 6.2FreeBSD ha estado preservando la barra oblicua desde la confirmación del 04/10/2004 (con un registro de confirmación "Averigüe cuán a prueba de fuego es realmente mi ropa interior" ), pero inicialmente no cuando estaba debajo
POSIXLY_CORRECT
, hasta que recordaron comprobar una década más tarde que POSIX estaba ahora ordenando en qué punto se hizo también en modo POSIX .El compromiso inicial de FreeBSD menciona que Solaris ya lo estaba haciendo en ese momento.
@JdePB (en el comentario a continuación) encontró que el enlace a una historia interna de Sun corrobora y brinda más detalles sobre el origen de Solaris y sugiere que Solaris ya tenía la salvaguarda en su lugar antes de hacer la solicitud al grupo de Austin.
Explica los fundamentos para agregar esa exclusión. Si bien sólo se puede culpar a sí mismo si lo hacen
rm -rf /
, hay un caso en el que una secuencia de comandos podría hacerlo si al hacerlorm -rf -- "$1/$2"
sin comprobar que$1
/$2
se proporcionaron, que es lo que afectó a algunos clientes de Sun mal cuando aplicar mal un parche Solaris (de acuerdo a ese enlace).La prohibición de eliminar
.
y..
se agregó mucho antes y una vez más para proteger contra posibles percances.rm
Todavía es un comando peligroso. Hace lo que debe hacer: eliminar lo que le dices.También eliminaría todo. Se sabe que la finalización del nombre del shell causa tales problemas cuando lo hace
Ampliado a:
Porque
something
así no resultó ser un directorio.A los shells les gusta
tcsh
ozsh
agregarán un mensaje adicional al intentar llamarrm
con un*
comodín (tcsh
no de forma predeterminada).fuente
rm -rf .*
su directorio de inicio. Poco después, todas las líneas telefónicas se iluminaron ...