GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Shell Script mktemp, was ist die beste Methode, um temporäre Named Pipes zu erstellen?

tmppipe=$(mktemp -u)
mkfifo -m 600 "$tmppipe"

Im Gegensatz zur normalen Dateierstellung, die anfällig dafür ist, von einer vorhandenen Datei oder einem symbolischen Link übernommen zu werden, leitet die Erstellung eines Namens durch mkfifo oder die zugrunde liegende Funktion erstellt entweder eine neue Datei an der angegebenen Stelle oder schlägt fehl. Etwas wie : >foo ist unsicher, denn wenn der Angreifer die Ausgabe von mktemp vorhersagen kann dann kann der Angreifer die Zieldatei für sich selbst erstellen. Aber mkfifo foo würde in einem solchen Szenario fehlschlagen.

Wenn Sie volle POSIX-Portabilität benötigen, mkfifo -m 600 /tmp/myfifo ist sicher gegen Entführung, aber anfällig für Denial-of-Service; Ohne Zugriff auf einen starken Zufallsgenerator für Dateinamen müssten Sie Wiederholungsversuche verwalten.

Wenn Sie sich nicht um die subtilen Sicherheitsprobleme bei temporären Dateien kümmern, können Sie eine einfache Regel befolgen:Erstellen Sie ein privates Verzeichnis und bewahren Sie alles dort auf.

tmpdir=
cleanup () {
  trap - EXIT
  if [ -n "$tmpdir" ] ; then rm -rf "$tmpdir"; fi
  if [ -n "$1" ]; then trap - $1; kill -$1 $$; fi
}
tmpdir=$(mktemp -d)
trap 'cleanup' EXIT
trap 'cleanup HUP' HUP
trap 'cleanup TERM' TERM
trap 'cleanup INT' INT
mkfifo "$tmpdir/pipe"

Eine sicherere Alternative ist die Verwendung von mktemp Um ein Verzeichnis sicher zu erstellen, legen Sie dann Ihre benannte Pipe in dieses Verzeichnis, führen Sie einen rm -R $dir aus um es am Ende loszuwerden.


Verwenden Sie die Option "Trockenlauf":

mkfifo $(mktemp -ut pipe.XXX)

Linux
  1. Init-System mit der Shell erkennen?

  2. Pipe zu mehreren Dateien in der Shell?

  3. Die Bedeutung von $? In einem Shell-Skript?

  4. Was ist der beste VPS:Windows oder Linux?

  5. Was ist der Unterschied zwischen der Ausführung eines Bash-Skripts und dessen Beschaffung?

Was ist die Shell unter Linux?

So erstellen Sie Shell-Skripte

Die 10 besten Linux-Bücher zum Lesen im Jahr 2019

Was ist Shebang in Linux Shell Scripting?

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus

Was ist die Standard-Shell von Busybox?