บทที่ 5 · File System & Protection ออก

ชีท file and protection(4_1) หน้า 106–117 (12 หน้า) — อาจารย์เปิดในคลิปนาที 23:54–28:50 และวาดรูปใน Paint เพิ่ม

🗣 อาจารย์พูดไปเรื่องสุดท้าย file กับระบบความปลอดภัยนะครับ ก็ให้รู้อย่างน้อย minimum ก็ต้องรู้ว่ามีสิทธิ์ มี file property มีอะไรบ้าง มีชื่อ file, ตำแหน่ง pointer ที่ชี้ไปยังตำแหน่งใน hard disk แล้วก็ขนาด แล้วก็สิทธิ์ในการเข้าถึง มี 3 สิทธิ์ 3 level ก็คือ เขียน อ่าน แล้วก็ execute … 3 user group คือ เจ้าของไฟล์ กลุ่มที่เจ้าของไฟล์ set ไว้ แล้วก็บุคคลทั่วไป คล้ายๆ กับ share file ใน Google Drive
🎯 เรียนจบบทนี้ต้องทำได้ 1) บอก file property ได้
2) อธิบายสิทธิ์ r/w/x × owner/group/others และแปลงเป็นเลข 3 บิตได้
3) อธิบายระบบ secure ด้วย state transition ได้
4) รู้โครงสร้าง directory, access method และอ่าน access matrix ได้

5.1 พื้นฐานของระบบไฟล์

🤔 ไฟล์คืออะไร

File = ข้อมูลที่ถูกเก็บไว้ในหน่วยความจำสำรองแบบมีชื่อเรียก เพื่อให้ผู้ใช้และโปรแกรมเรียกใช้ได้ภายหลัง ส่วน OS ทำหน้าที่ซ่อนรายละเอียดของดิสก์ (บล็อก, track) ให้เราเห็นเป็นแค่ "ไฟล์ชื่อนี้"

⚙️ ข้อมูลซ้อนกันเป็นชั้นๆ (รูป 4.1.A) — ตัวอย่างข้อมูลพนักงาน

Field    : code001   |   Mr. Sombat Tanee   |   5000        ← ข้อมูลทีละช่อง
Record   : code001 : Mr. Sombat Tanee : 5000                ← 1 แถว = 1 คน
File     : เรคคอร์ดของพนักงานทุกคน (หลายแถว)
Database : หลายไฟล์ที่เชื่อมกัน (ไฟล์พนักงาน + ไฟล์แผนก + ไฟล์เงินเดือน)

Layered file system (ล่าง → บน)

[5] Application programs      โปรแกรมผู้ใช้
[4] Logical file system       directory structure, symbolic file name
[3] File-organization module  รู้จักไฟล์และบล็อก แปลงเป็น address ของบล็อก
[2] Basic file system         อ่าน/เขียนบล็อกตามตำแหน่งกายภาพ เช่น drive1, cylinder 70, surface 2, sector 5
[1] I/O control               device driver + interrupt handler
    Devices

⚙️ ทำไมต้องแบ่งเป็นชั้น และทำงานยังไง

แต่ละชั้นทำงานของตัวเองแล้วส่งต่อให้ชั้นล่าง จึงแก้หรือเปลี่ยนชั้นหนึ่งได้โดยไม่กระทบชั้นอื่น (เช่น เปลี่ยนรุ่นดิสก์ก็แก้แค่ device driver) ลองดูว่าคำสั่ง "อ่านไฟล์ report.txt" ไหลผ่านชั้นต่างๆ อย่างไร:

  1. Application: โปรแกรมสั่ง read("report.txt")
  2. Logical file system: ดู directory ว่าไฟล์ชื่อนี้มีอยู่ไหม มีสิทธิ์อ่านไหม และข้อมูลของไฟล์อยู่ตรงไหน
  3. File-organization module: แปลงว่า "byte ที่ 0–4095 ของไฟล์" อยู่บล็อกเลขอะไร บนดิสก์
  4. Basic file system: สั่งอ่านบล็อกนั้นตามตำแหน่งกายภาพ (drive, cylinder, surface, sector)
  5. I/O control: device driver สั่งงานฮาร์ดแวร์จริง และรับ interrupt เมื่ออ่านเสร็จ

