20145240 《信息安全系统设计基础》第一周学习总结

20145240 《信息安全系统设计基础》第一周学习总结

教材学习内容总结

基本概念及操作

  • 通常在我们使用 Linux 时,我们并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成的,在图形界面下为了实现让我们在一个窗口中完成接受用户输入和显示输出,Linux 系统还提供了一个叫做终端模拟器的程序(Terminal),下面几个比较常见的终端模拟器,例如 gnome-terminal,kconsole,xterm,rxvt,kvt,nxterm 和 eterm,目前我们的实验中的终端程序是 xfce 桌面环境自带的 xfce-terminal。不过要注意的是这里所说的终端(Terminal)和控制台(Console)是有区别的。

  • Shell指“提供给使用者使用界面”的软件(命令解析器),类似于 DOS 下的 command(命令行)和后来的 cmd.exe。

  • 在 UNIX/Linux 中比较流行的常见的 Shell 有 bash,zsh,ksh,csh 等等,Ubuntu 终端默认使用的是 bash,默认的桌面环境是 GNOME 或者 Unity(基于 GNOME),但我们的环境中使用的分别是zsh 和 xfce。

  • Tab
    使用Tab键来进行补全命令、补全目录、补全参数

  • Ctrl+c

立即停止并恢复到你可控的状态

  • 其他一些常用快捷键

  • 通配符

通配符是一种特殊语句,主要有星号(*)和问号(?),用来对对字符串进行模糊匹配(比如文件名,参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。

  • 一次性创建多个文件

$ touch love_{1..10}_linux.txt

  • Shell 常用通配符

  • man

在 Linux 环境中,如果你遇到困难,可以使用man 命令,它是Manual page的缩写。

  • banner

作业输出图形字符

用户及文件权限管理

查看用户

  • who
    who am i

创建用户

在 Linux 系统里, root 账户拥有整个系统至高无上的权利,比如 新建/添加 用户。

  • su,su- 与 sudo

用户组

在 Linux 里面如何知道自己属于哪些用户组呢?

  • 方法一:使用groups命令

groups shiyanlou其中冒号之前表示用户,后面表示该用户所属的用户组。

  • 方法二:查看/etc/group文件

$ cat /etc/group | sortcat 命令用于读取指定文件的内容并打印到终端输出,后面会详细讲它的使用。 | sort 表示将读取的文本进行一个字典排序再输出。

删除用户

$ sudo deluser lilei --remove-home

linux查看文件权限

$ ls -l

变更文件所有者

修改文件权限

Linux 目录结构及文件基本操作

FHS标准

$ tree /

目录路径

进入上一级目录:

$ cd ..
进入你的“home”目录:

$ cd ~
或者 cd /home/<你的用户名>
使用 pwd 获取当前路径:

$ pwd

新建目录

查看文件

  • 使用cat,tac和nl命令查看文件

作业eyes

环境变量与文件查找

通常我们会涉及到的环境变量有三种:

  • 当前 Shell 进程私有用户自定义变量,如上面我们创建的 temp 变量,只在当前 Shell 中有效。
  • Shell 本身内建的变量。
  • 从自定义变量导出的环境变量。

也有三个与上述三种环境变量相关的命令:set,env,export

命令的查找路径与顺序

  • 作业黑客

文件打包与解压缩

Linux 上常用的 压缩/解压 工具,介绍了 zip,rar,tar 的使用。

文件打包和解压缩

  • zip压缩打包程序

  • 创建加密zip包

使用-e参数可以创建加密压缩包:

$ zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou

使用unzip命令解压缩zip文件

  • 使用-O(英文字母,大写o)参数指定编码类型:unzip -O GBK 中文压缩文件.zip

rar打包压缩命令

从指定文件或目录创建压缩包或添加文件到压缩包:

$ rm *.zip

$ rar a shiyanlou.rar .

上面的命令使用a参数添加一个目录~到一个归档文件中,如果该文件不存在就会自动创建。

注意:rar 的命令参数没有-,如果加上会报错。

从指定压缩包文件中删除某个文件:$ rar d shiyanlou.rar .zshrc

查看不解压文件:$ rar l shiyanlou.rar

全路径解压:$ unrar x shiyanlou.rar

去掉路径解压:$ mkdir tmp

$ unrar e shiyanlou.rar tmp/

tar打包工具

作业火炉

文件系统操作与磁盘管理

查看磁盘的容量

  • 使用 df 命令,加上-h参数,以更易读的方式展示

  • -d参数指定查看目录的深度

创建虚拟磁盘

  • dd的命令行语句与其他的 Linux 程序不同,因为它的命令行选项格式为选项=值,而不是更标准的--选项 值或-选项=值。dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。

  • 使用 dd 命令创建虚拟镜像文件

使用 mkfs 命令格式化磁盘

使用 mount 命令挂载磁盘到目录树

使用 fdisk 为磁盘分区

mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]

