信息安全系统设计基础第一周学习总结
信息安全系统设计基础第一周学习总结
一、实验一 历史介绍
1.知识点
1)操作系统:连接硬件与应用程序,作为计算机表里之间的桥梁,包括系统调用和内核。
2)linux:由 最先研发,最初目的是
与windows系统相比,主要的优势(也是某些人严重的劣势)为——大都为开源自由软件,用户可以修改定制和再发布;兼具图形界面操作(需要使用带有桌面环境的发行版)和完全的命令行操作,可以只用键盘完成一切操作。
二、基础操作
1.知识点
1)linux系统->(X 窗口系统->客户端 Xclient)图形界面的套件X.org。比较:windows图形环境与内核不存在中介。
2)用户通过Shell(命令解析器)与linux系统进行交流。在图形界面下,linux利用终端模拟器程序(Terminal)来接受用户输入和显示输出。
3)注意,终端(Terminal)和控制台(Console)是有区别的。
4)Linux 默认提供了 6 个纯命令行界面的 terminal来让用户登录,在物理机系统上你可以通过使用[Ctrl]+
[Alt]+[F1]~[F6]进行切换。
5) 通配符是一种特殊语句,主要有星号(*,代表零或者多个字符)和问号(?,匹配任意一个字符),用来对对字符串进行模糊匹配(比如文件名,参数名)。
6)用户可以通过执行 man 命令调用手册页,获得某个命令的说明和使用方式的详细介绍。如:man man(获得man本身的功能介绍)。
7)一些基础操作
tab:用于提示,可补全命令、目录、命令参数;
Ctrl+c键来强行终止当前程序(它并不会使终端退出),用于停止某不知名程序或者恢复程序正常接收信息的功能;
使用键盘上的方向上键,恢复你之前输入过的命令。
2.操作
1)banner命令:
图1 安装banner
图2 安装完成
'-w'参数指定打印宽度,因为我们的环境在屏幕中显示比较小,必须要加上宽度限制。
图3 banner功能试用
3.作业
1)toilet试用
图4 toilet安装
图5 Toilet试用
三、用户文件权限管理
1.操作
1)可以用who am i命令查询当前登陆用户:
图6查询用户
2)创建用户:要创建用户需要 root 权限,要用到 sudo 命令。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。
图7 创建用户
图8 进入创建的用户
3)使创建的用户拥有root权限,进行如下操作(需要医治一个拥有root权限的用户密码)
图9 增加root权限
4)/etc/group 的内容包括用户组(Group)、用户组口令、GID 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:
group_name:password:GID:user_list
5)删除用户
图10 删除用户
6)查询所有文件:ls命令,如果其后加上-A,则是显示隐藏文件
图11 显示隐藏文件
7)创建用户——登陆——创建文件——查看所有者
图12
8)更改文件所有者
sudo chown <新的所有者> <文件>
9)锁死文件,使其他用户不能修改
注:每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)就对应这一个 "rwx",也就是一个 '7'。
图13 更改其他用户权限
图14 更改其他用户权限
2.作业
图15 创建opt文件并且限定其权限
四、目录结构及文件基本操作
1.知识点
1)Linux 是以树形目录结构的形式来构建整个系统的,可以理解为一个用户可操作系统的骨架。虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是“挂在”(挂载在)目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。
2)FHS(文件系统层次结构标准) 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据;第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。
3)使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录(**注意,还记得我们上一节介绍过的,以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件), - 表示上一次所在目录,~ 通常表示当前用户的"home"目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
3) 相对路径,也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点,表现形式如: usr/local/bin (这里假设你当前目录为根目录)。你可能注意到,我们表示相对路径实际并没有加上表示当前目录的那个 . ,而是直接以目录名开头,因为这个 usr 目录为 / 目录下的子目录,是可以省略这个 . 的(以后会讲到一个类似不能省略的情况);如果是当前目录的上一级目录,则需要使用 .. ,比如你当前目录为“home”目录,根目录就应该表示为 ../../ ,表示上一级目录("home"目录)的上一级目录("/"目录)
2.操作
1)使用tree命令查看文件树
图16 文件树
2)使用cd命令
图17 使用cd命令
3)新建空白文件:touch <文件名> (touch可以修改已有文件时间戳,在不加参数的时候,则创建空白的新文件)
4)创建空白文件夹(包括父目录)
图18 创建文件夹
5)复制文件与文件夹
图19
6)删除文件或者目录(rm命令)
图20
7)使用mv(move or rename files)命令,移动文件(剪切)。
mv <文件> <新的文件夹>
8)重命名文件
mv <文件名> <新文件名>
rename命令可以批量重命名
9)cat与tac两个命令都是用来打印文件内容到标准输出(终端),其中cat为正序显示,tac倒序显示。
标准输入输出:当我们执行一个 shell 命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),默认对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应被重定向到终端的屏幕,以便我们能直接看到输出内容。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
其中,加上 –n 可以按行显示
10)使用more工具打开passwd文件,打开后默认只显示一屏内容,终端底部显示当前阅读的进度(百分比)。可以使用Enter键向下滚动一行,使用Space键向下滚动一屏,按下h显示帮助,q退出。
11)我们通常使用file命令可以查看文件的类型
12)学习vim
图 21
3.作业
图22 调出“眼睛”
图23 后台运行
五、环境变量与文件查找
1.操作
1)查找
whereis只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s)。如果想要获得更全面的搜索结果可以使用locate命令。
图24 whereis查找
Locate命令可以在当前文件夹和其子文件夹中进行查找,并可以查找类似于/*.jpg等所有jpg类型的文件。
通常使用which来确定是否安装了某个指定的软件,因为它只从PATH环境变量指定的路径中去搜索命令。
find 命令的路径是作为第一个参数的, 基本命令格式为 find [path] [option] [action]。
补充:
1)注意格式,变量与符号之间并没有空格,不同于C语言
命令 |
说明 |
set |
显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量 |
env |
显示与当前用户相关的环境变量,还可以让命令在指定环境中运行 |
export |
显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量 |
关于环境变量,可以简单的理解成在当前进程的子进程是否有效,有效则为环境变量
问题:打完语句后,按下esc退出。然后关闭窗口,重新打开终端,找不到文件
我们可以简单的使用下面命令直接添加内容到.zshrc中:
$ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
上述命令中>>表示将标准输出以追加的方式重定向到一个文件中,注意前面用到的>是以覆盖的方式重定向到一个文件中,使用的时候一定要注意分辨。在指定文件不存在的情况下都会创建新的文件。
变量设置方式 |
说明 |
${变量名#匹配字串} |
从头向后开始匹配,删除符合匹配字串的最短数据 |
${变量名##匹配字串} |
从头向后开始匹配,删除符合匹配字串的最长数据 |
${变量名%匹配字串} |
从尾向前开始匹配,删除符合匹配字串的最短数据 |
${变量名%%匹配字串} |
从尾向前开始匹配,删除符合匹配字串的最长数据 |
${变量名/旧的字串/新的字串} |
将符合旧字串的第一个字串替换为新的字串 |
${变量名//旧的字串/新的字串} |
将符合旧字串的全部字串替换为新的字串 |
Source命令可以让修改的环境变量立即生效
3.作业
图25 cmatrix的数字雨
六、文件打包与解压缩
1.知识点
1)zip文件打包: ,-r参数表示递归打包包含子目录的全部内容,-q参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,压缩级别-[1-9],1表示最快压缩但体积大,9表示体积最小但耗时最久。需在其后紧跟打包输出文件名。后面使用du命令查看打包后文件的大小。
Zip 参数 文件.zip 文件绝对路径
2)使用-e参数可以创建加密压缩包。
3)使用unzip命令解压缩zip文件
4)如果你不想解压只想查看压缩包的内容你可以使用unzip加上-l参数。
5)rar也是 Windows 上常用的一种压缩文件格式,在 Linux 上可以使用rar和unrar工具分别创建和解压 rar 压缩包。
6)rar 的命令参数没有-,如果加上会报错。d:从指定压缩包文件中删除某个文件。l:查看不解压文件。
7)tar打包与解压缩:
•创建一个 tar 包:tar -cf shiyanlou.tar ~
•解包一个文件(-x参数)到指定路径的已存在目录(-C参数):
$ mkdir tardir
$ tar -xf shiyanlou.tar -C tardir
补充:
如果你想让你在 Linux 创建的 zip 压缩文件在 Windows 上解压后没有任何问题,那么你还需要对命令做一些修改:
$ zip -r -l -o shiyanlou.zip /home/shiyanlou
需要加上-l参数将LF转换为CR+LF来达到以上目的
如果有有包含中文的文档或以中文作为文件名的文件时默认会采用 GBK 或其它编码,而 Linux 上面默认使用的是 UTF-8 编码,如果不加任何处理,直接解压的话可能会出现中文乱码的问题
可以在解压时指定编码类型。
使用-O(英文字母,大写o)参数指定编码类型:
unzip -O GBK 中文压缩文件.zip
2.作业
图26
七、文件系统操作与磁盘管理
1.知识点
1) dd命令用于转换和复制文件,不过它的复制不同于cp。之前提到过关于 Linux 的很重要的一点,一切即文件,在 Linux 上,硬件的设备驱动(如硬盘)和特殊设备文件(如/dev/zero和/dev/random)都像普通文件一样,只要在各自的驱动程序中实现了对应的功能,dd 也可以读取自和/或写入到这些文件。这样,dd也可以用在备份硬件的引导扇区、获取一定数量的随机数据或者空数据等任务中。dd程序也可以在复制时处理数据,例如转换字节序、或在 ASCII 与 EBCDIC 编码间互换。
dd的命令行语句与其他的 Linux 程序不同,因为它的命令行选项格式为选项=值,而不是更标准的--选项 值或-选项=值。dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。
2) 使用 mkfs 命令格式化磁盘.
3) Linux/UNIX 命令行的 mount 指令是告诉操作系统,对应的文件系统已经准备好,可以使用了,而该文件系统会对应到一个特定的点(称为挂载点)。挂载好的文件、目录、设备以及特殊文件即可提供用户使用。
在类 UNIX 系统中,/dev/loop(或称vnd (vnode disk)、lofi(循环文件接口))是一种伪设备,这种设备使得文件可以如同块设备一般被访问。
在使用之前,循环设备必须与现存文件系统上的文件相关联。这种关联将提供给用户一个应用程序接口,接口将允许文件视为块特殊文件(参见设备文件系统)使用。因此,如果文件中包含一个完整的文件系统,那么这个文件就能如同磁盘设备一般被挂载。
这种设备文件经常被用于光盘或是磁盘镜像。通过循环挂载来挂载包含文件系统的文件,便使处在这个文件系统中的文件得以被访问。这些文件将出现在挂载点目录。如果挂载目录中本身有文件,这些文件在挂载后将被禁止使用。
df 命令查看磁盘的容量
物理主机上的 /dev/sda2 是对应着主机硬盘的分区,后面的数字表示分区号,数字前面的字母 a 表示第几块硬盘(也可能是可移动磁盘)
Dd命令使用
创建虚拟硬盘:使用 dd 命令创建虚拟镜像文件——使用 mkfs 命令格式化磁盘(我们这里是自己创建的虚拟磁盘镜像)——使用 mount 命令挂载磁盘到目录树(mount命令的一般格式如下:mount [options] [source] [directory])——使用 fdisk 为磁盘分区
作业:
八、命令执行顺序控制与管道
1.知识点
1)管道又分为匿名管道和具名管道(这里将不会讨论在源程序中使用系统调用创建并使用管道的情况,它与命令行的管道在内核中实际都是采用相同的机制)。我们在使用一些过滤程序时经常会用到的就是匿名管道,在命令行中由|分隔符表示,|在前面的内容中我们已经多次使用到了。具名管道简单的说就是有名字的管道,通常只会在源程序中用到具名管道。
2)cut 命令,打印每一行的某一字段。
3)grep命令: -r 参数表示递归搜索子目录中的文件,-n表示打印匹配项行号,-I表示忽略二进制文件。这个操作实际没有多大意义,但可以感受到grep命令的强大与实用。
4)sort命令功能很简单就是将输入按照一定方式排序,然后再输出,它支持的排序有按字典排序,数字排序,按月份排序,随机排序,反转排序,指定特定字段进行排序等等。
九、简单的文本处理
1.知识点
1)join命令:命令就是用于将两个文件中包含相同内容的那一行合并在一起。
2)paste命令
paste这个命令与join 命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。
&&就是用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回0则执行后面的,否则不执行,你可以从$?环境变量获取上一次命令的返回结果:
。||在这里就是与&&相反的控制效果,当上一条命令执行结果为≠0($?≠0)时则执行它后面的命令:
tr 命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。
paste这个命令与join 命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。
作业
Grep试用
wc 命令,简单小巧的计数工具
wc 命令用于统计并输出一个文件中行、单词和字节的数目
grep 命令,在文本中或 stdin 中查找匹配字符串
uniq命令可以用于过滤或者输出重复行
问题:安装了aview和imagemagick,然而下载图片到哪个位置?
2.作业
图27
十、数据流重定向
1. 将标准输出导向一个文件或追加到一个文件中。这其实就是重定向,将原本输出到标准输出的数据重定向到一个文件中,因为标准输出(/dev/stdout)本身也是一个文件。
2. 重定向标准输出到文件,这是一个很实用的操作,另一个很实用的操作是将标准错误重定向,标准输出和标准错误都被指向伪终端的屏幕显示,所以我们经常看到的一个命令的输出通常是同时包含了标准输出和标准错误的结果的。
管道默认是连接前一个命令的输出到下一个命令的输入,而重定向通常是需要一个文件来建立两个命令的连接
使用tee命令同时重定向到多个文件
在类 UNIX 系统中,/dev/null,或称空设备,是一个特殊的设备文件,它通常被用于丢弃不需要的输出流,或作为用于输入流的空文件
作业
十一、正则表达式基础
1. 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为 regex、regexp 或 RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在 Perl 中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由 UNIX 中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有 regexp、regex,复数有 regexps、regexes、regexen。
|竖直分隔符表示选择,例如"boy|girl"可以匹配"boy"或者"girl"
+表示前面的字符必须出现至少一次(1次或多次),例如,"goo+gle",可以匹配"gooogle","goooogle"等;
•?表示前面的字符最多出现一次(0次或1次),例如,"colou?r",可以匹配"color"或者"colour";
•*星号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次),例如,“0*42”可以匹配42、042、0042、00042等。
grep命令用于打印输出文本中匹配的模式串,它使用正则表达式作为模式匹配的条件
# 排除字符
$ echo 'geek|good' | grep '[^o]'
注意:当^放到中括号内为排除字符,否则表示行首。
要通过grep使用扩展正则表达式需要加上-E参数,或使用egrep。
•数量
# 只匹配"zo"
$ echo 'zero\nzo\nzoo' | grep -E 'zo{1}'
# 匹配以"zo"开头的所有单词
$ echo 'zero\nzo\nzoo' | grep -E 'zo{1,}'
十二、linux下载安装
已完成。
图28 虚拟机平台及linux系统