แชร์ไฟล์ระหว่าง Linux Server อย่างไรให้เรียบง่าย
ในงานดูแลระบบจริง เรามักเจอสถานการณ์ที่ต้องการแชร์โฟลเดอร์จาก Server เครื่องหนึ่งให้เครื่อง Linux อื่น ๆ ใช้งานร่วมกัน เช่น แชร์ไฟล์ backup, แชร์ directory สำหรับ web server หลายเครื่อง, แชร์ไฟล์ ISO ภายใน Lab หรือใช้เป็น storage กลางสำหรับเครื่อง virtual machine
วิธีที่นิยมมากในโลก Linux คือ NFS หรือ Network File System เพราะตั้งค่าง่าย ทำงานได้ดีในระบบ Linux/Unix และเหมาะกับเครือข่ายภายในองค์กรหรือห้อง Lab
บทความนี้จะพาทำแบบ Hands-on ตั้งแต่ติดตั้ง NFS Server บน Ubuntu Server 26.04 LTS ไปจนถึงการ mount จากเครื่อง Client และทดสอบเขียนไฟล์จริง
NFS คืออะไร
NFS (Network File System) คือระบบแชร์ไฟล์ผ่านเครือข่ายที่ทำให้เครื่อง Client สามารถ mount โฟลเดอร์จาก Server แล้วใช้งานเหมือนเป็นโฟลเดอร์ภายในเครื่องของตนเอง
ตัวอย่างการใช้งานที่พบบ่อย
-
แชร์โฟลเดอร์
/dataให้ Server หลายเครื่องใช้งานร่วมกัน -
ทำพื้นที่กลางสำหรับ Backup
-
ใช้ใน Lab Linux, DevOps, Docker, Kubernetes หรือ Proxmox
-
แชร์ไฟล์ระหว่าง Ubuntu Server, Rocky Linux และเครื่อง Linux อื่น ๆ
ในบทความนี้เราจะใช้แพ็กเกจหลักคือ
-
nfs-kernel-serverสำหรับฝั่ง Server -
nfs-commonสำหรับฝั่ง Client
พื้นฐานที่จำเป็นก่อนเริ่ม
บทความนี้ทดสอบกับสภาพแวดล้อมตัวอย่างดังนี้
| รายการ | ค่าในตัวอย่าง |
|---|---|
| OS ฝั่ง Server | Ubuntu Server 26.04 LTS |
| OS ฝั่ง Client | Ubuntu Server 26.04 LTS หรือ Linux อื่น ๆ |
| IP Address ของ NFS Server | 192.168.56.10 |
| IP Address ของ Client | 192.168.56.20 |
| Network ที่อนุญาต | 192.168.56.0/24 |
| Shared Directory | /srv/nfs/share |
| Package Server | nfs-kernel-server |
| Package Client | nfs-common |
แนะนำ Screenshot: ภาพ topology เครือข่าย Server ↔ Client พร้อมระบุ IP Address
ก่อนเริ่มให้ตรวจสอบระบบก่อน
lsb_release -a
ตรวจสอบ kernel
uname -r
ตรวจสอบ version ของ package ที่จะติดตั้ง
apt policy nfs-kernel-server nfs-common
หมายเหตุ: version ของแพ็กเกจอาจเปลี่ยนตามช่วงเวลาที่ Ubuntu repository มีการ update ดังนั้นควรใช้
apt policyตรวจสอบบนเครื่องจริงทุกครั้ง
ภาพรวม Lab ที่จะทำ
โครงสร้างที่เราจะสร้างคือ