File operations: create, write, read, delete, reset (ชี้กลับต้นไฟล์) + open, close, seek, attribute, rename, append

เกทไหม? ลองตอบ
ชั้นไหนของ layered file system ที่มี device driver และติดต่อกับฮาร์ดแวร์โดยตรง
I/O control คือชั้นล่างสุด (ชั้นที่ 1) มี device driver และ interrupt handler

5.2 Access methods

🤔 Access method คืออะไร

คือวิธีเข้าถึงข้อมูลข้างในไฟล์ ซึ่งมี 3 แบบ

  • Sequential = อ่านเรียงจากต้นไปท้ายทีละส่วน เหมือนเทปคาสเซ็ต อยากฟังเพลงที่ 5 ต้องกรอผ่านเพลง 1–4 ก่อน ระบบจำ "ตำแหน่งปัจจุบัน" (current position) ไว้ อ่านทีไรก็ขยับไปข้างหน้า
  • Direct = กระโดดไปบล็อกที่ต้องการได้ทันที เหมือนเลือกเพลงจากเพลย์ลิสต์ (ดิสก์ทำได้ เพราะทุกบล็อกมีเลข)
  • ISAM = มีสารบัญซ้อนสารบัญ เหมือนหนังสือเล่มหนา ดูสารบัญหลัก → สารบัญย่อย → หน้าที่ต้องการ แล้วค่อยไล่อ่านตามลำดับในหน้านั้น
เกทไหม? ลองตอบ
กระโดดไปอ่านข้อมูลบล็อกที่ 50 ของไฟล์ได้ทันทีโดยไม่ผ่านบล็อก 0–49 คือ access แบบใด
direct access ทำงานแบบดิสก์ ทุกบล็อกมีเลข จึงกระโดดไปได้เลย ส่วน sequential ต้องไล่ตามลำดับแบบเทป

5.3 File property (ข้อมูลใน directory) ★

🤔 File property คืออะไร

คือข้อมูลเกี่ยวกับไฟล์ (ไม่ใช่เนื้อหาในไฟล์) ที่ OS เก็บไว้ใน directory เช่น ชื่อ อยู่ตรงไหนบนดิสก์ ใหญ่เท่าไร ใครทำอะไรได้บ้าง เหมือนข้อมูลที่เห็นเมื่อคลิกขวาที่ไฟล์แล้วกด Properties

Propertyความหมาย
file nameชื่อไฟล์ + นามสกุล เช่น .exe/.com (รันได้), .txt (ข้อความ), .obj (object file)
file typeประเภท เช่น binary, text (สัมพันธ์กับนามสกุล)
locationpointer ไปยังอุปกรณ์และตำแหน่งบนดิสก์ (volume, cylinder, track, block number)
sizeขนาด (byte, word, block)
current positionpointer ตำแหน่งที่กำลังอ่าน/เขียน
protectionสิทธิ์: read only, read and write, execute
time and dateวันเวลาที่สร้าง/แก้ไขล่าสุด

Directory operations: search, create file, delete file, list directory, back up

เกทไหม? ลองตอบ
ข้อใดไม่ใช่ file property ที่เก็บใน directory
file property คือข้อมูลเกี่ยวกับไฟล์ ไม่ใช่เนื้อหาข้างในไฟล์

5.4 โครงสร้าง directory

🤔 Directory คืออะไร ทำไมต้องมีหลายแบบ