查看硬盘分区表信息:$ sudo fdisk -l

进入磁盘分区模式:$ sudo fdisk virtual.img

卸载磁盘分区:$ sudo umount /dev/mapper/loop0p1

作业cowsay命令

  • cowsay命令,可以让你在终端里以一种动物说话的形式打印出一段话。

Linux下的帮助命令

内建命令与外部命令

  • 简单来说就是一个是天生自带的天赋技能,一个是后天得来附加技能。我们可以使用 type 命令来区分命令是内建的还是外部的。

帮助命令的使用

  • help 命令

  • man 命令

  • info 命令

man 和 info 就像两个集合,它们有一个交集部分,但与 man 相比,info 工具可显示更完整的 GNU 工具信息。若 man 页包含的某个工具的概要信息在 info 中也有介绍,那么 man 页中会有“请参考 info 页更详细内容”的字样。

Linux任务计划crontab

crontab 简介

crontab 命令常见于 Unix 和类 Unix 的操作系统之中(Linux 就属于类 Unix 操作系统),用于设置周期性被执行的指令。该命令从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。通常,crontab 储存的指令被守护进程激活,crond 为其守护进程,crond 常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。

通过 crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script 脚本。时间间隔的单位可以是分钟、小时、日、月、周的任意组合。

  • crontab 准备

  • crontab 使用

crontab 的深入

这个 crontab -e 是针对使用者的 cron 來设计的,也就是每个用户在添加任务,就会在 /var/spool/cron/crontabs 中添加一个该用户自己的任务文档,这样可以做到隔离,独立,不会混乱。

命令执行顺序控制与管道

顺序执行多条命令

$ sudo apt-get update
 等待——————————然后输入下面的命令
$ sudo apt-get install some-tool
 等待——————————然后输入下面的命令
$ some-tool

简单的顺序执行你可以使用;来完成,比如上述操作你可以:

$ sudo apt-get update;sudo apt-get install some-tool;some-tool
 让它自己运行

有选择的执行命令

&&就是用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回0则执行后面的,否则不执行,你可以从$?环境变量获取上一次命令的返回结果:

管道

  • 试用

比如查看/etc目录下有哪些文件和目录,使用ls命令来查看:

$ ls -al /etc

有太多内容,屏幕不能完全显示,这时候可以使用滚动条或快捷键滚动窗口来查看。不过这时候可以使用管道:

$ ls -al /etc | less

  • cut 命令

打印每一行的某一字段

打印/etc/passwd文件中每一行的前N个字符:

 前五个(包含第五个)
$ cut /etc/passwd -c -5
 前五个之后的(包含第五个)
$ cut /etc/passwd -c 5-
 第五个
$ cut /etc/passwd -c 5
 2到5之间的(包含第五个)
$ cut /etc/passwd -c 2-5
  • grep 命令

在文本中或 stdin 中查找匹配字符串

-r 参数表示递归搜索子目录中的文件
-n表示打印匹配项行号
-I表示忽略二进制文件

这个操作实际没有多大意义,但可以感受到grep命令的强大与实用。

可以在匹配字段中使用正则表达式:

wc 命令

简单小巧的计数工具

分别只输出行数、单词数、字节数、字符数和输入文本中最长一行的字节数:

 行数
$ wc -l /etc/passwd
单词数
$ wc -w /etc/passwd
 字节数
$ wc -c /etc/passwd
 字符数
$ wc -m /etc/passwd
 最长行字节数
$ wc -L /etc/passwd

sort 排序命令

默认为字典排序:

$ cat /etc/passswd | sort

反转排序:

$ cat /etc/passwd | sort -r

按特定字段排序:

$ cat /etc/passwd | sort -t':' -k 3

uniq 去重命令

uniq命令可以用于过滤或者输出重复行。

我们可以使用history命令查看最近执行过的命令:

$ history | cut -c 8- | cut -d ' ' -f 1 | uniq

排序:

$ history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq

或者$ history | cut -c 8- | cut -d ' ' -f 1 | sort -u

输出重复行:

输出重复过的行(重复的只输出一个)及重复次数

$ history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq -dc

输出所有重复的行

$ history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq -D

简单的文本处理

文本处理命令

  • tr 命令

tr 命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。

删除 "hello shiyanlou" 中所有的'o','l','h'
$ echo 'hello shiyanlou' | tr -d 'olh'
 将"hello" 中的ll,去重为一个l
