20199116《网络攻防实践》寒假作业

20199116《网络攻防实践》寒假作业

前言

问题 解答
这个作业属于哪个课程 《网络攻防实践》
这个作业的要求在哪里 <作业要求>
我在这个课程的目标是 熟练掌握网络攻防知识
这个作业在哪个具体方面帮助我实现目标 学习Linux操作命令以及虚拟机的应用;学习网络攻防知识,为以后研究打下基础
作业正文 如下作业一、作业二
其他参考文献 https://www.cnblogs.com/zhouyubo/p/8412840.html)

作业一

(1)你对网络攻击和防御了解多少?该课程需要计算机和网络相关的基础知识,你原专业是什么专业,目前你掌握多少基础知识?

  • 我对网络攻击和防御不太了解,没有接触过,需努力学习。

  • 原专业是信息与计算科学,本科学习方向偏数学,学习过的计算机相关的课程有:信息论基础、数字图像处理、算法与数据结构、数值计算方法、基于visual studio的网页设计等

(2)作业要使用Markdown格式,Markdown入门参考(需掌握)

  • 本人学习使用Markdown格式,并采用Markdown格式写下了这篇博客。

作业二

你自己动手安装过操作系统吗?如果没有话现在动手学一下吧。
(1)学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统(也可以使用VMWare安装虚拟机,安装方法自己百度)

  • 通过软件安装管家,用VMWare安装虚拟机。如下图:

(2)通过实践学习别出心裁的Linux命令学习法,掌握Linux命令的学习方法

  • 掌握Linux命令的学习方法,Linux学习应用的一个特点是通过命令行进行使用。
  • 学习并掌握Ubuntu几个常用的快捷键,提高使用效率。
    • CTRL+ALT+T:打开终端;
    • CTRL+SHIFT+T:新建标签页,编程时有重要应用;
    • ALT+数字N:终端中切换到第N个标签页,编程时有重要应用;
    • Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成;
    • 上下键盘:切换命令历史,刚输入一个很长的命令,按键就可以恢复;
    • CTRL+C:中断程序运行。

(3)参考上面的学习方法通过实践学习Linux 基础入门(新版)课程,掌握常用的Linux命令,重点是3/4/5/6/7/8节。

实践学习Linux 基础入门(新版)第二章

  • Linux命令

    • touch:创建文件的命令,例如,touch file,其中file为文件名,txt为后缀;
      cd:是一个进入目录的命令。例如,cd/home/shiyanlou,回到用户家目录;
      pwd:查看当前所在目录;
    • 通配符:是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名、参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字
      符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正字符。
      touch love_{1..10}_linux.txt一次性创建多个文件“love_1_linux.txt,love_2_linux.txt,... love_10_linux.txt”
      shell常用通配符
  • 作业

学习一个可以输出图形字符的命令banner,如下图

第三章

  • 查看用户:who am i
  • 创建用户:sudo adduser 用户名;登陆用户名:su -l 用户名;查看目录:su ls
  • Linux里如何知道自己属于哪些用户名
    • 方法一:使用groups命令,groups 用户名

      shiyanlou 用户密码可以通过 sudo passwd shiyanlou 命令进行设置
      退出当前用户跟退出终端一样可以使用 exit 命令或者使用快捷键 Ctrl+d。
    • 方法二:查看/etc/group文件,cat/etc/groups|grep -E "用户名"
  • 查看文件权限
    • cat ,读取文件内容;链接数;文件大小
    • ls命令的一些其他常用的用法
      ls:列出目录下文件
      ls -A:显示除了当前目录和上级目录之外的所有文件,包括隐藏文件
      ls -Al:查看一个目录的完整属性
      ls -dl:显示所有文件大小
      ls -AsSh:其中s为显示文件大小,大S为按文件大小排序,若需要知道如何按其它方式排序,请使用"man"命令查询。
  • 变更文件所有者
    $ ll iPhone :查看文件iphone的文件所有者
    先创建新用户lilei,登陆lilei用户,在该用户下创建文件iPhone:先cd /home/lilei,再touch iPhone
    再利用ctrl+d切换回用户shiyanlou,执行以下命令将文件iPhone的所有者更换为实验楼。