Directory (หรือโฟลเดอร์) = สมุดรายชื่อไฟล์ ที่จดว่ามีไฟล์อะไรบ้าง และ property ของแต่ละไฟล์ ปัญหาคือ เมื่อมีไฟล์เยอะและมีผู้ใช้หลายคน จะจัดยังไงให้หาง่าย และชื่อไม่ชนกัน จึงมีโครงสร้างหลายแบบ ไล่จากง่ายไปยืดหยุ่น:

  1. Single-level = ลิ้นชักเดียวใส่ทุกไฟล์ของทุกคน (ชื่อชนกันง่าย)
  2. Two-level = แต่ละคนมีลิ้นชักของตัวเอง (MFD = ตู้รวม, UFD = ลิ้นชักของแต่ละคน)
  3. Tree = โฟลเดอร์ซ้อนโฟลเดอร์ได้ไม่จำกัด (แบบที่เราใช้ใน Windows/Mac)
  4. Acyclic graph = tree ที่ให้แชร์ไฟล์/โฟลเดอร์เดียวกันได้จากหลายที่ (เหมือน shortcut) แต่ห้ามวน
  5. General graph = ลิงก์วนกลับได้ (มี cycle) จึงต้องระวังการค้นหาวนไม่จบ

Path = เส้นทางไปหาไฟล์: absolute เริ่มจาก root เสมอ (เช่น /root/spell/mail/prt/first) ส่วน relative เริ่มจากโฟลเดอร์ที่เรากำลังอยู่ (ถ้าอยู่ /root/spell/mail → prt/first)

แบบลักษณะข้อจำกัด / จุดสำคัญ
1. Single-levelชั้นเดียว ทุกไฟล์อยู่รวมกันชื่อไฟล์ห้ามซ้ำทั้งระบบ ซึ่งยากเมื่อมีผู้ใช้หลายคน
2. Two-levelMFD (รายชื่อผู้ใช้) → UFD (ไฟล์ของแต่ละคน)ถ้ามีไฟล์มากก็ยังต้องระวังชื่อซ้ำใน UFD ตัวเอง
3. Treeroot + subdirectory อ้างไฟล์ด้วย path nameabsolute = ไล่จาก root เช่น /root/spell/mail/prt/first ส่วน relative = ไล่จาก working directory เช่น อยู่ /root/spell/mail → prt/first
4. Acyclic graphแชร์ไฟล์/subdirectory ได้ (link, symbolic link)ไม่มี cycle
5. General graphมี cycle ได้ท่องแล้วอาจวนไม่จบ (infinite loop) จึงใช้ garbage collection (mark ไฟล์ที่เข้าถึงได้ ส่วนที่เหลือคืนเป็น free space) ซึ่งเสียเวลา
Q1รูป 4.1.H ถ้า working directory คือ /program/p1 จะเขียน relative path ของไฟล์ p11_2 อย่างไร
p11/p11_2 (absolute = /program/p1/p11/p11_2)

5.5 สิทธิ์ไฟล์: 3 สิทธิ์ × 3 กลุ่ม (3 bit) ★

🗣 อาจารย์พูดสิทธิ์ของ file ไปทบทวนครับ สิทธิ์ของ file 3 level … owner แล้วก็ group แล้วก็ other บุคคลทั่วไปครับ แต่ละ user ก็จะมีสิทธิ์ 3 อย่าง ซึ่งเราสามารถ set ผ่าน bit ได้เป็น 3 bit ไปดูเอาเองนะครับอยู่ในหนังสือ
💡 เข้าใจง่ายๆ: แชร์ไฟล์ใน Google Drive (อาจารย์ยกตัวอย่างนี้เอง)เจ้าของ (owner) ทำได้ทุกอย่าง, คนที่เราแชร์ให้ (group) อาจแก้ได้หรือดูได้อย่างเดียว, คนทั่วไปที่มีลิงก์ (others) อาจดูได้หรือเข้าไม่ได้เลย Unix/Linux ทำแบบเดียวกันด้วย 3 บิตต่อกลุ่ม

🤔 rwx คืออะไร

ระบบ Unix/Linux กำหนดสิทธิ์ของไฟล์เป็น 3 กลุ่มผู้ใช้ × 3 สิทธิ์

  • กลุ่มผู้ใช้: owner (เจ้าของไฟล์) · group (กลุ่มที่เจ้าของกำหนด) · others (คนอื่นทั้งหมด หรือ universe ในชีท)
  • สิทธิ์: r = read อ่าน · w = write เขียน/แก้ · x = execute รัน
  • แต่ละสิทธิ์คือ 1 บิต (มี = 1, ไม่มี = 0) กลุ่มหนึ่งจึงใช้ 3 บิต และทั้งไฟล์ใช้ 9 บิต

