GIT – Samba là dịch vụ của hệ điều hành , chạy trên nền giao thức SMB (Server Message Block) cho phép chia sẻ file hệ thống, máy in với các máy chạy Win95, 98 hoặc NT. SMB là giao thức được các hệ điều hành của Microsoft sử dụng để chia sẻ dữ liệu qua mạng. 

Với Linux Samba cũng dựa vào giao thức SMB để viết ra một số tiến trình điển hình như smbd, nmbd, để “nói chuyện” với các hệ điều hành của Microsoft để người dùng có thể làm việc với máy Linux qua Network Neighborhood.

Cài đặt

Gói phần mềm Samba có thể lấy từ đĩa CD của hệ điều hành RedHat hoặc từ website www.samba.org. Gói Samba trên đĩa RedHat được đóng gói theo chuẩn ( Package Manager) và được lưu tại thư mục /media/Server/. Các bước cài đặt như sau:

# mount /dev/cdrom /media
# cd /media/Server
# rpm -Uvh samba-3.0.28-0.el5.8.i386.rpm
# rpm -Uvh samba-common-3.0.28-0.el5.8.i386.rpm

Cấu hình
File cấu hình chính của Samba là smb.conf được cất trong thư mục /etc/samba. Trong file này có hai kiểu chú thích được xác định bằng dấu (;) và (#) đặt ở đầu các dòng. Dấu (#) là dấu chú thích thực và bạn không thể bỏ dấu này đi được nhưng dấu (;) là dấu chú thích xác định thuộc tính ở hàng tương ứng có được chọn hay không, kiểu chú thích này có thể bỏ đi được.
Ví dụ trong file này có đoạn:

;       hosts allow = 127. 192.168.12. 192.168.13.

Nếu bỏ dấu (;) đi thì Samba sẽ cho phép các host “127. 192.168.12. 192.168.13.” được truy cập vào samba, ngược lại thì không cho phép truy cập.Để việc thay đổi thông số trong file smb.conf an toàn, bạn nên sao lưu file smb.conf đến một thư mục khác, đồng thời đảm bảo rằng kết nối giữa máy Linux và của bạn ở trạng thái tốt (Kiểm tra bằng lệnh ping 2 máy với nhau).
File smb.conf được chia làm 2 phần: global setting và sharing setting. Trong mỗi phần lại có nhiều tham số khác nhau, ở bài viết này chúng tôi chỉ xin giới thiệu những tham số cơ bản và cần thiết nhất
Để thiết lập cấu hình file smb.conf bạn có thể mở file này bằng một trình soạn thảo có sẵn trên hệ thống như vi, mc, pico:
1. Phần 1 – global setting:
Phần này sẽ chứa thông số điều khiển Samba server.
Giá trị đầu tiên cần thiết lập là giá trị của thẻ workgroup

[global]

# ----------------------- Network Related Options -------------------------
#
# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
#
# server string is the equivalent of the NT Description field
#
# netbios name can be used to specify a server name not tied to the hostname
#
# Interfaces lets you configure Samba to use multiple interfaces
# If you have multiple network interfaces then you can list the ones
# you want to listen on (never omit localhost)
#
# Hosts Allow/Hosts Deny lets you restrict who can connect, and you can
# specifiy it as a per  option as well
#
        workgroup = MYGROUP

Là tham số xác định tên workgroup của Windows mà máy Linux đăng nhập, nhóm này phải tồn tại trước khi bạn cấu hình Samba.
Lưu ý: Nên nhập tên workgroup ở dạng chữ in hoa (Upper Case).

        server string = Samba Server

Tham số server string là tham số gán mô tả về tên máy Linux trên mạng. Nó giống như trường NT Description trên máy WindowNT. Mặc định tham số này được gán bằng Samba Server, tuỳ theo chức năng của máy Linux mà bạn có thể đặt các tên khác nhau . Việc gán giá trị cho tham số này không gây ảnh hưởng lớn đến việc cấu hình Samba.

;       hosts allow = 127. 192.168.12. 192.168.13.

Nếu bỏ dấu ;(thì các máy có địa chỉ IP không thuộc lớp mạng đã liệt kê không thể truy nhập vào máy Linux. Ở đây lấy ví dụ với lớp mạng C, như vậy các máy có địa chỉ IP bắt đầu bằng 127. 192.168.12. 192.168.13. đều có thể truy nhập tài nguyên trên máy Linux.

# --------------------------- Logging Options -----------------------------
#
# Log File let you specify where to put logs and how to split them up.
#
# Max Log Size let you specify the max size log files should reach

        # logs split per machine
;       log file = /var/log/samba/%m.log

Tham số logfile sẽ xác định tên file log cho từng máy khi truy cập, %m có nghĩa là tên máy trên mạng.
Ví dụ: Nếu trên mạng có máy tên là nampt truy cập vào máy Linux thì Samba sẽ tạo ra một file là nampt.log lưu trong thư mục /var/log/Samba. Kích thước của file này được xác định bằng tham số max log size:

        # max 50KB per log file, then rotate
;       max log size = 50

Samba hỗ trợ 4 kiểu bảo mật trong việc chia sẻ dữ liệu: USER, SHARE, DOMAIN và SERVER. Để biết thêm chi tiết từng kiểu bạn có thể đọc file _level.txt. Mặc định khi cài Samba để ở mode USER

# ----------------------- Standalone Server Options ------------------------
#
# Security can be set to user, share(deprecated) or server(deprecated)
#
# Backend to store user information in. New installations should
# use either tdbsam or ldapsam. smbpasswd is available for backwards
# compatibility. tdbsam requires no further configuration.

        security = user
        passdb backend = tdbsam

# ----------------------- Standalone Server Options ------------------------
#
# Security can be set to user, share(deprecated) or server(deprecated)
#
# Backend to store user information in. New installations should
# use either tdbsam or ldapsam. smbpasswd is available for backwards
# compatibility. tdbsam requires no further configuration.

        security = user
        passdb backend = tdbsam

Nếu bạn chọn kiểu USER và SHARE thì nên đặt dấu (;) vào đầu dòng

;        server =

Nếu bạn muốn sử dụng tài khoản (account) và mật khẩu (password) trên máy chủ điều khiển vùng để truy nhập vào máy Linux thì phải đặt tham số:

security = domain

và điền tên máy điều khiển vùng vào vùng password server như dưới đây

password server =  tên domain
# You may wish to use password encryption. Please read
# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba #documentation.
# Do not enable this option unless you have read those documents
encrypt passwords = yes
smb passwd file = /etc/Samba/smbpasswd

Với các hệ điều hành từ Win95 OME service release 2 hoặc cao hơn, mật khẩu được mã hoá mặc định, cũng như vậy đối với hệ điều hành Windows NT4 service pack 3 mật khẩu được chuyển từ không mã hoá (Clear text) thành mã hoá (Encrypted). Để mật khẩu mã hoá của Windows làm việc được với Samba thì hai dòng trên phải bỏ dấu chú thích và nhập tên tài khoản và mật khẩu cho máy Linux bằng lệnh smbpasswd

#smbpasswd -a  hautp

Lưu ý: user nampt phải tồn tại là user của hệ điều hành. Nếu bạn định thiết lập security mode= domain hoặc server thì nên đặt mật khẩu trùng với mật khẩu trên server hay domain tương ứng.

# Enable this if you want Samba to be a domain logon server for
# Windows95 workstations.
domain logons = yes

Nếu để tham số domain logons =yes sẽ làm cho máy Linux trở thành domain để các máy Windows95 có thể đăng nhập (logon) vào . Kịch bản đăng nhập cho các máy trạm và user sẽ được hai tham số logon script dưới đây xác định:

# if you enable domain logons then you may want a per-machine or
# per user logon script
# run a specific logon batch file per workstation (machine)
logon script = %m.bat
# run a specific logon batch file per username
logon script = %U.bat

2. Phần 2 – Sharing Setting
Khi có yêu cầu truy xuất dữ liệu từ máy trạm, Samba sẽ tìm các thư mục này trong phần Sharing Setting. Nếu thư mục tồn tại nó sẽ kiểm tra mật khẩu mà máy trạm cung cấp với mật khẩu của Samba, nó sẽ chia sẻ thư mục này qua mạng nếu mật khẩu thoả mãn.
Trong phần này có nhiều tham số khác nhau, ở đây chúng tôi chỉ trích ra một thư mục để làm ví dụ và giới thiệu những tham số thông dụng:

[GocIT]
comment = Thu muc cua user gocit
browseable = no
read only=no
path=/home/gocit
valid users=gocit

Tham số comment cũng gần giống như tham số server string mà chúng ta đã đề cập ở phần trước nhưng chỉ khác đây là chú thích cho thư mục.
Nếu bỏ dấu chú thích ở dòng browseable = no thì Samba sẽ không chỉ thị thư mục này trên trình duyệt mạng (ví dụ Windows Explorer), mặc dù nó vẫn được chia sẻ, việc này giống như chia sẻ thư mục trên Windows với dấu $.
Tham số read only sẽ cho phép người dùng trên máy trạm có thể thay đổi nội dung file hay không. Nếu bỏ dấu chú thích tại dòng:

;readonly=no

thì smbd không hiểu giá trị và phát sinh lỗi cấu hình. Thực chất giá trị read only=yes chính là ; read only=no.
Tham số path xác định đường dẫn đến thư mục cần được chia sẻ trên server. Tham số valid users=ktth xác định quyền hạn truy cập vào thư mục ktth – ở ví dụ này chỉ có user ktth mới đọc được nội dung của thư mục đó.
Chia sẻ file như thế nào:
Sau khi cấu hình phần global setting, chúng ta có thể tự tạo ra một thư mục chia sẻ và giới hạn truy cập theo nhóm hoặc người dùng có trên hệ thống.
Ví dụ: Để tạo thư mục chia sẻ “test” trên máy Linux, chúng ta làm như sau:
Thêm vào vùng Sharing Setting những dòng dưới đây:

[test]
comment= thu muc cua test
path=/home/test
valid users =test
browseable=yes
public=no
writeable=yes

Như vậy Samba sẽ tạo ra một thư mục chia sẻ “test” trên máy chủ, do tham số browseable=yes nên thư mục này sẽ được nhìn thấy khi người dùng mở Windows Explorer, tuy nhiên do public=no và valid users =”test” nên chỉ có user “test” có thể đăng nhập. Ngoài việc phân cấp theo user Samba cũng có thể thăng quyền truy cập cho cả nhóm người dùng, với nhóm chúng ta sử dụng dấu @ trước tên nhóm.
Ví dụ

Valid users=hautp,@admin

Kiểm tra cấu hình vừa thiết lập:
Sau khi thiết lập file cấu hình chúng ta nên kiểm tra lại, Samba cung cấp 2 công cụ là testparm và smbstatus. Để kiểm tra chính xác bạn phải đảm bảo máy trạm và máy chủ phải nối được với nhau (Kiểm tra bằng lệnh ping).
1. Kiểm tra bằng công cụ Testparm:
Testparm là chương trình cho phép kiểm tra giá trị của thông số trong file cấu hình. Cấu trúc của câu lệnh này là:

testparm  configfile [hostname  hostIP]

Configfile là đường dẫn và tên file cấu hình, mặc định nó lấy file smb.conf cất trong thư mục /etc/Samba/smb.conf (từ Redhat 7.0) và /etc/smb.conf (cho các phiên bản trước đó).
Hostname và HostIP là hai thông số không nhất thiết phải có, nó hướng dẫn Samba kiểm tra cả các dịch vụ đã liệt kê trong file smb.conf. trên máy xác định bởi Hostname và HostIP.
Ví dụ:

[root@gocit ~]# testparm /etc/samba/smb.conf gocit.vn 192.168.1.10
Load smb config files from /etc/Samba/smb.conf
Processing section “[homes]”
Processing section “[printers]”
Loaded services file OK.
Allow connection from gocit.vn (192.168.1.10) to homes
Allow connection from gocit.vn (192.168.1.10) to printers

2. Kiểm tra bằng công cụ smbstatus:
Smbtatus là chương trình thông báo các kết nối hiện tại, cấu trúc của câu lệnh này như sau:

smbstatus [-d][-p][-s config file]

Tham số configfile mặc định được gán là /etc/Samba/smb.conf. Tham số –d cho ra kết quả đầy đủ.
Chạy Samba server:
Samba server có hai tiến trình là smbd và nmbd. Tiến trình smbd cung cấp dịch vụ chia sẻ file và dữ liệu, tiến trình nmbd cung cấp khả năng hỗ trợ NetBIOS name. Cũng như các dịch vụ khác, trên mạng Samba có 3 câu lệnh điều khiển là stop, start, restart. Cú pháp của chúng là:

service smb start | stop | restart

Sau khi cấu hình file smb.conf bạn phải khởi động dịch vụ Samba để máy Linux đăng nhập vào workgroup, câu lệnh khởi động là:

#/etc/init.d/smb start

Sau khi khởi động dịch vụ máy Windows có thể truy cập đến máy Linux thông qua NetworkNeighborhood hoặc Windows Explorer , máy Linux có thể dùng 2 câu lệnh smbclient smbmount để truy cập đến máy Windows và trên cả máy Linux khác có cài Samba.
3. Sử dụng câu lệnh smbclient:
Smbclient cung cấp giao diện dòng lệnh gần giống như giao diện của để truyền file qua mạng. Chi tiết về câu lệnh smbclient bạn có thể tham khảo nhờ câu lệnh:

#man smbclient

Để liệt kê các thư mục chia sẻ có trêm máy 172.16.200.203 bạn dùng smbclient với tham số –L:

#smbclient  -L //172.16.200.203

Kết quả sẽ cho ra một số thư mục có trên máy 172.16.200.203, để vào một trong các thư mục trên bạn dùng lệnh smbclient với tham số -U tên user (tên user có quyền truy cập vào thư mục tương ứng).

#smbclient  //172.16.200.203/tên_thư_mục   -U tên_user

Sau khi gõ vào mật khẩu bạn sẽ nhận được dấu nhắc:

smb:\>

Tại dấu nhắc này bạn có thể dùng các câu lệnh như sau:
Ví dụ : Dùng smbclient nối đến máy Windows có địa chỉ IP là 192.168.1.53, để lấy file trên máy này ta phải làm lần lượt các bước sau:
Xác định các thư mục được chỉa sẻ trên máy 192.168.1.53:

#smbclient -L 192.168.1.53 -U hautp
added interface ip=192.168.1.10 bcast=192.168.1.255 nmask=255.255.255.0
session request to 192.168.1.53 failed (Called name not present)
session request to 172 failed (Called name not present)
Password:
Domain=[STAFF.VITTI] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]

Sau khi nhập mật khẩu của tài khoản ktth (trên Windows) ta nhận được danh sách các thư mục share trên máy 192.168.1.53. Sau khi biết được các thư mục trên máy, bạn phải dùng câu lệnh:

[root@Backup /root]# smbclient //192.168.1.53/hautp -U hautp
Can’t find include file /etc/samba/smb.conf.
added interface ip=192.168.1.10 bcast=192.168.1.255 nmask=255.255.255.0
session request to 192.168.1.53 failed (Called name not present)
session request to 172 failed (Called name not present)
Password:
Domain=[STAFF.VITTI] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
smb: \>

Tại dấu nhắc này bạn có thể xem các file bên trong thư mục tienna bằng lệnh ls, lấy nó về máy Linux bằng lệnh get hoặc mget:

smb:\> ls
.D 0 Fri Aug 24 00:02:24 2001
..D 0 Fri Aug 24 00:02:24 2001
duplicate_oracle.doc A 453534 Thu Apr 19 18:54:42 2001
standby_oracle.doc A 1869172 Thu Jun 7 12:05:50 2001

smb:\> mget duplicate*
Get file duplicate_oracle.doc? y
getting file duplicate_oracle.doc of size 453534 as duplicate_oracle.doc (925.624 kb/s) (average 925.624 kb/s)
smb:\>

4. Sử dụng câu lệnh smbclient:
Với máy Windows việc truy cập dễ dàng hơn nhiều, bạn chỉ cần mở Windows Explore và tìm đến domain mà máy Linux đăng nhập, nhấn chuột lên tên máy Linux sau đó nhập vào tên tài khoản và mật khẩu tương ứng, bạn sẽ nhìn thấy các thư mục chia sẻ (sharing) hiện ra. Tại đây bạn cũng có thể thực hiện các tính năng như map ổ đĩa, đồng bộ thư mục, sao chép file như ở các máy Windows thông thường.

Tham gia thảo luận bài viết tại forum : http://forum.gocit.vn/threads/cai-dat-va-cau-hinh-samba.298/

Print Friendly

Comments

comments

Bài viết liên quan