过程如下:

  • 修改文件权限
    • 在iphone文件里加内容,执行命令:echo "hello shiyanlou"" >iphone

    • 方法一:二进制数字表示法
      修改权限执行命令:chomd 600 iphone。执行完该命令,再次登陆用户lilei,查看iPhone文件:cat /home/lilei/iphone,发现已经没有权限了。如下

    • 方法二:加减赋值操作
      $ chmod go -rw iphone

  • 作业:

添加一个用户 loutest,使用 sudo 创建文件 /opt/forloutest,设置成用户 loutest 可以读写。截图并把操作过程写入实验报告。

  • 步骤如下
    1.创建用户loutest,执行:sudo adduser loutest
    2.登陆用户loutest,执行:su loutest
    3.再创建文件,执行:touch /opt/forloutest
    4.给文件加入内容,再修改权限,令文件为loutest可读写
    5.切换回用户shiyanlou,执行cat /opt/forloutest,发现shiyanlou没有权限读取
    6.同5发现loutest可以读写

由于之前没接触过Linux,在学习第三章过程及写这章作业过程中,出现了一些问题,好在经过多次学习和实践,最后解决了。

第四章

  • 新建
    • 新建空白文件
      创建名为test的空白文件,因为在其他没有权限,所以需要先 cd ~ 切换回用户的/home/shiyanlou目录:
      $ cd/home/shiyanlou
      $ touch test
    • 新建目录
      创建名为“mydir”的空目录
      $ mkdir mydir
      使用-p参数创建多级目录
      $ mkdir -p father/son/grandson
  • 复制
    • 复制文件
      使用 cp(copy)命令复制一个文件到指定目录。将之前创建的“ test ”文件复制到“ /home/shiyanlou/father/son/grandson ”目录中:
      $ cp test father/son/grandson
    • 复制目录
      需要加上-r或-R参数:
      $ cd /home/shiyanlou
      $ mkdir family
      $ cp -r father family(将family目录复制到父级(father)目录)
  • 删除
    • 删除文件
      使用 rm(remove files or directories)命令删除一个文件:
      $ rm test
      使用 -f 参数强制删除:
      $ rm -f test
    • 删除目录
      跟复制目录一样,要删除一个目录,也需要加上 -r 或 -R 参数:
      $ rm -r family(删除family目录)
  • 移动文件与文件重命名
    • 移动文件
      使用 mv(move or rename files)命令移动文件(剪切)。将文件“ file1 ”移动到 Documents 目录:
      $ mkdir Documents
      $ touch file1
      $ mv file1 Documents(mv 源目录文件 目的目录)
    • 重命名文件
      将文件“ file1 ”重命名为“ myfile ”:
      $ mv file1 myfile(mv 旧的文件名 新的文件名:)
    • 用rename 命令批量重命名
      $ cd /home/shiyanlou/

使用通配符批量创建 5 个文件:
$ touch file{1..5}.txt

批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件:
$ rename 's/.txt/.c/' *.txt

