作者 | 鱼皮

来源 | 程序员鱼皮(ID:coder_yupi)

一个 “实用” 的好命令,我不得试试?

在编程届,有一个家喻户晓的实用 Linux 命令:rm -rf /

据说,此命令一旦执行成功,就会给人带来快乐,是一个善良的好命令,所以我喜欢叫它快乐命令

好吧,不装了,其实这个命令的作用是删除服务器上所有的文件!是一个极度危险的命令!

之前我们可能也听说过很多删数据跑路事件,其中一部分元凶正是这个命令。

记得前两周,我刚买了一台全新的云服务器,在给大家演示如何搭建应用开发环境。结果没想到,一些小伙伴竟然怂恿我当场输入 “快乐命令”,想看看会出现什么效果。

这么刺激的事情,我不得试试?

于是,我打开终端,连接服务器,输入快乐命令。而且,要做就要做得绝一点,我甚至同时开了 三个 客户端,打算同时输入命令,三倍快乐!

OK,起飞 ????!

但结果呢,数据并没有被删除,而是弹出了一个警告,禁止删除!

对不起,结果让大家失望了~

其实在敲这行命令之前,我就一点儿也不担心,因为我相信腾讯云服务器不可能连这点安全保障都没有。

那问题来了,如何防止快乐命令带来的恶劣影响呢?(温馨提示:该命令谨慎使用,切勿轻易尝试)

下面就简单分享下我了解到的方法吧~

如何防止 rm -rf 命令?

方法还是挺多的,我简单整理了一个大纲:

防止 rm -rf 大法

好习惯

首先,使用服务器最多的人肯定是我们自己,因此我们要先养成良好的使用习惯,保护服务器,从我做起。

定期备份

为了防止服务器上的数据(数据库、用户文件、配置文件等)被误删除,可以定期将服务器上重要的文件下载到本地或同步到其他存储空间上,一般使用定时脚本(crontab 命令等)或工具自动定时同步。

替代命令

为了防止意外 rm 命令带来的不利影响,我们可以尽量少用该命令,使用一些其他的命令来替代删除。

比如 mv 命令,作用是移动文件或改名,可以自己新建一个类似回收站的目录,然后把要删的文件扔进去。

# 新建回收站目录mkdir trash# 移动文件到回收站mv file.txt trash

针对日后可能还需要的文件,可以给文件增加 .bak 后缀,表示备份:

mv file.txt file.txt.bak

但是,即使养成了好习惯,有时候可能也会疏忽,不小心打出了 rm 命令,意外删除了文件。

莫慌,还有其他更保险的方法。

Alias 别名

Linux 中的 alias 命令用于为指令设置别名,有点类似对象的引用。

举个例子,本来可以用 mkdir 命令创建目录,如果我觉得这个命令背不下来,那可以给他起个别名:

alias md=mkdir

然后,我们就可以使用 md 命令来创建目录了。

同理,我们可以把 rm 命令设置为其他命令的别名,从而阻止原本的删除功能。

其实很多服务器已经默认为我们设置了一些保护系统文件安全的别名,让我们打开 .bashrc 文件:

cat /root/.bashrc

可以看到如下代码:

# .bashrc# User specific aliases and functions
alias rm='rm -i'alias cp='cp -i'alias mv='mv -i'

系统已经为 rm 命令配置了别名,当我们输入 rm 时,实际执行的是 rm -i,通过 -i 参数来询问我们是否要删除,只有输入 y 确认后,才会执行删除操作。

是否确认删除

手动回收站

基于 alias 命令,我们可以自动将 rm 命令重定向为将文件放入回收站目录,操作如下:

首先修改 .bashrc 文件(Linux 下环境配置文件,用于保存一些个性化配置):

vim ~/.bashrc

在文件末尾追加如下代码:

# 创建一个.trash 隐藏目录mkdir ~/.trash# 使用别名 del 代替 rm  alias rm=del# 将 rm 命令改为 mv del()               {    mv $@ ~/.trash/  }

