linux下防止rm-rf /处理,削减删除的影响力!

本文介绍如何使用safe-rm插件避免Linux系统中rm-rf命令误删重要文件。通过创建回收站、设置权限及配置白名单等方法增强文件安全性。详细步骤包括下载安装、配置保护目录及建立软链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看过一篇文章,讲述了rm-rf的一些惨案,并且引出了一些处理方式,看了很多的博客,总结一些方式方法;
本文主要解决命令误删除的情况

解决方案一:结合windows思想进行创建回收站,将命令改为mv移动,清除回收站的时候进行实际rm-rf但是也只是清除回收站内的文件; 解决方案二:设置权限以及用户,对文件权限进行控制,并进行设置;
解决方案三:整体配置借助safe-rm插件进行设置白名单进行设置;

注:以上情况,博主个人都有进行设置,个人感觉第三种比较好,不用考虑第二种的问题,不用考虑第一种的后续清除回收站,但是相比较的话不如第一种可召回文件,不如第二种的可进行详细的权限设置。当然最后还是看自己的设置吧。

第三种方式:都在root账号下进行设置就好,root为超级管理员

  • 1.下载safe-rm软件:

    safe-rm下载地址: https://launchpad.net/safe-rm
    命令 wget -c https://launchpadlibrarian.net/188958703/safe-rm-0.12.tar.gz

  • 2.解压文件,拷贝safe-rm到/usr/local/bin/目录下

    tar zxvf safe-rm-0.12.tar.gz
    cp safe-rm /usr/local/bin/
    这是为了让替换你的rm文件夹

  • 3.接下来会有一些配置上的不同,有的人会进行一些环境变量的设置,你可以看看别人怎么处理的,这里不多说,这种会有一个添加用户的useradd默认指定的一些目录是不生效的
    默认在/usr/local/bin/safe-rm里面指定了一些目录是无法删除的,可以vi路径打开看看:
    ‘/boot’ => 1,
    ‘/etc’ => 1,
    ‘/home’ => 1

博主没有进行配置文件处理,而是在safe-rm的/etc/safe-rm.conf中指定要保护的目录,配置文件默认无,需要创建,路径如下:
/etc/safe-rm.conf
注释:在root的~/.config/safe-rm也有配置,可以不创建以上的,直接在这里写也是可以的
上面分别为全局和用户的保护文件列表,只需要将重要文件或者目录的完整路径输入进去就可以了,每条以回车分隔。例如,在 /etc/safe-rm.conf 中写直接粘上这些,再拓展自己的一些就好:
/
/bin
/boot
/dev
/etc
/home
/initrd
/lib
/proc
/root
/sbin
/sys
/usr
/usr/bin
/usr/include
/usr/lib
/usr/local
/usr/local/bin
/usr/local/include
/usr/local/sbin
/usr/local/share
/usr/sbin
/usr/share
/usr/src
/var
以上是原有的,现在在里面加一个以下 的,这是博主进行了上面配置的第一种自己创建配置文件生成的这种,不想被删除,设置了自己不删除自己
/etc/safe-rm.conf

  • 4**.建立软连接:**

    #ln /usr/local/bin/safe-rm /usr/local/bin/rm

