ở bài trước mình đã giới thiệu tới các bạn về
Samba Linux, tìm hiểu Samba Linux. Trong bài nối tiếp của những dịch vụ mạng trên Linux (dịch vụ Samba trên Linux) mình hướng dẫn các bạn cách cài đặt, cấu hình Samba Linux. Bài Lab được thực hiện trên nền CentOS.
Lưu ý: Tất cả những bài Lab mạng trên itviet360 mang tính chất tham khảo
1. Cài đặt Samba
Samba cần những gói sau:
- samba-winbind-clients-3.4.2-47.fc12.i686.rpm
- samba-client-3.4.2-47.fc12.i686.rpm - samba-common-3.4.2-47.fc12.i686.rpm - samba-3.4.2-47.fc12.i686.rpm
Tất cả những gói trên đã được đi kèm với bản phân phối CentOS. Và việc cài đặt rất dễ dàng.
1.1 Các kiểu server Samba
Các máy chủ Windows thường được chia ra thành các kiểu server:
· Domain Controller
o Primary Domain Controller (PDC).
o Backup Domain Controller (BDC).
o ADS Domain Controller.
· Domain Member Server
o Active Directory Domain Server.
· Standalone Server.
Samba có thể thay thế tốt cho mỗi kiểu server tương ứng trên Windows trong việc chia sẻ tài nguyên giữa hệ thống Linux – Windows.
2. Cấu hình Samba
Các thông tin cấu hình cho Samba được lưu trong tập tin smb.conf và nằm trong đường dẫn /etc/samba/smb.conf. Chúng ta có thể dễ dàng chỉnh sửa tập tin này thông qua một trình soạn thảo văn bản như vi hoặc giao diện đồ họa trên nền web bằng SWAT.
Tập tin smb.conf bao gồm nhiều phần, mỗi phần đều được bắt đầu bằng dấu [], sau đó là những thuộc tính của phần đó. Cú pháp:
Những dòng bắt đầu bằng dấu # hoặc ; là chú thích.
[global] gồm những thiết lập có ảnh hưởng tới toàn bộ chính sách chia sẻ.
[printer] định nghĩa dịch vụ in ấn.
[homes] định nghĩa các chia sẻ trong thư mục home directory.
[khác] tùy chọn định nghĩa những chia sẻ khác.
Những tham số trong phần khác như [homes], [printer], [khác],… chỉ có ảnh hưởng cục bộ đến những dịch vụ có trong thiết lập của những phần đó.
Dưới đây là tập tin smb.conf mẫu:
#======================= Global Settings =====================
[global]
# ----------------------- Netwrok Related Options ---------
workgroup = cn06.com
server string = Samba Server Version %v
; netbios name = au-fileserver-1
interfaces = lo eth0
hosts allow = 127. 172.16.1. EXCEPT 172.16.1.100
# --------------------------- Logging Options ---------------
log file = /var/log/samba/%m.log
max log size = 50
# --------------------------- Domain Options -----------------
domain master = yes
domain logons = yes
local master = yes
os level = 33
preferred master = yes
; security = user
; passdb backend = tdbsam
# ----------------------- Standalone Server Options ----------
;security = user
;passdb backen = tdbsam
# ----------------------- Domain Members Options --------------
; security = domain
; passdb backend = tdbsam
; realm = MY_REALM
; password server =
# ----------------------- Domain Controller Options ---------
; security = user
; passdb backend = tdbsam
; domain master = yes
; domain logons = yes
# --------------------------- Printing Options -----------
load printers = yes
cups options = raw
printcap name = cups
#============================ Share Definitions ==============
[homes]
comment = Admin’s Directory
browseable = no
writable = yes
valid users = %S
valid users = admin
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no
[profiles]
path = /etc/samba/profiles
browseable = no
guest ok = yes
read only = no
[user]
comment = thu muc nguoi dung
path = /user/
readonly = yes
public = no
browseable = yes
printable=yes
valid users = @user
write list = admin, root
# force create mode = 0770
# force directory mode = 0770
create mask = 0770
directory mask = 0770
# force group = admin
# force user = admin
writable = no
printable = yes
2.1 Các thông số smb.conf
2.2 Các thông số phần [Global]
Thông số | Mô tả |
Interfaces | Sanh sách các interface (hoặc địa chỉ IP) mà Samba sẽ sử dụng. Mặc định là tất cả các interface trừ địa chỉ localhost 127.0.0.1 |
Server string | Đoạn kí tự sẽ xuất hiện trên Windows. Tùy chọn %v là version của Samba hiện hành, %h là tên hostname |
Workgroup | Tên workgroup chứa Samba server. |
Log file | Tên file log cho Samba. Tùy chọn %m thay cho tên log của từng client. |
Log level | Level được đặt càng cao thì file log càng chi tiết. Mặc định là 0. |
Max log size | Kích thước tối đa cho từng file log tính bằng kb, 0 để ghi không giới hạn. |
2.3 Các thông số Domain
Tùy chọn domain cho phép các dịch vụ chứng thực được tập trung hóa trên một server cho các host tham gia vào domain đó. Domain đó yêu cầu phải có một PDC hay master. Domain Master Browser chịu trách nhiệm duy trì một danh sách host trên mạng khi client chia sẻ thông qua Windows Network Neighborhood hay My Network Places. SMB định kỳ 15 phút bầu chọn host nào sẽ trở thành Domain Master Browser.
Việc máy chủ Samba có được chọn hay không phụ thuộc hai thông số:
Thông số | Mô tả |
Domain master = yes | Cho phép máy chủ Samba gia nhập cuộc bầu chọn với tư cách như một PDC. |
Local master = yes | Samba server cố trở thành master browser. |
Os level | Định lượng máy chủ Samba "nặng" bao nhiêu so với các host Windows. Windows 2000, XP và 2003 có os level = 32. Do đó, thiết lập thông số này lớn hơn 32 để máy chủ Samba đảm bảo chiến thắng. |
Domain logons = yes | Chi ra rằng Samba muốn điều khiển các yêu cầu chứng thực trong domain. |
2.4 Các thông số bảo mật
Thông số | Mô tả |
Encrypt passwords = yes | Chỉ chấp nhận những mật khẩu được mã hóa từ client. Thông số này sử dụng smbpasswd để chứng thực client. Mặc định Samba sẽ lưu mật khẩu mã hóa trong smbpasswd nếu ta không thiết lập một cơ sở dữ liệu mật khẩu (passdb). |
Hosts allow | Đanh sách các mạng (hoặc địa chỉ IP) được phép truy cập dịch vụ Samba. Ở ví dụ trên, cho phép 127.0.0.0/4 và 172.16.1.0/24 ngoại trừ địa chỉ 172.16.1.100 được phép sử dụng dịch vụ. |
Security = user | Yêu cầu bất kì host nào truy cập vào Samba cũng cần có một tài khoản và mật khẩu hợp lệ trên máy chủ Samba. |
Passdb backend = tdbsam | Chứng thực client bằng cơ sở dữ liệu mật khẩu trên chính Samba server, tdbsam được trỏ tới /etc/samba/passdb.tdb. Ngoài tdbsam ra, còn có smbpasswd và ldapsam. |
2.5 Các thông số máy in
Thông số | Mô tả |
printcap name = cups | Chỉ cho Samba sử dụng dịch vụ in CUPS. |
load printers = yes | Cho phép sử dụng máy in bằng các máy in được cấu hình trong dịch vụ CUPS. |
cups options = raw | Các tùy chọn in ấn được gửi cho CUPS server. |
2.6 Các thông số chia sẻ
Thông số | Mô tả |
path | Đường dẫn tới thư mục chia sẻ. |
browseable | Mô tả chia sẻ này có hiện ra trong danh sách chia sẻ hay không. |
comment | Lời mô tả về chia sẻ này. |
writable | Các user truy cập có quyền ghi hay không |
Read only | Chỉ chia sẻ dạng read-only (tùy chọn này thường đi kèm tùy chọn writable). |
printable |
|
guest ok | Cho phép người dùng truy cập dạng guest mà không cần mật khảu. Mặc định là không. |
valid users | Danh sách những người dùng được quyền truy cập chia sẻ này. Sử dụng @tên_group để cấp quyền cho cả group. |
write list | Danh sách người dùng có quyền đọc/ghi trên chia sẻ này mà không cần quan tâm đến tùy chọn read only. |
create mask | Tạo quyền hạn cho các file được tạo. |
directory mask | Tạo quyền hạn cho các thư mục được tạo. |
Sau khi cấu hình xong smb.conf, ta có thể kiểm tra tập tin này bằng lệnh testparm xem có bất kỳ sai sót nào không. Nếu cấu hình đúng, sẽ xuất hiện thông báo sau:
[root@server ~]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[netlogon]"
Processing section "[profiles]"
Processing section "[user]"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC
Press enter to see a dump of your service definitions
Như thông báo ở trên, server hiện thời đóng vai trò như một Domain PDC.
2.7 Thêm user vào Samba
Như đã nói ở trên, tùy chọn mã hóa mật khẩu được thiết lập mặc định trên Samba. Tính năng này yêu cầu Samba lưu mật khẩu của mọi user Windows. Về cơ bản, không thể sử dụng mật khẩu được lưu tại /etc/passwd để chứng thực user Windows. Vì thế Samba cung cấp một công cụ đặc biệt dùng cho việc này, đó là smbpasswd.
Đầu tiên, tạo tài khoản user1 thuộc nhóm user:
[root@server ~]# useradd -c "Nguoi dung 1" –g user user1
[root@server ~]# passwd user1
Changing password for user user1.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Tiếp theo, thêm user1 tham gia vào Samba bằng lệnh smbpasswd.
Cú pháp:
smbpasswd [tùy chọn] username
Trong đó, có 3 tùy chọn chính:
-a thêm hoặc chỉnh sửa user.
-d khóa tạm thời user.
-x xóa user khỏi Samba.
[root@server ~]# smbpasswd -a user1
New SMB password:
Retype new SMB password:
Added user user1.
[root@server ~]#
Tiếp theo, khởi động dịch vụ Samba:
[root@server ~]# service smb start
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@server ~]# chkconfig --level 35 smb on
Như vậy chúng ta đã hoàn tất việc cấu hình một Samba server đóng vai trò như một PDC cho phép chia sẻ tài nguyên giữa Linux và Windows.
3. Truy cập tài nguyên chia sẻ
Đầu tiên, ta cần cài đặt chia sẻ trên Windows:
Truy cập vào My Network Places, click chọn Set up a home or small office networkSau đó ta sẽ thấy thư mục chia sẻ của Linux:
Kể từ đây, chúng ta đã dễ dàng truy cập tài nguyên bằng cách từ hộp thoại Run, gõ:
Ví dụ:
Sử dụng lệnh net view từ command line để xem các tài nguyên chia sẻ.
Ngoài ra, ta còn có thể truy cập tài nguyên của máy chủ Samba hoặc tài nguyên chia sẻ Windows trên các host Linux. Để thực hiện được điều này, chúng ta cần đến lệnh smbclient. Smbclient giống như truy cập tài nguyên bằng ftp; bằng cách này từ máy Linux ta có thể sử dụng tài nguyên mà không cần đến giao diện đồ họa.
Cú pháp:
Smbclient [tùy chọn] //tên máy/tài nguyên –U username Ví dụ:
Truy cập tài nguyên chia sẻ của Windows XP
[root@server ~]# smbclient //172.16.1.10/share_win -U u1
Password:
Domain=[HOMEXP] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> ls
. D 0 Wed Sep 1 16:18:20 2010
.. D 0 Wed Sep 1 16:18:20 2010
USBBoot.tib A 728064 Fri Apr 30 12:38:41 2010
45683 blocks of size 32768. 45350 blocks available
smb: \>
Truy cập tài nguyên của Samba server:
[root@server3 ~]# smbclient //server2.cn06.com/user -U user1
Password:
Domain=[CN06.COM] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]
smb: \>
Tùy chọn -L cho phép chúng ta thấy danh sách các tài nguyên được chia sẻ trên network.
Tùy chọn –U chỉ rõ user nào sẽ truy cập dịch vụ.
Để dễ dàng truy cập tài nguyên của Windows hơn, chúng ta có thể “mount” vào thư mục nào đó trên Linux:
[root@server ~]# mount -t cifs //172.16.1.10/share_win /home/admin/Desktop/win -o username=user1,password=user1
[root@server ~]# cd /home/admin/Desktop/
[root@server Desktop]# ls win
USBBoot.tib
Các tùy chọn smbclient:
Tùy chọn | Mô tả |
? hoặc help | Hiển thị thông báo trợ giúp tương ứng với lệnh, hoặc trong trường hợp không có lệnh thì cho thông báo trợ giúp tổng quát. |
! | Thực thi lệnh shell hoặc đưa user về dấu nhắc shell. |
cd | Chuyển về thư mục trên server. Nếu thư mục không được xác định, smbclient sẽ báo thư mục hiện hành. |
lcd | Chuyển về thư mục trên máy tại chỗ. Nếu thư mục không được xác định, smbclient sẽ báo thư mục hiện hành trên máy tại chỗ. |
del | Những tệp được khai báo sẽ bị xoá khỏi server, nếu user được quyền thực hiện thao tác này. Có thể dùng ký tự wildcard. |
dir hoặc ls | Liệt kê các tệp được chọn. Có thể dùng lệnh ls để có danh sách các tệp. |
exit hoặc quit | Thoát khỏi chương trình smbclient. |
get | Truy cập tệp từ xa và sao lưu vào server tại chỗ. Nếu có tên tại chỗ, tệp sẽ được sao lưu với chính tên tại chỗ, thay vì sao lưu với tên trên server từ xa. |
mget | Sao chép mọi tệp được xác định vào máy tại chỗ. |
md hoặc mkdir | Tạo thư mục trên máy từ xa. |
rd hoặc rmdir | Xoá thư mục trên máy từ xa. |
put | Sao chép tệp từ máy tại chỗ vào server. |
mput | Sao chép mọi tệp từ máy tại chỗ vào server. |
print | In tệp trên máy từ xa. |
queue | Liệt kê mọi công việc in ấn đang xếp hàng chờ trên server từ xa. |
ÑLưu ý:
Do Samba sử dụng 3 cổng 137, 139 và 445 cho việc chia sẻ nên chúng ta cần tạo rule cho phép mở các cổng này:
#iptables –I Firewall-eth0-INPUT rule number -p udp –m state --state NEW –m udp --dport 137:138 –j ACCEPT
#iptables –I Firewall-eth0-INPUT rule number -p tcp –m state --state NEW –m tcp --dport 139 –j ACCEPT
#iptables –I Firewall-eth0-INPUT rule number -p tcp –m state –state –m tcp NEW --dport 445 –j ACCEPT
-------------------------
Chúc các bạn học tập tốt !