ลองเล่น Samba บน FC4

วันก่อนพี่ที่ office ให้ผม mount path จาก Linux FC4 มาไว้บน Windows ปัญหาคือ Windows ที่อยู่บน VMware บน Linux เครื่อง ดังกล่าว Mount ได้ปกติ แต่พอผมจะ mount มาใช้ที่เครื่องผม(ทั้งที่เป็น Windows&Ubuntu) กลับทำไม่ได้ ไม่รู้มันติดไร วันนี้ก็เลยต้องเอากลับมาลองที่บ้าน ก็เริ่มกันตั้งแต่ Install FC4 บน VMware หลังจากนั้นก็นั่ง config ต่อ

แต่ก่อนที่เราจะไปนั่ง Config กันผมว่าเราทำความรู้จักการทำงานของ Samba ก่อนดีกว่า Samba จะทำงานอยู่บน Protocol SMB และ CIFS ไอ้ SMB มันจะดีตรงที่จะมีระบบ Lock file & record ไฟล์ต่างๆ เพื่อป้องกันการแก้ไขไฟล์ซ้ำกัน ส่วน CIFS นั้น พัฒนาต่อจาก SMB โดย CIFS จะมีการ Lock file แบบ Op-lock (Opportunistic Lock) ไอ้ Op-lock นี้มันจะดีกว่าตรงที่เวลามีคนใช้ไฟล์เดียวกัน มันจะสั่งให้คนแรกหยุดใช้งานไฟล์ดังกล่าวแล้วให้ส่งไฟล์ดังกล่าวกลับ server แล้วไอ้คนที่สองค่อยใช้แทน

การทำงานของ Samba จะทำงานอยู่บน Port 137,138 และ 139

  • 137 Name Service : SMB จะใช้ port นี้ในการถามชื่อเครื่องคอมพิวเตอร์ด้วย การรับส่ง package UDP (User Datagram Protocol) (โดยไม่ต้องใช้ IP เข้ามาช่วย)
  • 138 Datagram Service : SMB จะใช้ port นี้ในการ Browse หาชื่อเครื่อง
  • 139 Session Service : SMB จะใช้ Port นี้ในการรับส่งข้อมูลระหว่างเครื่อง ด้วย โปรโตคอล TCP ซึ่ีงแน่นอนว่ามีการรับรองการส่ง ข้อมูลว่าไปถึงปลายทางแน่นอน

อ่าหลังจากรู้จักกันคร่าวๆ ก็มาเริ่มการติดตั้งกันเลยดีกว่า

ทำการตรวจสอบ package ด้วย rpm -qi samba

[root@aoddy ~]# rpm -qi samba
Name : samba Relocations: (not relocatable)
Version : 3.0.14a Vendor: Red Hat, Inc.
Release : 2 Build Date: Tue 03 May 2005 02:49:58 AM ICT
Install Date: Wed 26 Sep 2007 11:42:53 PM ICT Build Host: decompose.build.redhat.com
Group : System Environment/Daemons Source RPM: samba-3.0.14a-2.src.rpm
Size : 25453103 License: GNU GPL Version 2
Signature : DSA/SHA1, Sat 21 May 2005 12:43:59 AM ICT, Key ID b44269d04f2a6fd2
Packager : Red Hat, Inc.
URL : http://www.samba.org/
Summary : The Samba SMB server.
Description :
Samba is the protocol by which a lot of PC-related machines share
files, printers, and other information (such as lists of available
files and printers). The Windows NT, OS/2, and Linux operating systems
support this natively, and add-on packages can enable the same thing
for DOS, Windows, VMS, UNIX of all kinds, MVS, and more. This package
provides an SMB server that can be used to provide network services to
SMB (sometimes called “Lan Manager”) clients. Samba uses NetBIOS over
TCP/IP (NetBT) protocols and does NOT need the NetBEUI (Microsoft Raw
NetBIOS frame) protocol.

แฮะๆ เผอิญผมเอา package ลงไว้ตั้งแต่ตอน install OS ก็เลยสบาย หลังจากนั้นก็มานั่ง config file กัน โดยไฟล์ที่ผม จะ config จะอยู่ที่ /etc/samba/smb.conf

[root@aoddy samba]# pwd
/etc/samba
[root@aoddy samba]# cat smb.conf
[global]
workgroup = MYGROUP
server string = Samba Server
guest account = nobody
log file = /var/log/samba/%m.log
max log size = 50
security = share
#socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
#[homes]
# comment = Home Directories
# browseable = no
# writable = yes
[Share]
comment = Public stuff
path = /dsbuauto
public = yes
writable = yes
#[printers]
# comment = All Printers
# path = /var/spool/samba
# browseable = no
# guest ok = no
# writable = no
# printable = yes

หลังจากนั้นก็ไป create directory ที่ /dsbuauto แล้วก็ chmod 777 ให้ด้วย พอทำเสร็จแล้วก็ลอง test config ด้วยคำสั่ง testparm

[root@aoddy samba]# mkdir /dsbuauto/
[root@aoddy samba]# chmod 777 /dsbuauto/
[root@aoddy samba]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section “[Share]”
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
workgroup = MYGROUP
server string = Samba Server
security = SHARE
log file = /var/log/samba/%m.log
max log size = 50
dns proxy = No
[Share]
comment = Public stuff
path = /dsbuauto
read only = No
guest ok = Yes

ถ้ามันถูกต้องก็จะได้อย่างที่เห็นครับ หลังจากนั้น ก็ทำการ start service ของ samba ด้วยคำสั่ง ดังนี้

[root@aoddy samba]# service smb restart
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]

อ่า คราวนี้ผมก็จะ mount ไอ้ path /dsbuauto ซึ่งตอนผม share ผมตั้งชื่อเป็น share เพราะฉะนั้นเวลาผม mount มาใช้งานที่เครื่อง ubuntu ก็จัดการทำดังนี้

# sudo mount -t cifs //192.168.28.132/share /media/samba/ -o user=nobody

ก็น่าจะใช้งานได้นะครับ ลองเล่นดูครับ จบข่าว….