目录
- 前言
- 作业一
- 作业二
- 1、基于VMWare安装Ubantu
- 2、Linux基本操作
- 2.1 用户及文件权限管理
- 2.2 Linux目录结构及文件基本操作
- 2.3 环境变量与文件查找
- 2.4 文件打包与解压缩
- 2.5 文件系统操作与磁盘管理
- 2.6 Linux下的帮助命令
前言
问题 | 回答 |
---|---|
这个作业属于那个课程 | 网络攻防实践 |
这个作业的要求在哪里 | 《网络攻防实践》假期作业 |
我在这个课程的目标是 | 提高网络攻防实践能力 |
这个作业在哪个具体方面帮助我实现目标 | 学习Markdown编辑器的使用方法、复习Linux基础操作 |
作业正文 | 作业一、作业二 |
其他参考文献 | Markdown编辑器简要教程 vmware安装ubantu虚拟机详细过程 |
作业一
(1)你对网络攻击和防御了解多少?该课程需要计算机和网络相关的基础知识,你原专业是什么专业,目前你掌握多少基础知识?
(2)作业要使用Markdown格式,Markdown入门参考(需掌握)
- 本科专业为信息安全,曾学习过《计算机网络》《网络安全》等相关课程,做过sql注入、XSS攻击等实验,对网络攻防有浅显的了解。
- 本次作业是我第一次使用Markdown格式,通过学习掌握了基本操作,后续还会继续学习公式编辑、与html的转换等。
tips:使用Markdown插入图片时,若用绝对路径/相对路径插入本地图片,存在不灵活不便分享的问题,本地图片路径的更改或丢失都会造成Markdown文件调不出图。此时可使用有道云笔记等工具添加图片生成网络地址,稳定又简单!
作业二
(1)学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统(也可以使用VMWare安装虚拟机,安装方法自己百度)
(2)通过实践学习别出心裁的Linux命令学习法,掌握Linux命令的学习方法
(3)参考上面的学习方法通过实践学习Linux 基础入门(新版)课程,掌握常用的Linux命令,重点是3/4/5/6/7/8节。
1、基于VMWare安装Ubantu
- 完成本次作业前已安装过ubantu,故在此不赘述安装过程。详细步骤可参考vmware安装ubantu虚拟机详细过程
2、Linux基本操作
- 众所周知,学习Linux最重要的就是命令,别出心裁的Linux命令学习法中很好的说明了怎样学习Linux中的命令。
- 本小节将借助实验楼平台中的Linux 基础入门(新版)课程,依次介绍用户及文件权限管理、Linux目录结构及文件基本操作、环境变量与文件查找、文件打包与解压缩、文件系统操作与磁盘管理、Linux下的帮助命令。
2.1 用户及文件权限管理
- Linux 是一个可以实现多用户登录的操作系统,不同的用户共享主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件。但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于Linux的用户管理和权限机制,不同用户不可以轻易地查看、修改彼此的文件。
部分命令如下:
who am i // 查看当前用户
sudo adduser usr //创建用户usr
su -l usr //切换登录用户到usr
groups usr //查看usr所属用户组
sudo usermod -G sudo usr//将usr添加到sudo用户组
sudo deluser usr --remove-home //删除用户usr
useradd只创建用户,创建完了用 passwd lilei 去设置新用户的密码。adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。
- 文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。在Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
部分命令如下:
ls -l //查看当前目录下的所有目录和文件
ls -a //查看当前目录下的所有目录和文件(包括隐藏文件)
cd /usr //切换到根目录下的usr目录
touch zhang //新建文件zhang
sudo chown usr zhang //将文件zhang的所有者变更为usr
chmod go-rw zhang //修改文件zhang的权限
//g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增加和去掉相应的权限。
- 测试:添加一个用户 zhangtuoning,使用 sudo 创建文件 /opt/zhangtuoning,设置成用户 zhangtuoning 可以读写。
示例命令如下图
2.2 Linux目录结构及文件基本操作
- Linux系统的正常运行是以目录结构为基础的,其中大部分目录结构是规定好了的(FHS 标准)。FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等。第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统日志文件,/usr/share 放置共享数据等等。
下图详细说明了Linux目录结构
部分命令如下:
cd.. //进入上级目录
cd ~ //进入home目录
pwd //获取当前路径
touch test //新建文件test
mkdir mydir //新建目录mydir
mkdir -p father/son/grandson //使用-p参数创建多级目录
cp test father/son/grandson //复制test文件到目录father/son/grandson
rm -f test //强制删除文件test
rm -r family //删除目录
mv file1 Documents //将文件file1移动到目录Documents(剪切)
mv file1 myfile //将文件file1重命名为myfile
touch file{1..5}.txt //批量创建文件
rename 's/\.txt/\.c/' *.txt //批量修改文件后缀
rename 'y/a-z/A-Z/' *.c //批量修改文件名
cat -n passwd //正序查看文件passwd(并显示行号)
tac passwd //倒序查看文件passwd
//用于查看文件的命令还有more、less、 head、tail等,具体使用可查看man手册。
file /bin/ls //查看文件类型
- 测试:创建一个 homework 目录,建立名为 1.txt~10.txt 文件,并删除 1.txt~5.txt 。
示例命令如下图
Linux 的日志文件在/var/log。/var/log/message为系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一;/var/log/secure为与安全相关的日志信息;/var/log/maillog为与邮件相关的日志信息;/var/log/cron为与定时任务相关的日志信息;/var/log/spooler为与UUCP和news设备相关的日志信息;/var/log/boot.log为守护进程启动和停止相关的日志消息。
2.3 环境变量与文件查找
- 环境变量的作用域比自定义变量的要大,如 Shell 的环境变量作用于自身和它的子进程。在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。Shell 程序也作为一个进程运行在操作系统之上,而我们在 Shell 中运行的大部分命令都将以 Shell 的子进程的方式运行。
- 变量类型有三种:当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效;Shell 本身内建的变量;从自定义变量导出的环境变量。set,env,export用于打印环境变量信息,区别在于涉及的变量范围不同。
命令 | 说明 |
---|---|
set | 显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。 |
env | 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。 |
export | 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。 |
按变量的生存周期来划分,Linux 变量可分为两类:永久的:需要修改配置文件,变量永久生效;临时的:使用 export 命令行声明即可,变量在关闭 shell 时失效。/etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。每个用户目录下的一个隐藏文件 .profile 只对当前用户永久生效。而写在 /etc/profile 里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好了。
shell通过环境变量 PATH来搜索执行的命令的搜索路径。
与搜索相关的命令常用的有whereis,which,find和locate。
命令 | 特点 |
---|---|
whereis | 简单快速,但只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)。 |
which | 小而精,which 本身是Shell内建的一个命令,我们通常使用 which 来确定是否安装了某个指定的软件,因为它只从 PATH 环境变量指定的路径中去搜索命令。 |
find | 精而细,是最强大的一个,不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。 |
locate | 快而全,通过“ /var/lib/mlocate/mlocate.db ”数据库查找,系统使用定时任务每天自动执行updatedb 命令更新一次,但对于刚添加的文件,它可能会找不到,需手动执行updatedb 命令。 |
部分命令如下:
echo $PATH //查看PATH环境变量的内容
PATH=$PATH:/home/shiyanlou/mybin //添加自定义路径到PATH环境变量
//修改变量
path=$PATH
echo $path
path=${path%/home/shiyanlou/mybin}
//或使用通配符,*表示任意多个任意字符
path=${path%*/mybin}
unset temp //删除变量
source .zshrc //使环境变量立即生效
//查找/etc下所有以sh开头的文件(不只是在 /etc 目录下查找,还会自动递归子目录进行查找)
sudo apt-get update
sudo apt-get install locate
locate /etc/sh
sudo find /etc/ -name interfaces //在/etc/目录下,搜索名为interfaces的文件或者目录
- 测试:找出 /etc/ 目录下的所有以 .list 结尾的文件。
示例命令如下图
2.4 文件打包与解压缩
- 在Windows上最常见的不外乎这两种 .zip,.7z 后缀的压缩文件。而在 Linux 上面常见的格式除了以上两种外,还有 .rar,.gz,.xz,.bz2,.tar,.tar.gz,.tar.xz,*.tar.bz2。
部分命令如下:
zip -r -q -o shiyanlou.zip /home/shiyanlou/Desktop //将目录 /home/shiyanlou/Desktop 打包
//-r 参数表示递归打包包含子目录的全部内容,-q 参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名
du -h shiyanlou.zip //查看打包后文件的大小
zip -r -l -o shiyanlou.zip /home/shiyanlou/Desktop //使用-e参数可以创建加密压缩包, -l参数将 LF 转换为 CR+LF
unzip -q shiyanlou.zip -d ziptest //使用安静模式将文件解压到指定目录(上述指定目录不存在,将会自动创建。)
unzip -l shiyanlou.zip //使用 -l 参数不解压只查看压缩包内容
tar -P -cf shiyanlou.tar /home/shiyanlou/Desktop //创建一个tar包
//-P 保留绝对路径符,-c 表示创建一个 tar 包文件,-f 用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后,比如不能写成 tar -fc shiyanlou.tar,可以写成 tar -f shiyanlou.tar -c ~。
tar -xf shiyanlou.tar -C tardir //解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数)
tar -tf shiyanlou.tar //只查看不解包文件 -t 参数
tar -czf shiyanlou.tar.gz /home/shiyanlou/Desktop //添加 -z 参数,使用 gzip压缩文件
tar -xzf shiyanlou.tar.gz //解压 *.tar.gz 文件
- 测试:创建一个名为 zhang 的文件,分别用 zip 和 tar 打包成压缩包,再解压到 /home/shiyanlou 目录。
示例命令如下图
2.5 文件系统操作与磁盘管理
- dd命令用于转换和复制文件,不过它的复制不同于cp。dd的命令行语句与其他的 Linux 程序不同,因为它的命令行选项格式为选项=值,而不是更标准的--选项 值或-选项=值。dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。
部分命令如下:
df -h //查看磁盘容量
du -h //查看目录容量
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 //输出到标准输出
//从/dev/zero设备创建一个容量为 256M 的空文件:
dd if=/dev/zero of=virtual.img bs=1M count=256
du -h virtual.img
mount -o loop -t ext4 virtual.img /mnt //将创建的虚拟磁盘镜像挂载到/mnt目录
mount -o loop --ro virtual.img /mnt //以只读方式挂载
sudo fdisk virtual.img //进入磁盘分区模式
sudo losetup /dev/loop0 virtual.img //建立镜像与回环设备的关联
//如果提示设备忙你也可以使用其它的回环设备,"ls /dev/loop*"参看所有回环设备
sudo losetup -d /dev/loop0 //解除设备关联
//格式化mkfs分区
sudo apt-get install kpartx
sudo kpartx -av /dev/loop0
sudo kpartx -dv /dev/loop0 //取消映射
- 测试:找出当前目录下面占用最大的前十个文件。
示例命令如下图
2.6 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、man、info。help命令是用于显示shell内建命令的简要帮助信息,帮助信息中显示有该命令的简要说明以及一些参数的使用以及说明,一定记住 help 命令只能用于显示内建命令的帮助信息。man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的 man 也可以得到程序的更多相关信息和 Linux 的更多特性。nfo 来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息。