ในองค์กรขนาดเล็ก ห้องแล็บ หรือห้องเรียนคอมพิวเตอร์ มักต้องมี “พื้นที่กลาง” สำหรับเก็บไฟล์ เช่น เอกสารสอน งานนักศึกษา ไฟล์ติดตั้งโปรแกรม หรือไฟล์สำรองข้อมูลจากเครื่อง Windows หลายเครื่อง
ทางเลือกที่ใช้งานง่ายและประหยัดที่สุดคือ Samba File Server เพราะสามารถแชร์ไฟล์จาก Linux Server ให้เครื่อง Windows, macOS และ Linux เข้าถึงผ่านโปรโตคอล SMB ได้โดยตรง
บทความนี้ทดสอบแนวทางบน Ubuntu Server 26.04 LTS ซึ่ง Canonical ระบุว่าเป็นรุ่น LTS ที่รองรับถึงเมษายน 2031 และในรุ่นนี้ Samba ถูกอัปเดตเป็นสาย Samba 4.23 โดยมีจุดสำคัญคือ SMB3 Unix Extensions เปิดเป็นค่าเริ่มต้น และ NetBIOS ถูกปิดในไฟล์ smb.conf สำหรับการติดตั้งใหม่
บทความนี้จะทำอะไร
เราจะสร้าง File Server ด้วย Samba 3 รูปแบบ
- Public Share โฟลเดอร์กลางแบบไม่ต้องใส่รหัสผ่าน
- Private Share โฟลเดอร์สำหรับผู้ใช้ที่มีบัญชี Samba เท่านั้น
- Department Share— โฟลเดอร์ทีม ใช้สิทธิ์ผ่าน Linux group
แนวทางนี้เหมาะกับห้องเรียน แผนก IT ห้องแล็บ หรือสำนักงานขนาดเล็กที่ยังไม่ต้องการ Active Directory เต็มรูปแบบ
พื้นฐานที่จำเป็น
ใช้เครื่องทดสอบตามนี้
OS: Ubuntu Server 26.04 LTS
Role: Samba File Server
IP ตัวอย่าง: 192.168.1.50
Share Path: /srv/samba/
Client: Windows 10/11, macOS, Linux
# ตรวจสอบเวอร์ชัน Ubuntu
lsb_release -a
# ตรวจสอบ IP Address ของ Server
ip -br addr

192.168.1.50
\\192.168.1.50
หมายเหตุ: บน Ubuntu 26.04 การค้นหาเครื่องผ่านหน้า Network ของ Windows อาจไม่แสดงชื่อเครื่องอัตโนมัติเหมือนรุ่นเก่า เพราะ NetBIOS ถูกปิดเป็นค่าเริ่มต้นในการติดตั้งใหม่ของ Samba 4.23 ดังนั้นการเข้าผ่าน IP Address เป็นวิธีที่ตรงและเสถียรกว่า
ติดตั้ง Samba
Ubuntu Server documentation ระบุว่าการติดตั้ง Samba ใช้แพ็กเกจ samba และไฟล์คอนฟิกหลักอยู่ที่ /etc/samba/smb.conf
# อัปเดตรายการแพ็กเกจ
sudo apt update
# ติดตั้ง Samba และ smbclient สำหรับทดสอบจากฝั่ง Linux
sudo apt install samba smbclient -y
# ตรวจสอบสถานะ Samba daemon
systemctl status smbd --no-pager
# ตรวจสอบเวอร์ชัน Samba
smbd --version
Active: active (running)
สำรองไฟล์ smb.conf ก่อนแก้ไข
ไฟล์ smb.conf เป็นไฟล์หลักของ Samba โดย Samba ใช้ไฟล์นี้เก็บ runtime configuration สำหรับบริการต่าง ๆ ของชุด Samba
# สำรองไฟล์คอนฟิกเดิม เผื่อแก้ผิดสามารถย้อนกลับได้
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak.$(date +%F)
เปิดไฟล์เพื่อแก้ไข
sudo nano /etc/samba/smb.conf
ตั้งค่า Global Configuration
ค้นหาส่วน [global] แล้วปรับหรือเพิ่มค่าต่อไปนี้
[global]
workgroup = WORKGROUP
server string = Ubuntu 26.04 Samba File Server
security = user
# อนุญาต guest เฉพาะกรณี username ไม่มีอยู่จริง
# เหมาะสำหรับ Public Share
map to guest = Bad User
# ใช้ SMB2 ขึ้นไป ลดความเสี่ยงจาก SMB1
server min protocol = SMB2
# Log สำหรับตรวจสอบปัญหา
log file = /var/log/samba/log.%m
max log size = 1000
# Ubuntu 26.04 fresh install ปิด NetBIOS เป็นค่าเริ่มต้น
# แนะนำเข้าผ่าน \\IP-ADDRESS\share
disable netbios = yes
คำอธิบายสำคัญ:
security = user คือโหมดมาตรฐานที่ให้ผู้ใช้ล็อกอินด้วย username/password ก่อนเข้าถึง share ส่วน map to guest = Bad User ใช้รองรับ guest share โดย Samba จะ map username ที่ไม่มีอยู่จริงไปยัง guest account แทน ซึ่งตรงกับแนวทางที่ Samba documentation อธิบายไว้สำหรับ guest share
สำหรับ server min protocol = SMB2 เป็นการบังคับให้ client ใช้ SMB2 ขึ้นไป โดยเอกสาร Samba ระบุว่า server min protocol ใช้ควบคุม protocol ต่ำสุดที่ server ยอมให้ client ใช้งาน

