檔案系統應該是最常接觸的地方了,chmod 權限控制滿實用的可以學一下 : )
2015.1.15 初版
2017.8.25 二版
一、File System Interface
檔案系統是一套實現了資料的儲存、分級組織、存取和取得等操作的抽象資料類型(Abstract data type)。
檔案系統使用檔案和樹形目錄的抽象邏輯概念代替了硬碟和光碟等物理裝置使用資料塊的概念,用戶使用檔案系統來儲存資料不必關心資料實際儲存在硬碟(或者光碟)的位址為多少的資料塊上,只需要記住這個檔案的所屬目錄和檔案名。
一個好的檔案系統須具有:
- 良好的空間管理
- 有效的資料存取
- 好的容錯能力
完整的檔案系統包含三個部分:
- 檔案
- 目錄結構:檔案分門別類地儲存於硬碟
- 分割:將一個實體硬碟分成數個邏輯上的硬碟
檔案屬性 (Metadata):檔案儲存於硬碟中,系統同時儲存跟檔案相關的資料稱為檔案屬性值
- 檔案名稱:給人看
- ID:給機器看
- 型態:以辨識不同資料型態的檔案,包含目錄、裝置、普通檔案
- 位置:指向硬碟實體儲存位置的指標
- 大小:儲存於硬碟中的儲存空間
- 保護:安全上的考量
- 擁有者
- 日期資訊:檔案建立、修改的日期時間
檔案操作:使用者透過系統呼叫來完成檔案存取。
- 建立檔案 fopen()
- 寫入檔案 (附加於檔後、覆蓋檔案) fwrite()
- 讀取檔案 fread()
- 重置擋案 fseek()
- 刪除檔案 unlink():標記為刪除,資料還在。
- 屬性更改 ftrun():更改檔名、權限及擁有者。
[issue] Binary or Text?
Textmode :
- fopen("abc.txt","r+t");
- Translate Ctrl-Z into EOF, Translate \r\n into \n.
- e.g. .html
Binary mode :
- fopen("xyz.mp3","rb");
- Raw input
- e.g. .doc
二、Directory issue
Directory Structure
Acyclic-Graph Directories
Aliasing
Two methods for using alias in UNIX
- Soft link:ln -s,檔案名稱代換(f1 是檔名代換到 f2)
- Hard link:ln,分不出來誰是本尊(連結直接發生在硬碟)
Three problems with aliasing
- Duplicated files:happened when Backup
- Dangling pointer:happened when Delete
- Cycle
掛載:File System Mounting
- A file system must be mounted before it can be accessed
- A unmounted file system is mounted at a mount point
- In disk partition : to check the filesystem type and to find the superblock
- In filesystem naming space : to specify the mounting point.
- e.g. mount –t ext4 /users /dev/hda1
三、File sharing
Unix file system (UFS) implements :
- Writes to an open file visible immediately simultaneously to other users of the same open file
- Sharing file pointer to allow multiple users to read and write concurrently
- ex : 訂票系統 (互斥)
AFS has session semantics :
- Writes only visible to sessions starting after the file is closed
- ex : 報名表
Immutable(不可改變) semantic :
- ex: 公告文件
File sharing protection, Types of access :
- Read
- Write
- Execute
- Append (regards to disk space)
- Delete
- List
控制用戶對檔案的權限
chmod 是一條在 Unix 系統中用於控制用戶對檔案的權限的命令,由 9 個權限位來控制,每三位為一組,分別是 User, Group, Other,而每組內皆能控制 RWX (讀、寫、執行,r = 4, w = 2, x = 1, - = 0) 。例如:
- 所有者的權限用數字表達:屬主的那三個權限位的數字加起來的總和。如rwx ,也就是4+2+1 ,應該是7。
- 用戶組的權限用數字表達:屬組的那個權限位數字的相加的總和。如rw- ,也就是4+2+0 ,應該是6。
- 其它用戶的權限數字表達:其它用戶權限位的數字相加的總和。如r-x ,也就是4+0+1 ,應該是5。
- 則可以輸入以下指令 : chmod 765 myfile
References
wiki - 檔案系統
https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F
wiki - chmod
https://zh.wikipedia.org/wiki/Chmod
Abraham Silberschatz, Peter B. Galvin, Greg Gagne - Operating System Concepts 8th Edition
https://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/0470128720
聯合大學陳士杰教授課程教材
http://web.nuu.edu.tw/~sjchen/
洪逸 - 作業系統金寶典
http://m.sanmin.com.tw/product/index/001601057