作业说明
这个作业属于课程:《网络攻防实践》
这个作业的要求为:寒假作业
我在这门课程目标:学习网络攻防知识,增加网络安全技术基础
这个作业帮助我实现目标的具体方面:基本掌握Markdown格式blog书写,增加Linux命令学习,在实验楼实操加深学习印记。
作业正文
作业一
(1)网络攻击与防御
本科期间未学习过网络安全相关课程,了解过网络安全,技术小白。本科专业为电子信息工程,本科期间学习过嵌入式Linux课程,现在在学习python编程。
(2)Markdown
作业正在使用的Markdown格式正在逐步掌握。
作业二
(1)VMware
此前使用过VMware安装虚拟机,现装有Red Hat Enterprise Linux 6.0和ubuntu64位Linux系统;
(2)Linux命令学习方法
通过实践学习别出心裁的Linux命令学习法,掌握Linux命令的学习方法。本文引入了操作系统的功能和架构,Linux的架构如下所示。
Linux学习应用的一个特点是通过命令行进行使用,命令行的好处主要是可以批处理并自动化。笔者指出:那么多命令先学什么,后学什么是一个大问题,本文期望找一种方式,通过解决“Where”的问题,通过几个核心命令的学习,让你可以举一反三通过实践学习其他命令,从而解决Linux命令的“what”问题。作者通过介绍几个常用的快捷键和几种常见的Linux命令,对Linux命令的学习方法进行了示例。
(3)实验楼
参考上面的学习方法通过实践学习Linux 基础入门(新版)课程,掌握常用的Linux命令。
(I)常用快捷键操作
Ctrl+d
:键盘输入结束或退出终端
Ctrl+s
:暂停当前程序,暂停后按下任意键恢复运行
Ctrl+z
:将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a
:将光标移至输入行头,相当于Home键
Ctrl+e
:将光标移至输入行末,相当于End键
Ctrl+k
:删除从光标所在位置到行末
Alt+Backspace
:向前删除一个单词
Shift+PgUp
:将终端显示向上滚动
Shift+PgDn
:将终端显示向下滚动
(II)Linux命令操作
(i)用户及文件权限管理
本节主要学习Linux用户管理和权限管理。下面对查看用户、创建用户、用户组和删除用户进行了实操练习。
下面对查看文件权限、变更文件所有者和修改文件权限进行实操练习。
(ii)Linux目录结构及文件基本操作
多数Linux版本采用FHS(Filesystem Hierarchy Standard,文件系统层次结构标准)文件组织形式,FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理和矛盾处理,下图为FHS_2.3标准文档。
使用cd
命令可以切换目录,.
表示当前目录,..
表示上一级目录,-
表示上一次所在目录,~
通常表示当前用户的home
目录。使用pwd
命令可以获取当前所在路径(绝对路径)。
Linux文件的基本操作:
touch
命令用于创建空白文件,其主要作用是来更改已有文件的时间戳的;mkdir
命令用于创建空目录,也可以同时指定创建目录的权限属性。
cp
命令用于一个文件到指定目录,要成功复制目录需要加上-r
或者-R
参数(表示递归复制)。
rm
命令用于删除一个文件,删除只读权限文件需要使用-f
参数强制删除,删除目录则需要使用-r
或-R
参数。
mv
命令用于移动文件或重命名文件。批量重命名可使用rename
进行类似操作:$ rename 's/\.txt/\.c/' *.txt
。
cat
、tac
、nl
命令可用于查看文件。cat
为正序显示,tac
为倒序显示,两个命令都是用来打印文件内容到标准输出。more
、less
命令用于分页查看文件。head
、tail
命令用于查看文件。
file
命令用于查看文件类型。
vimtutor
可以在vim编辑器的学习使用中助你一臂之力。
(iii)环境变量与文件查找
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。通常我们会涉及到的变量类型有三种:当前Shell进程私有用户自定义变量、Shell本身内建变量和从自定义变量导出的环境变量。也有三个与上述三种环境变量相关的命令:set
(显示当前Shell所有变量,包括其内建环境变量,用户自定义变量及到导出的环境变量)、env
(显示与当前用户相关的环境变量,还可以让命令在指定环境中运行)和export
(显示从Shell中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量)。
关于哪些变量是环境变量,可以简单地理解成在当前进程的子进程有效则为环境变量,否则不是(有些人也将所有变量统称为环境变量,只是以全局环境变量和局部环境变量进行区分,我们只要理解它们的实质区别即可)。我们这里用export
命令来体会一下,先在Shell中设置一个变量temp=shiyanlou
,然后再新创建一个子Shell查看temp
变量的值。如果想要添加一个永久生效的环境变量,只需要打开/etc/profile
,在最后加上你想添加的环境变量即可。
与文件搜索相关的命令常用的有whereis
(简单快速),which
(精而小),find
(精而细)和locate
(快而全)。
(iv)文件打包与解压缩
在 Linux 上面常见的格式除了*.zip
,*.7z
两种外,还有.rar
,*.gz
,*.xz
,*.bz2
,*.tar
,*.tar.gz
,*.tar.xz
,*.tar.bz2
。这么多种压缩文件,这么多个命令,我们一般只需要掌握几个命令即可,包括zip
,tar
。解压缩相关操作如下所示。
使用安静模式,将文件解压到指定目录:$ unzip -q shiyanlou.zip -d ziptest
。上述指定目录不存在,将会自动创建。如果你不想解压只想查看压缩包的内容你可以使用 -l 参数:$ unzip -l shiyanlou.zip
。Linux中解压包含中文的文档或以中文作为文件名的文件时,我们可以指定编码类型,使用-O
(英文字母,大写O
)参数指定编码类型:unzip -O GBK 中文压缩文件.zip
。
在Linux上面更常用的是tar
工具,tar
原本只是一个打包工具,只是同时还是实现了对7z
、gzip
、xz
、bzip2
等工具的支持,这些压缩工具本身只能实现对文件或目录(单独压缩目录中的文件)的压缩,没有实现对文件的打包压缩,所以我们也无需再单独去学习其他几个工具,tar
的解压和压缩都是同一个命令,只需参数不同,使用比较方便。以下为打包操作。
(v)文件系统操作与磁盘管理
使用 df 命令查看磁盘的容量。
使用 du 命令查看目录的容量,-d参数指定查看目录的深度,常用参数:du -h
(同--human-readable 以K,M,G为单位,提高信息的可读性);du -a
(同--all 显示目录中所有文件的大小);du -s
(同--summarize 仅显示总计,只列出最后加总的值)。
- 创建虚拟磁盘
- 使用 dd 命令创建虚拟镜像文件
- 使用 mkfs 命令格式化磁盘(我们这里是自己创建的虚拟磁盘镜像)
- 使用 mount 命令挂载磁盘到目录树
mount [options] [source] [directory]
- 使用 umount 命令卸载已挂载磁盘
sudo umount /mnt
- 使用 fdisk 为磁盘分区(关于分区的一些概念不清楚的用户请参看主引导记录)
sudo fdisk -l
:查看硬盘分区表信息
sudo fdisk virtual.img
:进入磁盘分区模式 - 使用 losetup 命令建立镜像与回环设备的关联
首先使用sudo losetup -d /dev/loop0
解除设备关联,然后再使用mkfs
格式化各分区(前面我们是格式化整个虚拟磁盘镜像文件或磁盘),不过格式化之前,我们还要为各分区建立虚拟设备的映射,用到kpartx工具(手动安装),用sudo kpartx -dv /dev/loop0
取消映射。接着再是格式化,我们将其全部格式化为 ext4:$ sudo mkfs.ext4 -q /dev/mapper/loop0p1
,格式化完成后在/media
目录下新建四个空目录用于挂载虚拟磁盘:mkdir -p/media/virtualdisk_{1..3}
,然后df -h
。
- 使用 dd 命令创建虚拟镜像文件
(vi)Linux下的帮助命令
我们时常使用 Linux 的命令,一些常用的命令即使不背我们也能记住,而一些较长的命令或是一些不常用的参数甚至是不常用的命令需要用时怎么也想不出来。因此,掌握Linux帮助命令就显得犹为重要了。常用的帮助命令有help
,man
和info
三种。
zsh
中内置并没有help
命令,我们可以进入bash
中,在bash
中内置有该命令。查看指令为ls --help
,而不是help ls
。
man
没有内建与外部命令的区分,得到的内容也比用help
更多更详细。man
工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的man
也可以得到程序的更多相关信息和 Linux 的更多特性。查看指令为man ls
。
info
来自自由软件基金会的GNU项目,是GNU的超文本帮助系统,能够更完整的显示出GNU信息。查看指令为info ls
。
参考文献
[1] 极简MArkdown排版介绍
[2] 别出心裁的Linux命令学习法
[3] Linux基础入门