 |
Index for Section 1 |
|
 |
Alphabetical listing for M |
|
 |
Bottom of page |
|
mktemp(1)
NAME
mktemp - Create a secure and uniquely named file or directory
SYNOPSIS
mktemp [-dqt] [-p prefix_directory] [template]
OPTIONS
-d Makes a directory instead of a file.
-q Fails silently if an error occurs.
-p prefix_directory
Prepends the specified path to the name generated for the temporary
file or directory.
This option implies the -t option. Therefore, the value of the TMPDIR
environment variable, if set, overrides the path prefix specified by
the -p option.
-t Creates a directory or file whose path prefix is as follows (in highest
to lowest order of precedence):
· The value of the TMPDIR environment variable
· The argument to the -p option
· /tmp
OPERANDS
template
Specifies a template used by mktemp to form a unique name for the file
or directory being created. The template is a combination of characters
that are included in the name, trailed by uppercase X characters (for
example, fpm.XXXXXXXX or fpmXXXXXX). When creating the name for the
file or directory, mktemp substitutes a random combination of letters
and numbers in place of the uppercase X characters.
If the trailer contains fewer than six X characters, mktemp increases
the number of X characters to six before substituting the random
combination of letters and numbers. However, in scripts that might be
ported to other platforms, specify at least six X characters
explicitly.
If template is omitted from the command, the value tmp.XXXXXXXXXX is
used, and the -t option is implied.
When including both the template operand and the -t option, template
specifies the final component of the path and cannot contain any slash
(/) characters.
DESCRIPTION
The mktemp utility is provided to give shell scripts a safer way to create
temporary files, particularly when writing to world-writeable areas, such
as /tmp or /var/tmp. Traditional methods for creating temporary files,
such as combining the name of the program with the process ID of the user
running it, are highly predictable and can allow system security to be
compromised.
The mktemp utility creates a directory or file with a randomized name and
safe protection mode. In the event that the generated name specifies an
existing directory, regular file, symbolic link, hard link, or fifo, the
utility automatically retries with a different name.
If mktemp is successful at generating a unique file name, the file is
created with mode 0600 and its name is written to standard output. If
mktemp is successful at generating a unique directory name, the directory
is created with mode 0700 and its name is written to standard output.
The mktemp utility is derived from OpenBSD software.
EXIT STATUS
0 (Zero)
Success.
>0 An error occurred.
ERRORS
The following diagnostics may be printed to standard error during the
normal course of utility operation.
· mktemp: template must not contain directory separators in -t mode
If -t is included (or implied by the -p option), template must specify
only the final node of the path.
This error is also returned if the -p option specifies a directory
that does not exist when the temporary file is created.
· mktemp: cannot allocate memory
Insufficient memory is available to the utility for one of its
operations.
· mktemp: path is too long
The length of the pathname for the generated file exceeded PATH_MAX.
· mktemp: cannot make temporary directory
The -d option was included and a directory could not be created for
one of the following reasons:
-- The utility could not generate a directory name that is unique.
-- An intermediate node in the specified path does not exist.
-- The process does not have required permissions.
-- Insufficient disk space is available for directory creation.
-- The maximum number of inodes for the parent directory has been
reached.
· mktemp: cannot make temporary file
The file could not be created for one of the following reasons:
-- The utility could not generate a file name that is unique.
-- An intermediate node in the specified path does not exist.
-- The process does not have required permissions.
-- Insufficient disk space is available for file creation.
-- The maximum number of inodes for the parent directory has been
reached.
EXAMPLES
1. The following example shows a simple use of mktemp in which the
template operand specifies the absolute path to the temporary file and
the script exits if it cannot create the file:
TMPFILE=`/bin/mktemp /tmp/fpm.XXXXXX`
if [ $? -ne 0 ]
then
echo "Cannot create temporary file; exiting..."
exit 1
fi
Because neither the -t nor -p option is included in the command line,
the value of TMPDIR cannot override the file's path at run time.
When specifying the absolute path to the temporary file, do not
include $0 as shown in the following example because $0 by itself
sometimes represents an absolute path:
TMPFILE=`/bin/mktemp /tmp/$0.XXXXXX`
Instead, include $0 along with basename as shown in the following
example:
TMPFILE=`/bin/mktemp /tmp/\`basename $0\`.XXXXXX`
2. The -t option in the following example allows the utility to use the
setting of the TMPDIR environment variable (or, by default, /tmp) as
the directory prefix for the temporary file:
file_basename=`basename $0`
TMPFILE=`mktemp -q -t ${file_basename}.XXXXXX`
3. In the following example, the -p option specifies a default temporary
directory other than /tmp; the temporary file will be created in
/extra/tmp unless the setting of the TMPDIR environment variable at
the time the script runs overrides this path:
TMPFILE=`/bin/mktemp -p /extra/tmp fpm.XXXXXXXXXX`
Note that this example will cause the script to fail if the /extra/tmp
directory does not exist or is not writeable when the utility attempts
to create the temporary file.
ENVIRONMENT VARIABLES
LANG
Provides a default value for the internationalization variables that
are unset or null. If LANG is unset or null, the corresponding value
from the default locale is used. If any of the internationalization
variables contain an invalid setting, the utility behaves as if none of
the variables had been defined.
LC_ALL
If set to a non-empty string value, overrides the values of all the
other internationalization variables.
LC_MESSAGES
Determines the locale for the format and contents of diagnostic
messages written to standard error.
LC_TYPE
Determines the locale for interpreting sequences of text data as
characters (for example, as single-byte or multibyte characters in
operands and option arguments).
NLSPATH
Determines the location of message catalogs for the processing of
LC_MESSAGES.
TMPDIR
Determines the directory in which the temporary file is created when
the -t option is implicitly or explicitly specified.
SEE ALSO
Functions: mktemp(3)
Others: environ(5)
 |
Index for Section 1 |
|
 |
Alphabetical listing for M |
|
 |
Top of page |
|