linux - bash 中的安全递归删除

标签 linux bash validation delete-file

有没有办法检查用户输入或某些 self 检测机制提供的路径是否可以安全地在 bash 脚本中删除?

例如:

rm -rf $SOMELOCATION

显然我不希望 SOMELOCATION 是//var/etc/home/usr/opt/root 或一些重要目录中的任何一个。

有没有一种方法可以防止 bash 中发生此类事件,而无需迭代上面的所有目录(可能还有更重要的目录)?

有类似 isSystemDirectory 函数返回 true 或 false 的东西吗? :-)

最佳答案

没有;在将 SOMELOCATION 用作 rm 的参数之前,您需要检查它的值。

case $SOMELOCATION of
  /|/var|/etc|/home|/usr|/opt|/root) echo "Will not delete $SOMELOCATION" ;;
  *) rm -rf "$SOMELOCATION ;;
esac

权限允许 rm 失败,但由于 root 本质上拥有执行任何操作的权限,因此您在以 root 身份运行任何命令时需要采取适当的措施。 (或者至少,有一个最新的备份可以从错误中恢复。)

关于linux - bash 中的安全递归删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40493434/

相关文章:

linux - 如何用同一文本行中的尾随字符替换字符匹配项?

linux - 如何在 Linux 中监视完整的目录树的更改?

linux - NASM 获取参数并调用 sys_execve

bash - 如何使用多个循环并将输出存储到多个变量?

python - 读取-未知选项

validation - 更改默认验证消息

JavaScript 验证选择列表

c++ - ACE Reactor 在系统调用中断时退出

bash - shell 脚本 : Using a variable to define a path

c# - 数据验证 - 哪个更快?