Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Linux

场景:学长,为什么我要用 Linux,Linux 比 Windows 好么? 

答:需要什么,都是为了满足某项需求。

Linux 准确来说只是一个内核,并不是像 Windows 一样的系统,但是对于刚刚接触的人(或老司机)来说,常常把它当做(或懒得解释)和 Windows 同类的东西。它只是个内核。它是和 Windows 的NT内核一个层次的东西。如果你不知道上面说的是什么意思的话,那么我告诉你它是开源的(开放源代码 https://github.com/torvalds/linux )也并没有什么卵用。而且使用它(Linux 系统)并不能成为你在他人面前炫耀的资本。为什么选择 Linux 呢?撇开什么教条之类的,只是因为它可以在某些方面满足我们的需求,帮忙我们学习计算机,学习网络,学习渗透提高我们的效率。Windows 有 Windows 的优点,Linux 自有 Linux 的短板。

场景:友人A: 我不选 Linux 开发方向的话,我有必要学习 Linux 吗?

答:作为安协的一员,Linux 相对于 Windows 的操作习惯有着很大的差别,单纯喝可乐的快感并不能高过可乐喝完喝奶茶啊!多试试,你会发现更大的世界!

友人A:学长我用的 macOS。

亲,挑个喜欢的呗!—— 选择适合你的 Linux 发行版

场景:学长,被你安利后,我想用 Linux, 我刚刚搜了一下 Linux,吓死宝宝了。 哪里下载啊!

答:Linux 具有众多的发行版,不同的发行版之间最大的区别就是包管理器桌面环境了。桌面用环境是很重要的,但是对于需要看这词条的你,折腾桌面环境本身并不会让你喜欢上 Linux。

Fedora 用的是 Gnome 3 桌面环境,Ubuntu 用的是自家的 Unity,Kali 用的是 Gnome 2 桌面环境,除此之外还有 xfce,KDE 和 Deepin 的桌面。在性能,外观与设备友好度三个方向各有优势。我想在此处画个能力值分布图那种,待上总之,第一眼看上哪个上哪个呗!

Image Modified

Image Modified

Image Modified

Image Modified

激进的 Fedora

友好的 Ubuntu

渗透用 Kali

你开心就好 Arch


重要的包管理器

比起桌面环境,这个要重要的多,桌面环境你不满意了可以随便换,Ubuntu 的 Unity 用着反人类的话(反正我是用得爽爽的)可以直接上 Gnome 2/3。Fedora 你也可以装个 xfce 去爽爽。

不同的包管理器都是

YUM Red Hat 系

  • Fedora < 22

  • Centos <= 目前

  • RHEL

APT Debian系

  • Ubuntu <= 目前

  • Kali

  • ... 这就多了

DNF

  • Fedora >= 22

PACMAN

  • Arch Linux

还有其它 Unix ,类 Unix 的包管理器不作介绍,因为我没用过

以上只算科普,记住了至少能回答什么是 Linux。更加详细的资料,如果你有兴趣,可以按照相对应的关键字进行搜索,深入了解(上面这些不怎么重要,下面才是重点)。

与Shell共舞

场景:我看电影里面那些黑客都是对着黑框框敲敲敲就黑进了 XX 系统,是不是 Linux 啊?

答:黑框框在 Linux 都叫命令行交互终端,简称终端。

Shell 这个东西其实是个操作系统都有。狭义上都理解成是个黑框框,有个光标在一闪一闪。但它其实指的是人与机器交互用的程序。本章节皆以狭义解说。Windows 下那个命令提示符是个不完整的 MS-DOS 模拟器,除此之外还有个 Powershell。Linux 下的 Shell 是个极其强大的东西,通过命令终端,你可以完成绝大多数 Linux 上的任务,通过一个闪烁的光标,就可以自由地指挥你的机器,这并不是魔法,这是 Shell 的诗。

Shell 并不是一门真正意义上的编程语言,前期不一定要会写,但是 Shell 脚本至少要看得懂。对于 Shell 的学习, 虽然不是一门真正意义上的编程语言,但是你可以把它当作一门编程语言来学习,圣经《linux命令行与shell脚本编程大全》,各类论坛,博客。多写写就会用了,用过了,就算时间久了,也会记住要点,重新拣回来也很容易,即使全忘光了,你也学会了最宝贵的——“自学的方法”。

那些年与 C 的恩怨情仇

场景: 大黑客 Lightless 说 C 语言很重要,选了 Linux 方向的是不是也要学 C 语言啊?

答:相当重要。特别是在 Linux 上。

Linux 诞生的故事直接上维基吧,追溯到 Unix 与 C 的关系。

大神菊苣们说过了,学什么语言最终啊,都只是因为这语言能够让程序员最快地完成工作罢了。但是 C 语言与 Linux 的关系密不可分,你如果选择了 Linux 内核开发方向的话,这条路上一定会与 C 语言同行。C 语言也是安协里各个方向的基础,因为历史原因,C 语言影响太大了。学业方面,也是工科生的必修。

有人说 Linux 是程序员用的系统,是黑客用的系统,这种说法嘛,不置可否。(Wiki 上是不是不可以用这种暧昧的说法啊?)其实是有道理的,因为每一个 Linux 发行版上,都为程序员搭建开发环境,生产环境准备了最方便快捷的方式。

你要写 Python?可以!

你要写 Ruby?可以!

你要写 Java?可以!

你要写 PHP?世界上最好的语言当然可以!

你要写汇编?可以!

你要写 brainfuck?啪!

你要写 OC? 啪!

调教 Linux

Linux 的不同发行版之间的差别主要是软件包管理器的不同,对于细节一点的差别就是配置文件的位置不同。有时候需要记得不同发行版之间的差异。在调教 Linux 方面的圣经级入门书就是《鸟哥的Linux私房菜》,总共两本:基础篇和服务器架篇。书中以 CentOS 为例,讲解了怎么熟悉 Linux 的设置,操作和使用。怎么把 Linux 娘从小玩到大。不想买书的可以到图书馆借,也可以去看在线版。

CentOS 是在 Fedora 功能日臻完善之后,以稳定性为第一要求的发行版本,应用于生产环境的免费版本。与 Debian 系的众版本有些许差别,不过 Debian 系的设置都会兼容 CentOS 的设置。就启动方式而言,Debian 系的 Ubuntu 使用 Upstart,而 CentOS 用的是 SysV,但是 Ubuntu 也可以直接按 SysV 的方式设置,这种情况下 Ubuntu 的 Upstart会正常应用 SysV 的设置。这种情况就是 Ubuntu 对 CentOS 进行了兼容。然后现在都换成了 Systemd。所以前期强肝 CentOS 或都 Fedora 吧。大同小异的区别找谷歌,度娘都是可以的。Kira☆~

初遇文件名乱码

如果遇到这个问题可以顺便去学习一个计算机是怎么显示字符的,最开始学习而且最重要的就是 ASCII 了。然而 ASCII 标准上的字符远远不能满足人类的需要,所以有很多很多字符集出现了。在使用不同字符集之间的操作系统,比如 Windows 和所有 Linux 发行版之间,字符集从 GB2312 变成了 utf8,自然就会乱了,一般情况下可以通过 iconv 进行转换。

其实你们不要用中文文件名中文路径就好了。

学会使用 VIM

Vim 是一款著名的编辑器,功能太多,完全掌握需要一定时间,但在 Linux 上至少得会编辑会保存,学习梯度有点大,注意它是一款编辑器,但是可以武装成 IDE,但是不推荐。要求不高,会用就好。一般发行版是不带完全功能的 Vim 的,而是带了 Vi,装完之后自己通过包管理器安装最新版即可。

挥动魔杖时的忠告

更改自己不熟悉的设置选项时一定要有好习惯备份!备份!备份!

Code Block
languagebash
cp dest.conf dest.conf.bak

或者逼格高点

Code Block
languagebash
cp dest.conf{,.bak}

不想这么做的话至少你要在文件里面注释啊注释啊注释啊,不要直接 dd 就删了啊!

Linux的绝对领域

之所以是绝对领域,正是因为是 Linux 从 UNIX 那里继承过来的迷人之处(我擦擦口水再说

先从裙子权限讲起

long long ago,UNIX 作为商业操作系统价格昂贵不是一般人调教得起的东西,以至于唯一合理的利用方式就是多用户分时上同一台机器,那么问题来了 '_>' 你放在文件夹里的 R18 的东西被别人发现了肿么办!肿么办!这是个很严重的问题啊!

于是为了捍卫本子,捍卫里番,UNIX 使用了严格的权限管理机制,由于炒鸡好用,Linux 也采用了相同的权限机制。简单的来说,对于一个文件(在 Linux 中一切都是文件)来说,它的调教使用者分为拥有者 (owner),组成员 (group),和其他人(others),可以对它进行的调教有读取 (read),写 (write),和执行 (execute)。

怎么表现出来这个文件的S还是M属性呢

Code Block
languagebash
# evilddog@h4ckm3 in ~ [12:16:19] $ ls -l evilddog.txt -rwxrw-r-- 1 root evilddog 16 8月 12 12:16 hahahaha


我们用 ls -l 查看 hahahaha 这个文件时,实现出来的前十个字符是文件的属性,第一位是文件的类型先不管,后面九个字符就是三个使用者的三个权限,代表着文件所有者 root('_>' 有可读可写可执行的权限,而 evilddog 用户组(一个用户组也可以有其他的用户成员,也可以没有)只有可读和可写权限,而其他用户只有可读权限。

当然这个权限是可以更改的啊,我的本子怎么能让别人看到!(雾,怎么更改就留给大家去研究~

然后就是大腿(舔舔舔

前面说过 Linux 虽然只是一个连图形界面(当然大多数发行版本都预装了 GUI,比如 xfce,Gnome,KDE)都没有的内核,但是在以命令行而不是 GUI 为界面有一个巨大的好处,就是有把文件操作利用到极致的文化,允许用户以最小的 CPU / 内存开销管理极其复杂的文件,有尝试过在 Windows 下查找一个 300M 以上的 txt 文件中的一段话吗?(笑,因为首先你要保证不出现停止响应的情况下打得开233333)再比如说我想查看系统中的某个进程的情况,然后我命令一输日了狗的满屏幕都是,怎么找?

这个时候就要隆重介绍我们的大腿,哦不,管道。简单来说就是可以把管道前的命令结果输出当作内容输入给管道后的命令。比如说,我要在一个服务器日志文件中找到某个 IP 地址访问服务器的内容,可是日志很庞大内容很多,不可能依靠 Ctrl+F 找得到全部的内容,我们就可以使用管道和一些过滤条件输出我们想要的内容:

Code Block
languagebash
# evilddog@h4ckm3 in /home/wwwlog/ [12:45:33] $ cat access.log | grep 192.168.156.68 192.168.156.68 - - [04/Aug/2015:17:37:04 +0800] "GET / HTTP/1.1" 200 1153 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/43.0.2357.130 Chrome/43.0.2357.130 Safari/537.36" - 192.168.156.68 - - [04/Aug/2015:17:37:04 +0800] "GET /lnmp.gif HTTP/1.1" 200 5683 "http://192.168.156.162/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/43.0.2357.130 Chrome/43.0.2357.130 Safari/537.36" - 192.168.156.68 - - [04/Aug/2015:17:37:04 +0800] "GET /favicon.ico HTTP/1.1" 404 564 "http://192.168.156.162/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/43.0.2357.130 Chrome/43.0.2357.130 Safari/537.36" - 192.168.156.68 - - [04/Aug/2015:17:37:08 +0800] "GET /tcp-ip.gif HTTP/1.1" 200 784428 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/43.0.2357.130 Chrome/43.0.2357.130 Safari/537.36" - 192.168.156.68 - - [04/Aug/2015:17:46:59 +0800] "GET /1.pcap HTTP/1.1" 200 11688 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/43.0.2357.130 Chrome/43.0.2357.130 Safari/537.36" -


这样就可以得到IP为 192.168.156.68 的主机访问服务器内容辣!再比如说我们可以统计出访问这台服务器的次数最多的前十五个 IP 地址:

Code Block
languagebash
# evilddog@h4ckm3 in /home/wwwlog/ [12:55:13] $ cat wiki.vidar.club.log | awk '{print $1}'| sort -n |uniq -c | sort -nr | head -n 15 9459 209.9.130.11 661 209.9.130.8 384 209.9.130.5 371 209.9.130.12 329 209.9.130.13 252 209.9.130.6 155 218.75.123.186 64 14.152.69.117 59 42.120.74.104 21 111.0.169.125 16 223.92.174.129 14 122.235.235.19 13 114.226.68.105 10 183.156.78.63 9 42.120.160.109

似不似很神奇呢?

Info

看不懂没关系,你们只要觉得很厉害然后慢慢去学就好了。 ————大帝语录

Linux 的绝对领域有太多太多,不要因为无知而害怕,因为无知所以才要不停的学习。

Table of Contents