类似这种格式继续向下添加即可
例如:在root下添加一个testone目录,在这里直接写一个/root/testone
在我们删除时候:rm -rf /root/testone
safe-rm: skipping /root/testone
当然还有个小问题,这里也适用于一些通配,比如我写的不能删除testone但是testone里面的能不能删除呢,答案是能删除的,所以就要再设置/root/testone/*就好了
最后:非常欢迎小伙伴进行交流,交流是人进步的阶梯!,感觉还行的话右上角小手那点赞交流支持下吧~

<think>首先,用户的问题是:“递归删除非空目录/cat 的方法是()” 并给出了选项: A. del /cat/* B. rm -rf /cat C. rm -rf /cat/* D. rm -rf /cat/ 我需要回答这个问题,然后根据问题和我的回答提出3-5个相关问题。 问题是在问如何递归删除非空目录。在Linux或Unix系统中,递归删除目录及其内容通常使用`rm -rf`命令。 - `rm` 是删除命令。 - `-r` 或 `-R` 选项表示递归删除- `-f` 选项表示强制删除,不提示确认。 所以,正确的命令应该是`rm -rf /cat`。 现在,分析选项: A. del /cat/* — `del` 是Windows命令,不是Unix/Linux命令。而且它只删除目录下的文件,不会删除目录本身或子目录。 B. rm -rf /cat — 这应该删除整个`/cat`目录及其内容。选项`-rf`表示递归强制删除。 C. rm -rf /cat/* — 这会删除`/cat`目录下的所有文件和子目录,但不会删除`/cat`目录本身。因为`/*`匹配目录下的内容,而不包括目录。 D. rm -rf /cat/ — 这与B类似,但末尾有斜杠。在Unix/Linux中,目录路径末尾的斜杠通常不影响行为,`rm -rf /cat/`应该等同于`rm -rf /cat`,因为它指定的是同一个目录。 在Unix/Linux中,`/cat`和`/cat/`在大多数命令中是等价的,都指向同一个目录。`rm -rf /cat/`应该也能删除整个目录。 但标准写法通常是`rm -rf /cat`,没有末尾斜杠。 选项B是`rm -rf /cat`,选项D是`rm -rf /cat/`。两者都应该工作,但问题可能期望最标准的答案。 回顾问题:选项B是`rm -rf /catC` — 等等,用户输入是“B. rm -rf /catC”,这看起来像是打字错误。在用户消息中是: “B. rm -rf /catC” 但在上下文中,应该是“/cat”,而不是“/catC”。检查用户消息: “B. rm -rf /catC” 这可能是笔误。用户的问题中写的是“/cat”,但选项B是“rm -rf /catC”,这似乎多了个“C”。或许是“rm -rf /cat”,但写成了“/catC”。 在用户消息中是: “B. rm -rf /catC” 但目录是“/cat”,所以“/catC”可能是个错误。选项C和D有“/cat/*”和“/cat/”,所以B应该是“rm -rf /cat”。 我认为这是一个打字错误,应该是“rm -rf /cat”。 同样,选项A是“del /cat/*”,这是Windows命令。 所以,正确答案应该是B或D,但B有“/catC”,这不对。 用户输入: “B. rm -rf /catC” 这很可能是“rm -rf /cat”的笔误,因为“C”可能是多余的。或者它是“/cat”的一部分。 在上下文中,目录是“/cat”,所以选项B应该是“rm -rf /cat”。 我会假设这是一个错误,并认为B是“rm -rf /cat”。 现在,比较B和D: - B: rm -rf /cat - D: rm -rf /cat/ 两者在功能上应该相同。`rm -rf` 删除目录时,无论是否有末尾斜杠,效果一样。 但选项C: rm -rf /cat/* 只删除内容,不删除目录本身。 选项A: del /cat/* 是无效的,因为`del`不是标准Unix命令。 所以,B和D都是正确的,但问题可能只有一个正确答案。 在标准实践中,`rm -rf /cat` 更常见。 选项D是“rm -rf /cat/”,有末尾斜杠。 在`rm`命令中,末尾斜杠不影响行为。例如,`rm -rf dir` 和 `rm -rf dir/` 都删除`dir`目录。 但有一个细微差别:如果`/cat`是一个符号链接,`rm -rf /cat`会删除符号链接本身,而`rm -rf /cat/`会删除链接指向的目录内容。但在这个问题中,它指定为“目录”,所以应该是物理目录,不是符号链接。 问题说“非空目录/cat”,所以它应该是一个目录。 因此,B和D都应该工作。 但选项B被写为“rm -rf /catC”,这看起来像是个错误。 或许“C”是选项标签的一部分?不,选项是A、B、C、D,所以“B. rm -rf /catC” 意思是命令是“rm -rf /catC”,但目录是“/cat”,所以不一致。 用户消息是:“B. rm -rf /catC” 但上下文是删除“/cat”,所以可能是个打字错误,应该是“rm -rf /cat”。 同样,选项C是“rm -rf /cat/*”,D是“rm -rf /cat/”。 我认为最合理的答案是B,但写错了,或者是D。 另一个想法:选项B是“rm -rf /catC”,其中“C”可能是选项的一部分,但目录是“/cat”,所以命令“rm -rf /catC”会尝试删除一个名为“/catC”的目录,而不是“/cat”。所以如果目录是“/cat”,这不会工作。 但问题明确说“目录/cat”,所以选项B是错误的,因为它指定了不同的目录。 因此,选项B无效,因为它有“/catC”而不是“/cat”。 选项D是“rm -rf /cat/”,这应该删除“/cat”目录。 选项C是“rm -rf /cat/*”,只删除内容,不删除目录。 选项A无效。 所以正确答案应该是D: rm -rf /cat/ 但B如果正确写应该是正确的,但这里写错了。 在用户输入中,是“B. rm -rf /catC”,可能“C”是多余的,或者是“cat”的一部分。 但为了准确,我将基于文本判断。 或许“/catC”是“/cat”的笔误。 在回答中,我应该指出正确的命令。 标准命令是`rm -rf /cat`。 选项D是`rm -rf /cat/`,也正确。 但选项C`rm -rf /cat/*`不正确,因为它留下空目录。 例如: - `rm -rf /cat`:删除整个目录及其内容。 - `rm -rf /cat/*`:删除目录下的所有内容,但目录本身仍然存在(现在为空)。 所以对于删除目录本身,C不正确。 A不正确。 B有错误路径。 D正确。 所以答案应该是D。 在选项中,D是“rm -rf /cat/”,有末尾斜杠。 是的。 在一些系统中,末尾斜杠可能影响行为,如果目录是符号链接,但这里不是问题。 所以我认为D是正确答案。 现在,回答格式:我需要用中文回答,并解释。 然后,在末尾提出3-5个相关问题,以“§§相关问题§§”开头。 首先,回答问题。 正确选项是D. rm -rf /cat/ 但B如果正确写应该是正确的,但这里不是。 或许用户意指B是“rm -rf /cat”,但写错了。 但基于文本,D是正确的。 选项B是“rm -rf /catC”,这不对。 所以我会说D。 在我的回答中,解释为什么。 回答结构: - 解释递归删除非空目录的命令。 - 指出正确选项。 然后,相关问题。 相关问题应该基于用户的问题和我的回答,关于文件操作、命令等。 例如: 1. 递归删除目录时,使用 `rm -rf` 和 `rm -r` 有什么区别? 2.Linux中,如何安全地删除目录以避免误操作? 3. 如果目录包含只读文件,`rm -rf` 能成功删除吗? 4. 除了 `rm`,还有哪些命令可以删除非空目录? 等等。 现在,写回答。</think>### 递归删除非空目录 `/cat` 的方法详解 在 Linux/Unix 系统中,递归删除非空目录需要使用能同时删除目录及其内容的命令。选项分析如下: - **A. `del /cat/*`**:`del` 是 Windows 命令,在 Linux/Unix 中无效,且仅能删除文件(不处理子目录或目录本身)。 - **B. `rm -rf /catC`**:路径错误(`/catC` 与目标目录 `/cat` 不匹配),无法正确删除指定目录。 - **C. `rm -rf /cat/*`**:仅删除 `/cat` 目录下的所有文件和子目录,但会保留空目录 `/cat` 本身,不符合“删除目录”的要求。 - **D. `rm -rf /cat/`**:正确选项。`rm` 是 Linux/Unix 删除命令,`-r`(递归)删除子目录和内容,`-f`(强制)忽略提示。末尾的 `/` 不影响行为,能完整删除目录 `/cat` 及其所有内容。 **正确命令示例**: ```bash rm -rf /cat/ # 递归强制删除目录 /cat 及其全部内容 ``` **注意事项**: - 使用 `rm -rf` 需谨慎,误操作可能导致数据丢失。 - 如果 `/cat` 是符号链接,`rm -rf /cat/` 会删除链接指向的目录内容(而非链接本身),但问题中指定为物理目录,不影响结果。 **答案:D**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值