话说最近在配置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,你确定想好了?