สร้าง Public Share
Public Share เหมาะสำหรับไฟล์ที่ทุกคนใน LAN อ่าน/เขียนได้ เช่น ไฟล์แจกนักศึกษา ไฟล์ติดตั้งโปรแกรม หรือพื้นที่แลกเปลี่ยนไฟล์ชั่วคราว
สร้างโฟลเดอร์
# สร้างโฟลเดอร์ public share
sudo mkdir -p /srv/samba/public
# กำหนด owner เป็น nobody:nogroup สำหรับ guest access
sudo chown -R nobody:nogroup /srv/samba/public
# ให้ทุกคนอ่าน/เขียนในโฟลเดอร์นี้ได้
sudo chmod -R 0777 /srv/samba/public

⚠️ คำเตือน: chmod 0777 ใช้ได้กับ Public Share ใน LAN ที่เชื่อถือได้เท่านั้น ไม่ควรใช้กับเครื่องที่เปิดออก Internet หรือเครือข่ายที่ไม่ควบคุมผู้ใช้งาน
เพิ่ม share ต่อท้ายไฟล์ /etc/samba/smb.conf
[public]
comment = Public File Share
path = /srv/samba/public
browsable = yes
guest ok = yes
read only = no
create mask = 0666
directory mask = 0777
Ubuntu documentation ใช้แนวคิดเดียวกันคือกำหนด share section พร้อม path, browsable, guest ok, read only และ create mask สำหรับแชร์โฟลเดอร์ผ่าน Samba

สร้าง Private Share สำหรับผู้ใช้ที่มีรหัสผ่าน
กรณีนี้เหมาะกับอาจารย์ เจ้าหน้าที่ หรือผู้ดูแลระบบที่ต้องมีพื้นที่ส่วนตัว
สร้างผู้ใช้ Linux ก่อน เพราะ smbpasswd ต้องผูกกับ system account ที่มีอยู่แล้ว โดย Ubuntu tutorial ระบุว่า username ที่ใช้กับ Samba ต้องเป็น system account ก่อนจึงจะบันทึกได้
# สร้างผู้ใช้ชื่อ teacher1 โดยไม่เปิด password สำหรับ login Linux
sudo adduser --disabled-password --gecos "" teacher1
# ตั้งรหัสผ่าน Samba ให้ผู้ใช้ teacher1
sudo smbpasswd -a teacher1
# เปิดใช้งานบัญชี Samba
sudo smbpasswd -e teacher1

สร้างโฟลเดอร์ส่วนตัว
# สร้าง private share
sudo mkdir -p /srv/samba/private/teacher1
# ให้ teacher1 เป็นเจ้าของ
sudo chown -R teacher1:teacher1 /srv/samba/private/teacher1
# จำกัดสิทธิ์เฉพาะเจ้าของ
sudo chmod -R 0700 /srv/samba/private/teacher1

เพิ่ม share ต่อท้ายไฟล์ /etc/samba/smb.conf
[teacher1]
comment = Private Share for teacher1
path = /srv/samba/private/teacher1
browsable = no
read only = no
valid users = teacher1
create mask = 0600
directory mask = 0700
ค่า browsable = no ทำให้ share นี้ไม่แสดงในรายการ browse แต่ยังเข้าได้ตรง ๆ ผ่าน
\\192.168.1.50\teacher1

สร้าง Department Share ด้วย Group
กรณีนี้เหมาะกับโฟลเดอร์ของแผนก เช่น it, teacher, accounting, media
สร้าง group
# สร้าง group สำหรับทีม IT
sudo groupadd smb-it
สร้างผู้ใช้เพิ่ม
# สร้างผู้ใช้ itadmin1
sudo adduser --disabled-password --gecos "" itadmin1
# เพิ่มผู้ใช้เข้า group smb-it
sudo usermod -aG smb-it itadmin1
# ตั้งรหัสผ่าน Samba
sudo smbpasswd -a itadmin1
sudo smbpasswd -e itadmin1

