首页 > 其他分享 >信息安全系统设计与实现——学习笔记4

信息安全系统设计与实现——学习笔记4

时间:2023-09-28 22:23:20浏览次数:32  
标签:char 文件 int 信息安全 笔记 学习 read write buf

任务详情:自学教材第7,8章,提交学习笔记(10分)

Part1 知识点归纳&GPT提问

知识点归纳

chap 7

  • 文件操作级别
    • 硬件级别
    • fdisk
    • mkfs
    • fsck
  • 碎片整理
  • 操作系统内核中的文件系统函数
  • 系统调用
  • I/O库函数
  • 用户命令
  • sh脚本
  • 文件I/O操作
  • 低级别文件操作
  • 分区
    • Command (m for help): m ---输出帮助信息
    • Command action
    • a toggle a bootable flag ---设置启动分区
    • b edit bsd disklabel ---编辑分区标签
    • c toggle the dos compatibility flag
    • d delete a partition --删除一个分区
    • l list known partition types --列出分区类型
    • m print this menu --帮助
    • n add a new partition --建立一个新的分区
    • o create a new empty DOS partition table --创建一个新的空白DOS分区表
    • p print the partition table ---打印分区表
    • q quit without saving changes ---退出不保存设置
    • s create a new empty Sun disklabel ---
    • t change a partition's system id ---改变分区的ID
    • u change display/entry units ---改变显示的单位
    • v verify the partition table ---检查验证分区表
    • w write table to disk and exit ---保存分区表
    • x extra functionality (experts only)

chap 8

系统调用
系统调用手册页

man 2 stat
man 2 open
man 2 read

常用的系统调用
open:打开一个文件进行读、写、追加

int open(char *file, int flags, int mode);

close:关闭打开的文件描述符

int close(int fd);

read:读取打开的文件描述符

int read(int fd, char buf[], int count);

write:写入打开的文件描述符

int write(int fd, char buf[], int count);

dup:将文件描述符复制到可用的最小描述符编号中

int dup(int oldfd);

dup2:将oldfd复制到newfd中,如果文件链接数为0,则删除文件

int dup2(int oldfd, int newfd);

link:将新文件硬链接到旧文件

int link(char *oldPath, char *newPath);

unlink:取消某个文件的链接;如果文件链接数为0,则删除文件

int unlink(char *pathname);

symlink:创建一个符号链接

int symlink(char *target, char *newpath);

readlink:读取符号链接文件的内容

int readlink(char *path, char *buf, int bufsize);

umask:设置文件创建掩码;文件权限为(mask & ~umask)

int umask(int umask);

mknod:创建特殊文件

int mknod(char *path,int mode,int device)

链接文件
硬链接文件

ln oldpath newpath

对应系统调用:link(char *oldpath,char *newpath)
减少文件链接数:unlink(char *pathname)

符号链接文件

ln -s oldpath newpath

创建符号链接或软链接

symlink(char *oldpath,char *newpath)
  • stat系统调用

  • stat文件状态

  • stat结构体

  • stat与文件索引节点
    每个索引节点在存储设备上都有唯一的索引节点编号(ino)。每个设备都由一对设备号标识,例如0x0302表示/dev/hda2等

  • 文件类型和权限
    st_mode:第一个字母表示文件类型,后面9个字符基于权限位,如果位是1,每个字符打印为r|w|x;如果位是0,则打印-。x位表示是否允许访问目录。

GPT提问

image
image
image
image

Part2 问题与解决思路

问题:不理解文件读写位置指针

gpt解决

image

Part3 实践过程截图

  • 系统调用手册页
    image

使用系统调用进行文件操作

#include<stdio.h>
#include<errno.h>
int main()
{
char buf[256],*s;
int r;
r = mkdir("newdir",0766);	//mkdir syscall
if(r<0)
	printf("error=%d : %s\n",errno,strerror(errno));
r = chdir("newdir");	//cd into newdir
s = getcwd(buf,256);	//get CWD string int buf[]
printf("CWD = %s\n",s);
}

使用系统调用递归复制文件

int copy(char *read_dir_path, char *write_dir_path)  
{  
DIR * p_dir;  
struct dirent * p_dirent;  

  
char read_buf[256];  
char write_buf[256];  

sprintf(read_buf,"%s/", read_dir_path);  
sprintf(write_buf,"%s/",write_dir_path);  

strcat(read_dir_path,"/");  
if( Is_dir(read_buf) )  
{  
    //mkdir   
    if(mkdir(write_buf, 0755) < 0)  
    {  
        printf("mkdir fall:%s\n", strerror(errno));  
        return -1;  
    }  


    //opendir and readdir   

    if((p_dir = opendir(read_buf)) == NULL )  
    {  
        printf("Usage:cp -r <src_dir> <dat_dir> error:%s\n",strerror(errno));  
        return -1;  
    }  

    while((p_dirent=readdir(p_dir)) != NULL)  
    {  
        char read_buffer[256];  
        char write_buffer[256];  
        sprintf(read_buffer,"%s%s", read_buf, p_dirent->d_name);  
        sprintf(write_buffer,"%s%s", write_buf, p_dirent->d_name);  

        printf("%s\n%s\n",read_buffer,write_buffer);  

        //it is a directory   
        if( Is_dir(read_buffer) && 0 != strcmp(p_dirent->d_name, ".") && 0 != strcmp(p_dirent->d_name, "..") )  
        {  
              
            copy_r(read_buffer, write_buffer);  
        }  

        else if(0 != strcmp(p_dirent->d_name, ".") && 0 != strcmp(p_dirent->d_name, ".."))  
        {  
            //copy file   
            if( file_copy_line(read_buffer, write_buffer) < 0 )  
                return 0;  
        }  


    }  

    closedir(p_dir);  

}  

}