แนวคิดคือ Server เปิดโฟลเดอร์ /srv/nfs/share ให้ Client ในวง 192.168.56.0/24 เข้ามาใช้งานแบบ read/write ได้
ขั้นตอนที่ 1: อัปเดตระบบบน NFS Server
เริ่มจากฝั่ง Server ก่อน
sudo apt update
sudo apt upgrade -y
คำอธิบาย
-
apt updateใช้ดึงรายการ package ล่าสุดจาก repository -
apt upgrade -yใช้อัปเดต package ที่ติดตั้งอยู่แล้ว -
ตัวเลือก
-yคือยืนยันการติดตั้งอัตโนมัติ
⚠️ ข้อควรระวัง: ถ้าเป็น Production Server ควรตรวจสอบรายการ package ก่อน upgrade และวางแผน maintenance window ให้เหมาะสม
ขั้นตอนที่ 2: ติดตั้ง NFS Server
ติดตั้ง package สำหรับ NFS Server
sudo apt install -y nfs-kernel-server
ตรวจสอบสถานะ service
sudo systemctl status nfs-server --no-pager
ถ้า service ยังไม่ทำงาน ให้สั่ง start และ enable
sudo systemctl enable --now nfs-server
คำอธิบาย:
-
enableทำให้ service เริ่มทำงานอัตโนมัติหลัง reboot -
--nowสั่งเริ่ม service ทันที -
nfs-serverคือ systemd service หลักของ NFS Server
แนะนำ Screenshot: หน้าจอ
systemctl status nfs-serverที่แสดงสถานะactive (exited)หรือactive
ขั้นตอนที่ 3: สร้าง Directory สำหรับแชร์ไฟล์
สร้างโฟลเดอร์ที่ต้องการแชร์
sudo mkdir -p /srv/nfs/share
กำหนดสิทธิ์เบื้องต้นให้ directory นี้เขียนไฟล์ได้
sudo chown nobody:nogroup /srv/nfs/share
sudo chmod 777 /srv/nfs/share
คำอธิบาย:
-
/srv/nfs/shareคือ directory ที่จะ export ผ่าน NFS -
nobody:nogroupใช้เป็น user/group กลางในกรณีที่ไม่ได้ map user แบบละเอียด -
chmod 777ใช้เพื่อให้ทดสอบเขียนไฟล์ได้ง่ายใน Lab
⚠️ ข้อควรระวัง: chmod 777 เหมาะสำหรับ Lab หรือการทดสอบเท่านั้น ไม่ควรใช้กับ Production โดยไม่จำกัดสิทธิ์เพิ่มเติม เพราะทุกคนที่เข้าถึง share ได้จะอ่านและเขียนไฟล์ได้
สร้างไฟล์ทดสอบใน share
echo "Hello from NFS Server" | sudo tee /srv/nfs/share/readme.txt
ตรวจสอบไฟล์
ls -lah /srv/nfs/share
ขั้นตอนที่ 4: ตั้งค่า /etc/exports
ไฟล์ /etc/exports คือไฟล์กำหนดว่า Server จะแชร์ directory ใด ให้ใคร และด้วย permission แบบใด
เปิดไฟล์
sudo nano /etc/exports
เพิ่มบรรทัดนี้เข้าไป
/srv/nfs/share 192.168.56.0/24(rw,sync,no_subtree_check)
ความหมายของ option:
| Option | ความหมาย |
|---|---|
rw |
อนุญาตให้อ่านและเขียน |
sync |
เขียนข้อมูลลง disk แบบ synchronous ลดความเสี่ยงข้อมูลสูญหาย |
no_subtree_check |
ลดปัญหาการตรวจสอบ path ย่อย เหมาะกับการ share directory ทั่วไป |
สิ่งสำคัญคือ ห้ามเว้นวรรคระหว่าง IP/Subnet กับวงเล็บ option
ถูกต้อง
192.168.56.0/24(rw,sync,no_subtree_check)
ไม่ควรเขียนแบบนี้
192.168.56.0/24 (rw,sync,no_subtree_check)
เพราะอาจทำให้ NFS ตีความผิดได้
ขั้นตอนที่ 5: Apply ค่า Export
หลังแก้ไข /etc/exports แล้ว ให้สั่ง export ใหม่
sudo exportfs -rav
คำอธิบาย
-
-rre-export รายการใหม่ -
-aapply ทุก export ที่กำหนดไว้ -
-vแสดงผลแบบละเอียด
ตรวจสอบรายการ export
sudo exportfs -v
ตัวอย่างผลลัพธ์ที่ควรเห็น
/srv/nfs/share
192.168.56.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
Restart service อีกครั้ง
sudo systemctl restart nfs-server
ขั้นตอนที่ 6: เปิด Firewall ด้วย UFW
ถ้า Server ใช้ UFW ให้เปิดเฉพาะวง network ที่อนุญาตเท่านั้น
sudo ufw allow from 192.168.56.0/24 to any port nfs
ตรวจสอบสถานะ firewall
sudo ufw status verbose
ตัวอย่างผลลัพธ์
2049 ALLOW IN 192.168.56.0/24
คำอธิบาย:
-
NFS ใช้ port หลักคือ
2049 -
คำสั่งนี้อนุญาตเฉพาะเครื่องในวง
192.168.56.0/24 -
ไม่ควรเปิด NFS ให้ทุก IP โดยไม่จำเป็น
⚠️ ข้อควรระวัง: ไม่แนะนำให้เปิด NFS ออก Internet โดยตรง ควรใช้เฉพาะ private network, VPN หรือ network ที่ควบคุมได้เท่านั้น
ขั้นตอนที่ 7: ติดตั้ง NFS Client
ไปที่เครื่อง Client แล้วติดตั้ง package สำหรับ mount NFS
sudo apt update
sudo apt install -y nfs-common
สร้าง mount point
sudo mkdir -p /mnt/nfs-share
ทดสอบ mount จาก NFS Server
sudo mount -t nfs 192.168.56.10:/srv/nfs/share /mnt/nfs-share
ตรวจสอบว่า mount สำเร็จหรือไม่
df -h | grep nfs
หรือใช้คำสั่ง
mount | grep nfs
ตรวจสอบไฟล์จาก Server
ls -lah /mnt/nfs-share
cat /mnt/nfs-share/readme.txt
ถ้าเห็นข้อความ Hello from NFS Server แปลว่า Client สามารถอ่านไฟล์จาก NFS Server ได้แล้ว
แนะนำ Screenshot: หน้าจอ Client ที่ mount แล้วเห็นไฟล์
readme.txt
ขั้นตอนที่ 8: ทดสอบเขียนไฟล์จาก Client
บนเครื่อง Client ให้ลองสร้างไฟล์ใหม่
echo "Created from NFS Client" | sudo tee /mnt/nfs-share/client-test.txt
ตรวจสอบไฟล์
ls -lah /mnt/nfs-share
cat /mnt/nfs-share/client-test.txt
กลับไปที่เครื่อง Server แล้วตรวจสอบว่าไฟล์ถูกสร้างจริงหรือไม่
ls -lah /srv/nfs/share
cat /srv/nfs/share/client-test.txt
ถ้าเห็นไฟล์ client-test.txt ทั้งฝั่ง Client และ Server แสดงว่า NFS Share ทำงานเรียบร้อย
ขั้นตอนที่ 9: ตั้งค่า Mount อัตโนมัติด้วย /etc/fstab
ถ้าต้องการให้ Client mount NFS อัตโนมัติหลัง reboot ให้แก้ไขไฟล์ /etc/fstab
บนเครื่อง Client เปิดไฟล์
sudo nano /etc/fstab
เพิ่มบรรทัดนี้
192.168.56.10:/srv/nfs/share /mnt/nfs-share nfs defaults,_netdev 0 0
คำอธิบาย
| ค่า | ความหมาย |
|---|---|
192.168.56.10:/srv/nfs/share |
path ของ NFS Server |
/mnt/nfs-share |
mount point ฝั่ง Client |
nfs |
filesystem type |
defaults |
ใช้ค่า mount พื้นฐาน |
_netdev |
บอกระบบว่าเป็น network filesystem ควรรอ network ก่อน mount |
ทดสอบ fstab โดยไม่ต้อง reboot
sudo umount /mnt/nfs-share
sudo mount -a
ตรวจสอบอีกครั้ง
df -h | grep nfs
⚠️ ข้อควรระวัง: ก่อน reboot ควรใช้ sudo mount -a ทดสอบเสมอ ถ้า /etc/fstab ผิด อาจทำให้ระบบ boot ช้าหรือค้างรอ mount ได้
ขั้นตอนที่ 10: ใช้ NFSv4.2 แบบระบุ version
ถ้าต้องการระบุ version ของ NFS ให้ชัดเจน สามารถ mount แบบนี้ได้
sudo mount -t nfs -o vers=4.2 192.168.56.10:/srv/nfs/share /mnt/nfs-share
ตรวจสอบ version ที่ใช้งาน
nfsstat -m
ตัวอย่างผลลัพธ์อาจเห็น option เช่น
vers=4.2
ถ้า Client หรือ Server ไม่รองรับ NFSv4.2 ให้ลองลดเป็น vers=4.1 หรือ vers=4
sudo mount -t nfs -o vers=4.1 192.168.56.10:/srv/nfs/share /mnt/nfs-share
ตัวอย่าง Export แบบ Read-only
ถ้าต้องการแชร์ไฟล์ให้อ่านอย่างเดียว เช่น โฟลเดอร์ ISO หรือเอกสารกลาง ให้ตั้งค่าแบบนี้
/srv/nfs/share 192.168.56.0/24(ro,sync,no_subtree_check)
จากนั้น apply ค่าใหม่
sudo exportfs -rav
sudo systemctl restart nfs-server
คำอธิบาย
-
roคือ read-only -
Client จะอ่านไฟล์ได้ แต่เขียนหรือลบไฟล์ไม่ได้
ตัวอย่าง Export ให้เฉพาะ Client เครื่องเดียว
ถ้าต้องการให้เฉพาะเครื่อง 192.168.56.20 เข้าใช้งานได้ ให้แก้เป็น
/srv/nfs/share 192.168.56.20(rw,sync,no_subtree_check)
Apply ค่าใหม่
sudo exportfs -rav
รูปแบบนี้เหมาะกว่าในงาน Production เพราะจำกัดสิทธิ์แคบกว่าเปิดทั้ง subnet
เรื่อง Permission ที่ควรรู้
ปัญหาที่พบบ่อยของ NFS คือ “mount ได้ แต่เขียนไฟล์ไม่ได้” ซึ่งมักเกิดจาก permission และ ownership ของ directory ฝั่ง Server
ตรวจสอบ permission บน Server
ls -ld /srv/nfs/share
ถ้าต้องการให้ user เฉพาะกลุ่มเขียนได้ ควรสร้าง group แยก เช่น nfsusers
sudo groupadd nfsusers
sudo chgrp nfsusers /srv/nfs/share
sudo chmod 2775 /srv/nfs/share
คำอธิบาย
-
chgrp nfsusersเปลี่ยน group owner -
chmod 2775ให้สมาชิก group เขียนได้ และไฟล์ใหม่จะสืบทอด group เดิม -
วิธีนี้ปลอดภัยกว่า
chmod 777
แต่ต้องจัดการ UID/GID ของ user ให้สอดคล้องกันระหว่าง Server และ Client ด้วย โดยเฉพาะระบบที่มีหลายเครื่อง
คำสั่ง Verify ที่ควรรู้
ตรวจสอบ service
sudo systemctl status nfs-server --no-pager
ตรวจสอบ export
sudo exportfs -v
ตรวจสอบ port NFS
ss -tulpn | grep 2049
ตรวจสอบ mount บน Client
mount | grep nfs
ตรวจสอบพื้นที่ disk
df -h
ตรวจสอบ NFS mount option
nfsstat -m
ตรวจสอบ log
journalctl -u nfs-server --no-pager -n 50
ปัญหาที่พบบ่อย
1. Client mount ไม่ได้
อาการ
mount.nfs: Connection timed out
แนวทางตรวจสอบ
ping 192.168.56.10
ตรวจสอบ firewall บน Server
sudo ufw status verbose
ตรวจสอบว่า NFS ทำงานหรือไม่
sudo systemctl status nfs-server --no-pager
2. Permission denied
อาการ
mount.nfs: access denied by server while mounting
ตรวจสอบ /etc/exports
cat /etc/exports
ตรวจสอบว่า subnet หรือ IP ตรงกับ Client หรือไม่
ip addr
Apply export ใหม่
sudo exportfs -rav
3. Mount ได้ แต่เขียนไฟล์ไม่ได้
ตรวจสอบ permission ของ directory ฝั่ง Server
ls -ld /srv/nfs/share
ทดสอบแบบ Lab
sudo chmod 777 /srv/nfs/share
ถ้าเขียนได้หลังเปลี่ยน permission แปลว่าปัญหาอยู่ที่ permission/ownership ไม่ใช่ NFS service
⚠️ ข้อควรระวัง: หลังทดสอบเสร็จควรปรับ permission ให้เหมาะสม ไม่ควรปล่อย 777 ในระบบใช้งานจริง
4. แก้ /etc/exports แล้วแต่ค่าไม่เปลี่ยน
ให้สั่ง re-export ใหม่
sudo exportfs -rav
แล้วตรวจสอบ
sudo exportfs -v
ถ้ายังไม่เปลี่ยน ให้ restart service
sudo systemctl restart nfs-server
แนวทาง Security สำหรับ NFS Server
สำหรับระบบจริง ควรพิจารณาแนวทางต่อไปนี้
-
เปิด NFS เฉพาะ private network เท่านั้น
-
จำกัดสิทธิ์ด้วย IP Address หรือ subnet ให้แคบที่สุด
-
ใช้
roหากไม่จำเป็นต้องเขียนไฟล์ -
หลีกเลี่ยง
no_root_squashถ้าไม่มีเหตุผลจำเป็น -
ใช้ firewall ควบคุม port
-
วาง NFS Server หลัง VPN หรือ network ภายใน
-
ตรวจสอบ permission ของ directory อย่างสม่ำเสมอ
-
สำรองข้อมูล share directory เป็นประจำ
โดยเฉพาะ option no_root_squash ควรระวังมาก เพราะจะทำให้ root จากฝั่ง Client มีสิทธิ์แบบ root บนไฟล์ที่แชร์ ซึ่งอาจเป็นความเสี่ยงด้านความปลอดภัย
สรุป
NFS Server เป็นเครื่องมือสำคัญสำหรับการแชร์ไฟล์ในระบบ Linux โดยเฉพาะในงาน Server, Lab, DevOps และระบบภายในองค์กร จุดเด่นคือใช้งานง่าย ไม่ซับซ้อน และทำงานร่วมกับ Linux Client ได้ดี
ในบทความนี้เราได้ติดตั้ง nfs-kernel-server บน Ubuntu Server 26.04, สร้าง shared directory, ตั้งค่า /etc/exports, เปิด firewall, mount จาก Client และทดสอบอ่านเขียนไฟล์จริงเรียบร้อยแล้ว
สิ่งที่ควรจำคือ NFS ไม่ใช่แค่ติดตั้งแล้วจบ แต่ต้องดูเรื่อง network, permission, firewall และ security ควบคู่กันเสมอ โดยเฉพาะระบบ Production ที่มีข้อมูลสำคัญ
—
Write by Dr.Arnut Ruttanatirakul
SysAdmin Knowledge
https://www.sysadmin.in.th
June 14, 2026