$ echo 'hello' | tr -s 'l'
 将输入文本,全部转换为大写或小写输出
$ cat /etc/passwd | tr '[:lower:]' '[:upper:]'
上面的'[:lower:]' '[:upper:]'你也可以简单的写作'[a-z]' '[A-Z]',当然反过来将大写变小写也是可以的

  • col 命令

col 命令可以将Tab换成对等数量的空格建,或反转这个操作。

 查看 /etc/protocols 中的不可见字符,可以看到很多 ^I ,这其实就是 Tab 转义成可见字符的符号
$ cat -A /etc/protocols
 使用 col -x 将 /etc/protocols 中的 Tab 转换为空格,然后再使用 cat 查看,你发现 ^I 不见了
$ cat /etc/protocols | col -x | cat -A

-join命令

用于将两个文件中包含相同内容的那一行合并在一起。

 创建两个文件
$ echo '1 hello' > file1
$ echo '1 shiyanlou' > file2
$ join file1 file2
 将/etc/passwd与/etc/shadow两个文件合并,指定以':'作为分隔符
$ sudo join -t':' /etc/passwd /etc/shadow
 将/etc/passwd与/etc/group两个文件合并,指定以':'作为分隔符, 分别比对第4和第3个字段
$ sudo join -t':' -1 4 /etc/passwd -2 3 /etc/group

  • paste命令

paste这个命令与join 命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。

$ echo hello > file1
$ echo shiyanlou > file2
$ echo www.shiyanlou.com > file3
$ paste -d ':' file1 file2 file3
$ paste -s file1 file2 file3

作业Space Invaders:太空侵略者。

数据流重定向

简单的重定向

  • Linux 默认提供了三个特殊设备,用于终端的显示和输出,分别为stdin(标准输入,对应于你在终端的输入),stdout(标准输出,对应于终端的输出),stderr(标准错误输出,对应于终端的输出)。

标准错误重定向

  • 重定向标准输出到文件,这是一个很实用的操作,另一个很实用的操作是将标准错误重定向,标准输出和标准错误都被指向伪终端的屏幕显示,所以我们经常看到的一个命令的输出通常是同时包含了标准输出和标准错误的结果的。

使用tee命令同时重定向到多个文件

  • 经常你可能还有这样的需求,除了将需要将输出重定向到文件之外也需要将信息打印在终端,那么你可以使用tee命令来实现:

$ echo 'hello shiyanlou' | tee hello

永久重定向

  • 可以使用exec命令实现“永久”重定向。exec命令的作用是使用指定的命令替换当前的 Shell,及使用一个进程替换当前进程,或者指定新的重定向

创建输出文件描述符

  • 默认在 Shell 中可以有9个打开的文件描述符,上面我们使用了也是它默认提供的0,1,2号文件描述符,另外我们还可以使用3-8的文件描述符,只是它们默认没有打开而已,你可以使用下面命令查看当前 Shell 进程中打开的文件描述符:

$ cd /dev/fd/;ls -Al

关闭文件描述符

如上面我们打开的3号文件描述符,可以使用如下操作将它关闭:

$ exec 3>&-
$ cd /dev/fd;ls -Al;cd -

完全屏蔽命令的输出

我们可以利用设个/dev/null屏蔽命令的输出:

$ cat Documents/test.c nefile 1>/dev/null 2>&1

向上面这样的操作将使你得不到任何输出结果。

使用 xargs 分割参数列表

$ cut -d: -f1 < /etc/passwd | sort | xargs echo

上面这个命令用于将/etc/passwd文件按:分割取第一个字段排序后,使用echo命令生成一个列表。

作业火焰

正则表达式基础

基本语法

选择:|竖直分隔符表示选择,例如"boy|girl"可以匹配"boy"或者"girl"

数量限定:数量限定除了我们举例用的*,还有+加号,?问号,.点号,如果在一个模式中不加数量限定符则表示出现一次且仅出现一次:

范围和优先级:()圆括号可以用来定义模式字符串的范围和优先级,这可以简单的理解为是否将括号内的模式串作为一个整体。

grep模式匹配命令

  • grep命令用于打印输出文本中匹配的模式串,它使用正则表达式作为模式匹配的条件。grep支持三种正则表达式引擎,分别用三个参数指定:

awk文本处理语言

作业

教材学习中的问题和解决过程

  • 有些时候无法再自己新建的documents中输入代码,当建好后提示已经建过该文件,但是在连接时还是无法连接。

  • 安装后无法连接到该网页,出现以上错误信息

参考资料

原文地址:https://www.cnblogs.com/20145240lsj/p/5882097.html