Linux复制到home后自动删除,[rm] Linux 防止"rm -rf /" 误删除

2023-10-27

引以为戒!!!

一、缘由:

最近看到这则新闻,很是悲伤,因为我最近也在用ansible;然而这一错误源自Ansible上糟糕的代码设计,这款Linux实用工具被用于在多台不同服务器上自动执行脚本。

开发者解释到,实际参数应该是“rm -rf {foo}/{bar}”,foo和bar是脚本中动态传递的两个变量。然而由于变量处理出错,通用语法未能成功在bash命令中插值,所以最终指令就变成了可怕的“rm -rf /”。

“rm -rf /”意味着擦除根路径“/”下挂载的所有内容而无需询问。

以前一个主管说过,在你不充分了解某个工具的原理的时候,不要太过相信依赖他。哪怕自己去写个简陋的,可以看到源码,也是比较靠谱的。深信不疑!

二、解决办法:

为了避免误删根目录,或者重要的文件,整理了以下方法:

1、safe-rm

safe-rm 是一个开源软件用来替代不×××全的rm,可以在/etc/safe-rm.conf中配置路径黑名单,定义哪些不能被safe-rm删除。

可以将 safe-rm 更名为 rm 并放在 $PATH 中比 原rm 程序靠前的位置。一些脚本中使用完全路径/bin/rm则不会受此影响。

2、建立回收站机制

它并不真正执行删除操作,而是将文件移动到一个特定目录,可以设置定时清楚回收站,或者在回收站里面的文件大小达到一定容量时(或者用时间做判断)执行删除操作以腾出空间。

可以写个shell脚本替换rm命令,或者在需要删除文件的时候使用mv命令将文件移动到回收站。

1) 在/home/username/ 目录下新建一个目录,命名为:.trash

2)在/home/username/tools/目录下,新建一个shell文件,命名为: remove.sh

TRASH_DIR="/home/username/.trash"

for i in $*; do

STAMP=`date +%s`

fileName=`basename $i`

mv $i $TRASH_DIR/$fileName.$STAMP

done

3)修改~/.bashrc, 增加一行

alias rm="sh /home/username/tools/remove.sh"

用我们自建的remove.sh替代rm命令

4)设置crontab,定期清空垃圾箱,如:

0 0 rm -rf /home/username/.trash/

每天0点清空垃圾箱

5)source ~/.bashrc 使替换立即生效

3、注意脚本中rm -rf 变量的使用

在脚本尽量不要使用 rm -rf $FOO/, 请使用 rm -rf $FOO;另外删除尽量不要写相对路径,不要带变量。

4、根文件系统设置只读挂载

noauto,ro

5、各种备份

可以异地远程备份重要的数据,采用dump的增量备份机制,LVM快照,虚拟化环境中的快照、raid5等等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux复制到home后自动删除,[rm] Linux 防止"rm -rf /" 误删除 的相关文章

