前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【程序猿硬核科普】由最近的删库事件联想到的一些看法 | 更改rm命令实现Linux下的回收站机制

【程序猿硬核科普】由最近的删库事件联想到的一些看法 | 更改rm命令实现Linux下的回收站机制

作者头像
浩Coding
发布2020-03-04 14:11:52
8280
发布2020-03-04 14:11:52
举报
文章被收录于专栏:浩Coding浩Coding
最近的删库事件闹得沸沸扬扬,赶紧上B乎看了看,吃吃瓜,同时也看了点DBA相关知识,跟大家分享下,顺便写个脚本更改rm命令实现Linux下的回收站机制。

数据安全保障体系建设

如何有效避免和减少类似事件的影响,以下是部分安全保障体系建设的建议:

1、账户分等级、分权限、分体系设定

比如研发人员无法对数据库本身进行操作,只能通过页面级的控制台进行数据项的更新及简单运维操作,部分敏感表或数据项的操作需主管审批。

2、生产环境管理制度

确保每一步操作都被执行规范,并被纳入监管。比如一般技术人员访问生产环境,只能指定机器、指定账号进行登录,且部分登录需执行主管审批流程。

3、机房管理制度

4、备份机制

不同级别、不同维度的备份机制,尤其是核心数据,至少保障2~3份以上的异机、异地备份。

5、数据快照机制

强制执行数据快照,一般人员无法直接修改或干预。

6、实时监控与告警

比如利用大数据和AI,实现智能风控,当频繁涉及对敏感数据的操作时,给予告警、暂停(5~30分钟)、走审批等流程的风控策略。

7、安全意识和警示培训

不定期进行宣传和警示培训,尤其是真实案例的宣讲。

8、线上安全考核

由公司自主出题,以多个单选题和多选题的形式进行线上的全员考试。这种制度其实在一些大厂已经很平常了,比如大家众所周知的几家互联网巨头。

作者:贺定圆

链接:https://www.zhihu.com/question/374518368/answer/1037256521

来源:知乎

实现Linux下的回收站机制

大致思路:写一个脚本代替rm命令,作用是执行rm命令时候将文件移动到回收站(一个指定的文件夹),再到.bashrc文件设置别名代替rm命令,之后设置定时任务定期清理回收站

.bashrc文件的作用:主要保存个人的一些个性化设置,如命令别名、路径等。也即在同一个服务器上,只对某个用户的个性化设置相关。 每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使之生效。 一般会在.bash_profile文件中显式调用.bashrc。登陆linux启动bash时首先会去读取~/.bash_profile文件,这样~/.bashrc也就得到执行了,用户的个性化设置也就生效了。

1、建立一个隐藏的回收站文件夹

代码语言:javascript
复制
mkdir ~/.recycleBin

2、编写回收站脚本recycleBin.sh

代码语言:javascript
复制
#!/bin/bash
if [[ $1 != '/' && $1 ]];then
#   echo $1
   mv $1 ~/.recycleBin/
   echo '['$1'] put into the recycle bin!';
else
   echo 'false:can not rm /';
fi

赋予脚本可执行权限

代码语言:javascript
复制
chmod a+x recycleBin.sh

3、实现rm 命令和recycleBin.sh 脚本的绑定

代码语言:javascript
复制
vim ~/.bashrc
增加一行代码:
alias rm="sh ~/.recycleBin/recycleBin.sh"

alias命令用来设置指令的别名,相当于执行rm,实际执行的是recycleBin.sh

输入source ~/.bashrc命令使别名立即生效。

然后我们测试一下,试着用rm删除一个文件,再到回收站文件夹看看

4、编写crontab任务每周一清理回收站中7天前的文件

代码语言:javascript
复制
0 3 * * 1 find ~/.recycleBin/ -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1

alias 拓展小知识:

细心的读者可能发现了,在自动清理回收站文件的命令中:用到了rm命令,这不是被我们改成了移动文件命令了吗,这样做还能实现清理回收站的功能吗?答案是:能!

因为交互模式下alias 扩展默认是开启的,脚本模式下默认是关闭的。

如果需要在脚本中使用别名,需要先执行:source ~/.bash_rc

检查默认情况下shell脚本中是否开启alias扩展:

代码语言:javascript
复制
shopt expand_aliases

shell中开启alias扩展:

代码语言:javascript
复制
shopt -s  expand_aliases

使用safe-rm替代不安全的rm

如果感觉以上步骤比较繁琐,有一个简单的方法,实现上面的基本功能,安装safe-rm,步骤如下:

1.下载

官网下载地址:https://launchpad.net/safe-rm

2.安装

①解压safe-rm

代码语言:javascript
复制
tar -zxf safe-rm-0.12.tar.gz

②复制safe-rm到/usr/local/bin目录下

代码语言:javascript
复制
cp safe-rm-0.12/safe-rm   /usr/local/bin/rm

3.添加环境变量

代码语言:javascript
复制
vim /etc/profile

#在最后一行添加

代码语言:javascript
复制
PATH=/usr/local/bin:$PATH

保存后使其生效

代码语言:javascript
复制
source /etc/profile

4.配置

配置路径黑名单

代码语言:javascript
复制
vim /etc/safe-rm.conf
代码语言:javascript
复制
#添加要删除的路径按行分隔
/
/*
/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

5.测试

测试删除test文件夹

代码语言:javascript
复制
mkdir /root/test 
rm -rf /root/test

显示无法删除

代码语言:javascript
复制
safe-rm: skipping /root/test

参考文章

1、微盟系统被员工删库,这事到底有多严重?贺定圆的回答 - 知乎

https://www.zhihu.com/question/374518368/answer/1037256521

2、Linux 下回收站机制:

https://cloud.tencent.com/developer/article/1130170

3、Linux 终端命令 rm 删除的文件进入回收站实现方法:

https://www.iteye.com/blog/yeelor-2030682

祝君工作顺利,加油。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩Coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档