เอามาจาก ThaiLinuxCafe – debian : ติดตั้ง samba อย่างง่าย
samba เป็นแพกเกจที่ใช้ทำไฟล์เซิร์ฟเวอร์ที่มีชื่อเสียงของลินุกซ์ สามารถใช้งานทดแทน Netware หรือ WindowsNT ได้ดีพอควร
โครงร่างคือ
- ชื่อเซิร์ฟเวอร์
- server1 : 192.168.1.5
- แชร์ที่อ่านได้อย่างเดียว
- //server1/app จะให้อยู่ที่ /samba/app (เพื่อเร่งความเร็วและป้องกันไวรัส)
- แชร์ที่อ่าน/เขียนได้
- //server1/data จะให้อยู่ที่ /samba/data
- ชื่อ Workgroup
- smbdomain
- กรุ๊ปที่มีสิทธิ์ใช้งาน
- smbgroup ให้มี gid=1001
- ผู้ใช้ที่มีสิทธิ์ใช้งาน
- user1, user2, user3, … ให้มี uid=1101, 1102, 1103, …
- ผู้ควบคุมระบบ
- smb-admin ให้มี uid=1100
- เครื่องลูกข่าย
- client01, client02, … ให้มีไอพีเป็น 192.168.1.101, 192.168.1.102, …
เริ่มด้วย
ที่เซิร์ฟเวอร์
ติดตั้ง samba
# aptitude install samba Workgroup/Domain Name: <<<--- smbdomain Modify smb.conf to use WINS settings from DHCP? <<<--- No
เพิ่มกรุ๊ปในการใช้งาน samba
# groupadd -g 1001 smbgroup
สร้างสคริปต์ในการเพิ่มผู้ใช้ ให้มีรหัสผ่านเดียวกัน (passwd กับ smbpasswd) ตั้งชื่อว่า d.addsmb
# vi /usr/local/bin/d.smbadd #!/bin/bash if [ ! $3 ]; then echo "Usage: $0 USERNAME UID PASSWORD" exit 1; fi GROUPNAME="smbgroup" USERNAME=$1 USERID=$2 PASSWORD=$3 /usr/sbin/useradd -g $GROUPNAME -u $USERID -m $USERNAME echo "$USERNAME:$PASS1" | /usr/sbin/chpasswd (echo "$PASS1"; echo "$PASS1") | smbpasswd -a -s $USERNAME echo "User: $USERNAME , uid: $USERID added."
เวลาเพิ่มผู้ใช้ก็สั่ง
# d.smbadd user1 1101 USER1-PASSWORD ...
ทำไปจนครบผู้ใช้
เพิ่มผู้ใช้ของ samba ที่เป็นผู้คุมระบบ ให้ชื่อว่า smb-admin
# d.smbadd smb-admin 1100 SMB-ADMIN-PASSWORD
สร้างไดเรกทอรีสำหรับแชร์ไฟล์ ตั้งชื่อว่า /samba
# mkdir -p /samba/app # mkdir -p /samba/data
เปลี่ยนสิทธิ์การใช้งานไดเรกทอรี samba
# chown -R smb-admin:smbgroup /samba # chmod 0750 /samba/app # chmod 0770 /samba/data
ตั้งค่าการใช้งานให้ samba
# vi /etc/samba/smb.conf
เฉพาะค่าที่เราจะเปลี่ยนแปลง
[global]
workgroup = smbdomain
security = user
unix charset = utf8
display charset = utf8
lock spin time = 15 ;; for dbase/foxpro record lock
lock spin count = 30 ;; for dbase/foxpro record lock
unix extensions = yes
[app]
comment = Application Dir
path = /samba/app
valid users = @smbgroup
admin users = smb-admin
public = no
create mask = 0750
directory mask = 0750
fake oplocks = yes ;; increase speed
writable = no
[data]
comment = Data Dir
path = /samba/data
valid users = @smbgroup
public = no
create mask = 0770
directory mask = 0770
writable = yes
แก้ไขไฟล์ hosts ให้เครื่องลูกข่ายติดต่อได้
# vi /etc/hosts 192.168.1.1 server1.example.com server1 192.168.1.101 client01.example.com client01 192.168.1.102 client02.example.com client02 192.168.1.103 client03.example.com client03 ...
เริ่มการทำงาน samba ใหม่
# /etc/init.d/samba restart
———-
ส่วนของเครื่องลูกข่าย
เรียกใช้งานจากลินุกซ์
ติดตั้ง smbclient
# aptitude install smbclient smbfs
สร้างจุดเมานท์
# mkdir -p /mnt/app # mkdir -p /mnt/data
แก้ไขข้อมูล hosts ให้เหมือนกับที่เครื่อง server1
# vi /etc/hosts 192.168.1.1 server1.example.com server1 192.168.1.101 client01.example.com client01 192.168.1.102 client02.example.com client02 192.168.1.103 client03.example.com client03 ...
ทำการเมานท์
- การเมานท์แบบ cifs จะทำให้การแสดงชื่อไฟล์เป็นภาษาไทยได้อย่างถูกต้อง ล็อคเรคอร์ดได้ แต่ช้ามาก และข้อมูลถูกอ่านจากแคช ทำให้ไม่ค่อยเป็นข้อมูลปัจจุบันจริง ๆ
$ sudo mount -t cifs \ -o username=user1,password=PASSWORD,iocharset=utf8 \ //server1/app /mnt/app $ sudo mount -t cifs \ -o username=user1,password=PASSWORD,iocharset=utf8 \ //server1/data /mnt/data
- หรือเมานท์แบบ smbfs จะทำให้การทำงานเร็ว แต่ล็อคเรคอร์ดไม่ได้ และข้อมูลถูกอ่านจากการทำงานปัจจุบันจริง ๆ ทำให้ข้อมูลสดกว่า
$ sudo mkdir -p /mnt/smbfs/app $ sudo mkdir -p /mnt/smbfs/data $ sudo mount -t smbfs \ -o username=user1,password=PASSWORD,uid=1101,gid=1001 \ //server1/app /mnt/smbfs/app $ sudo mount -t smbfs \ -o username=user1,password=PASSWORD,uid=1101,gid=1001 \ //server1/data /mnt/smbfs/data
เราสามารถใช้งานไฟล์เซิร์ฟเวอร์ server1 ได้จากจุดเมานท์ /mnt/app และ /mnt/data ตามต้องการ (ถ้าจะเขียนลง /mnt/app ให้ใช้ชื่อเป็น smb-admin จึงจะสามารถเขียนได้)
*****
update 50-10-20
ตอนที่ทดลองนี้ cifs บนเดเบียน sid (samba-3.0.26a-1) แก้ปัญหาเรื่องแคชไม่ตรง และล๊อกเรคคอร์ดช้าได้แล้ว
โดยการแก้ไขไฟล์ smb.ini ในหมวด share ให้มีพารามิเตอร์คือ
[data]
...
strict locking = yes
oplocks = yes
level2 oplocks = no
...
และเมานต์ด้วยพารามิเตอร์ directio เช่น
$ sudo mount -t cifs //server1/data /mnt/data \ -o username=USER,password=PASSWORD,iocharset=utf8,directio
จะสามารถล๊อกเรคคอร์ดได้ตรงและแก้ปัญหาแคชไฟล์ได้แล้วครับ
*****
———-
เรียกใช้งานจาก Windows98/Me
ที่เครื่อง client01 ติดตั้งโดย
Start -> Control Panel -> Network
[TAB] Configuration :
TCP/IP -> การ์ดไดรเวอร์ : Properties
[TAB] DNS Configuration :
Enable DNS
DNS Server Search Order : 192.168.1.5
Domain Suffix Search Order : server1.example.com
[TAB] IP Address
Specify an IP address : 192.168.1.101
Subnet Mask : 255.255.255.0
[TAB]Identification : Workgroup = smbdomain
เรียกใช้งานโดย
คลิกขวา Network Neighbourhood
Map Network Drive
Drive : I:
Path : \\server1\app
Re: ติดตั้ง samba แบบง่าย
สร้างสคริปต์ในการเพิ่มผู้ใช้ ให้มีรหัสผ่านเดียวกัน (passwd กับ smbpasswd) ตั้งชื่อว่า d.addsmb
# vi /usr/local/bin/d.addsmb
แต่เวลาเพิ่มผู้ใช้ก็สั่ง
# d.smbadd user1 1101 USER1-PASSWORD
ไม่ได้ครับ