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í :)