天天看點

《資訊安全系統設計與實作》學習筆記

學習筆記

20191318 王澤文

  《Unix/Linux系統程式設計》

第七章 檔案操作

  本章主要講述讨論了多種檔案系統;解釋了作業系統中的各種操作級别,系統性概述了各種操作,介紹了Linux系統的EXT2檔案系統。

  檔案操作級别包括:

  1. 硬體級别
  2. 作業系統核心中的檔案系統函數
  3. 系統調用
  4. 檔案流上的I/O庫函數
  5. 使用者指令
  6. 各種操作的sh腳本

  在低級别的檔案操作中,主要學習了分區和格式化分區。分區指的是一個塊儲存設備, 如硬碟、U盤、SD卡等,可以分為幾個邏輯單元。學習了磁盤分區、顯示分區表的程式、檔案系統的格式化分區以及挂載磁盤分區;

  接着,還了解了EXT2檔案系統,包括EXT2檔案系統的系統資料結構、顯示超級塊、組描述符、塊和索引節點位圖以及目錄内容的程式

  

第八章 使用系統調用進行檔案操作

  本章主要講述如何使用系統調用進行檔案操作。

  系統調用是一種允許程序進入Kmode(核心模式)以執行Umode(使用者模式)不允許操作的機制。複刻子程序、修改執行映像,甚至是終止等操作都必須在核心中執行。

  系統調用手冊頁,使用

man 2 NAME

可以用來顯示系統調用手冊頁。

  1. access : int access(char *pathname,int mode);

    檢查對某個檔案的權限
  2. chdir : int chdir(const char *path);

    更改目錄
  3. chmod:int chmod{char *path, mode_t mode);

    更改某個檔案的權限
  4. chown : int chown(char *name, int uid, int gid);

    更改檔案所有人
  5. chroot: int chroot(char *pathname);

    将(邏輯)根目錄更改為路徑名
  6. getcwd: char *getcwd(char *buf, int size);

    擷取 CWD 的絕對路徑名
  7. mkdir: int mkdir(char *pathname, mode_t mode)

    建立目錄
  8. rmdir: int rmdir(char *pathname);

    移除目錄(必須為空)
  9. link: int link(char *oldpath, char *newpath);

    将新檔案名硬連結到舊檔案名
  10. unlink: int unlink(char *pathname);

    減少檔案的連結數;如呆連結數達到 0, 則删除檔案
  11. symlink: int sym1ink(char *o1dpath, char *newpath);

    為檔案建立一個符号連結
  12. rename: int rename(char *o1dpath, char *newpath);

    更改檔案名稱
  13. utime: int utime(char *pathname, struct utimebuf *time)

    更改檔案的訪間和修改時間
  1. mount: int mount(char *specialfile, char •mountDir);

    将檔案系統添加到挂載點目錄上
  2. urnount: int umount(char *dir);

    分離挂載的檔案系統
  3. mknod: int mknod(char *path, int mode, int device);

    建立特殊檔案

stat

: 擷取檔案狀态資訊

open

: 打開一個檔案進行讀、寫、追加

close

: 關閉打開的檔案描述符

read

: 讀取打開的檔案描述符

write

: 寫入打開的檔案描述符

lseek

: 重新定位檔案描述符的讀/寫偏移量

dup

: 将檔案描述符複制到可用的最小描述符編号中

dup2

: 将oldfd複制到newfd中,如果newfd己打開,先将其關閉

link

: 将新檔案硬連結到舊檔案

unlink

: 取消某個檔案的連結;如果檔案連結數為0,則删除檔案int unlink(char *pathname)

symlink

: 建立一個符号連結

readlink

: 讀取符号連結檔案的内容

umask

: 設定檔案建立掩碼;檔案權限為(mask& -umask)