Re: creating temporary files in a secure way

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bruno Haible <bruno@xxxxxxxxx> writes:

> I think it's worth describing how to portably create a temporary
> file.

Thanks for this suggestion.  I altered the change a bit and installed
this:

2005-02-04  Bruno Haible <bruno@xxxxxxxxx>
	and Paul Eggert  <eggert@xxxxxxxxxxx>

	* doc/autoconf.texi (Limitations of Usual Tools): New mkstemp entry.

--- autoconf.texi	3 Feb 2005 00:31:33 -0000	1.873
+++ autoconf.texi	5 Feb 2005 00:11:43 -0000	1.874
@@ -11819,6 +11819,35 @@ recent enough (the copies shipped with A
 older versions are not thread-safe either).
 
 
+@item @command{mktemp}
+@c -------------------
+@prindex @command{mktemp}
+@cindex Creating temporary files
+The command @command{mktemp} lets shell scripts use temporary files
+safely, but it does not exist on all systems.  A portable way to create
+a safe temporary file name is to create a temporary directory with mode
+700 and use a file inside this directory.
+
+Here is sample code to create a new temporary directory safely
+under @code{$TMPDIR}, with the default location being @file{/tmp}:
+
+@example
+: $@{TMPDIR=/tmp@}
+@{
+  # Prefer mktemp if it exists, as it is more reliable.
+  tmp=`
+    (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
+  ` &&
+  test -n "$tmp" && test -d "$tmp"
+@} ||
+@{
+  # Fall back on mkdir; $RANDOM makes collisions less likely.
+  tmp=$TMPDIR/foo$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+@} || exit $?
+@end example
+
+
 @item @command{mv}
 @c ---------------
 @prindex @command{mv}


_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
http://lists.gnu.org/mailman/listinfo/autoconf

[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux