โครงสร้างไดเรกทอรี (Linux Directory Structure) ตามมาตรฐาน FHS (Filesystem Hierarchy Standard) ระบบ Linux จะจัดเก็บไฟล์ประเภทต่างๆ แยกตามหน้าที่ของมันอย่างชัดเจน โดยทุกอย่างจะแตกกิ่งก้านออกมาจาก Root Directory (/)

นี่คือรายละเอียดเจาะลึกของแต่ละ Path (โฟลเดอร์) สำคัญใน Linux ว่าใช้เก็บไฟล์อะไรบ้างครับ:
📁 1. กลุ่มระบบพื้นฐาน (System Core)
/(Root): จุดเริ่มต้นของทุกสิ่งใน Linux ทุกโฟลเดอร์และอุปกรณ์ทั้งหมด (รวมถึงไดรฟ์อื่นๆ) ต้องมาเชื่อมต่อ (Mount) อยู่ภายใต้ไดเรกทอรีนี้/boot: เก็บไฟล์ที่จำเป็นในการบูตเครื่อง เช่น Linux Kernel, รหัสควบคุมการบูต (GRUB) และไฟล์ Initial RAM Disk (initrd)/etc: ย่อมาจาก Editable Text Configuration เป็นที่เก็บไฟล์ตั้งค่า (Configuration) ของระบบและโปรแกรมทั้งหมด ไฟล์ในนี้มักเป็นข้อความธรรมดา (Text File) ที่ผู้ดูแลระบบสามารถเปิดแก้ไขได้ เช่น ตั้งค่าเน็ตเวิร์ก หรือรหัสผ่าน
⚙️ 2. กลุ่มคำสั่งและโปรแกรมปฏิบัติการ (Binaries)
/bin: ย่อมาจาก User Binaries เก็บคำสั่งพื้นฐานของระบบที่จำเป็นต้องใช้ตอนบูตเครื่อง หรือตอนเข้าโหมดกู้คืนระบบ เช่นls,cp,mv,ping(ผู้ใช้ทุกคนรวมถึงกูรูและมือใหม่สามารถเรียกใช้ได้)/sbin: ย่อมาจาก System Binaries เก็บคำสั่งสำหรับผู้ดูแลระบบ (Root/Admin) ใช้ในการตั้งค่าระบบ ซ่อมแซม หรือบำรุงรักษา เช่นiptables,reboot,fdisk(ผู้ใช้ทั่วไปมักจะไม่มีสิทธิ์รันคำสั่งในนี้โดยตรง)/usr: ย่อมาจาก Universal System Resources (หรือ User System Resources) เป็นที่เก็บโปรแกรมและไฟล์ส่วนใหญ่ที่ผู้ใช้ติดตั้งเพิ่ม ภายในจะมีโครงสร้างย่อยคล้ายตัว Root เอง เช่น:/usr/bin: โปรแกรมทั่วไปที่ผู้ใช้ติดตั้งเพิ่ม (เช่น python, curl, git)/usr/sbin: โปรแกรมสำหรับ Admin ที่ติดตั้งเพิ่ม/usr/lib: ไลบรารีซอฟต์แวร์สำหรับโปรแกรมใน/usr/bin
💾 3. กลุ่มข้อมูลผู้ใช้และพื้นที่ทำงาน (User Data & Runtime)
/home: พื้นที่เก็บไฟล์ส่วนตัวของผู้ใช้งานทั่วไป (ยกเว้น Root) แต่ละคนจะได้โฟลเดอร์ย่อยเป็นชื่อตัวเอง เช่น/home/somchaiข้างในจะเก็บเอกสาร เพลง ภาพ รวมถึงไฟล์ตั้งค่าส่วนตัวของโปรแกรมต่างๆ/root: โฟลเดอร์ส่วนตัวของผู้ดูแลระบบสูงสุด (Superuser/Root) ถูกแยกออกมาจาก/homeเพื่อความปลอดภัยและเพื่อให้ระบบยังเข้าถึงบัญชี Root ได้แม้ดิสก์ส่วนของ/homeจะมีปัญหา/tmp: ย่อมาจาก Temporary Files ใช้เก็บไฟล์ชั่วคราวที่ระบบหรือโปรแกรมสร้างขึ้นระหว่างทำงาน ข้อมูลในนี้มักจะถูกลบโดยอัตโนมัติเมื่อรีสตาร์ทเครื่อง
🔄 4. กลุ่มข้อมูลที่มีการเปลี่ยนแปลงและไฟล์ระบบเสมือน (Dynamic & Virtual)
/var: ย่อมาจาก Variable Files เก็บไฟล์ที่ขนาดเปลี่ยนแปลงตลอดเวลาระหว่างที่ระบบรันอยู่ เช่น:/var/log: ไฟล์บันทึกเหตุการณ์ของระบบ (Log files) สำคัญมากในการเช็กอาการเสีย/var/mail: กล่องจดหมายอีเมลของระบบ/var/www: พื้นที่เก็บไฟล์เว็บไซต์สำหรับ Web Server (เช่น Apache, Nginx)
/dev: ย่อมาจาก Device Files เก็บไฟล์ที่เป็นตัวแทนของอุปกรณ์ฮาร์ดแวร์ในเครื่อง (ตามแนวคิด Everything is a file) เช่น/dev/sdaคือฮาร์ดดิสก์ลูกแรก,/dev/urandomตัวสร้างเลขสุ่ม/proc&/sys: ไดเรกทอรีเสมือน (Virtual Filesystem) ไม่ได้กินพื้นที่บนดิสก์จริง แต่ถูกสร้างขึ้นใน RAM โดย Kernel เพื่อรายงานสถานะของระบบ เช่น ข้อมูล CPU, หน่วยความจำ หรือสถานะของโปรเซสที่กำลังทำงานอยู่
🔌 5. กลุ่มอุปกรณ์เชื่อมต่อภายนอก (Mount Points)
/media: จุดเชื่อมต่ออัตโนมัติสำหรับอุปกรณ์ภายนอกที่ถอดเสียบได้ (Removable Media) เช่น เมื่อเสียบ USB Flash Drive หรือแผ่น CD ระบบจะสร้างโฟลเดอร์ในนี้ให้อัตโนมัติ (เช่น/media/usb)/mnt: ย่อมาจาก Mount เป็นพื้นที่ว่างสำหรับให้ผู้ดูแลระบบทำการเชื่อมต่อ (Mount) ดิสก์หรือระบบไฟล์อื่นเข้ามาด้วยตัวเองแบบชั่วคราว หรือจัดการไดรฟ์เน็ตเวิร์ก
ทั้ง 4 โดเรกทอรีนี้ (/bin, /sbin, /usr/bin, /usr/sbin) เป็นที่เก็บ ไฟล์คำสั่งหรือโปรแกรมที่สั่งรันได้ (Executable Binaries) เหมือนกัน แต่ถูกแยกออกจากกันตาม “ใครเป็นคนใช้” และ “ความจำเป็นต่อระบบ” ครับ
สรุปความแตกต่างแบบเข้าใจง่ายๆ ได้ด้วยตารางนี้เลยครับ:
| Path | ใครเป็นคนใช้? | จำเป็นตอนกู้คืนระบบ (Single-user mode) ไหม? | ตัวอย่างคำสั่งข้างใน |
|---|---|---|---|
/bin | ทุกคน (ผู้ใช้ทั่วไป + Admin) | จำเป็นมาก (ระบบขาดไม่ได้) | ls, cp, mv, cat, mkdir |
/sbin | Admin / Root เท่านั้น | จำเป็นมาก (ใช้กู้ระบบ/ตั้งค่าฮาร์ดแวร์) | fdisk, reboot, iptables, fsck |
/usr/bin | ทุกคน (ผู้ใช้ทั่วไป + Admin) | ไม่จำเป็น (เป็นโปรแกรมใช้งานทั่วไป) | python, git, curl, vim, gcc |
/usr/sbin | Admin / Root เท่านั้น | ไม่จำเป็น (เป็นบริการของระบบ) | sshd, nginx, cron, chroot |
เจาะลึกความหมายของแต่ละตัว
1. /bin (User Binaries – พื้นฐานของทุกคน)
- แนวคิด: เก็บคำสั่งพื้นฐานที่สุดที่ทุกคนในเครื่องต้องใช้
- ความสำคัญ: คำสั่งในนี้จะถูกใช้ตั้งแต่ตอนที่ระบบเริ่มบูต หรือในเวลาที่ระบบเกิดพังแล้วต้องเข้าโหมดกู้คืน (Single-user mode) แม้จะยังไม่ได้เชื่อมต่อฮาร์ดดิสก์ลูกอื่นๆ คำสั่งในนี้ก็ต้องพร้อมทำงานเสมอ
2. /sbin (System Binaries – เครื่องมือช่างสำหรับ Admin)
- แนวคิด: คล้ายกับ
/binแต่จำกัดไว้สำหรับผู้ดูแลระบบ (Root) เท่านั้น ตัวอักษร “s” ย่อมาจาก System - ความสำคัญ: เก็บคำสั่งที่ใช้จัดการระบบในระดับลึก เช่น การจัดพาร์ติชันดิสก์ การเปิด-ปิดเครื่อง หรือการกู้คืนระบบไฟล์ หากผู้ใช้ทั่วไปสั่งรันคำสั่งในนี้ มักจะขึ้นเตือนว่าไม่มีสิทธิ์ (Permission denied) หรือหาคำสั่งไม่เจอ
3. /usr/bin (User Programs – แอปพลิเคชันทั่วไป)
- แนวคิด: เก็บโปรแกรมและคำสั่งทั่วไปที่ผู้ใช้ติดตั้งเพิ่มเข้ามาทีหลัง หรือโปรแกรมที่ไม่เกี่ยวข้องกับการบูตระบบ
- ความสำคัญ: เป็นโฟลเดอร์ที่ใหญ่มากและมีจำนวนคำสั่งเยอะที่สุดในเครื่อง เพราะพวกเครื่องมือพัฒนาซอฟต์แวร์ เกม หรือโปรแกรมอรรถประโยชน์ต่างๆ (Utilities) ที่ไม่ได้คอขาดบาดตายต่อการบูตเครื่องจะมาอยู่ที่นี่ทั้งหมด
4. /usr/sbin (Non-essential System Binaries – บริการเบื้องหลังของ Admin)
- แนวคิด: เก็บคำสั่งและโปรแกรมสำหรับผู้ดูแลระบบ (Admin) ที่ไม่จำเป็นต้องใช้ตอนบูตเครื่อง
- ความสำคัญ: ส่วนใหญ่โปรแกรมในนี้จะเป็น Daemon (บริการที่ทำงานเบื้องหลัง) หรือโปรแกรมฝั่งเซิร์ฟเวอร์ เช่น ตัวจัดการระบบเน็ตเวิร์กขั้นสูง, เว็บเซิร์ฟเวอร์, หรือบริการแชร์ไฟล์ ซึ่งจะถูกเรียกใช้หลังจากระบบหลักบูตเสร็จสมบูรณ์แล้วเท่านั้น
💡 เกร็ดความรู้เพิ่มเติมสำหรับ Linux ยุคใหม่ (Modern Linux):
ใน Linux แจกจ่ายยุคใหม่ๆ (เช่น Ubuntu, Fedora, CentOS รุ่นใหม่ๆ) ได้ปรับโครงสร้างที่เรียกว่า “UsrMerge” เพื่อความเรียบง่าย โดยระบบจะรวมโฟลเดอร์ /bin ไปไว้ที่ /usr/bin และรวม /sbin ไปไว้ที่ /usr/sbin แล้วสร้างลิงก์ทางลัด (Symlink) เอาไว้ ทำให้ในปัจจุบัน ไม่ว่าจะเรียกจาก Path ไหน ก็จะวิ่งไปที่เดียวกันครับ
ถ้าคุณอยากลองใช้งานคำสั่งใน Path เหล่านี้ เลือกหัวข้อที่สนใจต่อได้เลยครับ:
ขอดู คำสั่งเช็กว่าคำสั่งที่เราใช้ อยู่ใน Path ไหน (เช่น using which หรือ whereis )อธิบายวิธี เพิ่ม Path ใหม่เข้าในระบบ ($PATH variable) เวลาติดตั้งโปรแกรมเอง