สร้างโฟลเดอร์ทีม
# สร้างโฟลเดอร์ของทีม IT
sudo mkdir -p /srv/samba/departments/it
# กำหนด owner เป็น root และ group เป็น smb-it
sudo chown -R root:smb-it /srv/samba/departments/it
# 2770 = เจ้าของและ group อ่าน/เขียนได้, คนอื่นเข้าไม่ได้
# เลข 2 ด้านหน้าช่วยให้ไฟล์ใหม่ inherit group เดิม
sudo chmod -R 2770 /srv/samba/departments/it

เพิ่ม share
[it-share]
comment = IT Department Share
path = /srv/samba/departments/it
browsable = yes
read only = no
valid users = @smb-it
force group = smb-it
create mask = 0660
directory mask = 2770
force group ช่วยให้ไฟล์ที่สร้างผ่าน Samba อยู่ภายใต้ group เดียวกัน เหมาะกับงานแชร์ไฟล์ในทีม โดย Samba documentation อธิบายว่า force group ใช้กำหนด group เริ่มต้นสำหรับผู้ใช้ที่เชื่อมต่อเข้า share นั้น

ตรวจสอบ Syntax ของ smb.conf
ก่อน restart service ต้องตรวจสอบไฟล์คอนฟิกก่อนเสมอ
# ตรวจสอบ syntax ของ Samba config
testparm
ถ้าถูกต้องจะเห็นข้อความประมาณนี้
Loaded services file OK.

จากนั้น restart Samba
# Restart เฉพาะ smbd สำหรับ file sharing
sudo systemctl restart smbd
ตรวจสอบว่า service กลับมาทำงาน
systemctl status smbd --no-pager

เปิด Firewall ด้วย UFW
ถ้าเครื่องเปิด UFW อยู่ ต้องอนุญาต Samba
# ตรวจสอบสถานะ firewall
sudo ufw status
# อนุญาต Samba profile
sudo ufw allow Samba
# ตรวจสอบอีกครั้ง
sudo ufw status numbered
ไม่ควรปิด firewall ทั้งระบบ ถ้าเป็นเครื่องใช้งานจริง ให้เปิดเฉพาะบริการที่จำเป็นเท่านั้น
ทดสอบจาก Ubuntu Server เอง
ใช้ smbclient ตรวจสอบรายการ share
# ดูรายการ share ทั้งหมดบน localhost
smbclient -L localhost -N

ทดสอบเข้า Public Share
# เข้า public share แบบไม่ใช้รหัสผ่าน
smbclient //localhost/public -N
ภายใน prompt ของ smbclient ลองสร้างโฟลเดอร์
mkdir test-from-linux
ls
exit

ทดสอบ Private Share
# เข้า share ของ teacher1
smbclient //localhost/teacher1 -U teacher1

ทดสอบจาก Windows 10/11
เปิด File Explorer แล้วพิมพ์ที่ Address Bar
\\192.168.1.50\public

