Manual Pages for UNIX Darwin command on man mktemp
MyWebUniversity

Manual Pages for UNIX Darwin command on man mktemp

MKTEMP(1) BSD General Commands Manual MKTEMP(1)

NAME

mmkktteemmpp - make temporary file name (unique)

SYNOPSIS

mmkktteemmpp [-dd] [-qq] [-tt prefix] [-uu] template ...

mmkktteemmpp [-dd] [-qq] [-uu] -tt prefix

DESCRIPTION

The mmkktteemmpp utility takes each of the given file name templates and over-

writes a portion of it to create a file name. This file name is unique and suitable for use by the application. The template may be any file name with some number of `Xs' appended to it, for example /tmp/temp.XXXX. The trailing `Xs' are replaced with the current process number and/or a unique letter combination. The number of unique file names mmkktteemmpp can return depends on the number of `Xs' provided; six `Xs' will result in mmkktteemmpp testing roughly 26 ** 6 combinations.

If mmkktteemmpp can successfully generate a unique file name, the file is cre-

ated with mode 0600 (unless the -uu flag is given) and the filename is

printed to standard output.

If the -tt prefix option is given, mmkktteemmpp will generate an template string

based on the prefix and the TMPDIR environment variable if set. The default location if TMPDIR is not set is /tmp. Care should be taken to ensure that it is appropriate to use an environment variable potentially supplied by the user. Any number of temporary files may be created in a single invocation,

including one based on the internal template resulting from the -tt flag.

MMkktteemmpp is provided to allow shell scripts to safely use temporary files. Traditionally, many shell scripts take the name of the program with the

pid as a suffix and use that as a temporary file name. This kind of nam-

ing scheme is predictable and the race condition it creates is easy for an attacker to win. A safer, though still inferior, approach is to make a temporary directory using the same naming scheme. While this does allow one to guarantee that a temporary file will not be subverted, it still allows a simple denial of service attack. For these reasons it is suggested that mmkktteemmpp be used instead. OOPPTTIIOONNSS The available options are as follows:

-dd Make a directory instead of a file.

-qq Fail silently if an error occurs. This is useful if a script

does not want error output to go to standard error.

-tt prefix

Generate a template (using the supplied prefix and TMPDIR if set) to create a filename template.

-uu Operate in ``unsafe'' mode. The temp file will be unlinked

before mmkktteemmpp exits. This is slightly better than mktemp(3) but

still introduces a race condition. Use of this option is not encouraged. DIAGNOSTICS The mmkktteemmpp utility exits 0 on success, and 1 if an error occurs. EEXXAAMMPPLLEESS The following sh(1) fragment illustrates a simple use of mmkktteemmpp where the script should quit if it cannot get a safe temporary file.

tempfoo=`basename $0`

TMPFILE=`mktemp /tmp/${tempfoo}.XXXXXX` || exit 1

echo "program output" >> $TMPFILE

To allow the use of $TMPDIR:

tempfoo=`basename $0`

TMPFILE=`mktemp -t ${tempfoo}` || exit 1

echo "program output" >> $TMPFILE

In this case, we want the script to catch the error itself.

tempfoo=`basename $0`

TMPFILE=`mktemp -q /tmp/${tempfoo}.XXXXXX`

if [ $? -ne 0 ]; then

echo "$0: Can't create temp file, exiting..."

exit 1 fi

SEE ALSO

mkdtemp(3), mkstemp(3), mktemp(3), environ(7)

HISTORY

A mmkktteemmpp utility appeared in OpenBSD 2.1. This implementation was writ-

ten independently based on the OpenBSD man page, and first appeared in FreeBSD 2.2.7. This man page is taken from OpenBSD BSD November 20, 1996 BSD




Contact us      |      About us      |      Term of use      |       Copyright © 2000-2019 MyWebUniversity.com ™