位置: 编程技术 - 正文

Shell中建立与使用临时性文件的方法详解(shell怎么创建用户)

编辑:rootadmin

推荐整理分享Shell中建立与使用临时性文件的方法详解(shell怎么创建用户),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:shell怎么建立sh文件,shell内建命令,shell创建函数,shell中创建文件,shell内建命令,shell怎么创建用户,shell创建函数,shell创建,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

在我们日常开发中经常会需要用到临时文件,本文就给大家介绍了关于Shell建立与使用临时性文件的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍:

虽然使用管道可以省去建立临时性文件的需求,不过有时候临时性文件还是派的上用场的。UNIX不同于其他操作系统的地方就是:它没有那种将不再需要的文件设法神奇删除的想法。反倒提供了两个特殊目录:/tmp和/var/tmp(旧系统为:/usr/tmp),这些文件可正常被存储,当它们未被清理干净时也不会弄乱一般的目录。大部分系统上的/tmp都会在系统开机时清空,不过/var/tmp下的重新开机时仍需存在,因为有些文本编辑程序,会将它们的备份文件存放在这里,从而系统毁损后可用来恢复数据。

因为/tmp目录使用频繁,有些系统就会将它放在常驻内存型的文件系统里,以便快速访问,如下面这个例子:

将文件系统放在替换空间区域里,表示它存在于内存中,直到内存资源消耗殆尽时,部分数据才会写入替换空间。

为确保临时性文件会在任务完成时删除,编译语言的程序员可以先开启文件,再下达unlink()系统调用。这么做就会马上删除文件,但因为它仍在开启状态,所以仍可继续访问,直到文件关闭或工作结束为止,只要其中一个先发生即可。打开后解除连接的技巧一般来说在非UNIX操作系统下是无法运行的,在加载于UNIX文件系统中目录上的外部文件系统也是这样,且在大多数脚本语言中无法使用它。

$$变量

共享的目录或同一个程序的多个执行实例,都可能造成文件名冲突,在Shell脚本里的传统做法就是使用进程ID,可以在Shell变量$$中取得,构建成临时性文件名的一部分。要解决完整临时性文件名发生问题的可能性,可使用环境变量覆盖目录名称,通常是TMPDIR。另外,你也应该使用trap命令,要求在工作完成时删除临时性文件,因此,常见的Shell脚本起始如下:

mktemp程序

像/tmp/myprog.$$这样的文件名会有这个问题:太好猜了!攻击者只需要在目标程序执行时列出目录几次,就可以找出它正在使用的是哪些临时性文件。通过预先建立适当的指定文件,攻击者可以让你的程序失败或读取伪造的数据,甚至重设文件权限,以便于攻击者读取文件。

Shell中建立与使用临时性文件的方法详解(shell怎么创建用户)

处理此类安全性议题时,文件名必须是不可预知的。BSD与GUN/Linux系统都提供了mktemp命令,供用户建立难以猜测的临时性文件名称。虽然底层的mktemp()函数库调用已由POSIX标准化,但mktemp命令却没有。如果你的系统没有mktemp,我们建议你安装OpenBSD的可移植版本

mktemp采用含有结尾X字符的文件名模板(可选用的),我们建议至少使用个X。程序会用从随机数字与进程ID所产生的文件或数字字符串来取代它们,所建立的文件名不允许与其他人访问,然后将文件名打印在标志输出上,这里看看mktemp的使用:

进程编号在文件名尾号可以看出,但根本无法预测。当临时性文件无法建立或没有mktemp可用时,条件式exit命令可确保马上终止程序并带出错误输出。

最新版的mktemp允许省略模板;它会使用/tmp/tmp.XXXXXXXXXX。然而,较旧版本仍是需要模板,所以你的Shell版本请避免使用这种省略方式.

为避免在程序里将目录名称直接编码,可使用-t选项: 让mktemp使用环境变量TMPDIR所指定的目录或/tmp, -d选项要求建立临时性目录:

由于组与其他人都无法访问目录,攻击者也无从得知你继续放入的文件名称,不过如果你的版本是开放公众读取的,当然还是可能猜出来!由于目录无法列出成列表,所以没有权限的攻击者就无法确认他的猜测。

/dev/random与/dev/urandom特殊文件

有些系统会提供两种随机伪设备:/dev/random与/dev/urandom。现在这些仅在BSD系统、GUN/linux、IBM AIX 5.2、Mac OS X与Sun Solaris 9, 搭配两个第三方的实例与早期Solaris版本的计算修整程序上,提供此支持。这些设备的任务,是提供永不为空的随机字节数据流:这样的数据来源是许多加密程序与安全应用程序所需要的。虽然已经有很多的简单算法可以产生这种虚拟随机数据流,但其实要产生一个真正的随机数据其实是很难的事。