สำหรับ Private Share
\\192.168.1.50\teacher1
สำหรับ Department Share
\\192.168.1.50\it-share
เมื่อต้องใส่ username ให้ใช้รูปแบบนี้
teacher1
หรือถ้า Windows จำ credential เก่าไว้ ให้ใช้
192.168.1.50\teacher1
ถ้า Windows เคยจำรหัสผิด ให้ล้าง credential ด้วยคำสั่งใน Command Prompt
net use * /delete
จากนั้นลองเข้า share ใหม่อีกครั้ง
Map Network Drive บน Windows
คลิกขวา This PC → Map network drive
ตัวอย่าง
Drive: Z:
Folder: \\192.168.1.50\public
เลือก Reconnect at sign-in ถ้าต้องการให้เชื่อมต่ออัตโนมัติหลังเปิดเครื่อง
ทดสอบจาก Linux Client
ติดตั้ง client package
sudo apt update
sudo apt install smbclient cifs-utils -y
ดูรายการ share
smbclient -L //192.168.1.50 -U teacher1
Mount share แบบ manual
# สร้าง mount point
sudo mkdir -p /mnt/it-share
# mount Samba share
sudo mount -t cifs //192.168.1.50/it-share /mnt/it-share \
-o username=itadmin1,vers=3.0
ตรวจสอบ
df -h | grep it-share
ls -la /mnt/it-share
Unmount
sudo umount /mnt/it-share
โครงสร้าง smb.conf ตัวอย่างฉบับรวม
ตัวอย่างนี้ใช้เป็น baseline ได้เลย
[global]
workgroup = WORKGROUP
server string = Ubuntu 26.04 Samba File Server
security = user
map to guest = Bad User
server min protocol = SMB2
log file = /var/log/samba/log.%m
max log size = 1000
disable netbios = yes
[public]
comment = Public File Share
path = /srv/samba/public
browsable = yes
guest ok = yes
read only = no
create mask = 0666
directory mask = 0777
[teacher1]
comment = Private Share for teacher1
path = /srv/samba/private/teacher1
browsable = no
read only = no
valid users = teacher1
create mask = 0600
directory mask = 0700
[it-share]
comment = IT Department Share
path = /srv/samba/departments/it
browsable = yes
read only = no
valid users = @smb-it
force group = smb-it
create mask = 0660
directory mask = 2770
หลังแก้ไขทุกครั้ง
testparm
sudo systemctl restart smbd
การแก้ปัญหาที่พบบ่อย
1. Windows เข้าไม่ได้ ขึ้น Access Denied
ตรวจสอบสิทธิ์ Linux filesystem ก่อน
ls -ld /srv/samba/public
ls -ld /srv/samba/private/teacher1
ls -ld /srv/samba/departments/it
ตรวจสอบว่า user มีอยู่ใน Samba หรือไม่
sudo pdbedit -L
ตั้งรหัสผ่านใหม่
sudo smbpasswd teacher1
2. เห็น share แต่สร้างไฟล์ไม่ได้
ตรวจสอบ permission ของ directory
namei -l /srv/samba/departments/it
แก้สิทธิ์ group share
sudo chown -R root:smb-it /srv/samba/departments/it
sudo chmod -R 2770 /srv/samba/departments/it
3. Windows ไม่เห็นชื่อ Server ใน Network
บน Ubuntu 26.04 fresh install มีการปิด NetBIOS ใน smb.conf เป็นค่าเริ่มต้น และเครื่อง Windows รุ่นใหม่มักไม่พึ่ง SMB1/NetBIOS แบบเดิมแล้ว
วิธีที่แนะนำคือเข้าผ่าน IP โดยตรง
\\192.168.1.50\public
ถ้าต้องการให้เครื่อง Linux แสดงใน Windows Network view อาจติดตั้งบริการกลุ่ม WS-Discovery เช่น wsdd-server เพิ่มเติม โดยแพ็กเกจนี้ใช้ประกาศ Linux host ให้ Windows 7+ มองเห็นใน File Manager network browsing
# ติดตั้ง WS-Discovery daemon ถ้ามีใน repository ที่ใช้งาน
sudo apt install wsdd-server -y
# เปิดใช้งาน service
sudo systemctl enable --now wsdd-server
จากนั้นเปิด firewall เพิ่มเฉพาะกรณีใช้งาน WSD
sudo ufw allow 3702/udp
sudo ufw allow 5357/tcp
Screenshot ที่แนะนำสำหรับบทความ
- หน้าจอ
lsb_release -aแสดง Ubuntu 26.04 - หน้าจอ
systemctl status smbd - ไฟล์
/etc/samba/smb.confหลังเพิ่ม share - หน้าจอ
testparmขึ้นLoaded services file OK - Windows File Explorer เข้า
\\192.168.1.50\public - Map Network Drive เป็น Drive Z:
- ทดสอบสร้างไฟล์จาก Windows แล้วดูไฟล์บน Ubuntu
สรุป
Samba เป็นวิธีที่ง่ายและคุ้มค่าสำหรับทำ File Server บน Ubuntu Server 26.04 โดยสามารถเริ่มจาก Public Share สำหรับแลกไฟล์ทั่วไป แล้วค่อยเพิ่ม Private Share หรือ Department Share ตามสิทธิ์ของผู้ใช้จริง จุดที่ควรจำคือ Samba ไม่ได้ดูแค่ค่าใน smb.conf เท่านั้น แต่ยังต้องดู Linux filesystem permission ร่วมด้วยเสมอ
สำหรับ Ubuntu 26.04 ควรเข้าถึง share ผ่าน IP Address เช่น \\192.168.1.50\public เพื่อหลีกเลี่ยงปัญหา Network Discovery และควรใช้ SMB2 ขึ้นไปแทน SMB1 เพื่อความปลอดภัย
—
Write by Dr.Arnut Ruttanatirakul
SysAdmin Knowledge
https://www.sysadmin.in.th
June 10, 2026