批量将这 5 个文件,文件名和后缀改为大写:
$ rename 'y/a-z/A-Z/' *.c

  • 查看文件
    • 使用 cat,tac 和 nl 命令查看文件
      可以加上 -n 参数显示行号:
      $ cat -n passwd
      nl 命令,添加行号并打印,这是个比 cat -n 更专业的行号打印命令。
      列举nl的常用的几个参数:
      -b : 指定添加行号的方式,主要有两种:
      -b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
      -b t:只列出非空行的编号并列出(默认为这种方式)
      -n : 设置行号的样式,主要有三种:
      -n ln:在行号字段最左端显示
      -n rn:在行号字段最右边显示,且不加 0
      -n rz:在行号字段最右边显示,且加 0
      -w : 行号字段占用的位数(默认为 6 位)
    • 使用 more 和 less 命令分页查看文件
      使用 more 命令打开 passwd 文件:
      $ more passwd
      打开后默认只显示一屏内容,终端底部显示当前阅读的进度。可以使用** Enter 键向下滚动一行,使用 Space 键向下滚动一屏,按下 h 显示帮助,q 退出**。
    • 使用 head 和 tail 命令查看文件
      它们一个是只查看/etc/passwd 文件的头几行(默认为 10 行,不足 10 行则显示全部)和尾几行
      $ tail /etc/passwd
      $ tail /etc/passwd
      甚至更直接的只看一行, 加上 -n 参数,后面紧跟行数
      $ tail -n 1 /etc/passwd
    • 查看文件类型
      我们通常使用 file 命令查看文件的类型:
      $ file /bin/ls
    • 编辑文件
      $ vimtutor
  • 作业

      1. 创建一个 homework 目录,建立名为 1.txt~10.txt 文件,并删除 1.txt~5.txt 。如下图
      1. Linux 的日志文件在哪个目录?
        Linux常见的日志文件详述如下:/var/log/boot.log;/var/log/cron;/var/log/maillog;/var/log/syslog

