《网络攻防》第1周作业

《网络攻防》第1周学习总结


主要学习内容

在学习此视频之前,虽然做过简单的嵌入式实验,也用过基本的linux命令,但是从来没有这么系统性的学习过,这一次将这个视频学习过后,确实对linux的一些基础知识有了更深的了解。在视频课程中给出了一个Linux学习路径,通过这个导图可以明确学习方向。

一、Linux系统

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

--引用自《Linux百度百科

linux系统与windows系统在使用方面最明显的区别在于主要工作在终端模式下,也就是通过一个称之为shell的软件进行操作,它隐藏了系统底层的诸多细节,留给用户的只需通过基本命令就可实现各种操作,正如下图所示那样。

当然了,在具有图形界面的linux系统上,打开这个终端除了像windows那样用鼠标点开它,也可以使用快捷键Ctrl + Alt + t打开,或者使用Ctrl + Alt + [F1]~[F6]从图形界面切换至终端界面,再利用Ctrl + Alt + [F7]切换回图形界面。灵活使用各种快捷键会让你更加感受到linux的不俗,各种快捷键加上完备的命令操作,使得linux系统具有极高的工作效率。下面主要罗列一些常用的快捷键,留待以后方便查找。

按键 作用
Tab 补全命令
Ctrl+c 强行终止的当前程序
Ctrl+d 键盘输入结束或退出终端
Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行
Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a 将光标移至输入行头,相当于Home
Ctrl+e 将光标移至输入行末,相当于End
Ctrl+k 删除从光标所在位置到行末
Alt+Backspace 向前删除一个单词
Shift+PgUp 将终端显示向上滚动
Shift+PgDn 将终端显示向下滚动
linux系统的文件系统与windows系统不同,在Linux当中有一个非常重要的概念:

Linux一切皆是文件

也就是说,在Linux当中一切设备都可当做文件来进行操作。Linux采用FHS(Filesystem Hierarchy Standard)树形结构组织文件,FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。在这个树形结构中,会发现Linux系统将各种文件分类的井井有条,理解每个目录下存放的文件性质有助于后续的学习。如下:

二、常用命令

命令的基本格式:
command [options] [arguments]
linux的命令有许多,主要分为shell提供的内建命令(如:historycd)和额外安装的外部命令(如:lsvim),区别在于内建命令随系统加载并驻留在内核当中,而外部命令只在需要时将其调入内存,常放于/bin/usr/bin/sbin/usr/sbin中。具体可利用命令type查看:

在如此多的命令当中,帮助命令无疑是最重要的,它可以帮我们快速学习某个命令的用法。常用帮助命令有:

命令 作用
help 只能显示 shell 内建命令的简要帮助信息
command --help 一般外部命令都有--help参数,专门提供帮助
man 比用 help 更多更详细,没有内建与外部命令的区分
info 更完整的显示出帮助信息
cheat GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。需要额外安装。

以下列出一些常用命令,具体用法参考帮助文档,下载linux命令大全也很方便:

命令 作用
help 只能显示 shell 内建命令的简要帮助信息
command --help 一般外部命令都有--help参数,专门提供帮助
man 比用 help 更多更详细,没有内建与外部命令的区分
info 更完整的显示出帮助信息
cheat GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。需要额外安装。
ls 列出目录内容
cd 切换目录
rm 删除文件或目录
mkdir 建立目录
mv 移动或更名现有的文件或目录
cp 复制文件或目录
touch 改变文件或目录时间、创建空文件
cat 正序显示文件内容
pwd 获取当前路径
grep 全文检索
find 查找文件在系统中的位置
locate 查找文件,速度很快
whereis 直接在数据库中查询文件,但只能搜索二进制文件(-b)、man帮助文件(-m)、源代码文件(-s)
which 在环境变量中搜索是否安装某个软件
rename 批量重命名
declare 声明变量
export 设置或显示环境变量
file 查看文件类型
adduser 新增用户账号
usermod 修改用户账号
deluser 删除用户账号
chmod 更改文件权限
df 显示磁盘相关信息
du 显示目录或文件大小

注:
其中locate命令由于它直接通过/var/lib/mlocate/mlocate.db数据库查找,而非检索匹配,所以速度很快。windows下的Everything软件也有类似功能,通过查找NTFS文件系统中的USN日志达到神速查找的目的,因而该软件不足之处只能查找NTFS格式的设备。

三、常用操作

1.用户及文件权限管理

利用sudo adduser zhb可以添加一个名为zhb的用户:

切换至zhb用户,使用 who am i命令可以查看当前用户信息,使用groups可查看当前用户所属用户组情况:

在使用命令行的过程当中,我们经常要使用sudo命令来临时获取root权限,但是当我们新建一个用户时,会发现它所属的用户组是一个默认与其同名的用户组,如果这时使用sudo命令,会出现一下情况:(就拿更新软件源为例)

很明显,我们可以看到它没有sudo权限,此时可以先切换至另一个有sudo权限的用户,执行sudo usermod -a -G sudo zhbzhb用户追加一个sudo用户组,这样再重新登录zhb账号,使用groups命令:

此时就可以使用sudo命令了。使用cat /etc/group | sort 可以看到所有的用户组信息:

如果要删除用户,可使用sudo deluser zhb --remove-home 命令。

在使用ls -l查看目录下文件时可以看到各个文件的权限情况,如:

通过这些信息可以查看文件归属以及权限(d-目录,r-可读,w-可写,x-可执行),可通过sudo chmod命令更改文件权限。
如以sudo建立一个文件abc:

可看到abc文件只对root用户可写,如果要使zhb用户也能对abc文件进行读写操作,一种方法是将其改为对root用户组可写,可使用命令sudo chmod g+w abc:

然后先按之前方法将zhb用户添加root用户组,这样就可以对abc文件进行读写操作了:

第二种方法为abc文件的其他用户添加写权限,如下:

2.环境变量

通过export可查看环境变量,在之前使用过程中,经常使用的是PATH这个环境变量,可通过echo $PATH查看这个变量:

这个变量之所以比较重要,是因为它保存了我们在编译程序过程当中所用到的编译工具的路径,在执行编译时,系统会通过这个环境变量查找编译工具,所以说如果我们要搭建编译环境,那么这个变量是不可或缺的。
可通过以下命令为PATH添加路径:

或者直接修改~/.bashrc~/.bash_profile或系统级别的/etc/profile,就好像windows下的环境变量一样。

3.文件的压缩与解压

之前也经常使用这些操作,下面简单罗列一下,以备后续查阅:

4.U盘挂载

由于使用的Ubuntu系统默认自动挂载,所以为了完成手动挂载测试,选择redhat来试验。在不插U盘时,使用fdisk -l可以查看外部设备情况:

插上U盘后再执行,可以看到设备中多了一个sdb1设备,这就是U盘,如果要读取其中的内容,就需要挂载,步骤如下:

四、几个有趣的命令

写到这里,不得不佩服那些写出这些命令的程序员,为“枯燥”的学习带来了乐趣。以下命令都需要通过apt-get安装。

1.banner

2.xeyes

3.cmatrix

4.aafire

5.cowsay

6.asciiview

五、学习感想

Linux的内容非常多,学起来也比较令人头疼,所以说必须要多实践、多练习,只有这样才能真正学好、用好。后续的课程我也会继续努力学习,争取能够熟练使用Linux系统。

posted @ 2017-03-05 12:06  寒冰ice  阅读(358)  评论(1编辑  收藏  举报