20199106《网络攻防实践》假期作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
---|---|
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10228 |
我在这个课程的目标是 | 掌握基本的网络攻防知识和相应操作 |
这个作业在哪个具体方面帮助我实现目标 | 此次作业帮助我学习了markdown的用法和Linux的基础知识,并促使我开通了博客 |
作业正文 | 见下 |
其他参考文献 |
作业一
(1)你对网络攻击和防御了解多少?该课程需要计算机和网络相关的基础知识,你原专业是什么专业,目前你掌握多少基础知识?
(2)作业要使用Markdown格式,Markdown入门参考(需掌握)
我对网络攻击和防御不是很了解,仅听说过爬虫,木马病毒,本科数学与应用数学专业,课程偏重理论,除掌握C语言基础的编程能力外,不具备其他的基础知识。
作业二
你自己动手安装过操作系统吗?如果没有话现在动手学一下吧。
(1)学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统(也可以使用VMWare安装虚拟机,安装方法自己百度)
(2)通过实践学习别出心裁的Linux命令学习法,掌握Linux命令的学习方法
(3)参考上面的学习方法通过实践学习Linux 基础入门(新版)课程,掌握常用的Linux命令,重点是3/4/5/6/7/8节。
基于VirtualBox虚拟机安装Ubuntu
根据提供的图文教程安装了VirtualBox-->Ubuntu-->Linux过程还算顺利。
按Ctrl+Alt+T打开终端后如下所示:
Linux命令学习
如何学习Linux,参考下图:
实验1 Linux系统简介 + 实验2 基本概念及操作
- 重要快捷键
按键 | 作用 |
---|---|
Tab | 可补全命令、目录、命令参数 |
Ctrl+c | 终端出现意外情况,此键可强行终止当前程序,不会使终端退出 |
Ctrl+d | 键盘输入结束或退出终端 |
Ctrl+s | 暂停当前程序,暂停后按下任意键恢复运行 |
Ctrl+z | 将当前程序放到后台运行,恢复到前台为命令fg |
Ctrl+a | 将光标移至输入行头,相当于Home键 |
Ctrl+e | 将光标移至输入行末,相当于End键 |
Ctrl+k | 删除从光标所在位置到行末 |
Alt+Backspace | 向前删除一个单词 |
Shift+PgUp | 将终端显示向上滚动 |
Shift+PgDn | 将终端显示向下滚动 |
- Shell 常用通配符:
字符 | 含义 |
---|---|
* | 匹配 0 或多个字符 |
? | 匹配任意一个字符 |
[list] | 匹配 list 中的任意单一字符 |
[^list] | 匹配 除list中的任意单一字符以外的字符 |
[c1-c2] | 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] |
{string1,string2,...} | 匹配 string1 或 string2 (或更多)其一字符串 |
{c1..c2} | 匹配 c1-c2 中全部字符 如{1..10} |
实验3 用户及文件权限管理
- 查看用户
who am i //或者 who mom likes
whoami //查看当前登录用户的用户名
who 命令其它常用参数
参数 | 说明 |
---|---|
-a | 打印能打印的全部 |
-d | 打印死掉的进程 |
-m | 同am i,mom likes |
-q | 打印当前登录用户数及用户名 |
-u | 打印当前登录用户登录信息 |
-r | 打印运行等级 |
- 创建用户
创建用户需要 root 权限,就要用到 sudo 命令。使用这个命令有两大前提,
一是知道当前登录用户的密码,
二是当前用户必须在 sudo 用户组。
sudo adduser lilei //新建一个叫lilei的用户
su -l lilei //切换用户
exit() //或者Ctrl+d,退出当前用户
- 用户组
groups lilei //或者cat /etc/group | sort查看自己属于哪些用户组
sudo usermod -G sudo lilei //用shiyanlou用户执行sudo命令将lilei添加到sudo用户组
sudo deluser lilei --remove-home //删除用户
- Linux文件权限
ls -l //用较长格式列出文件
adduser和useradd的区别:
useradd 只创建用户,创建完了用 passwd lilei去设置新用户的密码。
adduser会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。
作业:
添加一个用户 loutest,使用 sudo 创建文件 /opt/forloutest,设置成用户loutest可以读写。截图并把操作过程写入实验报告。
实验4 Linux目录结构及文件基本操作
- Linux 以树形目录结构的形式来构建整个系统。FHS标准下的目录结构:
目录的四种交互作用形态:
2) 文件的基本操作
cd /usr/local/bin //绝对路径
cd ../../usr/local/bin //相对路径
cd /home/shiyanlou
touch test //新建空白文件
mkdir mydir //新建空目录
mkdir -p father/son/grandson //同时创建一个多级目录
cp test father/son/grandson //复制文件到指定目录中
mkdir family
cd -r father family //复制目录,-r或-R参数表示递归复制
rm test //删除文件,前加-f参数强制删除
rm -r family //删除目录
mv file1 Documents //移动文件
mv file1 myfile //重命名文件
touch file{1..5}.txt
rename 's/\.txt/\.c/' *.txt //改后缀
rename 'y/a-z/A-Z/' *.c //批量重命名,将文件名和后缀改为大写
cat -n password //cat查看文件,-n参数显示行号, cat 为正序显示,tac 为倒序显示
nl -b a passwd //nl 命令,添加行号并打印,比 cat -n 更专业
//使用more和less分页查看文件,Enter键下一行,Space键下一屏,h帮助,q退出。
tail -n 1 /etc/passwd //head,tail只查看文件的头几行,-n 1只看一行
//file查看文件类型
nl 常用的几个参数:
-b (常)| 指定添加行号的方式:
-|-
-b a |表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
-b t |只列出非空行的编号并列出(默认为这种方式)
-n | 设置行号的样式,主要有三种:
-n ln|在行号字段最左端显示
-n rn|在行号字段最右边显示,且不加 0
-n rz|在行号字段最右边显示,且加 0
-w | 行号字段占用的位数(默认为 6 位)
3) vim编辑器 (输入vimtutor命令即可学习)
4) 作业
创建一个 homework 目录,建立名为 1.txt~10.txt 文件,并删除 1.txt~5.txt
实验5 环境变量与文件查找
declare tmp //创建变量名为tmp的变量
tmp=shiyanlou //变量赋值
echo $tmp //读取变量值
zsh //创建子shell,从默认的bash切换到zsh
echo $tmp //值为空,表示该变量无效
exit //退出
export tmp //导出变量temp为环境变量,此时用上面的命令验证,变量有效
echo $PATH //查看PATH环境变量的内容,PATH里面就保存了Shell中执行的命令的搜索路径。
PATH=$PATH:/home/shiyanlou/mybin
//添加自定义路径到PATH,一定要使用绝对路径。
unset temp //使用unset命令删除一个环境变量
source .zshrc //或者. ./.zshrc让环境变量立即生效
#搜索文件:locate快而全、which小而精、find精而细
通常变量类型有三种:
- 当前 Shell进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。
- Shell 本身内建的变量。
- 从自定义变量导出的环境变量。(为了与普通变量区分,通常我们习惯将环境变量名设为大写)
按变量的生存周期来划分,Linux变量可分为两类:
- 永久的:需要修改配置文件,变量永久生效;
- 临时的:使用export命令行声明即可,变量在关闭 shell 时失效。
- 如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好。
变量的修改有以下几种方式:
变量设置方式 | 说明 |
---|---|
${变量名#匹配字串} | 从头向后开始匹配,删除符合匹配字串的最短数据 |
${变量名##匹配字串} | 从头向后开始匹配,删除符合匹配字串的最长数据 |
${变量名%匹配字串} | 从尾向前开始匹配,删除符合匹配字串的最短数据 |
${变量名%%匹配字串} | 从尾向前开始匹配,删除符合匹配字串的最长数据 |
${变量名/旧的字串/新的字串} | 将符合旧字串的第一个字串替换为新的字串 |
${变量名//旧的字串/新的字串} | 将符合旧字串的全部字串替换为新的字串 |
作业: | |
找出 /etc/ 目录下的所有以 .list 结尾的文件 |
实验6 文件打包与解压缩
- Linux中常见常用的压缩包文件格式
文件后缀名 | 说明 |
---|---|
*.zip | zip程序打包压缩的文件 |
*.rar | rar程序压缩的文件 |
*.7z | 7zip程序压缩的文件 |
*.tar | tar程序打包,未压缩的文件 |
*.gz | gzip程序(GNU zip)压缩的文件 |
*.xz | xz程序压缩的文件 |
*.bz2 | bzip2程序压缩的文件 |
*.tar.gz | tar打包,gzip程序压缩的文件 |
*.tar.xz | tar打包,xz程序压缩的文件 |
*tar.bz2 | tar打包,bzip2程序压缩的文件 |
*.tar.7z | tar打包,7z程序压缩的文件 |
- zip和tar常用命令
zip something.zip something //打包(目录请加 -r 参数)
unzip something.zip
//解包(指定路径:-d 参数)
tar -cf something.tar something //打包
tar -xf something.tar //解包(指定路径:-C 参数)
- 作业:创建一个名为 test 的文件,分别用 zip 和 tar 打包成压缩包,再解压到/home/shiyanlou 目录。
实验7 文件系统操作与磁盘管理
- 查看磁盘和目录容量
df //使用 df 命令查看磁盘的容量
df -h //更易读
du //查看目录容量
du -h //提高信息的可读性。
du -a //同all 显示目录中所有文件的大小。
du -s //同summarize 仅显示总计,只列出最后加总的值。
du -h -d 0 ~ //-d参数指定查看目录的深度,只查看一级目录
du -h -d 1 ~ //查看二级
- 简单的磁盘管理
用dd命令从标准输入读入用户的输入到标准输出或者一个文件中:
dd在拷贝的同时还可以实现数据转换,如将输出的英文字符转换为大写再写入文件:
可以在man文档中查看其他所有转换参数。
使用 dd 命令创建虚拟镜像文件
第一步:从/dev/zero设备创建一个容量为 256M 的空文件
dd if=/dev/zero of=virtual.img bs=1M count=256
du -h virtual.img
第二步:将这个文件格式化(写入文件系统),这里,将我们的虚拟磁盘镜像格式化为ext4文件系统:
sudo mkfs.ext4 virtual.img
#输入
ls -l /lib/modules/$(uname -r)/kernel/fs
//查看Linux 支持哪些文件系统
第三步:使用 mount 命令挂载磁盘到目录树
mount -o loop -t ext4 virtual.img /mnt
// 也可以省略挂载类型,很多时候mount会自动识别
# 以只读方式挂载
mount -o loop --ro virtual.img /mnt //或者mount -o loop,ro virtual.img /mnt
//可使用 umount 命令卸载已挂载磁盘
第四步:使用 fdisk 为磁盘分区
# 查看硬盘分区表信息
$ sudo fdisk -l
# 进入磁盘分区模式
$ sudo fdisk virtual.img
第五步:使用losetup命令建立镜像与回环设备的关联
3) 轻松一下--cowsay命令
4) 作业
| sort -nr //表示安装数字由大到小的顺序排列
| head -n 10 //表示取前10个
实验8 Linux下的帮助命令
- type 命令可用来区分命令是内建的还是外部的。
xxx is a shell builtin //得到这样的结果说明是内建命令
xxx is /usr/bin/xxx//得到这样的结果说明是外部命令
xxx is an alias for xx --xxx //若是得到alias的结果,说明该指令为命令别名所设定的名称
- help命令
- 本实验环境是 zsh,而 zsh 中内置并没有help 命令,我们可以进入 bash 中,在bash中内置有该命令。
- help 命令只能用于显示内建命令的帮助信息。
- 外部命令基本上都有一个参数--help,这样就可以得到相应的帮助,看到你想要的东西了。
3) man命令
得到的内容比用help更多更详细,而且man没有内建与外部命令的区分。
man ls //按 q 退出当前页面
章节数 | 说明 |
---|---|
1 | Standard commands (标准命令) |
2 | System calls (系统调用) |
3 | Library functions (库函数) |
4 | Special devices (设备说明) |
5 | File formats (文件格式) |
6 | Games and toys (游戏和娱乐) |
7 | Miscellaneous (杂项) |
8 | Administrative Commands (管理员命令) |
9 | 其他(Linux特定的),用来存放内核例行程序的文档。 |
- info 命令
得到的信息比man还要多。
#安装info
sudo apt-get update
sudo apt-get install info
#查看ls命令的info
info ls