致命的危险习惯-rm命令

话说最近在配置Linux服务器的时候,发现之前的服务器配置非常糟糕,各种安全隐患;出于coder的敏锐嗅觉,忍不住要动手动脚,于是,我就花点时间把服务器整理了一下,制定了些操作服务器的规则(习惯)。

其中,在上传一个文件时,习惯性地先备份。

文件名规则如下:${original_file_name.suffix}-${yyMMddhhmm}-${who} ;

之后,我就习惯性地执行了rm -rf ${original_file_name},顿时觉得非常爽,可不过几秒钟,我倒吸一口寒气。幸运的是我备份了,非常幸运。

事后想想,如果没有良好的习惯,那么将上演一场悲剧,事实上,惨剧发生非常多,严重的,损失上亿资产,在此,我只能啦啦啦啦啦啦啦……

等等,你确定不数下有几个“啦”?

于是,接下来就有事情干了。


目的:避免rm -rf悲剧,建立类似Windows或者Mac下的回收箱神器,并设置只允许root可以执行删除命令,其他用户不能删除文件。以前我习惯在windows下shift+del键,再次体现手贱一族,Mac图形化界面下貌似不能彻底直接删除。

step 1 root登录,设置全局别名;清除rm的其他别名,可检查各环境变量文件是否有rm的别名设置,如‘rm -i’,有的话注释掉;

$ type rm

显示 rm is aliased to `rm -i’  就需要去注释(该步骤省略,自行google或者查看~/.bashrc,/etc/profile)

$ vim /etc/profile

添加rm别名在文件末尾,保存退出

# when call rm, move files into trash folder temporarily

alias rm=trash

step 2 添加trash脚本

$ vim /bin/trash

添加脚本内容,保存退出

#!/bin/bash

mkdir -p ~/.trash

mv $@ ~/.trash

step 3 设置rm和trash执行权限,并使全局配置生效

$ chmod o-x /bin/rm

$ chmod a+x /bin/trash

$ source /etc/profile

至此,所有用户执行rm命令,实际上是将文件移动到当前用户下的隐藏目录.trash中;

若要永久删除,需在root下执行”\rm”命令,斜杠这里是忽略所有别名。


最后,良好的习惯是长时间重复练习的结果;不要随便rm -rf,你确定想好了?

Leave a Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: