20199317 《网络攻防实践》假期做业

做业说明shell

这个做业属于哪一个课程 网络攻防实践(https://edu.cnblogs.com/campus/besti/19attackdefense)
这个做业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10228
我在这个课程的目标是 学习网络攻防相关知识,并经过实践深刻了解网络攻防
这个做业在哪一个具体方面帮助我实现目标 复习巩固Linux基础知识

 

 

 

 

做业一安全

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

●  上学期学习了《网络系统安全》这门课,对网络攻击和防护的基础知识有一些了解,并作过一些相关实践。网络攻击分为主动攻击和被动攻击,主动攻击有假装、重放、篡改和拒绝服务,被动攻击有报文分析和流量分析,对于被动攻击,重在防范,而不在于检测。网络

●  我原专业是网络工程,对计算机网络基础知识较为了解。less

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

●  因上学期选修《Linux内核原理与分析》这门课,因此已掌握基本的Markdown语法。工具

做业二学习

你本身动手安装过操做系统吗?若是没有话如今动手学一下吧。ui

1.  学习基于VirtualBox虚拟机安装Ubuntu图文教程在本身笔记本上安装Linux操做系统(也可使用VMware安装虚拟机,安装方法本身百度)spa

●  因上学期选修《Linux内核原理与分析》这门课,已安装虚拟机。

2.  经过实践学习别出心裁的Linux命令学习法,掌握Linux命令的学习方法

●  因上学期选修《Linux内核原理与分析》这门课,已掌握Linux的基本命令。

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

实验3  用户及文件权限管理

        在 Linux 系统里, root 帐户拥有整个系统至高无上的权利,好比 新建/添加 用户。咱们通常登陆系统时都是以普通帐户的身份登陆的,要建立用户须要 root 权限,这里就要用到 sudo 这个命令了。不过使用这个命令有两个大前提,一是你要知道当前登陆用户的密码,二是当前用户必须在 sudo 用户组。  

     ●  查看用户:who am i 或者 who mom likes

     ●  su,su- 与 sudo

        su <user> 能够切换到用户 user,执行时须要输入目标用户的密码。

    sudo <cmd> 能够以特权级别运行 cmd 命令,须要当前用户属于 sudo 组,且须要输入当前用户的密码。

    su - <user> 命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。

     ●  新建用户:sudo adduser <user>,这个命令不但能够添加用户到系统,同时也会默认为新用户建立 home 目录。

     ●  查看用户属于哪些用户组:groups <user>

     ●  将其它用户加入 sudo 用户组

         默认状况下新建立的用户是不具备 root 权限的,也不在 sudo 用户组,可让其加入 sudo 用户组从而获取 root 权限。使用usermod命令能够为用户添加用户组,一样使用该命令你必需有 root 权限,你能够直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。

$ su shiyanlou # 此处须要输入 shiyanlou 用户密码,shiyanlou 的密码能够经过 `sudo passwd shiyanlou` 进行设置。 $ groups lilei $ sudo usermod -G sudo lilei $ groups lilei

      ●  删除用户: sudo deluser <user> --remove-home

      ●  查看文件权限:ls -l

          出现以下所示结果:

       

      ●  变动文件全部者

# 注意当前的用户必须是 lilei # 若是是 shiyanlou 用户须要切换到 lilei(若是以前已经删除须要从新建立下) $ su lilei $ cd /home/lilei $ touch iphone6 # 更改文件全部者为shiyanlou,须要切换到 shiyanlou 用户执行如下操做 $ cd /home/lilei $ ls iphone6 $ sudo chown shiyanlou iphone6

      ●  修改文件权限

          方法一:二进制数字表示

     

         每一个文件的三组权限(拥有者,所属用户组,其余用户,记住这个顺序是必定的)对应一个 " rwx ",也就是一个 “ 7 ” ,因此若是我要将文件“ iphone6 ”的权限改成只有我本身能够用那么就这样:

$ chmod 600 iphone6

         方法二:加减赋值操做

$ chmod go-rw iphone6    // g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增长和去掉相应的权限。      

    adduser 和 useradd 的区别

         useradd 只建立用户,建立完了用 passwd lilei 去设置新用户的密码。adduser 会建立用户,建立目录,建立密码(提示你设置),作这一系列的操做。其实 useradd、userdel 这类操做更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,须要你输入、肯定等一系列操做。

 

实验4  Linux目录结构及文件基本操做

      ●  FHS标准

         

         FHS 依据文件系统使用的频繁与否以及是否容许用户随意改动,将目录定义为四种交互做用的形态,以下表所示:

     ●  进入上一级目录:cd ..

         进入你的 home 目录:cd ~   或者 cd /home/<你的用户名>

         获取当前路径:pwd

     ●  绝对路径与相对路径

         绝对路径:关于绝对路径,简单地说就是以根" / "目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。

         相对路径:也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点,表现形式如:usr/local/bin (这里假设你当前目录为根目录)。你可能注意到,咱们表示相对路径实际并无加上表示当前目录的那个 . ,而是直接以目录名开头,由于这个 usr 目录为 / 目录下的子目录,是能够省略这个 . 的(之后会讲到一个相似不能省略的状况);若是是当前目录的上一级目录,则须要使用 .. ,好比你当前目录为 /home/shiyanlou 目录下,根目录就应该表示为 ../../ ,表示上一级目录( home 目录)的上一级目录( / 目录)。

         下面咱们以你的 home目录为起点,分别以绝对路径和相对路径的方式进入 /usr/local/bin目录:

# 绝对路径 $ cd /usr/local/bin # 相对路径 $ cd ../../usr/local/bin

     ●  新建空白文件:touch <文件名>

         新建目录:mkdir <目录名>

         同时建立一个多级目录:mkdir -p father/son/grandson

     ●  复制文件:cp <文件> <指定目录>,如:cp test father/son/grandson

         复制目录:要成功复制目录须要加上 -r 或者 -R 参数,表示递归复制

$ cd /home/shiyanlou $ mkdir family $ cp -r father family

     ●  删除文件:rm <文件> 或 rm -f <文件>,表示强制删除

         删除目录:跟复制目录同样,要删除一个目录,也须要加上 -r 或 -R 参数,rm -r <目录>

     ●  移动文件:mv <源目录文件> <目的目录>

         重命名文件:mv <旧的文件名> <新的文件名>

         批量重命名:rename

     ●  查看文件

         使用 cattac 和 nl 命令查看文件:前两个命令都是用来打印文件内容到标准输出(终端),其中 cat 为正序显示,tac 为倒序显示。nl 命令,添加行号并打印。

         使用 more 和 less 命令分页查看文件:若是说上面的 cat 是用来快速查看一个文件的内容的,那么这个 more 和 less 就是天生用来"阅读"一个文件的内容的。   

         使用 head 和 tail 命令查看文件:它们一个是只查看文件的头几行(默认为 10 行,不足 10 行则显示所有)和尾几行。

     ●  查看文件类型:file <文件>

 

实验5  环境变量与文件查找

     ●  变量

$ declare tmp   // 建立变量,或也能够不用 declare 预声明一个变量,直接即用即建立
$ tmp=shiyanlou  // 使用 = 号赋值运算符,将变量 tmp 赋值为 shiyanlou
$ echo $tmp  // 读取变量的值,使用 echo 命令和 $ 符号($ 符号用于表示引用一个变量的值)

     ●  环境变量

         一般咱们会涉及到的变量类型有三种:  

         1)当前 Shell 进程私有用户自定义变量,如上面咱们建立的 tmp 变量,只在当前 Shell 中有效。

         2)Shell 自己内建的变量。

         3)从自定义变量导出的环境变量。

        也有三个与上述三种环境变量相关的命令:setenvexport。这三个命令很类似,都是用于打印环境变量信息,区别在于涉及的变量范围不一样。

