【busybox记录】【shell指令】mktemp

目录

内容来源:

【GUN】【mktemp】指令介绍

【busybox】【mktemp】指令介绍

【linux】【mktemp】指令介绍

使用示例:

常用组合指令:

指令不常用/组合用法还需继续挖掘:


内容来源:

        GUN : Coreutils - GNU core utilities

        busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客

【GUN】【mktemp】指令介绍

mktemp:创建临时文件或目录
mktemp 管理临时文件和目录的创建。
简介:
mktemp [option]... [template]
基于模板安全地创建临时文件或目录,并打印其名称。如果给出,模板必须在最后一个组件中至少包含三个连续的“X”。如果省略,模板‘tmp.XXXXXXXXXX’使用,并隐含选项 --tmpdir。
模板中最后一次运行的‘X’将被字母数字字符替换;因此,在区分大小写的文件系统上,使用包含n个‘X’实例的模板,有‘62**n’个可能的文件名。

旧的脚本用于通过简单地将程序名称与进程id (‘$$’)作为后缀连接来创建临时文件。
然而,这种命名方案很容易预测,并且存在竞争条件,攻击者可以创建一个适当命名的符号链接,这样当脚本打开它认为未使用的文件的句柄时,它就会修改现有的文件。
使用相同的方案来创建目录稍微安全一些,因为如果目标已经存在,mkdir将失败,但它仍然较差,因为它允许拒绝服务攻击。
因此,现代脚本应该使用 mktemp 命令来保证生成的名称是不可预测的,并且知道临时文件名意味着该文件是由当前脚本创建的,其他用户不能修改。
创建文件时,生成的文件对当前用户具有读写权限,但对组或其他用户没有权限;如果当前umask的限制更大,则这些权限会减少。
这里有一些例子(尽管如果你尝试它们,你很可能会得到不同的文件名):

•在当前目录下创建临时文件。
	$ mktemp file.XXXX
	file.H47c
•创建一个已知后缀的临时文件。
	$ mktemp --suffix=.txt file-XXXX
	file-H08W.txt
	$ mktemp file-XXXX-XXXX.txt
	file-XXXX-eI9L.txt
•创建一个安全fifo相对于用户选择的TMPDIR,但回落到当前目录,而不是/tmp。虽然mktemp不创建fifo,但它可以创建一个安全的目录,以便存放fifo。如果无法创建目录或fifo,则退出shell。
	$ dir=$(mktemp -p "${TMPDIR:-.}" -d dir-XXXX) || exit 1
	$ fifo=$dir/fifo
	$ mkfifo "$fifo" || { rmdir "$dir"; exit 1; }
•如果可能,创建并使用临时文件,但忽略失败。该文件将驻留在由TMPDIR命名的目录中(如果指定的话),否则驻留在/tmp中。
	$ file=$(mktemp -q) && {
	> # Safe to use $file only within this block. Use quotes,
	> # since $TMPDIR, and thus $file, may contain whitespace.
	> echo ... > "$file"
	> rm "$file"
	> }
•作为一个半随机字符生成器(它不是完全随机的,因为它受到当前目录内容的影响)。为避免出现安全漏洞,请勿使用生成的名称创建文件。
	$ mktemp -u XXX
	Gb9
	$ mktemp -u XXX
	nzC
程序接受以下选项。请参见第2章[常用选项],第2页。
‘-d’
‘--directory’
	创建目录而不是文件。
	该目录将对当前用户具有读、写和搜索权限,但对组或其他用户没有权限;如果当前umask的限制更大,则这些权限会减少。
‘-q’
‘--quiet’ 
	禁用创建文件或目录失败的诊断信息。退出状态仍将反映文件是否已创建。
‘-u’
‘--dry-run’
	在不更改文件系统内容的情况下,生成一个不以现有文件命名的临时名称。
	使用该命令的输出来创建新文件本质上是不安全的,因为在生成名称和使用该名称之间存在一段时间间隔,而另一个进程可以使用相同的名称创建对象。
‘-p dir’
‘--tmpdir[=dir]’
	处理模板相对于目录dir。
	如果没有指定dir(只能使用长选项 --tmpdir)或为空字符串,则使用可用的tmpdir值,否则使用' /tmp '。
	如果指定了此值,则template不能是绝对值。但是,模板仍然可以包含斜杠,尽管中间目录必须已经存在。
‘--suffix=suffix’
	向模板追加后缀。
	后缀不能包含斜杠。
	如果指定了 --suffix,模板必须以' X '结尾;如果未指定,则通过查找模板中的最后一个' X '推断出适当的后缀。此选项用于与默认模板一起使用,并用于创建以' X '开头的后缀。
‘-t’ 
	如果TMPDIR值可用,则将模板视为单个文件,或者将模板视为-p指定的目录,否则将模板视为' /tmp '。
	模板不能包含斜杠。此选项已弃用;使用-p而不使用-t可以提供更好的默认值(通过支持命令行而不是TMPDIR)和更大的灵活性(通过允许中间目录)。

退出状态:
	0 如果文件已创建;
	1,其他情况

【busybox】【mktemp】指令介绍

[root@localhost bin]# ./mktemp --help
BusyBox v1.36.1 (2024-04-16 11:16:28 EDT) multi-call binary.

Usage: mktemp [-dt] [-p DIR] [TEMPLATE]

Create a temporary file with name based on TEMPLATE and print its name.
TEMPLATE must end with XXXXXX (e.g. [/dir/]nameXXXXXX).
Without TEMPLATE, -t tmp.XXXXXX is assumed.

	-d	Make directory, not file
	-q	Fail silently on errors
	-t	Prepend base directory name to TEMPLATE
	-p DIR	Use DIR as a base directory (implies -t)
	-u	Do not create anything; print a name

Base directory is: -p DIR, else $TMPDIR, else /tmp

【linux】【mktemp】指令介绍

[root@localhost bin]# mktemp --help
用法:mktemp [选项]... [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     创建一个目录而非文件
  -u, --dry-run       不创建任何东西,仅打印出名字。(仅供测试)
  -q, --quiet         不显示任何有关文件或目录创建错误信息
      --suffix=SUFF   append SUFF to TEMPLATE; SUFF must not contain a slash.
                        This option is implied if TEMPLATE does not end in X
  -p DIR, --tmpdir[=DIR]  interpret TEMPLATE relative to DIR; if DIR is not
                        specified, use $TMPDIR if set, else /tmp.  With
                        this option, TEMPLATE must not be an absolute name;
                        unlike with -t, TEMPLATE may contain slashes, but
                        mktemp creates only the final component
  -t                  interpret TEMPLATE as a single file name component,
                        relative to a directory: $TMPDIR, if set; else the
                        directory specified via -p; else /tmp [deprecated]
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出

GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 mktemp 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/mktemp>
或者在本地使用:info '(coreutils) mktemp invocation'

使用示例:

NA

常用组合指令:

NA

指令不常用/组合用法还需继续挖掘:

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻面条EW

感谢您的打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值