保存退出,然后输入下列命令使修改生效:

source ~/.bashrc

大功告成,然后再执行 rm 命令,就会自动移动到回收站目录啦!

trash

除了自己手动编写回收站脚本外,还可以使用现成的开源项目 trash,Mac 用户可以直接用一行命令安装,就可以愉快地使用了。

项目地址:https://github.com/ali-rantakari/trash

权限管理

以上的方式对于个人服务器用户来说,一般就足够了,但如果是团队开发,多人同时在一台服务器上操作,就很难说谁突然删文件跑路了对吧。

所以,最好还是对服务器上的文件进行合理的权限设置,常用的几种方式如下。

修改文件权限

最直接的方式,直接用 chmod 命令修改指定文件的读、写、执行权限,比如下列命令:

chmod 700 file.txt

作用是设置仅创建该文件的用户可读写,其他用户无权访问。

chattr

Linux 系统自带的 chattr 命令是 Change Attribute 的缩写,意为改变文件的属性,能够用来防止文件和目录被意外删除或修改。

比如下列命令:

sudo chattr +i file.txt

通过 +i 参数给文件追加了 “不可修改” 的属性,该不能被删除、改名、设定链接关系,同时不能写入或新增内容。该参数可谓是提高系统安全的神器!

让我们试下效果:

果然删除失败了,提示操作不被允许。

如果要保护目录,只需要加个 -R 参数就行了:

sudo chattr -R +i myDir

设置 sudo 权限

sudo 是 Linux 的常用命令,可以临时以 root 用户(超级管理员)的身份执行命令。

如果给了一个普通用户超级管理员的身份,他将能做任何事情,这是非常危险的啊!

所以可以使用 visudo 命令,修改普通用户使用 sudo 命令时的权限。

输入 visudo,将自动进入 /etc/sudoers 文件的编辑,尝试追加一行:

