一个 “实用” 的好命令,我不得试试?
大家好,我是鱼皮。
在编程届,有一个家喻户晓的实用 Linux 命令:rm -rf / 。
据说,此命令一旦执行成功,就会给人带来快乐,是一个善良的好命令,所以我喜欢叫它 快乐命令 。
好吧,不装了,其实这个命令的作用是 删除服务器上所有的文件 !是一个极度危险的命令!
之前我们可能也听说过很多删数据跑路事件,其中一部分元凶正是这个命令。
记得前两周,我刚买了一台全新的云服务器,在给大家演示如何搭建应用开发环境。结果没想到,一些小伙伴竟然怂恿我当场输入 “快乐命令”,想看看会出现什么效果。
这么刺激的事情,我不得试试?
于是,我打开终端,连接服务器,输入快乐命令。而且,要做就要做得绝一点,我甚至同时开了 三个 客户端,打算同时输入命令,三倍快乐!
OK,起飞 !
对不起,结果让大家失望了~
其实在敲这行命令之前,我就一点儿也不担心,因为我相信腾讯云服务器不可能连这点安全保障都没有。
那问题来了,如何防止快乐命令带来的恶劣影响呢?
如何防止 rm -rf 命令?
方法还是挺多的,我简单整理了一个大纲:防止 rm -rf 大法
好习惯
首先,使用服务器最多的人肯定是我们自己,因此我们要先养成良好的使用习惯,保护服务器,从我做起。定期备份
为了防止服务器上的数据(数据库、用户文件、配置文件等)被误删除,可以定期将服务器上重要的文件下载到本地或同步到其他存储空间上,一般使用定时脚本(crontab 命令等)或工具自动定时同步。替代命令
为了防止意外 rm 命令带来的不利影响,我们可以尽量少用该命令,使用一些其他的命令来替代删除。比如 mv 命令,作用是移动文件或改名,可以自己新建一个类似回收站的目录,然后把要删的文件扔进去。
#新建回收站目录
mkdirtrash
#移动文件到回收站
mvfile.txttrash
针对日后可能还需要的文件,可以给文件增加 .bak 后缀,表示备份:
mvfile.txtfile.txt.bak
但是,即使养成了好习惯,有时候可能也会疏忽,不小心打出了 rm 命令,意外删除了文件。
莫慌,还有其他更保险的方法。
Alias 别名
Linux 中的 alias 命令用于为指令设置别名,有点类似对象的引用。举个例子,本来可以用 mkdir 命令创建目录,如果我觉得这个命令背不下来,那可以给他起个别名:
aliasmd=mkdir
然后,我们就可以使用 md 命令来创建目录了。
同理,我们可以把 rm 命令设置为其他命令的别名,从而阻止原本的删除功能。
其实很多服务器已经默认为我们设置了一些保护系统文件安全的别名,让我们打开 .bashrc 文件:
cat/root/.bashrc
可以看到如下代码:
#.bashrc
#Userspecificaliasesandfunctions
aliasrm='rm-i'
aliascp='cp-i'
aliasmv='mv-i'
系统已经为 rm 命令配置了别名,当我们输入 rm 时,实际执行的是 rm -i,通过 -i 参数来询问我们是否要删除,只有输入 y 确认后,才会执行删除操作。
是否确认删除
手动回收站
基于 alias 命令,我们可以自动将 rm 命令重定向为将文件放入回收站目录,操作如下:首先修改 .bashrc 文件(Linux 下环境配置文件,用于保存一些个性化配置):
vim~/.bashrc
#创建一个.trash隐藏目录
mkdir~/.trash
#使用别名del代替rm
aliasrm=del
#将rm命令改为mv
del()
{
mv$@~/.trash/
}
source~/.bashrc
大功告成,然后再执行 rm 命令,就会自动移动到回收站目录啦!
trash
除了自己手动编写回收站脚本外,还可以使用现成的开源项目 trash,Mac 用户可以直接用一行命令安装,就可以愉快地使用了。项目地址:https://github.com/ali-rantakari/trash
权限管理
以上的方式对于个人服务器用户来说,一般就足够了,但如果是团队开发,多人同时在一台服务器上操作,就很难说谁突然删文件跑路了对吧。所以,最好还是对服务器上的文件进行合理的权限设置,常用的几种方式如下。
修改文件权限
最直接的方式,直接用 chmod 命令修改指定文件的读、写、执行权限,比如下列命令:chmod700file.txt
chattr
Linux 系统自带的 chattr 命令是 Change Attribute 的缩写,意为改变文件的属性,能够用来防止文件和目录被意外删除或修改。比如下列命令:
sudochattr+ifile.txt
通过 +i 参数给文件追加了 “不可修改” 的属性,该不能被删除、改名、设定链接关系,同时不能写入或新增内容。该参数可谓是提高系统安全的神器!
让我们试下效果:
如果要保护目录,只需要加个 -R 参数就行了:
sudochattr-R+imyDir
设置 sudo 权限
sudo 是 Linux 的常用命令,可以临时以 root 用户(超级管理员)的身份执行命令。如果给了一个普通用户超级管理员的身份,他将能做任何事情,这是非常危险的啊!
所以可以使用 visudo 命令,修改普通用户使用 sudo 命令时的权限。
输入 visudo,将自动进入 /etc/sudoers 文件的编辑,尝试追加一行:
doglocalhost=/bin/rm/file/*
这就意味着,用户 dog 只能删除 /file 目录下的文件,而不能随意删除。
Lshell
再提一个开源的 Linux 安全神器 Lshell,可以用于构建一个受限的 Linux 脚本执行环境。项目地址:https://github.com/ghantoos/lshell
一行命令安装后,可以通过修改它的配置文件 /etc/lshell.conf,来管理用户的行为。
比如下列配置,禁止用户 yupi 使用 rm 命令,防止这货删文件跑路:
[yupi]allowed='all'-['rm']
一般情况下,以上那么多种措施就足够防护了,也比较简单。
但最后,还是要提醒大家,不要轻易尝试这个命令哈哈。一时好奇一时爽,明天要睡垃圾场!
最后再送大家一些 帮助我拿到大厂 offer 的学习资源,高达 6 T!
跑了,留下 6T 的资源!(https://t.1yb.co/qOJG)
我是如何通过自学,拿到腾讯、字节等大厂 offer 的,可以看这篇文章,不再迷茫!
我学计算机的四年,共勉!(https://t.1yb.co/q0mS)
我是鱼皮,点赞 还是要求一下的,祝大家都能心想事成、发大财、行大运。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。