加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

osx – 如何在bash中创建一个特定扩展名的临时文件?

发布时间:2020-12-16 01:32:31 所属栏目:安全 来源:网络整理
导读:我正在写一个 shell脚本,我需要创建一个具有一定扩展名的临时文件. 我试过了 tempname=`basename $0`TMPPS=`mktemp /tmp/${tempname}.XXXXXX.ps` || exit 1 和 tempname=`basename $0`TMPPS=`mktemp -t ${tempname}` || exit 1 既不起作用,因为第一个创建一
我正在写一个 shell脚本,我需要创建一个具有一定扩展名的临时文件.

我试过了

tempname=`basename $0`
TMPPS=`mktemp /tmp/${tempname}.XXXXXX.ps` || exit 1

tempname=`basename $0`
TMPPS=`mktemp -t ${tempname}` || exit 1

既不起作用,因为第一个创建一个带有文字“XXXXXX”的文件名,第二个不给扩展名选项.

我需要扩展名,以便预览不会拒绝打开该文件.

编辑:我结束了pid和mktemp的组合,我希望是安全的:

tempname=`basename $0`
TMPTMP=`mktemp -t ${tempname}` || exit 1
TMPPS="$TMPTMP.$$.ps" 
mv $TMPTMP $TMPPS || exit 1

它容易受到拒绝服务攻击,但我不认为更严重.

最新版本的mktemp offer –suffix:
--suffix=SUFF
          append SUFF to TEMPLATE.  SUFF must not contain slash.  This option is implied if TEMPLATE does not end in X.

$mktemp /tmp/banana.XXXXXXXXXXXXXXXXXXXXXXX.mp3
/tmp/banana.gZHvMJfDHc2CTilINNuq2P0.mp3

我相信这需要coreutils> = 8左右.

如果您创建一个没有后缀的临时文件(较旧的mktemp版本),并且您正在重命名以附加一个文件,则可以做的最少的事情是检查文件是否已经存在.它不会保护你免受竞争条件的伤害,但如果已经存在一段时间的文件,它会保护你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读