随机推荐

  • Object.create 以及 Object.setPrototypeOf

    第一部分 Object crate 方法是es5中的关于原型的方法 这个方法会使用指定的原型对象以及属性去创建一个新的对象 语法 Object create proto propertiesObjecy 参数 proto 必须的 一个对象
  • 云计算简介

    什么是 云 迁移至云端 在云中运行 在云中存储 从云端访问 当今时代 似乎一切都在 云 中进行 但是 云 究竟是一个什么样的概念 简单来说 云就是互联网连接的另一端 你可以从云端访问各种应用程序和服务 也可以在云端安全存储你的数据 云 之所
  • 扫描二维码 跳转到小程序指定页面

    注意 必须发布代码之后才能使用扫描二维码跳转 规则 1 二维码规则 填写你要生成的二维码的链接 2 小程序功能页面 要跳转的小程序的页面 3 测试链接 也填同样的链接 4 将上面的链接生成一个二维码 测试链接 5 通过微信扫描这个二维码跳转
  • 安装Apex库

    在Linux系统下安装Apex库 1 安装流程 按顺序使用如下命令 git clone https github com NVIDIA apex cd apex pip3 install v no cache dir 注意 不能直接使用pi
  • iOS 多线程

    1 怎么用GCD实现多读单写 dispatch barrier async 2 ios系统为我们提供的几种多程序技术各自的特点是怎样的 GCD 实现一些简单的线程同步 子线程的分派 包括一些类似于多读单写 nsoperation 比如adn
  • 2022年最佳的9种逆向工程工具[持续更新]

    逆向是复杂的 然而 软件开发人员经常在面临一项具有挑战性的任务时转向反向工程 增强软件安全性 使软件与第三方组件兼容 维护遗留代码 等等 在本文中 我们将描述我们的软件逆向程序在工作中所依赖的主要工具 并展示如何使用这些工具的实际示例 本文
  • python输入多组测试数据_python ddt数据驱动实例代码分享

    python ddt数据驱动最简实例 在接口自动化测试中 往往一个接口的用例需要考虑 正确的 错误的 异常的 边界值等诸多情况 然后你需要写很多个同样代码 参数不同的用例 如果测试接口很多 不但需要写大量的代码 测试数据和代码柔合在一起 可
  • STM32基于HAL库带FreeRTOS系统的Freemodbus移植

    STM32基于HAL库移植带FreeRTOS系统的Freemodbus移植 移植前提 下载所需源码 可能的win10 IAR设置 从站注意定义寄存器数量大小 效果查询报文 效果回复报文 移植事件 定时器 串口 事件移植 串口移植 定时器移植
  • Electron+React+Antd将网页打包成应用程序完整步骤(electron-builder (搭建热更新) 或 electron-packager(不搭建热更新))

    一 创建React项目 ps 由于写的时候没注意 包安装有的用npm有的用yarn 大家统一用一个就行 尽量不要使用cnpm ps 源码地址 git clone https github com Aug Sunrise electron t
  • 【mysql】mysql表分区、索引的性能测试

    概述 mysql分区表概述 google搜索一下 RANGE COLUMNS partitioning 主要测试mysql分区表的性能 load 500w 条记录 大约在10min左右 batch insert 1 9w条记录 没建立索引
  • 小米升级后开机显示无服务器,小米手机升级后无法开机解决方法

    方法1 刷机 在关机的状态下 进rec中双清 音量上键和开机键按住出来第一个mi画面全部松手 再按住音量加 然后在双清 然后关机音量下键和开机键同时摁住进入fastboot模式 出现米兔修机器人界面 线刷开发版刷机包和教程可以到http w
  • vue3中keep-alive和vue-router的结合使用

    vue3中keep alive和vue router的结合使用 前言 代码 一 为何要使用keep alive 二 vue2中使用keep alive 将 router view 组件包含于 keep alive 即可 三 vue3中使用k
  • 打印二叉树

    摘要 https wylu github io posts 91f36751 本文将使用两种展示方式打印一颗二叉树 效果如下 8 12 14 20 15 13 10 11 9 4 6 7 5 2 3 1 20
  • 50 openEuler搭建PostgreSQL数据库服务器-配置环境

    文章目录 50 openEuler搭建PostgreSQL数据库服务器 配置环境 50 1 关闭防火墙并取消开机自启动 50 2 修改SELINUX为disabled 50 3 创建组和用户 50 4 创建数据盘 50 4 1 方法一 在r
  • 21、同步与异步(三种方法)

    1 同步 按顺序一条一条数据执行 1 同步 按顺序一条一条数据执行 console log 第1条数据 console log 第2条数据 console log 第3条数据 console log 第4条数据 console log 第5
  • flowable工作流简介

    官网地址 https www flowable org Flowable6 3中文教程 https tkjohn github io flowable userguide introduction Flowable Modeler 流程定义
  • 数据结构-树(树基本实现C++)

    树形结构是一种重要的非线性数据结构 其中树和二叉树最为常用 直观看来树是以分支关系定义的层次结构 树形结构是我们平时比较熟悉的 比如文件夹目录 公司组织关系等 在计算机领域也得到广泛的应用 编译程序就是以树来表示源程序的语法结构 二叉树是一
  • osgEarth的Rex引擎原理分析(一二六)rex瓦片组织方式

    目标 一二五 中问题212 通过如下确定瓦片的组织方式 核心是profile osgEarth Map cpp void Map calculateProfile collect the terrain layers we will nee
  • [1075]OpenSSL和Python实现RSA Key公钥加密私钥解密

    文章目录 1 OpenSSL实现非对称加解密 1 1 生成私钥 并导出公钥 1 2 准备测试数据 1 3 公钥加密 1 4 私钥解密 2 Python实现非对称加解密 3 非对称加解密的疑问 为什么RSA公钥每次加密得到的结果都不一样 1
  • Linux复制到home后自动删除,[rm] Linux 防止"rm -rf /" 误删除

    引以为戒 一 缘由 最近看到这则新闻 很是悲伤 因为我最近也在用ansible 然而这一错误源自Ansible上糟糕的代码设计 这款Linux实用工具被用于在多台不同服务器上自动执行脚本 开发者解释到 实际参数应该是 rm rf foo b