一个 “实用” 的好命令,我不得试试?git
你们好,我是鱼皮。github
在编程届,有一个家喻户晓的实用 Linux 命令:rm -rf /
。shell
听说,此命令一旦执行成功,就会给人带来快乐,是一个善良的好命令,因此我喜欢叫它 快乐命令
。数据库
好吧,不装了,其实这个命令的做用是 删除服务器上全部的文件 !是一个极度危险的命令!编程
以前咱们可能也据说过不少删数据跑路事件,其中一部分元凶正是这个命令。vim
记得前两周,我刚买了一台全新的云服务器,在给你们演示如何搭建应用开发环境。结果没想到,一些小伙伴居然怂恿我当场输入 “快乐命令”,想看看会出现什么效果。安全
这么刺激的事情,我不得试试?bash
因而,我打开终端,链接服务器,输入快乐命令。并且,要作就要作得绝一点,我甚至同时开了 三个 客户端,打算同时输入命令,三倍快乐!服务器
OK,起飞 🛫!markdown
但结果呢,数据并无被删除,而是弹出了一个警告,禁止删除!
对不起,结果让你们失望了~
其实在敲这行命令以前,我就一点儿也不担忧,由于我相信腾讯云服务器不可能连这点安全保障都没有。
那问题来了,如何防止快乐命令带来的恶劣影响呢?
下面就简单分享下我了解到的方法吧~
方法仍是挺多的,我简单整理了一个大纲:
首先,使用服务器最多的人确定是咱们本身,所以咱们要先养成良好的使用习惯,保护服务器,从我作起。
为了防止服务器上的数据(数据库、用户文件、配置文件等)被误删除,能够按期将服务器上重要的文件下载到本地或同步到其余存储空间上,通常使用定时脚本(crontab 命令等)或工具自动定时同步。
为了防止意外 rm
命令带来的不利影响,咱们能够尽可能少用该命令,使用一些其余的命令来替代删除。
好比 mv
命令,做用是移动文件或更名,能够本身新建一个相似回收站的目录,而后把要删的文件扔进去。
# 新建回收站目录
mkdir trash
# 移动文件到回收站
mv file.txt trash
复制代码
针对往后可能还须要的文件,能够给文件增长 .bak
后缀,表示备份:
mv file.txt file.txt.bak
复制代码
可是,即便养成了好习惯,有时候可能也会疏忽,不当心打出了 rm
命令,意外删除了文件。
莫慌,还有其余更保险的方法。
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
,Mac 用户能够直接用一行命令安装,就能够愉快地使用了。
以上的方式对于我的服务器用户来讲,通常就足够了,但若是是团队开发,多人同时在一台服务器上操做,就很难说谁忽然删文件跑路了对吧。
因此,最好仍是对服务器上的文件进行合理的权限设置,经常使用的几种方式以下。
最直接的方式,直接用 chmod
命令修改指定文件的读、写、执行权限,好比下列命令:
chmod 700 file.txt
复制代码
做用是设置仅建立该文件的用户可读写,其余用户无权访问。
Linux 系统自带的 chattr
命令是 Change Attribute 的缩写,意为改变文件的属性,可以用来防止文件和目录被意外删除或修改。
好比下列命令:
sudo chattr +i file.txt
复制代码
经过 +i
参数给文件追加了 “不可修改” 的属性,该不能被删除、更名、设定连接关系,同时不能写入或新增内容。该参数可谓是提升系统安全的神器!
让咱们试下效果:
果真删除失败了,提示操做不被容许。
若是要保护目录,只须要加个 -R
参数就好了:
sudo chattr -R +i myDir
复制代码
sudo
是 Linux 的经常使用命令,能够临时以 root 用户(超级管理员)的身份执行命令。
若是给了一个普通用户超级管理员的身份,他将能作任何事情,这是很是危险的啊!
因此可使用 visudo
命令,修改普通用户使用 sudo
命令时的权限。
输入 visudo
,将自动进入 /etc/sudoers
文件的编辑,尝试追加一行:
dog localhost=/bin/rm /file/*
复制代码
这就意味着,用户 dog 只能删除 /file
目录下的文件,而不能随意删除。
再提一个开源的 Linux 安全神器 Lshell
,能够用于构建一个受限的 Linux 脚本执行环境。
一行命令安装后,能够经过修改它的配置文件 /etc/lshell.conf
,来管理用户的行为。
好比下列配置,禁止用户 yupi 使用 rm
命令,防止这货删文件跑路:
[yupi] allowed = 'all' - ['rm']
复制代码
通常状况下,以上那么多种措施就足够防御了,也比较简单。
但最后,仍是要提醒你们,不要轻易尝试这个命令哈哈。一时好奇一时爽,明天要睡垃圾场!
最后再送你们一些 帮助我拿到大厂 offer 的学习资源,高达 6 T!
我是如何经过自学,拿到腾讯、字节等大厂 offer 的,能够看这篇文章,再也不迷茫!
我是鱼皮,点赞 仍是要求一下的,祝你们都能心想事成、发大财、行大运。