ติดตั้ง Samba File Server บน Ubuntu 26.04

ติดตั้ง Samba File Server บน Ubuntu 26.04

ในองค์กรขนาดเล็ก ห้องแล็บ หรือห้องเรียนคอมพิวเตอร์ มักต้องมี “พื้นที่กลาง” สำหรับเก็บไฟล์ เช่น เอกสารสอน งานนักศึกษา ไฟล์ติดตั้งโปรแกรม หรือไฟล์สำรองข้อมูลจากเครื่อง 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 รูปแบบ

  1. Public Share  โฟลเดอร์กลางแบบไม่ต้องใส่รหัสผ่าน
  2. Private Share  โฟลเดอร์สำหรับผู้ใช้ที่มีบัญชี Samba เท่านั้น
  3. 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
ตัวอย่างผลลัพธ์ที่ต้องจดไว้คือ IP เช่น
192.168.1.50
บน Windows จะเข้าใช้งานผ่าน
\\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 PCMap 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 ที่แนะนำสำหรับบทความ

  1. หน้าจอ lsb_release -a แสดง Ubuntu 26.04
  2. หน้าจอ systemctl status smbd
  3. ไฟล์ /etc/samba/smb.conf หลังเพิ่ม share
  4. หน้าจอ testparm ขึ้น Loaded services file OK
  5. Windows File Explorer เข้า \\192.168.1.50\public
  6. Map Network Drive เป็น Drive Z:
  7. ทดสอบสร้างไฟล์จาก 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