GNU/Linux >> Linux Esercitazione >  >> Linux

Perché abbiamo bisogno di mktemp?

mktemp randomizza il nome. È molto importante dal punto di vista della sicurezza.

Immagina di fare qualcosa del tipo:

echo something > /tmp/temporary-file

nel tuo script di root.

E qualcuno (che ha letto il tuo copione) lo fa

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

prima.

Ciò risulta in /etc/passwd essere sovrascritto, e potenzialmente può significare diverse cose spiacevoli a partire dal sistema che si rompe e che finisce con il sistema che viene violato (quando l'input something potrebbe essere realizzato con cura).

Il mktemp command potrebbe aiutarti in questa situazione:

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

Ora questo ln /etc/passwd l'attacco non funzionerà.

Una breve panoramica sulla storia di mktemp :Il mktemp Il comando è stato inventato dalla gente di OpenBSD ed è apparso per la prima volta in OpenBSD 2.1 nel 1997. Il loro obiettivo era migliorare la sicurezza degli script di shell. In precedenza la norma era aggiungere $$ a nomi di file temporanei, che era assolutamente insicuro. Ora tutti i sistemi UNIX/Linux hanno mktemp o le sue alternative, ed è diventato uno standard di fatto. Abbastanza divertente, l'mktemp La funzione C è stata deprecata perché non sicura.


Spesso si desidera un "file scratchpad" (o directory). Inoltre, potresti aver bisogno di più di questi file contemporaneamente e non vuoi preoccuparti di capire come nominarli in modo che non ci siano conflitti.

"mktemp" è perfetto :)


Linux
  1. Hashing delle password e perché ne abbiamo bisogno

  2. Perché l'utente root ha bisogno dell'autorizzazione Sudo?

  3. Perché il PC si blocca mentre sto copiando un file su una Pendrive?

  4. Se i processi ereditano l'ambiente del genitore, perché abbiamo bisogno dell'esportazione?

  5. Perché clang ha ancora bisogno di libgcc.a per compilare il mio codice?

Perché abbiamo bisogno di un bootloader in un dispositivo integrato?

Perché abbiamo bisogno del file .so.1 in Linux?

Perché è considerato sicuro installare qualcosa come utente non root in ambienti Linux?

Perché l'utente "bin" ha bisogno di una shell di login?

Perché diverse distribuzioni Linux devono applicare patch ai pacchetti?

Perché è necessario inizializzare un dispositivo raid 10?