• (全)2017-10-11 第三次 信息安全系统设计基础课 主要内容


    第二次课考试来着,所以就没写,第三次课课上讲了些知识,所以就整理一下。

    预览可能字比较小不方便看,可以点击进来看。

    本次课老师讲的是第十章,系统调用,一共讲了三方面的内容:who命令系统调用一些小技巧

    学习linux主要是学习三个方面:
    1.学习linux命令,
    2.学习系统调用,
    3.学习具体命令,如od,是怎么实现的(先用伪代码,用汉语把问题解决,然后再用c语言写产品代码)

    知识分三类,有元知识,软知识,硬知识,元知识学会了就能举一反三,软知识就是用量、用实践来做就能掌握,硬知识就是背下来就好了,

    接下来是第一个内容:who命令

    who命令的功能是给出用户信息,因为linux是个多用户操作系统,会给出当前的用户的登录信息。

    如果没用过who怎么办呢?就用man who命令,可以查看帮助文档,


    (紧接着老师又举了一个别的例子,来讲述为什么左上角的WHO旁边有个(1))

    给大家举个例子,printf,但是man printf是查找printf的帮助文档吗?
    其实不是了,man 3 printf才是printf的帮助文档,man 1 printf不是,

    最终得出规律:找c语言函数——man 3,找系统调用——man 2,找终端命令行——man 1

    (好了,例子举完了)

    who -a就可以把多个用户的登录信息显示出来了。who的内容有三列,用户名、终端、登录时间

    接下来的任务就是用编程实现who,(我们要通过utmp来编程实现who)直接看一下who的帮助文档,输入man who


    然后老师说了,看帮助文档时一定要注意看SEE ALSO这里,SEE ALSO与系统调用有关。

    看下面这张图有个utmp

    这个utmp文件保存的就是当前用户的登录信息,我们试着用vi查看一下utmp里面的信息,



    发现都是一堆乱码对吧,utmp是二进制文件,怎么看呢?用我们上节课学过的od -tc -tx1 utmp就可以了,

    man utmp查看帮助文档,发现utmp是一个系统文件,因为utmp旁边的数字是5,


    我们可以得知utmp是一个结构体,包含ut_line和ut_user等项目,

    因此我们得到了用c编程实现who的方法:
    1.打开utmp,
    2.循环打印用户名、时间、终端等,
    3.关闭utmp。

    接下来是第二个内容:使用系统调用!

    我们有什么不懂的,都会去百度上搜一下,现在什么函数不懂,可以输入man -k xxx,比如我们搜索man -k read,搜索read头文件,
    可以发现出现了很多很多不需要的文件,所以我们可以输入man -k read | grep 2做一个筛选,



    其实还可以再精确一下,输入man -k read | grep 2 | grep read,结果所有含有read的都显示出来了,

    终于找到了read,并且得出结论:我们只需要知道自己要干什么就行了,有不会的函数就去用man和grep搜索,

    再用man 2 read看一下帮助文档,要格外注意的是这里:


    SYNOPSIS(大纲、摘要)内容包含这个read函数使用时,所必须的头文件

    还有的SYNOPSIS文件里包涵其他内容,可能还有链接库,比如求正弦的函数:sin,这时就得把他的链接库也一并写上,
    否则就不能使用,


    (好了举完了sin的例子,我们再回来看man read帮助文档)

    再看SEE ALSO这里,有个open,open是和文件最相关的一个命令了,


    我们打开帮助文档:man open,可以看到了有三个头文件,所以都要调用。

    (以后比如毕设时问你头文件哪里来的,一定要会说!)

    所有的代码都放在一个main函数里不是一个好的习惯,要学会分模块,要会函数分离,有利于提高代码质量。

    接下来是第三个问题——一些小技巧,比如:读代码时遇到宏,读不懂怎么办?

    c语言中经常用到stdio.h,linux下使用locate stdio.h就可以查到stdio.h的位置了,

    还有一个小技巧:grep -nr,其中r是递归调用,这个指令可以将搜到的东西打印在第n行,

    搞破坏之前要先备份一下,用cp who1.c who1back.c可以实现备份。
    copy命令怎么用c语言实现呢?
    1.打开fd1,
    2.创建fd2,循环:从fd1读取100个字节,并写到fd2里,
    3.关闭fd1,fd2.
    提问:从fd1里读了100个字节,fd2里就有100个字节吗?
    回答:不是的,fd1里的字节数多于100个的话,只读100个,如果不够100个比如三十个, 就只会读三十个。

    所有的知识都讲完了,接下来是课堂测验!

    MR.LOU:“我讲了两个例子了,接下来该你们了。”

  • 相关阅读:
    oracle12c中新能优化新特性之热度图和自动数据优化
    Oracle10g以上sysaux表空间的维护和清理
    mysql 及 posgresql之优劣势大比拼
    Oracle外部表的管理和应用
    Oracle ASM 相关的 视图(V$) 和 数据字典(X$)
    Oracle12c功能增强新特性之维护&升级&恢复&数据泵等
    Oracle12c功能增强 新特性之管理功能的增强
    Oracle12c 中RAC功能增强新特性之ASM&Grid
    oracle12c新特点之可插拔数据库(Pluggable Database,PDB)
    SRM-697-DIV2
  • 原文地址:https://www.cnblogs.com/zhuanyedajiesanshinian/p/7654661.html
Copyright © 2020-2023  润新知