GNU/Linux >> Znalost Linux >  >> Linux

Proč potřebujeme mktemp?

mktemp náhodné jméno. Je to velmi důležité z hlediska bezpečnosti.

Jen si představte, že uděláte něco jako:

echo something > /tmp/temporary-file

ve vašem rootovském skriptu.

A někdo (kdo četl váš skript) ano

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

dříve.

Výsledkem je /etc/passwd přepsání a potenciálně to může znamenat různé nepříjemné věci počínaje tím, že se systém rozbije a konče tím, že se systém stane hacknutým (když vstup something mohl být pečlivě vytvořen).

mktemp v této situaci vám může pomoci:

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

Nyní toto ln /etc/passwd útok nebude fungovat.

Stručný vhled do historie mktemp :mktemp příkaz byl vynalezen lidmi z OpenBSD a poprvé se objevil v OpenBSD 2.1 již v roce 1997. Jejich cílem bylo zlepšit bezpečnost shellových skriptů. Dříve bylo normou přidat $$ na názvy dočasných souborů, což bylo absolutně nejisté. Nyní mají všechny systémy UNIX/Linux buď mktemp nebo jeho alternativy a stal se de-facto standardem. Dost legrační, mktemp Funkce C byla zastaralá, protože není zabezpečená.


Často chcete „soubor zápisníku“ (nebo adresář). Navíc můžete potřebovat několik takových souborů současně a nechcete se obtěžovat vymýšlením, jak je pojmenovat, aby nedošlo ke konfliktu.

"mktemp" se hodí :)


Linux
  1. Proč mě moje potřeba kontroly přiměla přejít na Linux

  2. Hašování hesel a proč to potřebujeme

  3. Proč stdout potřebuje explicitní vyprázdnění při přesměrování do souboru?

  1. Proč potřebujeme bootloader ve vestavěném zařízení?

  2. Proč potřebujeme soubor .so.1 v Linuxu?

  3. Proč clang stále potřebuje libgcc.a ke kompilaci mého kódu?

  1. Proč potřebuji bit 'spustit' v režimu souborů na souborových systémech Unix?

  2. Proč je v prostředí Linuxu považováno za bezpečné instalovat něco jako uživatel bez oprávnění root?

  3. Proč uživatel 'bin' potřebuje přihlašovací shell?