GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué necesitamos mktemp?

mktemp aleatoriza el nombre. Es muy importante desde el punto de vista de la seguridad.

Solo imagina que haces algo como:

echo something > /tmp/temporary-file

en su script de ejecución raíz.

Y alguien (que ha leído tu guión) lo hace

ln -s /etc/passwd /tmp/temporary-file

antes.

Esto da como resultado /etc/passwd se sobrescribe, y potencialmente puede significar diferentes cosas desagradables, comenzando por que el sistema se rompa y terminando con el sistema pirateado (cuando la entrada something podría ser cuidadosamente elaborado).

El mktemp El comando podría ayudarte en esta situación:

TEMP=$(mktemp /tmp/temporary-file.XXXXXXXX)
echo something > ${TEMP}

Ahora este ln /etc/passwd el ataque no funcionará.

Una breve mirada a la historia de mktemp :El mktemp El comando fue inventado por la gente de OpenBSD y apareció por primera vez en OpenBSD 2.1 en 1997. Su objetivo era mejorar la seguridad de los scripts de shell. Anteriormente, la norma había sido agregar $$ a nombres de archivos temporales, lo cual era absolutamente inseguro. Ahora todos los sistemas UNIX/Linux tienen mktemp o sus alternativas, y se convirtió en estándar de facto. Bastante gracioso, el mktemp La función C quedó obsoleta por no ser segura.


A menudo desea un "archivo de bloc de notas" (o directorio). Además, es posible que necesite varios archivos de este tipo al mismo tiempo, y no querrá molestarse en averiguar cómo nombrarlos para que no haya conflicto.

"mktemp" encaja a la perfección :)


Linux
  1. Por qué mi necesidad de control me hizo cambiar a Linux

  2. Hashing de contraseñas y por qué lo necesitamos

  3. Df vs. Du:¿Por qué tanta diferencia?

  4. ¿Por qué el usuario raíz necesita permiso de Sudo?

  5. ¿Por qué se congela el pc mientras copio un archivo a un pendrive?

¿Por qué stdout necesita un vaciado explícito cuando se redirige al archivo?

¿Por qué necesitamos el archivo .so.1 en Linux?

¿Por qué clang todavía necesita libgcc.a para compilar mi código?

¿Por qué es necesario modificar las tablas de llamadas del sistema en Linux?

¿Por qué las diferentes distribuciones de Linux necesitan parchear los paquetes?

¿Por qué es necesario inicializar un dispositivo raid 10?