GNU/Linux >> Linux Esercitazione >  >> Linux

Shell Script mktemp, qual è il metodo migliore per creare pipe con nome temporaneo?

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

A differenza della normale creazione di file, che tende a essere dirottata da un file esistente o da un collegamento simbolico, la creazione di un name pipe tramite mkfifo o la funzione sottostante crea un nuovo file nella posizione specificata o fallisce. Qualcosa come : >foo non è sicuro perché se l'attaccante può prevedere l'output di mktemp quindi l'attaccante può creare il file di destinazione per se stesso. Ma mkfifo foo fallirebbe in uno scenario del genere.

Se hai bisogno della completa portabilità POSIX, mkfifo -m 600 /tmp/myfifo è sicuro contro il dirottamento ma incline a un denial of service; senza l'accesso a un potente generatore di nomi di file casuali, dovresti gestire i tentativi.

Se non ti interessano i sottili problemi di sicurezza relativi ai file temporanei, puoi seguire una semplice regola:crea una directory privata e tieni tutto lì dentro.

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"

Un'alternativa più sicura è usare mktemp per creare una directory in modo sicuro, quindi inserire la pipe denominata all'interno di tale directory, eseguire un rm -R $dir per sbarazzarsene alla fine.


Usa l'opzione "dry-run":

mkfifo $(mktemp -ut pipe.XXX)

Linux
  1. Rileva il sistema Init usando la shell?

  2. Cosa significa `:-` in uno script di shell?

  3. Il significato di $? In uno script di shell?

  4. Qual è il modo migliore per garantire che sia in esecuzione solo un'istanza di uno script Bash?

  5. Qual è la shell predefinita di Busybox?

Che cos'è la shell in Linux?

Come creare script di shell

I 10 migliori libri Linux da leggere nel 2019

Che cos'è Shebang negli script della shell di Linux?

Qual è il miglior VPS:Windows o Linux?

Come creare ed eseguire uno script di shell in Ubuntu 22.04