MAN page from Trustix mktemp-1.5-2tr.i586.rpm
MKTEMP
Section: User Commands (1)
IndexBSD mandoc
NAME
mktemp - make temporary file name (unique)
SYNOPSIS
mktemp[-
d][-
q][-
u]
template DESCRIPTION
The
mktemputility takes the given file name template and overwrites aportion of it to create a unique file name.The template may be any file name with some number of`X'Ns sappendedto it, for example/tmp/temp.XXXXXXXXXX
The trailing`X'Ns sare replaced with a combination of the current process number andrandom letters.The name chosen depends both on the number of`X'Ns sin the template and the number of collisions with pre-existing files.The number of unique file namesmktempcan return depends on the number of`X'Ns sprovided; ten`X'Ns swillresult inmktemptesting roughly 26 ** 10 combinations.
Ifmktempcan successfully generate a unique file name, the file (or directory)is created with file permissions such that it is only readable and writableby its owner (unless the-uflag is given) and the filename is printed to standard output.
mktempis provided to allow shell scripts to safely use temporary files.Traditionally, many shell scripts take the name of the program withthe PID as a suffix and use that as a temporary file name.This kind of naming scheme is predictable and the race condition it createsis easy for an attacker to win.A safer, though still inferior approachis to make a temporary directory using the same naming scheme.While this does allow one to guarantee that a temporary file will not besubverted, it still allows a simple denial of service attack.For these reasons it is suggested thatmktempbe used instead.
The options are as follows:
- -d
- Make a directory instead of a file.
- -q
- Fail silently if an error occurs.This is useful ifa script does not want error output to go to standard error.
- -u
- Operate in``unsafe''mode.The temp file will be unlinked beforemktempexits.This is slightly better thanFn mktemp 3but still introduces a race condition.Use of this option is not encouraged.
Themktemputilityexits with a value of 0 on success or 1 on failure.
EXAMPLES
The following
sh(1)fragment illustrates a simple use of
mktempwhere the script should quit if it cannot get a safetemporary file.
CMD=`basename $0`TMPFILE=`mktemp /tmp/$CMD.XXXXXXXXXX` || exit 1echo "program output" >> $TMPFILE
In this case, we want the script to catch the error ourselves.
CMD=`basename $0`TMPFILE=`mktemp -q /tmp/$CMD.XXXXXXXXXX`if [ $? -ne 0 ]; then echo "$CMD: Can't create temp file, exiting..." exit 1fi
Or perhaps you don't want to exit ifmktempis unable to create the file.In this case you can protect the part of the script thusly.
CMD=`basename $0`TMPFILE=`mktemp /tmp/$CMD.XXXXXXXXXX` && { # Safe to use $TMPFILE in this block echo data > $TMPFILE ... rm -f $TMPFILE}
SEE ALSO
mkdtemp(3),
mkstemp(3),
mktemp(3)
HISTORY
The
mktemputility appeared inOx 2.1 .
Index
- NAME
- SYNOPSIS
- DESCRIPTION
- EXAMPLES
- SEE ALSO
- HISTORY
This document was created byman2html,using the manual pages.