Part4 其他

image

标签:char,文件,int,信息安全,笔记,学习,read,write,buf
From: https://www.cnblogs.com/wjmbk123/p/17736582.html

相关文章

  • 信息安全系统设计与实现 学习笔记4
    文件操作文件操作级别硬件级别:fdisk将硬盘、U盘或SDC盘分区。mkfs:格式化磁盘分区,为系统做好准备。fsck:检查和维修系统。碎片整理:压缩文件系统中的文件。操作系统内核中的文件系统函数kmount(),kumount()kmkdir(),krmdir()系统调用用户模式使用系统调用来访问内核函数......
  • 阅读笔记1
    《程序员的修炼之道:从小工到专家》这本书第一章主要介绍了程序员的成长路径和所需技能。通过阅读这一章,我深刻认识到程序员的成长不是一个简单的过程,而是一个需要不断努力和修炼的旅程。在这一章中,作者们首先介绍了程序员的成长路径,即从小工到专家的发展历程。这个历程包括掌握基......
  • 阅读笔记2
    《程序员的修炼之道:从小工到专家》的第二章节聚焦于“从问题到解决方案”。这一章节主要讲述了如何从问题的初始状态到最后解决问题的过程,强调了理解问题、找出解决方案以及实现解决方案的重要性。在这一部分,作者详细讨论了如何理解和描述问题。首先,他们提出要充分理解问题的本质......
  • openGauss学习笔记-83 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用内
    openGauss学习笔记-83openGauss数据库管理-内存优化表MOT管理-内存表特性-MOT使用内存和存储规划本节描述了为满足特定应用程序需求,在评估、估计和规划内存和存储容量数量时,需要注意的事项和准则,以及影响所需内存数量的各种数据,例如计划表的数据和索引大小、维持事务管理的内存......
  • 《Unix/Linux系统编程》教材学习笔记第七章、第八章
    chapter7文件操作级别文件操作分五个级别,从低到高排序如下:1.硬件级别:硬件级别的文件操作包括fdisk:将硬盘、U盘或SDC盘分区。mkfs:格式化磁盘分区,为系统做好准备。fsck:检查和维修系统。碎片整理:压缩文件系统中的文件。其中大多说是针对系统的实用程序。2.操作系统内核中......
  • 学习笔记4
    第七、八章文件操作文件操作级别1.硬件操作  大多数是针对系统的实用程序2.操作系统内核中的文件系统函数  每个操作系统内核均可为基本文件操作提供支持3.系统调用  用户模式程序使用系统调用来访问内核函数  每个库函数都会发出一个系统调用,使进程进入内核模式......
  • Vue源码学习(八):生命周期调用
    好家伙, Vue源码学习(七):合并生命周期(混入Vue.Mixin)书接上回,在上一篇中,我们已经实现了合并生命周期现在,我们要在我们的初始化过程中,注册生命周期 1.项目目录 红框为本篇涉及到的.js文件 2.先来看/utils/index.jsexportconstHOOKS=["beforeCreated......
  • [笔记]组成原理_2024年考纲
    一、计算机系统概述(一)计算机系统层次结构1.计算机系统的基本组成2.计算机硬件的基本结构3.计算机软件和硬件的关系4.计算机系统的工作原理“存储程序”工作方式,高级语言程序与机器语言程序之间的转换,程序和指令的执行过程。(二)计算机性能指标吞吐量、响应时间;CPU时钟周期、......
  • 9月《程序员修炼之道:从小工到专家》阅读笔记
    一、注重实效的哲学1我的源码让猫吃了无论是什么任务,我们都可能出现错误,这时,我们需要尽可能处理好他们以示诚实坦率。我们必须承担责任,一味的推卸责任毫无用处。要找各种选择,而非借口。2软件的熵熵在软件中代表“软件腐烂”。究其原因,最重要为开发项目时的心理/文化。那么为什......
  • 2023-2024-1 20231302 《计算机基础与程序设计》第一周学习总结
    作业信息这个作业属于计算机基础与程序设计https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01作业目标快速浏览一遍教材计算机科学概论,课本每章提出至少一个自己不懂的或最想解决的问题并在期......