20145335 《信息安全设计基础》第1周学习总结
20145335《信息安全系统设计基础》第1周学习总结
教材学习内容总结
-
了解
Linux
体系结构从大体上来说
linux
体系结构分为两大块:
- 用户空间:用户空间又包含了,用户的应用程序,c库
- 内核空间:内核空间包括,系统调用,内核,以及与平台架构相关代码
通过上网查阅其他相关资料
linux
体系结构分成用户空间和内核空间的原因:- 现代
cpu
通常都实现了不同的工作模式。 linux
从cpu
的角度出发,为了保护内核的安全,把系统分成了两个部分。- 用户空间和内核空间是程序执行的两种不同状态,我们可以通过“系统调用”和“硬件中断”来完成用户控件到内核空间的转移。
-
Linux
学习路径作为初学者来说应该循序渐进的学习Linux知识
1.linux初级知识:
linux
系统安装、linux
图形化界面使用、linux
常用命令。2.linux中级知识:
linux
用户和文件系统、linux
软件安装配置、linux
网络管理、linux
系统维护、linux
shell编程初步。3.linux高级知识:有关
linux
服务器领域和linux
程序开发4.linux内核研究和操纵系统开发。
-
Linux
命令 -
首先需要掌握高效使用linux命令行的命令:
ctrl+alt+t :打开终端
ctrl+shift+t:新建标签页
alt+n:切换到第n个标签页
tab:补全命令行(某些情况是得到帮助)
上下键盘:可以恢复到之前输入过的命令行
ctrl:中断运行
-
Linux 命令
注意命令格式 `command [options] [arguments] `第一个为选项,第二个为参数,其中`选项(options)`不同决定了命令的显示结果不同,`参数(arguments)`是指命令的作用对象。
-
man 命令
是`manul`的缩写 可以`man man`查看`man`的帮助。
在用虚拟机的命令行内尝试验证了man的命令。经过尝试发现`man 1 printf` 和 `man printf` 的结果是一样的。
也查看了man 3 printf 命令行
**在查看完man的时候用`q`可以退出到命令行界面。**
` man -k +搜索文件`可以更加快捷方便的检索出结果。
这里有一篇关于man命令行的用法,推荐给大家[http://blog.csdn.net/losophy/article/details/7961958](http://blog.csdn.net/losophy/article/details/7961958 "man命令行")
-
cheat 命令
cheat是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。 注意在使用cheat的时候需要先事先安装`python`和`pip`
-
find 命令
这个可以类似于windows系统下的查找。如果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录下,甚至在系统的某个地方也不知道,则这是可以使用如下命令: `find / -name httpd.conf ` 在`find` 后加`-name `相当于告诉系统按照文件名查找,最加入目标文件就可以成功查找。 **注意:如果输入以上查找命令后系统并没有显示出结果,那么不是系统没有执行命令而可能是你的系统中没有安装Apache服务器,这时只要你安装了Apache Web服务器,然后再使用,命令就能找到这个配置文件了。** 在查找过程中如果想要中断查找用`ctrl+c`中断查找。 还有用其他方法查找 比如根据部分文件名查找:`find /etc -name '*srm*' `这个命令表明了Linux系统将在**/etc整个目录**中查找所有的包含有srm这3个字母的文件。如果知道srm是文件开头名的话省略srm前的`*`,如find/etc -name 'srm*' ,这样的话例如absrmy的文件可以通过第一个检索出来,但是第二个命令行就无法检索出来。 还有通过文件特征查询法、混合查询法等,这里我找到一篇博客,关于find命令的用法,推荐大家学习[http://blog.csdn.net/ydfok/article/details/1486451](http://blog.csdn.net/ydfok/article/details/1486451 "find命令使用方法") 注意还有用`locate`也可以查找,`locate+文件名`可以查询到,用`locate`查询会比`find`命令行快,**注意:`locate`需要一个数据库**,这个数据库由每天的例行工作`crontab`程序来建立。如果更新数据库的话用` sudo update`跟新数据库,这样即使新建立的文件也可以用locate查询出来。
-
grep 命令
也是起到全文检索,可以在文件中寻找,比如利用`grep -n main *c`比如可以查找mian在哪个c文件中。**注意:grep要支持正则表达式**
-
whereis 命令
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
教材学习中的问题和解决过程
-
linux架构中的
shell
壳在对于linux系统架构的时候对于
sehll壳
的理解存在问题,从架构图中可以看出来是应用层和系统调用层中间的一层,和库函数同一层。但是对其具体的工作存在问题。shell壳子具体的实现功能是如何实现的?为什么会定义在应用层和系统调用层中间呢?
通过查阅其他资料解决了这一问题。Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并将其送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
-
linux命令的格式
对于最初的linux命令
command options arguements
在理解上有些许问题。通过操作练习例子明白了,
is -a .
其中is
对应格式中的command
、-a
对应格式中的options
、.
对应格式中的arguements
。这样的话就可以清楚的理解了。is .
和is
就是等价的命令,二者这个命令省去了选项,而.
为一个参数也可以省略,所以二者相同。但is -a .
和is .
就不相同,也证明了选项不同决定了显示结果的不同。 -
find 和 grep的不同
最开始不太懂
find
和grep
的区别既然都是查找,到底具体区别在哪里。通过百度相关知识,得到了结果。
linux中的
find
等同与win
中的搜索文件。
find
是在磁盘/分区中找到文件,可以配type
可以配size time
等,通过文件名或文件大小或访问时间找到指定文件。find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。linux中的
grep
等同与win
中的findstr
命令。可以在一个txt文本中截取到有特定关键字的行,并显示出来。grep也可以通过关键字,在一个文件夹下查找多个有这些关键字的文件,并生成结果。能使用正则表达式搜索文本,使用权限是所有用户。小结:grep是查找匹配条件的行,find是搜索匹配条件的文件。
课后作业中的问题和解决过程
按照计划初步完成了实验楼的内容课程《linux入门基础》和《深入理解计算机系统》,还有部分正在进行学习和巩固学习
部分在自己的电脑的虚拟机上使用的,还有部分是在实验楼里完成的
以下是部分的实验截图
- ls
-
find
-
grep -n
-
locate
其中
locate
的先查询我自己学号命名的文件,显示结果为空查询不到,用touch+XXX
创建新的文件,之后再次使用locate
的命令行查询,结果依然为空,证明了locate
是使用数据库来查询数据,之后使用sudo updatedb
更新数据库,之后再次使用locate
命令行就可以查询到结果。注意:自己的虚拟机上使用sudo updatedb
会有权限不够,可能是没有权限
此时可以创建账户并授予权限
-
新建用户
root@ubuntu:~# adduser hadoop root@ubuntu:~# passwd hadoop #为hadoop用户设置密码
-
为hadoop用户添加sudo权限
root@ubuntu:~# sudo gedit /etc/sudoers
把root那行复制后改成hadoop,hadoop就有了sudo权限,需要sudo密码则为ALL,不需要则NOPASSWD:ALL。
root ALL=(ALL) NOPASSWD:ALL hadoop ALL=(ALL:ALL) ALL
- man
其他(感悟、思考等,可选)
这是linux安装完毕后正式入门学习的第一周,要掌握的命令很多,所以我在教材学习内容总结部分写了大部分容易混淆的命令和用法,没有过多的纠结课程学习的其他内容,因为这些在实验楼中查看文档就可以轻松的看到。
有一些指令,比如apt-get,在学习过程中就会频繁的使用到,这样使得我对这些命令的掌握比其他的更深刻,但一些不常用的命令的掌握程度就不会很高,就需要多加练习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/2 | 18/20 |