第五章

  • 使用 declare 命令创建一个变量名为 tmp 的变量:
    $ declare tmp
  • 使用 = 号赋值运算符,将变量 tmp 赋值为 shiyanlou:
    $ tmp=shiyanlou
  • 读取变量的值,使用 echo 命令和 $ 符号($ 符号用于表示引用一个变量的值,初学者经常忘记输入):
    $ echo $tmp
    注意:并不是任何形式的变量名都是可用的,变量名只能是英文字母、数字或者下划线,且不能以数字作为开头
  • 三种环境变量相关的命令:set,env,export,可使用 vimdiff 工具比较一下它们之间的差别
  • 两个重要文件 /etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。还有要注意区别的是每个用户目录下的一个隐藏文件:
    .profile 可以用 ls -a 查看
    \(cd /home/shiyanlou \)ls -a
    这个 .profile 只对当前用户永久生效。而写在 /etc/profile 里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好啦。
  • 创建一个 Shell 脚本文件:
    $ cd /home/shiyanlou
    $ touch hello_shell.sh
    $ gedit hello_shell.sh
  • 执行脚本:
    $ cd /home/shiyanlou
    $ ./hello_shell.sh
  • 创建一个 C 语言“ hello world ”程序:
    $ cd /home/shiyanlou
    $ gedit hello_world.c
  • 保存后使用 gcc 生成可执行(程序)文件:
    $ gcc -o hello_world hello_world.c
  • mybin 目录中分别运行你刚刚创建的两个程序:
    $ cd mybin
    $ ./hello_shell.sh
    $ ./hello_world
  • 添加自定义路径:
    $ PATH=$PATH:/home/shiyanlou/mybi
  • 修改和删除已有变量
    • 修改方式多种
    • 可以使用 unset 命令删除一个环境变量:
      $ unset temp
  • 使用 source 命令来让环境变量立即生效,如:
    $ cd /home/shiyanlou
    $ source .zshrc
  • 搜索文件
    • whereis 简单快速
      $ whereis who
      $ whereis find
    • locate 快而全
      查找 /etc 下所有以 sh 开头的文件:
      $ sudo apt-get update
      $ sudo apt-get install locate
      $ locate /etc/sh
      查找 /usr/share/ 下所有 jpg 文件:
      $ locate /usr/share/*.jpg
    • which 小而精
      $ which man
    • find 精而细
      $ sudo find /etc/ -name interfaces(这条命令表示去 /etc/ 目录下面 ,搜索名字叫做 interfaces 的文件或者目录)
  • 作业

找出 /etc/ 目录下的所有以 .list 结尾的文件。
答:执行命令:sudo find /etc/*.list 或 locate /etc/*.list

第六章

  • zip:
    • 打包 :zip something.zip something (目录请加 -r 参数)
    • 解包:unzip something.zip
    • 指定路径:-d 参数
  • tar:
    • 打包:tar -cf something.tar something
    • 解包:tar -xf something.tar
    • 指定路径:-C 参数
  • 作业

创建一个名为 test 的文件,分别用 zip 和 tar 打包成压缩包,再解压到 /home/shiyanlou 目录。
实验过程如图

第七章

  • 使用 df 命令查看磁盘的容量
    $ df
    $ df -h
  • 使用 du 命令查看目录的容量
    $ du (默认同样以 块 的大小展示)
    $ du -h (加上-h参数,以更易读的方式展示)
  • 创建虚拟磁盘(具体见 linux基础入门)
    • 使用 dd 命令创建虚拟镜像文件
      从/dev/zero设备创建一个容量为 256M 的空文件:
      $ dd if=/dev/zero of=virtual.img bs=1M count=256
      $ du -h virtual.img
      bs(block size)用于指定块大小;count用于指定块数量
    • 使用 mkfs 命令格式化磁盘
      将我们的虚拟磁盘镜像格式化为ext4文件系统:
      $ sudo mkfs.ext4 virtual.img
    • 使用mount来查看下主机已经挂载的文件系统:
      $ sudo mount
      输出的结果中每一行表示一个设备或虚拟设备,每一行最前面是设备名,然后是 on 后面是挂载点,type 后面表示文件系统类型,再后面是挂载选项
    • 使用mount挂载真正的磁盘到目录树:
      $ mount [options] [source] [directory]
    • 使用 umount 命令卸载已挂载磁盘
      命令格式为: sudo umount 已挂载设备名或者挂载点,如:
      $ sudo umount /mnt(/mnt为挂载点)
    • 使用 fdisk 为磁盘分区
      $ sudo fdisk -l(查看硬盘分区表信息)
      $ sudo fdisk virtual.img(进入磁盘分区模式)
      操作完成后输入p查看结果,最后不要忘记输入w写入分区表
    • 使用 losetup 命令建立镜像与回环设备的关联(具体见 linux基础入门)
  • 作业

首先要了解三个常用命令:
du : 计算出单个文件或者文件夹的磁盘空间占用.
sort : 对文件行或者标准输出行记录排序后输出.
head : 输出文件内容的前面部分.
du:
-a:显示目录占用空间的大小,还要显示其下目录占用空间的大小
sort:
-n  : 按照字符串表示的数字值来排序
-r :按照反序排列
head :
-n : 取出前多少行
以上的问题可以使用命令: du -a | sort -n -r | head -n 10
原文链接:https://blog.csdn.net/dexter159/article/details/72598470

第八章

本章主要学习,当我们忘记某些命令时,可以利用Linux系统自带的帮助工具与文档。

  • 内建命令与外部命令之分
    1.内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运
    行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。

    2.外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入
    内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi
    等。

    3.可以使用 type 命令来区分命令是内建的还是外部的

  • help , man , info帮助命令的使用以及区别

    • help命令
      记住 help 命令只能用于显示内建命令的帮助信息
      $ bash
      $ help ls
      如果是外部命令,可以试试这个命令:
      $ ls --help
    • man命令
      $ man ls
      man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的 man 也可以得到程序的更多相关信息和 Linux 的更多特性。
      man手册
    • info命令
      需要手动安装,安装和操作步骤如下:
      (安装 info)
      $ sudo apt-get update
      $ sudo apt-get install info
      (查看 ls 命令的 info)
      $ info ls
posted on 2020-02-19 20:56  20199116xjq  阅读(301)  评论(0编辑  收藏  举报