⚙️ แปลงเป็นเลข 3 หลักทีละขั้น (ตัวอย่าง rwxr-xr--)

  1. แบ่งเป็น 3 กลุ่ม กลุ่มละ 3 ตัว: rwx | r-x | r--
  2. เปลี่ยนเป็นบิต (มี = 1, ขีด = 0): 111 | 101 | 100
  3. แปลงแต่ละกลุ่มเป็นเลข (r = 4, w = 2, x = 1): 4+2+1 = 7 | 4+0+1 = 5 | 4+0+0 = 4
  4. เอามาเรียงกัน → 754 (คำสั่ง chmod 754 ไฟล์)
r = 4 (อ่าน)   w = 2 (เขียน)   x = 1 (execute)
แต่ละกลุ่มรวมเลขกัน → ได้เลข 3 หลัก: owner | group | others

rwx r-x r--  = (4+2+1)(4+0+1)(4+0+0) = 754
rw- r-- ---  = 640   (owner อ่าน/เขียน, group อ่าน, others ไม่ได้อะไร)
chmod 750 file  → rwx r-x ---
Q2rwxr-xr-- เขียนเป็นเลขฐาน 8 ได้เท่าไร
7 (rwx) 5 (r-x) 4 (r--) = 754
Q3ให้เจ้าของอ่าน/เขียน/รันได้, กลุ่มอ่าน/รันได้, คนอื่นทำอะไรไม่ได้ ต้องตั้งเลขอะไร
rwx r-x --- = 750
Q4644 หมายถึงอะไร
6 = rw- (4+2), 4 = r-- ดังนั้น 644 = rw- r-- r--

5.6 นิยามของระบบที่ secure (state machine) ★

🗣 อาจารย์พูด (วาดใน Paint)นิยามของระบบที่ secure คืออะไร ก็คือ transition ของ state มันไม่ไปยัง non-secure … automata … สถานะ S0 S1 S2 เกิดเหตุการณ์ string a b ก็ transition วนอยู่ในนี้ ถ้ามันวนอยู่ใน secure state ก็ถือว่าระบบมันผ่าน cyber security … OS หรือตัวจัดการส่วนอื่นมันผิดพลาด มันก็จะเกิด transition ที่เราไม่พึงประสงค์ เช่นส่งโทรจันมาทำให้เกิดการ backdoor ออกไปยัง non-secure … พอรู้ปุ๊บก็ปิด transition … คือนิยามด้วย finite state machine

🤔 State machine (finite state machine / automata) คืออะไร

คือแบบจำลองของระบบที่ "ตอนนี้อยู่ในสถานะหนึ่ง" แล้วจะเปลี่ยนสถานะเมื่อเกิดเหตุการณ์ (input) ประกอบด้วย:

  • State (สถานะ) = วงกลม เช่น S0, S1, S2
  • Input / event = สิ่งที่เกิดขึ้น เช่น a, b
  • Transition = ลูกศรที่บอกว่า "อยู่ที่ state นี้ แล้วเกิด input นี้ จะไปที่ state ไหน" เช่น S0 -a-> S1

🔍 ตัวอย่างใกล้ตัว: ไฟจราจร

state = {แดง, เขียว, เหลือง}, input = "หมดเวลา" → แดง -หมดเวลา-> เขียว -หมดเวลา-> เหลือง -หมดเวลา-> แดง วนอยู่แค่ 3 state นี้ ถ้าวันหนึ่งไฟเสียแล้วกลายเป็น "เขียวทั้งสองทาง" ก็คือหลุดไป state อันตราย

