• Thứ Năm, 25/12/2003 09:50 (GMT+7)

    Samba - Dịch vụ xây dựng liên mạng Linux với Windows

    Lượt xem 9749
    Đánh giá

    Samba là dịch vụ của hệ điều hành Linux, 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 download từ website www.Samba.org. Phiên bản của Samba cũng được thay đổi thường xuyên, hiện đã có phiên bản  2.2.1. Bài viết này lấy phiên bản 2.0.7 có sẵn trên đĩa Redhat 7.1 làm ví dụ. Gói Samba trên đĩa RedHat được đóng gói theo chuẩn RPM (Redhat Package Manager) và được lưu tại thư mục /mnt/cdrom/Redhat/RPMS/. Các bước cài đặt như sau:

     

    # mount /mnt/cdrom ; mount file system của ổ CD

    #cd /mnt/cdrom/Redhat/RPMS

    # rpm          -Uvh Samba-common-2.0.7-8.i386.rpm

    # rpm          -Uvh Samba-2.0.7-8.i386.rpm

    # rpm          -Uvh Samba-client-2.0.7-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:

     

    ;encrypt password =yes

     

    Nếu bỏ dấu (;) đi thì Samba sẽ hiểu rằng mật khẩu sẽ được mã hóa (encrypt), ngược lại mật khẩu khi truyền đi sẽ được để ở dạng không mã hoá (clear text).

    Để 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à Windows 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:

     

    #pico /etc/Samba/smb.conf

     

    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]

    ## workgroup = NT-Domain-Name or Workgroup-Name

    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 is the equivalent of the NT Description field

       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 = 192.168.1.     192.168.2.

     

    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 192.168.1.  192.168.2. đều có thể truy nhập tài nguyên trên máy Linux.

     

    # this tells Samba to use a separate log file for each machine

    # that connects

       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:

     

    # Put a capping on the size of the log files (in Kb).

       max log size = 150

     

    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  security_level.txt. Mặc định khi cài Samba để  ở mode USER

     

    # Security mode. Most people will want user level security. See

    # security_level.txt for details.

       security = share

    # Use password server option only with security = server or

    # security = domain

    ;password server=MyServer

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

    ;password server = <NT-Server-Name>

     

    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.

     Ví dụ:

     

    #smbpasswd -a  nampt

     

    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:

    [nampt]

    comment = Thu muc cua user nampt

    browseable = no 

    read only=no

    path=/home/nampt

    valid users=nampt

     

    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:

     

    ;read only=no

     

    Thì người dùng có thể thay đổi nội dung của file hay tạo file mới, ngược lại nếu để dấu (;) ở đầu dòng, người dùng chỉ có thể đọc nội dung thư mục và không được phép tạo bất cứ thay đổi nào trong thư mục.

    Trong file smb.conf có một số thông số không thể gán giá trị bằng “yes”.

    Ví dụ: nếu viết:

     

    read only=yes

     

    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=nampt xác định quyền hạn truy cập vào thư  mục nampt - ở ví dụ này chỉ có user nampt 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ẻ hungpv 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:

     

    [hungpv]     

    comment= thu muc cua hungpv

    path=/home/hungpv

    valid users =hungpv

    browseable=yes

    public=no

    writeable=yes

     

    Như vậy Samba sẽ tạo ra một thư mục chia sẻ hungpv 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 =hungpv  nên chỉ có user hungpv 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 duùng, với nhóm chúng ta sử dụng dấu @ trước tên nhóm.

     Ví dụ:

     

    Valid users=hungpv,@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@imail /root]# testparm /etc/Samba/smb.conf imail.vitti.edu.vn 172.16.200.2000

    Load smb config files from /etc/Samba/smb.conf

    Processing section “[homes]”

    Processing section “[printers]”

    Loaded services file OK.

    Allow connection from imail.vitti.edu.vn (172.16.200.2000) to homes

    Allow connection from imail.vitti.edu.vn (172.16.200.2000) 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à:

     

    /etc/init.d/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.

    1. 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 FTP để 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à 172.16.4.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 172.16.4.53:

     

    #smbclient -L 172.16.4.53 -U tienna

    added interface ip=172.16.200.200 bcast=172.16.255.255 nmask=255.255.0.0

    session request to 172.16.4.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 tienna (trên Windows) ta nhận được danh sách các thư mục share trên máy 172.16.4.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 //172.16.4.53/tienna -U tienna

    Can’t find include file /etc/Samba/smb.conf.

    added interface ip=172.16.200.200 bcast=172.16.255.255 nmask=255.255.0.0

    session request to 172.16.4.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

    ethereal-setup-0.8.17.exe           A  6153372  Thu Apr 19 18:54:42 2001

    gozilla39.exe  A  1869172  Thu Jun  7 12:05:50 2001

     

    smb:\> mget eth*

    Get file ethereal-setup-0.8.17.exe? y

    getting file ethereal-setup-0.8.17.exe of size 6153372 as ethereal-setup-  0.8.17.exe (925.624 kb/s) (average 925.624 kb/s)

    smb:\>

    2. Truy cập từ máy Windows

    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.

    Nguyễn Anh Tiến

     

     

    ID: A0202_75
    Ý kiến của bạn? Ý kiến của bạn?
    Tin ngày :

Thuật ngữ