Đặt vấn đề.
Trong công nghệ thông tin hiện nay, một vấn đề gây tranh cãi là chọn lựa môi trường nào trong 2 hệ điều hành Unix (mà Linux là một trong những môi trường nổi bật) và Windows. Tuy nhiên trong thực tế, do nhu cầu xây dựng các ứng dụng hỗn hợp, người ta vẫn phải chấp nhận dùng cùng lúc cả 2 hệ điều hành này. Vì vậy việc tích hợp 2 loại hệ thống để có một môi trường đồng nhất là một thực tế cần phải giải quyết.
Tích hợp Windows và Linux không phải là một bài toán mới. Từ nhiều năm qua, những nhà xây dựng hệ thống đã tìm nhiều cách để người sử dụng có thể kết nối một cách trong suốt dữ liệu qua các hệ thống không đồng nhất. Một thí dụ điển hình là NFS (Network File System). NFS đã được phát triển ban dầu với mục đích tích hợp các hệ điều hành Unix lại với nhau để người sử dụng có thể truy cập dữ liệu trên các hệ thống tệp của các hệ thống Unix khác giống như hệ thống cục bộ. NFS cho phép các máy chạy Unix có thể chia sẻ tài nguyên qua mạng (cụ thể là tệp và máy in). Qua NFS, người ta cũng đã cố gắng mô phỏng Unix trên Windows. Với NFS, người sử dụng ép các hệ thống chạy Windows hoạt động giống như một hệ thống Unix, do đó các truy xuất dữ liệu từ các hệ thống Unix lên Windows có thể được thực hiện khá dễ dàng.
Tuy vậy, NFS không phải là công nghệ dành riêng để tích hợp Unix và Windows. Việc mô phỏng Unix trên Windows không mang lại nhiều thành công như mong đợi do Windows có rất nhiều tính năng đặc thù nên các hệ mô phỏng không thể “bắt chước” một cách hoàn hảo. Do đó người ta phải tìm ra một cách khác: mô phỏng Windows trên Unix.
Mô phỏng Windows trên Unix là một công việc hoàn toàn ngược với công nghệ NFS: Thay vì buộc Windows hoạt động như một hệ thống Unix, người ta cố gắng xây dựng một hệ thống tệp theo kiểu Windows trên Unix. Và cho tới nay, hướng đi này đã chứng tỏ đạt được những thành công nhất định: đó là công nghệ Samba.
Trong tài liệu này, ta sẽ điểm qua một số vấn đề có liên quan đến Samba và cách cài đặt, cấu hình một hệ thống Samba trên Linux nhằm chia sẻ các tệp và thư mục.
Giới thiệu về Samba
Samba là một ứng dụng chạy trên Unix cố gắng mô phỏng một hệ thống Windows. Samba cho phép một hệ thống Unix gia nhập vào hệ thống “Network Neighborhood” và người dùng Windows có thể truy nhập tài nguyên trên Unix (Tệp và Printer) mà không hề biết đó là các dịch vụ do Unix cung cấp.
Điều này thực hiện được nhờ sự mô phỏng giao thức Windows "Common Internet File System", hay CIFS và giao thức truyền tin Server Message Block (SMB). SMB dựa trên giao diện NetBIOS để truyển thông tin giữa các máy tính trong một mạng LAN. Theo giao diện do NetBIOS quy định, các máy tính được đánh tên theo một sơ đồ, trong đó các máy tính trong mạng LAN có tên duy nhất (còn gọi là tên NetBIOS) và việc truyền dữ liệu giữa các máy tính thực hiện thông qua tên này. Giao thức NetBEUI được dùng khá phổ biến hiện nay được xây dựng với mục đích chính là chuyển các gói tin NetBIOS trong mạng LAN sử dụng các chuẩn TokenRing và Ethernet.
Samba bao gồm 2 chương trình chính và một số công cụ hỗ trợ kèm t heo. Hai chương trình chính là smbd và nmbd kết hợp với nhau để thực thi 4 dịch vụ CIFS cơ bản sau:
- Dịch vụ tệp và máy in (smbd)
- Xác thực phân quyền truy cập tài nguyên (smbd)
- Phân giải tên - Name resolution (nmbd)
- Thông báo về các dịch vụ ra bên ngoài - Service announcement (nmbd)
Sau đây là một số công cụ đi kèm Samba:
smbclient
Đây là một SMB client, với chức năng tương tự như một công cụ FTP. Được dùng để kết nối từ hệ thống Unix tới một SMB share của một hệ thống Windows để truyền tệp, gửi tệp hoặc gửi tệp tới máy in đã được chia sẻ
nmblookup
Client của dịch vụ phân giải tên NetBIOS. Nmblookup có thể sử dụng để tìm các tên NetBIOS trên mạng, tìm địa chỉ IP tương ứng và các thông tin khác của một máy chạy Windows.
swat
Swat hay SambaWebAdministrationTool cho phép cấu hình Samba từ xa qua giao diện Web.
Tìm và cài đặt Samba
Phiên bản mới nhất của Samba là 2.2, cung cấp khá nhiều tính năng cao cấp như: hỗ trợ Windows 2000, cho phép cài đặt như một máy điều khiển vùng chính Windows NT Primary Domain Controller.
Hầu hết các phiên bản Linux đều có kèm theo Samba trên đĩa CD. Tuy nhiên, để có thể có bản cài đặt mới nhất của Samba, kết nối tới địa chỉ http://www.samba.org
Việc cài đặt Samba có thể được thực hiện theo một trong 2 cách: cài đặt trực tiếp từ mã nguồn hoặc qua các gói phần mềm RPM.
Nếu dịch Samba từ mã nguồn, Samba sẽ được cài đặt vào thư mục /usr/local/samba. Các tệp cấu hình sẽ được đặt trong thư mục /usr/local/samba/conf, còn chương trình sẽ được đặt vào /usr/local/samba/bin.
Nếu cài đặt từ các gói phần mềm RPM (sử dụng công cụ rpm), các tệp cấu hình sẽ được đặt vào thư mục /etc/samba, còn chương trình sẽ được đặt vào thư mục /usr/local/samba/bin.
Tệp cấu hình quan trọng nhất của Samba là tệp smb.conf. Hầu hết các công việc của người quản trị cần làm với Samba đều thực hiện thông qua tệp này.
Làm việc với tệp smb.conf
Sử dụng một trình soạn thảo văn bản không định dạng ( ví dụ vi hay pico) để thực hiện các sửa đổi trên smb.conf. Tuy nhiên lưu ý rằng nếu cần, người quản trị nên lưu tệp gốc trước khi sửa đổi, phòng trường hợp hệ thống có sự cố thì vẫn có thể khôi phục được cấu hình cũ.
Trong tệp smb.conf, các dòng được bắt đầu với các ký tự "#" hay ";" được coi là “chú thích” và sẽ không được xử lý bởi Samba khi thực thi.
Tệp smb.conf được chia làm 2 phần chính: cầu hình toàn cục (Global Settings) và các cấu hình cho việc chia sẻ tài nguyên (Share)
Cấu hình toàn cục Global Settings
Cấu hình toàn cục được thể hiện bằng các dòng thông tin đặt sau dòng [global]
Một số thông tin cầu hình cần sửa đổi lại cho phù hợp:
- workgroup : Tên workgroup mà Samba gia nhập.
- server string: Mô tả về Server. Thông tin này sẽ xuất hiện khi người dùng duyệt mạng qua “Network Neighborhood”.
- encrypt passwords : Mật khẩu có mã hoá hay không. Lưu ý: Windows 98SE, Windows NT SP3, Windows 2000 đều yêu cầu mật khẩu phải mã hoá trước khi gửi qua mạng
- tệp log: Tệp log lưu lại các thông tin về truy cập tài nguyên. M 863;c định tham số này nhận giá trị /var/log/samba/%m.log, tức là mỗi máy đã từng truy nhập Samba sẽ được ghi thông tin ra một tệp riêng.
- security: Phương thức xác thực người dùng truy nhập. Tham số này có thể nhận các giá trị sau:
- share: Tương tự như phương thức share-level access control của Windows. Theo phương thức này, việc truy xuất tài nguyên không phân biệt người dùng, khi truy xuất chỉ cần cung cấp password.
- user: Người dùng khi truy xuất phải cung cấp username và mật khẩu. Tuy nhiên việc xác thực thông tin được thực hiện cục bộ. Thông tin về account sẽ được lưu ra một tệp riêng smbpasspd trong thư mục lưu các tệp cấu hình (không dùng cơ sở dữ liệu account của hệ thống)
- server: Xác thực người dùng thông qua một hệ thống Samba hoặc Windows NT khác. Tham số này sẽ yêu cầu tham số password server ( xem bên dưới)
- password server: Tên NetBIOS của máy (hoặc địa chỉ IP của máy) sử dụng để xác thực người dùng. Samba sẽ forward yêu cầu xác thực (bao gồm username và password do người dùng cung cấp) tới password server và nhận kết quả trả về. Nếu thông tin được xác nhận là đúng, người dùng sẽ được phép truy cập thông tin.
- interface: Nếu máy có nhiều địa chỉ IP, hãy liệt kê các địa chỉ IP Samba sẽ phục vụ. Mặc định Samba sẽ phục vụ yêu cầu tới từ tất cả các địa chỉ.
- username map: Samba cho phép ánh xạ tên truy cập Samba với tên account hệ thống. Chẳng hạn, ta có thể ánh xạ root với account Administrator vẫn thường thấy trong các hệ thống Windows NT
- guest account: Có hỗ trợ guest account giống như trong các hệ thống Windows NT không.
- wins support: Có hỗ trợ Wins không
- wins server: Địa chỉ IP hoặc tên NetBIOS của máy chủ WINS trong trường hợp có chọn hỗ trợ Wins.
- host allow: Các máy tính được phép kết nối tới Samba. Việc kiểm tra được dựa trên địa chỉ IP của máy kết nối.
Các tham số dưới đây liên quan đến phần hỗ trợ browsing của Samba
- local master: Local master là dịch vụ hỗ trợ việc cung cấp danh sách các máy tính vàcác dịch vụ cung cấp tương ứng trong mạng cục bộ. Để có thể duyệt mạng (qua Network Neighborhood) ta cần phải có dịch vụ này. Tham số này cho phép Samba có thể trở thành một local master.
- os level: Để Samba có thể trở thành local master, mạng cục bộ phải trải qua một quá trình tìm kiếm máy tính sẵn sàng đảm nhiệm chức năng này. Quá trình này gọi là “browser election”. Hệ thống nào có tham số os level cao hơn sẽ trở thành local master.
- domain master: Tham số này cho phép Samba liên kết và tổ chức thông tin từ các local master khác. Chỉ dùng tham số này khi cấu hình Samba như một PDC.
- preferred master: Cho phép Samba yêu cầu mạng cục bộ tổ chức “bầu cử” lại local master khi Samba khởi chạy.
Khai báo chia sẻ Share
Người quản trị có thể thực hiện việc chia sẻ các thư mục của người dùng thông qua Samba bằng chọn lựa [homes] Như vậy người dùng với account có quyền truy xuất sẽ mặc nhiên được chia sẻ thư mục cá nhân (home directory của Linux) và có thể kết nối thông qua giao diện của Windows.
Các tham số sử dụng khi khai báo chia sẻ:
- comment: chú thích về chia sẻ
- browseable: Nếu tham số này nhận giá trị “no”, thư mục chia sẻ chỉ xuất hiện với đúng người quản lý thư mục
- writable: Người truy cập có quyền ghi hay không.
Chia sẻ thư mục
Sam ba cho phép chia sẻ thư mục tuỳ ý cho nhiều người dùng hoặc nhóm người dùng. Tham khảo các tham số dưới đây:
- path: đường dẫn thư mục cần chia sẻ
- read only: Tham số có tác dụng trái ngược với writeable.
- valid users: Danh sách những người dùng được phép truy nhập tài nguyên chia sẻ. Có thể sử dụng ký tự @ đặt trước tên nhóm (group name của hệ thống) để hạn chế quyền truy nhập theo nhóm.
- force user: Tham số trỏ tới một tên user này dùng để buộc các thay đổi cập nhật lên tệp, thư mục phải thông qua tên user đã khai báo.
- force group: Các thay đổi cập nhật lên dữ liệu sẽ thông qua group được chỉ ra bởi tham số này.
- browseable: Nếu tham số có giá trị “no”, thư mục chia sẻ sẽ bị ẩn đi, chỉ những người được quyền truy cập mới có thể nhìn thấy.
- available: Nếu tham số có giá trị “no” thì chia sẻ tạm thời bị vô hiệu lực.
- create mask: Quyền truy cập mặc định cho các tệp mới tạo.
- directory mask: Quyền truy cập mặc định cho các thư mục mới tạo
- dont descend: Các thư mục không cho phép truy xuất qua Samba
Thực thi Samba
Việc khởi chạy Samba có thể thực hiện thông qua chương trình /etc/init.d/smb. Để chạy, ta sử dụng lệnh:
/etc/init.d/smb start
Để ngừng chạy Samba, dùng lệnh
/etc/init.d/smb start
Để khởi động lại Samba (đặc biệt sau khi thay đổi tham số trong tệp cấu hình smb.conf), dùng lệnh:
/etc/init.d/smb restart
Để Samba chạy tự động khi hệ thống bật, tham khảo thêm lệnh ntsysv.