1、yuzu 一个任天堂 Switch 游戏的模拟器,可以在 x86 电脑上运行,已经支持不少游戏了,包括《塞尔达》、《马里奥奥德赛》等热门游戏。 1、lit 一个极小化(395字节)的响应式 CSS 框架,包含一些基本的组件。 1、unverified.email 一个基于 API 而不是 SMTP 协议的邮件服务。用户使用 API 发送和接收一次性邮件,目前可以...

阅读更多

1、ClimaCell 全球各个地点天气的 API,有免费层,每天可以调用1000次。 1、Tackling TypeScript TypeScript 语言的教材,前半部分的语法介绍是免费的,后半部分的高级专题是收费的。 1、1loc 该仓库收集有用的 JavaScript 单行代码。 1、构建安全可靠的系统 谷歌发布的免费电子书。 1、htmldom.dev 原生 JS 的 DOM 操作菜谱书,可以查询各种 DOM 操...

阅读更多

1、储存氢气的新材料 美国科学家发明了一种新的铝基金属材料,仅仅一克就含有数十亿个细孔,表面积相当于足球场大小。该材料像海绵一样,可以用较低的压力和成本来吸收大量气体。发明者说,它可以用于氢气动力汽车,储存大量氢气,而无需昂贵的油箱。 氢气是环保能源,最...

阅读更多

1、 Theranos 公司从未开发出任何产品,就倒闭了。但是,它积累了数百项专利,这些专利现在是剩下的唯一有价值的东西。由于该公司处于探索性领域,这些专利的价值不在于能够创造出什么,而在于可以用来阻止从事同类研究的人们,除非他们交出一部分利润。 – 《废话专利》 1、 写作_...

阅读更多

1、水雾淋浴 许多人现在每天都要洗澡。根据统计,从1992年到2016年,荷兰人淋浴的时间越来越长(8.2分钟增加到8.9分钟),频率越来越高(每天0.69次增加到0.72次),使用越来越强大的淋浴喷头(平均水流量每分钟从7.5升增加到8.6升)。2016年,荷兰人平均每天淋浴用水为56升(8.9分钟 x 8.6升每分钟 x 0.72),&...

阅读更多

FFmpeg 是视频处理最常用的开源软件。 它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。 FFmpeg 本身是一个庞大的项目,包含许多组件和库文件,最常用的是它的命令行工具。本文介绍 FFmpeg 命令行如何处理视频,比桌面视频&#x...

阅读更多

人工智能 AI 现在是整个 IT 领域最热的热点,人才相对稀缺,薪酬待遇上升得很快。人才市场的 AI 招聘越来越多,投身这个领域的开发者也变得越来越多。许多同学都希望往这个方向发展,学习相关知识。 这里有一个 价值 3000元 的人工智能学习大礼包 ,针对学习者的实际需要,与企业招聘和...

阅读更多

这里记录每周值得分享的科技内容,周五发布。 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。 周刊讨论区的帖子《谁在招人?》,提供大量就业信息,欢迎访问或发布工作/实习岗位。 封面图:美国缅因州的河流中,自然形成了一个大冰盘,直径90米。(出处) 刊首语上&#...

阅读更多

这里记录每周值得分享的科技内容,周五发布。 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。 周刊讨论区的帖子《谁在招人?》,提供大量就业信息,欢迎访问或发布工作/实习岗位。 封面图:巴黎工艺品博物馆的前厅,有一个蒸汽动力的蝙蝠状飞行器。它建造于1897年,&...

阅读更多

有时,Bash 脚本需要创建临时文件或临时目录。

常见的做法是,自己在/tmp目录里面生成一个文件,这样做有很多弊端。本文介绍如何安全地处理临时文件。

一、临时文件的安全问题

直接创建临时文件,尤其在/tmp目录里面,往往会导致安全问题。

首先,/tmp目录是所有人可读写的,任何用户都可以往该目录里面写文件。创建的临时文件也是所有人可读的。

1
2
3
$ touch /tmp/info.txt
$ ls -l /tmp/info.txt
-rw-r--r-- 1 ruanyf ruanyf 0 12月 28 17:12 /tmp/info.txt

上面命令在/tmp目录直接创建文件,该文件默认是所有人可读的。

其次,如果攻击者知道临时文件的文件名,他可以创建符号链接,链接到临时文件,可能导致系统运行异常。攻击者也可能向脚本提供一些恶意数据。因此,临时文件最好使用不可预测、每次都不一样的文件名。

最后,临时文件使用完毕,应该删除。但是,脚本意外退出时,往往会忽略清理临时文件。

阅读更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×