为什么带有 -u 选项的 mktemp 在其手册中被声明为不安全?
Why mktemp with -u option is stated as unsafe in its manual?
我想创建一个临时文件,正在查看 mktemp 手册,发现带有 -u 选项的 mktemp 被声明为不安全,这背后的原因是什么?
mktemp --help
Usage: mktemp [OPTION]... [TEMPLATE]
Create a temporary file or directory, safely, and print its name.
TEMPLATE must contain at least 3 consecutive 'X's in last component.
If TEMPLATE is not specified, use tmp.XXXXXXXXXX, and --tmpdir is implied.
Files are created u+rw, and directories u+rwx, minus umask restrictions.
-d, --directory create a directory, not a file
-u, --dry-run do not create anything; merely print a name (unsafe)
当您使用 -u
时,不会创建任何文件,因此以后使用该名称并不能保证访问您创建的临时文件。
另一个进程有 window 的机会在调用 mktemp
和使用结果之间创建同名文件。该文件可能是一个符号 link,使其他用户可以滥用您的权限在某处写入。
如果你使用mktemp -u
,你需要非常小心地确保这样的比赛是不可利用的。
通常,最好创建一个临时目录 (mktemp -d
),并在该目录中使用您选择的名称。
我想创建一个临时文件,正在查看 mktemp 手册,发现带有 -u 选项的 mktemp 被声明为不安全,这背后的原因是什么?
mktemp --help
Usage: mktemp [OPTION]... [TEMPLATE]
Create a temporary file or directory, safely, and print its name.
TEMPLATE must contain at least 3 consecutive 'X's in last component.
If TEMPLATE is not specified, use tmp.XXXXXXXXXX, and --tmpdir is implied.
Files are created u+rw, and directories u+rwx, minus umask restrictions.
-d, --directory create a directory, not a file
-u, --dry-run do not create anything; merely print a name (unsafe)
当您使用 -u
时,不会创建任何文件,因此以后使用该名称并不能保证访问您创建的临时文件。
另一个进程有 window 的机会在调用 mktemp
和使用结果之间创建同名文件。该文件可能是一个符号 link,使其他用户可以滥用您的权限在某处写入。
如果你使用mktemp -u
,你需要非常小心地确保这样的比赛是不可利用的。
通常,最好创建一个临时目录 (mktemp -d
),并在该目录中使用您选择的名称。