命 令 说 明
set 显示当前 Shell 全部变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。
env 显示与当前用户相关的环境变量,还可让命令在指定环境中运行。
export 显示从 Shell 中导出成环境变量的变量,也能经过它将自定义变量导出为环境变量。

          

     ●  咱们在 Shell 中输入一个命令,Shell 经过环境变量 PATH来进行搜索的,而后执行。

          PATH 里面的路径是以 : 做为分割符的,因此咱们能够这样添加自定义路径:

$ PATH=$PATH:/home/shiyanlou/mybin   //注意这里必定要使用绝对路径。

         可是这样只是给 PATH 环境变量追加了一个路径,它也只是在当前 Shell 有效,我一旦退出终端,再打开就会发现又失效了。有没有方法让添加的环境变量全局有效?或者每次启动 Shell 时自动执行上面添加自定义路径到 PATH 的命令?下面咱们就来讲说后一种方式——让它自动执行。

         在每一个用户的 home 目录中有一个 Shell 每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等等。zsh 的配置文件是 .zshrc,相应 Bash 的配置文件为 .bashrc 。它们在 etc下还都有一个或多个全局的配置文件,不过咱们通常只修改用户目录下的配置文件。

$ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc

        上述命令中 >> 表示将标准输出以追加的方式重定向到一个文件中,注意前面用到的 > 是以覆盖的方式重定向到一个文件中,使用的时候必定要注意分辨。在指定文件不存在的状况下都会建立新的文件。

      ●  前面咱们在 Shell 中修改了一个配置脚本文件以后(好比 zsh 的配置文件 home 目录下的 .zshrc),每次都要退出终端从新打开甚至重启主机以后其才能生效,非常麻烦,咱们可使用 source 命令来让其当即生效,如:

$ cd /home/shiyanlou $ source .zshrc  

          source 命令还有一个别名就是 .,上面的命令若是替换成 . 的方式就该是:

$ . ./.zshrc

         在使用.的时候,须要注意与表示当前路径的那个点区分开。注意第一个点后面有一个空格,并且后面的文件必须指定完整的绝对或相对路径名,source 则不须要。

       ●  搜索文件

           whereis 简单快速

           locate 快而全

           which 小而精

           find 精而细

 

实验6  文件打包与解压缩

       ●  zip

           打包 :zip something.zip something (目录请加 -r 参数)

           解包:unzip something.zip

           指定路径:-d 参数

       ●  tar

           打包:tar -cf something.tar something

           解包:tar -xf something.tar

           指定路径:-C 参数

 

实验7  文件系统操做与磁盘管理

     ●  查看磁盘和目录的容量

          使用 df 命令查看磁盘的容量

 # 默认一样以 块 的大小展现 $ df # 加上`-h`参数,以更易读的方式展现 $ df -h     
             使用 du 命令查看目录的容量
 # 默认一样以 块 的大小展现 $ du # 加上`-h`参数,以更易读的方式展现 $ du -h # 只查看1级目录的信息 $ du -h -d 0 ~ # 查看2级 $ du -h -d 1 ~ du -h #同--human-readable 以K,M,G为单位,提升信息的可读性。 du -a #同--all 显示目录中全部文件的大小。 du -s #同--summarize 仅显示总计,只列出最后加总的值。

      ●  dd命令用于转换和复制文件,不过它的复制不一样于cp。dd默认从标准输入中读取,并写入到标准输出中,但能够用选项if(input file,输入文件)和of(output file,输出文件)改变。

          用dd命令从标准输入读入用户的输入到标准输出或者一个文件中:

# 输出到文件 $ dd of=test bs=10 count=1 # 或者 dd if=/dev/stdin of=test bs=10 count=1 # 输出到标准输出 $ dd if=/dev/stdin of=/dev/stdout bs=10 count=1 # 注 在打完了这个命令后,继续在终端打字,做为你的输入

         上述命令从标准输入设备读入用户输入(缺省值,因此可省略)而后输出到 test 文件,bs(block size)用于指定块大小(缺省单位为 Byte,也可为其指定如'K','M','G'等单位),count用于指定块数量。

         dd在拷贝的同时还能够实现数据转换,那下面就举一个简单的例子:将输出的英文字符转换为大写再写入文件:

$ dd if=/dev/stdin of=test bs=10 count=1 conv=ucase

      ●  使用 dd 命令建立虚拟镜像文件

          使用dd命令来完成建立虚拟磁盘的第一步。

# 从/dev/zero设备建立一个容量为 256M 的空文件 $ dd if=/dev/zero of=virtual.img bs=1M count=256 $ du -h virtual.img

         而后咱们要将这个文件格式化(写入文件系统),这里使用 mkfs 命令格式化磁盘(咱们这里是本身建立的虚拟磁盘镜像)

# 将咱们的虚拟磁盘镜像格式化为ext4文件系统 $ sudo mkfs.ext4 virtual.img

 

实验8  Linux下的帮助命令

      ●  内建命令与外部命令

         内建命令其实是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运行,一般在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。并且解析内部命令 shell 不须要建立子进程,所以其执行速度比外部命令快。好比:history、cd、exit 等等。

         外部命令是 Linux 系统中的实用程序部分,由于实用程序的功能一般都比较强大,因此其包含的程序量也会很大,在系统加载时并不随系统一块儿被加载到内存中,而是在须要时才将其调入内存。虽然其不包含在 shell 中,可是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 以外额外安装的,一般放在/bin,/usr/bin,/sbin,/usr/sbin等等。好比:ls、vi等。

      ●  几个经常使用的帮助命令

          help 命令:只能用于显示shell内建命令的帮助信息。外部命令基本上都有一个参数--help:ls --help

          man命令:获得的内容比用 help 更多更详细,并且man没有内建与外部命令的区分,由于 man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。经过查看系统文档中的 man 也能够获得程序的更多相关信息和 Linux 的更多特性。

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

相关文章
相关标签/搜索