mktemp
randomisiert den Namen. Dies ist aus Sicherheitsgründen sehr wichtig.
Stellen Sie sich vor, Sie tun so etwas wie:
echo something > /tmp/temporary-file
in Ihrem root-laufenden Skript.
Und jemand (der Ihr Skript gelesen hat) tut es
ln -s /etc/passwd /tmp/temporary-file
vorher.
Dies ergibt /etc/passwd
überschrieben wird, und möglicherweise kann es verschiedene unangenehme Dinge bedeuten, beginnend mit dem Ausfall des Systems und endend mit dem Hacken des Systems (wenn die Eingabe something
könnte sorgfältig hergestellt werden).
Die mktemp
Befehl könnte Ihnen in dieser Situation helfen:
TEMP=$(mktemp /tmp/temporary-file.XXXXXXXX)
echo something > ${TEMP}
Jetzt diese ln /etc/passwd
Angriff wird nicht funktionieren.
Ein kurzer Einblick in die Geschichte von mktemp :Der mktemp
command wurde von den OpenBSD-Leuten erfunden und erschien erstmals 1997 in OpenBSD 2.1. Ihr Ziel war es, die Sicherheit von Shell-Skripten zu verbessern. Früher war es üblich, $$
hinzuzufügen zu temporären Dateinamen, was absolut unsicher war. Jetzt haben alle UNIX/Linux-Systeme entweder mktemp
oder seine Alternativen, und es wurde de facto zum Standard. Komischerweise die mktemp
Die C-Funktion wurde verworfen, weil sie unsicher ist.
Sie möchten oft eine "Notizblockdatei" (oder ein Verzeichnis). Außerdem benötigen Sie möglicherweise mehrere solcher Dateien gleichzeitig, und Sie möchten sich nicht die Mühe machen, herauszufinden, wie Sie sie benennen, damit es keine Konflikte gibt.
"mktemp" passt genau :)