⚙️ ใช้นิยามความปลอดภัยยังไง

  1. แบ่ง state เป็น secure set (สถานะที่ปลอดภัย) กับ non-secure
  2. ระบบ secure เมื่อทุก transitionที่ออกจาก secure state พาไปได้แค่ secure state ไม่ว่า input จะเป็นอะไร ระบบจึงวนอยู่ใน secure set เสมอ
  3. ถ้ามี transition ใดพาออกไป non-secure (เช่น ช่องโหว่ / trojan / backdoor) ระบบไม่ secure และวิธีแก้คือปิด transition นั้น (patch)
💡 เข้าใจง่ายๆ: ห้องในบ้านที่ปิดประตูหมด state = ห้อง, transition = ประตูที่เปิดเมื่อเกิดเหตุการณ์ (input a, b) ระบบจะ secure ก็ต่อเมื่อประตูทุกบานจากห้องที่ปลอดภัยพาไปได้แค่ห้องที่ปลอดภัย
ถ้ามีประตูลับ (ช่องโหว่ / backdoor / trojan) ที่พาออกไปนอกบ้านได้ ระบบก็ไม่ secure และวิธีแก้คือปิดประตูนั้น (patch)
📝 เขียนตอบแบบนี้
มองระบบเป็น finite state machine: แบ่ง state เป็น secure set กับ non-secure
ระบบจะ secure เมื่อทุก transition (ทุก input/เหตุการณ์) ที่ออกจาก secure state
พาไปได้แค่ secure state เท่านั้น ระบบจึงวนอยู่ใน secure set เสมอ
ถ้า OS ผิดพลาดหรือมีช่องโหว่ (เช่น trojan ทำ backdoor) จะมี transition ไป non-secure
ต้องปิด transition หรือเหตุการณ์ที่ trigger นั้น (patch)
เกทไหม? ลองตอบ
จากเครื่องมือด้านบน (transition S0 -a-> S1, S1 -a-> S1, S1 -b-> S2, S2 -a-> S0, S2 -b-> S3) เริ่มที่ S0 แล้วป้อน a a b จะจบที่ state ใด
S0 -a-> S1 -a-> S1 -b-> S2 (ยังอยู่ใน secure set)

5.7 Domain of protection และ access matrix

🤔 Domain และ access matrix คืออะไร

  • Object = สิ่งที่ต้องป้องกัน ทั้งฮาร์ดแวร์ (CPU, printer, disk) และซอฟต์แวร์ (file, program, semaphore)
  • Access right = การกระทำที่ทำกับ object ได้ เช่น read, write, execute, print
  • Domain = ชุดของสิทธิ์ หรือ "บทบาท" เช่น domain ของนักศึกษา กับ domain ของแอดมิน ซึ่งเขียนเป็นคู่ <object, สิทธิ์> ส่วน process ทำงานอยู่ใน domain ใดก็ได้สิทธิ์ของ domain นั้น
  • Access matrix = ตารางรวมทุกอย่าง: แถว = domain, คอลัมน์ = object ช่องที่ตัดกันคือสิทธิ์ เช่น ช่อง (D3, F3) = execute แปลว่า process ใน D3 รัน F3 ได้
  • Switch (dynamic protection) = เปลี่ยนไปอยู่อีก domain ได้ (คล้ายการใช้ sudo หรือสลับบัญชี) แล้วได้สิทธิ์ของ domain ใหม่
⚠️ สังเกตตารางในรูป 4.2.B กับ 4.2.C ในชีทไม่เหมือนกันทุกช่อง (เช่น ใน 4.2.B D2 อ่าน F3 ได้ แต่ใน 4.2.C ไม่ได้) ตอบตามตารางที่โจทย์ให้มาเสมอ
Q5ตามรูป 4.2.C โปรเซสใน D2 ถ้า switch ไป D3 จะทำอะไรได้เพิ่ม
แถว D3 = F2: read, F3: execute (ชีทยกตัวอย่างข้อนี้เอง)
Q6ตามรูป 4.2.C D1 switch ไปโดเมนใดได้บ้าง
แถว D1 มี switch ใต้คอลัมน์ D2 และ D4