dog localhost=/bin/rm /file/*

这就意味着,用户 dog 只能删除 /file 目录下的文件,而不能随意删除。

Lshell

再提一个开源的 Linux 安全神器 Lshell,可以用于构建一个受限的 Linux 脚本执行环境。

项目地址:https://github.com/ghantoos/lshell

一行命令安装后,可以通过修改它的配置文件 /etc/lshell.conf,来管理用户的行为。

比如下列配置,禁止用户 yupi 使用 rm 命令,防止这货删文件跑路:

 [yupi] allowed = 'all' - ['rm'

一般情况下,以上那么多种措施就足够防护了,也比较简单。

但最后,还是要提醒大家,不要轻易尝试这个命令哈哈。

☞“我被机器解雇了!”Amazon 63岁员工因算法评分太低被自动开除
☞雷军狂撒 20 亿 ,给小米、金山员工豪派“大红包”,网友:又是别人家的公司!
☞曝 OPPO 给离职员工补发年终奖,此前遭克扣
☞程序员的酒后真言
☞旧手机别卖掉换脸盆了,自制服务器了解一下!

程序员都想,却不敢做的事?我来!相关推荐

  1. 100%的程序员都想挑战的算法趣题!| 码书

    计算机的世界每天都在发生着深刻的变化.新操作系统的发布.CPU性能的提升.智能手机和平板电脑的流行.存储介质的变化.云的普及--这样的变化数不胜数. 在这样日新月异的时代中,"算法" ...

  2. 我敢打赌,这是98%的程序员都想挑战的算法趣题!

    计算机的世界每天都在发生着深刻的变化.新操作系统的发布.CPU性能的提升.智能手机和平板电脑的流行.存储介质的变化.云的普及--这样的变化数不胜数. 在这样日新月异的时代中,"算法" ...

  3. 100% 的程序员都想挑战的算法趣题!

    作者 | 图小敏 计算机的世界每天都在发生着深刻的变化.新操作系统的发布.CPU性能的提升.智能手机和平板电脑的流行.存储介质的变化.云的普及--这样的变化数不胜数. 在这样日新月异的时代中,&quo ...

  4. 这是 1000 万程序员都想要的格子衫!

    程序员们在着装上创造了一个风格--百搭格子衫.加厚加宽黑框眼镜.展现风中实力的凌乱发型--这种自带槽点的打扮,让有娱乐至死精神的网友们大喜过望-- "程序员都爱格子衫"成功与&qu ...

  5. 为什么程序员都很排斥面试时做题?答不出题的程序员会是大牛吗?

    相信很多人都有过这样的经历,就是去面试的时候,先被要求做题. 如果像下面的判断选择还好! 如果是让写个什么算法之类的,那就呵呵了!每天和鼠标握手,还哪会写字啊! 关于这件事,很多小伙伴纷纷吐槽. 网友 ...

  6. 这是1000万程序员都想要的格子衫――UCloud金格子衫奖背后的故事

    程序员们在着装上创造了一个风格--百搭格子衫.加厚加宽黑框眼镜.展现风中实力的凌乱发型--这种自带槽点的打扮,让有娱乐至死精神的网友们大喜过望-- "程序员都爱格子衫"成功与&qu ...

  7. 程序员每天每周每月每年应该做的事

    程序员每天该做的事 1.总结自己一天任务的完成情况 最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多 2.考虑自己明天应该做的主要工作 把明天要做的事情列出 ...

  8. 程序员:你敢找我做这事,我就敢拉黑你!

    当我想下班的时候,总有人找我做无意义的事! "我的996,你不懂." 最近好不容易和程序员好基友M菌约饭成功,他张嘴就说了这句让我懵逼的话. 他还说, "以前在上一份工作 ...

  9. JAVA程序员入职一家公司需要做的事

    自己备用 环境安装篇 1.jdk安装及确认是否成功安装 JDK安装和环境变量配置(超详细图文)_喵代王-香菜的博客-CSDN博客_jdk安装教程及环境变量配置Windows 安装以及配置JDKhttp ...

最新文章

  1. POJ 3449 Geometric Shapes
  2. 专家也要小心,HTTPS网址的网站就一定安全吗?
  3. 【推荐系统】多视图多示例多标签的协同矩阵分解
  4. 淘系的音视频编辑方案:非线性编辑引擎
  5. zendstudio 默认网页打开your project的时候不显示本地主机localhost的解决方法
  6. 网络操作系统课后练习第三章
  7. 左侧侧拉栏html,html – 将侧边栏拉伸到页面的完整高度
  8. Hyperledger Fabric Composer安装blockchain explorer
  9. ideaIU-2018.3.1安装及激活方法-百度网盘分享
  10. 一、音频基础知识 - 耳机接口标准
  11. short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
  12. com.weibo.sdk.android.WeiboException: {error:User does not exists!,error_code:20003,request:
  13. 香农公式说明了什么_香农公式理解
  14. Android ANR日志分析总结
  15. 计算机表格如何求和,excel表格怎么求和? excel自动求和的三种方法
  16. node 暴漏模块中的api(转自了不起的node)
  17. 用于夜视和监控的图像增强方法
  18. Day【10】相交链表
  19. calendar java 线程安全_SimpleDateFormat,Calendar 线程非安全的问题
  20. 思科AP常见型号和WiFi标准POE标准对应表

热门文章

  1. 斩获 12w+ 星标的神仙项目再度上榜,简直就是一套活生生的自学编程百科全书!...
  2. spring MVC项目启动报错
  3. 香港中文大学(深圳)罗元教授招收计算机与信息工程全奖博士
  4. CVPR 2021 | 利用时序差分进行动作识别的最新Backbone—TDN
  5. 700页!分享珍藏很久的《推荐系统学习手册》(附下载链接及入门经验)
  6. 制药企业SAP项目中CSV认证需要准备的文档
  7. 从主数据的角度看一个零售ERP系统
  8. 万字长文总结机器学习的模型评估与调参
  9. 如何为人工智能建立正确的数据策略?
  10. 机器学习:基于Knn算法的用户属性判断方案设计