这两个设备的差别,在/dev/random会一直封锁,直到系统产生的随机数已充分够用,所以它可以确保高品质的随机数。相对地,/dev/urandom不会死锁,其数据的随机程度也不高。

由于这些设备是共享资源,攻击者轻易就能加载拒绝服务,通过读取该设备并丢弃数据,阻断/dev/random。现在比较一下这两个设备,请注意它们两个在count参数下的不同:

/dev/random被读取的越多,它的响应越慢。我们用这两个设备在几个系统上试验,发现要自/dev/random上提取MB的数据,竟耗掉了一天或一天以上的时间。而/dev/urandom在我们最快的系统上执行,三秒钟即可产生相同的数据。

这两个伪设备都可以取代mktemp,成为产生难以推测的临时性文件名的替代方案:

此处,我们从/dev/urandom读取二进制字节数据流,以od将其转换为十六进制,使用tr去掉空格,之后满一行时停止。因为od将每个输出行转换为个字节,因而提供了 * 8 = 个随机位,或是2的次方,种可能的副文件名。如果该文件名建立在仅用户可列出的目录中,则攻击者无从猜测!

总结

标签: shell怎么创建用户

本文链接地址:https://www.jiuchutong.com/biancheng/378261.html 转载请保留说明!

上一篇:Shell中实现整数自增的几种方法示例(shell 整数赋值)

下一篇:crontab实现每隔多少天执行一次脚本的两种方法(crontab设置每天执行)

  • 个税专项扣除能中途新增
  • 教培行业提成一般多少
  • 退回的所得税与增值税的财务处理?
  • 个人可以申请代收货款吗
  • 生产成本和销售费用是对应账户吗
  • 税控系统维护费怎么做会计分录
  • 吸收合并和新设合并
  • 火车票进项抵扣怎么勾选
  • 存款利息收入增值税是免税还是不征税
  • 研发技术服务属于什么费用
  • 没有以前年度损益调整这个科目,怎么增加?
  • 个体工商户化妆品经营范围
  • 固定资产加速折旧税收优惠政策
  • 车量购置税申报流程是什么样的?
  • 汇算清缴弥补以前年度亏损报表怎么填
  • 案例分析小规模纳税人月销售不足3万如何处理?
  • 公司报销学费属于 薪酬还是福利呢
  • 软件开发公司怎么找客户
  • 微税平台抄税的步骤是怎样的?
  • 专票金额怎么计算
  • 公司发生业务分录
  • 专用发票密码区显示数电票号码
  • 小规模跨年发票可以入账吗
  • 纳税人指什么意思
  • 增值税发票总金额是含税金额吗
  • 企业所得税季报是填累计数吗
  • 未在规定期限内缴纳税款和滞纳金
  • 企业抵押贷款手续办理流程
  • 在win7系统中如何让电脑恢复出厂设置方法
  • 合同的情势变更是什么
  • win10专业版怎样连接wifi
  • vben admin框架怎么实现上传文件时拿到文件参数
  • 收到银行存款利息会计分录
  • 怎么修改?
  • 一般纳税人辅导期最新规定
  • 金融企业贷款损失准备金计提比例
  • PHP:finfo_buffer()的用法_fileinfo函数
  • PHP:gmstrftime()的用法_Date Time函数
  • php数据导出到excel
  • 个人房屋出租税票怎么开
  • 总部资产减值测试例题
  • 同一控制下控股合并在合并日合并报表编报正确的有
  • 无法登陆p.to
  • js检查json是否合法
  • js解构赋值浏览器报错
  • 损失函数解读例题
  • python 元类 详解
  • 2022年如何在股室工作中落实党风见证
  • 出租的厂房折旧记哪里
  • 记 vue-cli-plugin-dll 使用,优化vue-cli项目构建打包速度
  • 两个城市的社保可以累计吗
  • 企业的净资产都有哪些
  • 企业购置房产进项税税率
  • 社会保险中断后还可以续保吗
  • 将固定资产转为投资性房地产账务处理
  • 固定资产没有发票
  • 代金券消费怎么做分录
  • 你知道实施“营改增”对企业有哪些积极的效应么?
  • 残保金计算公式2023年
  • 提高纳税遵从度依靠行政执法还是纳税服务
  • 会计利润是利润加暂时性差异吗为什么
  • 超市购物卡怎么办理
  • 解析视频
  • sql中的存储过程
  • sql批量导出数据
  • mac怎么安装新系统
  • utilman.exe - utilman是什么进程
  • 第三人称控制器在平面上老掉
  • cocos2dx 3.3 + QT5.3制作游戏编辑器
  • cocos jsc
  • androidhomepage
  • (cocs2dx)二、 利用Eclipse编译apk应用
  • js复制数组的方法
  • cmd下copy命令
  • android DefaultHttpClient设置setCookieStore
  • JavaScript入门教程
  • JavaScript弹出窗口
  • 独资企业变更法人
  • 服务合同需要交个人所得税嘛
  • 代扣app有哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设