《网络攻防》第一周作业
第1节 Linux 系统简介
通过对第一节内容的学习,对Linux有了初步认识,包括:LINUX的发展历史,Linux与Windows的不同点等内容;
第2节 基本概念及操作
之前寒假简单学了一些Linux的基础知识,对着部分知识理解起来相对容易,包括常用的shell指令,一些简单的快捷键等,当然还有部分内容没有涉及,现简单将内容总结如下(部分截图使用之前用过的虚拟机):
1、简单的快捷键:
Ctrl+d 键盘输入结束或退出终端
Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行
Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a 将光标移至输入行头,相当于Home键
Ctrl+e 将光标移至输入行末,相当于End键
Ctrl+k 删除从光标所在位置到行末
Alt+Backspace 向前删除一个单词
Shift+PgUp 将终端显示向上滚动
Shift+PgDn 将终端显示向下滚动
2、使用通配符:
通配符是一种特殊语句,主要有星号(*)和问号(?),用来对对字符串进行模糊匹配(比如文件名,参数名)。
使用touch创建文件(之前使用的是sudo gedit + 文件名)
3、作业:
第3节 用户及文件权限管理
1、创建用户:
之前用的都是虚拟机创建好的用户,现创建新用户如下:
2、用户组:
使用 usermod 命令可以为用户添加用户组,同样使用该命令必须有 root 权限,可直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令,
这里用 shiyanlou 用户执行 sudo 命令将 sundeyang 添加到 sudo 用户组,也可以使用 sudo 命令获得 root 权限,实验结果如下:
3、文件权限:
读权限,表示可以使用 cat
4、作业:
添加一个用户loutest,使用sudo创建文件/opt/forloutest,设置成用户loutest可以读写。
步骤:先添加一个用户loutest,然后通过mkdir命令新建一个opt文件,进入opt文件后,通过touch命令新建一个forloutest文件,然后修改权限为读写。
第4节 Linux 目录结构及文件基本操作
1、绝对路径
关于绝对路径,简单地说就是以根"/"目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。
相对路径
相对路径,也就是相对于当前的目录的路径,相对路径是以当前目录 . 为起点,以所要到的目录为终点,表现形式如: usr/local/bin 。表示相对路径实际并没有加上表示当前目录的那个 . ,而是直接以目录名开头,因为这个 usr 目录为 / 目录下的子目录,是可以省略这个 . 的;如果是当前目录的上一级目录,则需要使用 .. ,比如当前目录为“home”目录,根目录就应该表示为 ../../ ,表示上一级目录("home"目录)的上一级目录("/"目录)。
2、移动文件
使用mv(move or rename files)命令,移动文件(剪切)。将文件"file1"移动到"Documents"目录mv 源目录文件 目的目录
将文件"file1"重命名为"myfile" mv 旧的文件名 新的文件名
3、查看文件
使用cat,tac和nl命令查看文件。这两个命令都是用来打印文件内容到标准输出(终端),其中cat为正序显示,tac倒序显示。
标准输入输出:当我们执行一个 shell 命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),默认对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应被重定向到终端的屏幕,以便我们能直接看到输出内容。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
第5节 环境变量与文件查找
1、环境变量
通常我们会涉及到的环境变量有三种:
当前 Shell 进程私有用户自定义变量,如上面我们创建的 temp 变量,只在当前 Shell 中有效。
Shell 本身内建的变量。
从自定义变量导出的环境变量。
也有三个与上述三种环境变量相关的命令,set,env,export。
这三个命令很相似,都可以用于打印相关环境变量,区别在于涉及的是不同范围的环境变量,详见下表:
set 显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量
env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行
export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量
2、命令的查找路径与顺序
练习:
创建一个 Shell 脚本文件:
为文件添加可执行权限,执行脚本:
创建一个 C 语言"hello world"程序,使用gcc生成文件:
在 shiyanlou 家目录创建一个mybin目录,并将上述 hello_shell.sh 和 hello_world 文件移动到其中,在mybin目录中分别运行你刚刚创建的两个程序:
![](http://images2015.cnblogs.com/blog/1115803/201703/1115803-20170305110534610-1032140978.png
第6节 文件打包与解压缩
1.zip压缩打包程序 (设置压缩级别为9和1(9最大,1最小))
使用zip打包文件夹:
$ zip -r -q -o shiyanlou.zip /home/shiyanlou
$ du -h shiyanlou.zip
$ file shiyanlou.zip
2、使用unzip命令解压缩zip文件
将shiyanlou.zip解压到当前目录:
$ unzip shiyanlou.zip
使用安静模式,将文件解压到指定目录:
$ unzip -q shiyanlou.zip -d ziptest
3.rar打包压缩命令
rar也是 Windows 上常用的一种压缩文件格式,在 Linux 上可以使用rar和unrar工具分别创建和解压 rar 压缩包。
安装rar和unrar工具:
$ sudo apt-get update
$ sudo apt-get install rar unrar
从指定文件或目录创建压缩包或添加文件到压缩包:
$ rm *.zip
$ rar a shiyanlou.rar .
4.tar打包工具
创建一个 tar 包:
5、作业
第7节 文件系统操作与磁盘管理
1、使用 mount 命令挂载磁盘到目录树
mount命令的一般格式如下:
mount [options] [source] [directory]
一些常用操作:
mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]
2、使用 losetup 命令建立镜像与回环设备的关联
$ sudo losetup /dev/loop0 virtual.img
如果提示设备忙你也可以使用其它的回环设备,"ls /dev/loop*"参看所有回环设备
解除设备关联
$ sudo losetup -d /dev/loop0
3、作业
第8节 Linux下的帮助命令
1、内建命令与外部命令
内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,并由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。
2、帮助命令
help命令 是用于显示 shell 内建命令的简要帮助信息。帮助信息中显示有该命令的简要说明以及一些参数的使用以及说明,一定记住 help 命令只能用于显示内建命令的帮助信息
man命令 没有内建与外部命令的区分,因为 man 工具是显示系统手册页中的内容,这些内容大多数都是对命令的解释信息,还有一些相关的描述。
info命令 man 和 info 就像两个集合,它们有一个交集部分,但与 man 相比,info 工具可显示更完整的 GNU 工具信息。
第10节 命令执行顺序控制与管道
1、命令执行顺序的控制
顺序执行多条命令
$ sudo apt-get update
等待——————————然后输入下面的命令
$ sudo apt-get install some-tool
等待——————————然后输入下面的命令
简单的顺序执行你可以使用;来完成, $ sudo apt-get update;sudo apt-get install some-tool;some-tool
有选择的执行命令
$ which cowsay>/dev/null && cowsay -f head-in ohch~
&&就是用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回0则执行后面的,否则不执行,你可以从$?环境变量获取上一次命令的返回结果
2、管道
cut 命令,打印每一行的某一字段
打印/etc/passwd文件中以:为分隔符的第1个字段和第6个字段分别表示用户名和其家目录:
$ cut /etc/passwd -d ':' -f 1,6
grep 命令,在文本中或 stdin 中查找匹配字符串
grep命令的一般形式为:
grep [命令选项]... 用于匹配的表达式 [文件]...
3、作业:
使用wget命令将图片从网页中下载下来
简单学习总结:
通过linux相关内容的学习,了解了linux是一个怎样的操作系统,具有很好的稳定性,安全性,高效率,跨平台等。学习到的linux使用和操作技巧,特别是一些shell命令的操作(主要是对之前的一些补充)。学会了一些简单的linux编程,如gcc编译器编译c程序并在shell中运行等。
学习的一些技巧:
第一,对于linux命令,一定要学会用man和info去查他们的解释;
第二,养成在命令行下工作的习惯,亲自动手去实践;。