Bài 14.
Dịch vụ Samba
Trong một LAN có thể tồn tại cả máy
Linux và máy Windows và yêu cầu cơ bản là các máy dù chạy hệ điều hành khác
nhau vẫn có thể kết nối mạng và chia sẻ tài nguyên cho nhau. Để thực hiện điều
này, Ubuntu cung cấp và tích hợp các dịch chung cho môi trường Windows. Các
dịch vụ này hỗ trợ chia sẽ dữ liệu và thông tin về máy tính cũng như người dùng
tham gia mạng. Có thể chia các dịch vụ này theo ba nhóm chức năng sau:
-
Các dịch vụ chia sẻ tệp và
máy in: Sử dụng giao thức Server Message Block (SMB) để chia sẻ tệp, thư mục, ổ
đĩa và máy in trong mạng. SMB là giao thức được Windows
sử dụng để chia sẻ dữ liệu qua mạng.
-
Các dịch vụ thư mục: Chia sẻ các thông
tin thiết yêu về máy tính và người dùng trong mạng với các công nghệ như Lightweight Directory Access Protocol (LDAP) và Microsoft
Active Directory®.
-
Xác thực và truy cập:
Thiết lập định danh của máy tính và người dùng trong mạng và xác định thông tin
mà máy tính hoặc người dùng có quyền được truy cập.
Ubuntu sử dụng Samba để thực hiện kết
nối mạng với Windows.
Mở Terminal, chạy lệnh sau để cài đặt
gói Samba:
sudo
apt install samba
Một trong những cách thức nối mạng phổ
biến nhất giữa Ubuntu và Windows là cấu hình Samba như một File Server để chia
sẻ tệp giữa Ubuntu và Windows.
Phần này hướng dẫn cấu hình Samba để
chia sẻ tệp không yêu cầu mật khẩu. Yêu cầu an ninh được trình bày trong Mục 4.
Tệp cấu hình chính của Samba là
/etc/samba/smb.conf. Trong tệp cấu hình này, dấu # được đặt đầu dòng chú
thích. Dòng không có dấu # ở đầu là dòng cấu hình.
Cập nhật tệp /etc/samba/smb.conf. Trong phần
[global], đặt giá trị cho tham số workgroup là tên nhóm và security là user như
sau:
[global]
workgroup
= EXAMPLE
...
security = user
Tham số workgroup xác định tên nhóm của Windows
mà máy Linux đăng nhập, nhóm này phải tồn tại trước khi cấu hình
Samba.
# server string is the equivalent of the NT Description field
server string = Samba Server
server string là tham số gán mô tả về tên
máy Linux trên mạng. Việc gán giá trị cho tham số này không ảnh hưởng
lớn đến việc cấu hình Samba.
Để chia sẻ một thư
mục, ví dụ /home/thanh/share, thêm một phần cấu hình vào cuối tệp cấu hình
/etc/samba/smb.conf như sau:
[myshare]
comment = Ubuntu File Server Share
path = /home/thanh/share
browsable = yes
guest ok = yes
read only = no
create mask = 0755
-
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.
-
Tham số path xác định đường dẫn
đến thư mục được chia sẻ trên Ubuntu server.
-
Nếu đặt browseable = no thì Samba
sẽ không hiển 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ố guest ok = yes cho các máy
khác kết nối đến chia sẻ mà không cần mật khẩ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.
-
Tham số create mask cho biết quyền của
các tệp được tạo mới trên thư mục được chia sẻ.
Bây giờ cần tạo thư mục được chia sẻ và thiết lập
quyền trên thư mục đó.
sudo
mkdir -p /home/thanh/share
sudo
chown nobody:nogroup /home/thanh/share/
Khởi động lại dịch vụ Samba bằng lệnh sau:
sudo
systemctl restart smbd.service nmbd.service
Samba server có hai dịch vụ là smbd và nmbd.
smbd cung cấp dịch vụ chia sẻ tệp và dữ liệu, nmbd cung cấp khả năng
hỗ trợ NetBIOS name.
Với
Windows, việc truy cập thư mục được chia sẻ bởi Samba server thật dễ
dàng. Chỉ cần mở Windows Explore và tìm đến domain có máy Ubuntu, nhấn
chuột lên tên máy Ubuntu sau đó nhập vào tên tài khoản và mật khẩu
tương ứng, ta sẽ nhìn thấy các thư
mục chia sẻ hiện ra. Tại đây ta
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.
Từ máy chạy Linux, có thể sử dụng smbclient hoặc
mount để truy cập đến thư mục được chia sẻ trên Samba server.
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. Để liệt kê các thư mục chia sẻ có trên máy
172.16.200.203 ta dùng smbclient với
tham số –L:
[root@localhost ~]# smbclient
-L 172.16.200.203
Kết quả sẽ cho ra một số thư mục được chia
sẻ trên trên máy 172.16.200.203. Để vào một trong các thư mục trên
ta 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).
[root@localhost ~]# smbclient
//172.16.200.203/tên_thư_mục -U
tên_user
Sau khi gõ vào mật khẩu ta sẽ nhận được dấu nhắc:
smb:\>
Tại dấu nhắc này ta có thể xem các file bên trong thư mục
chia sẻ bằng lệnh ls, lấy nó về máy Linux bằng lệnh get hoặc mget. Ví
dụ
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:\>
Samba cũng thường được sử dụng đẻ chia sẻ máy in
được cài đặt trên máy Ubuntu. Phần này hướng dẫn cấu hình Samba để chia sẻ máy
in không yêu cầu mật khẩu. Xem cấu hình an ninh tại Mục 5.
Cập nhật tệp cấu hình /etc/samba/smb.conf. Thay
đổi thuộc tính workgroup với giá trị là tên nhóm trong mạng , đặt security là
user, như sau:
workgroup = EXAMPLE
...
security = user
Trong phần [printers] đặt các tham số sau:
browsable = yes
guest ok = yes
Khởi động lại Samba bằng lệnh sau:
sudo
systemctl restart smbd.service nmbd.service
Có hai mức độ an ninh trong giao thức Common Internet Filesystem (CIFS) là user-level
và share-level. Samba cung cấp bốn chế độ an ninh mức người dùng và một chế độ
an ninh mức chia sẻ, bao gồm:
-
security = user: Yêu cầu máy khách
cung cấp tên đăng nhập và mật khẩu để kết nối đến chia sẻ. Tài khoản người dùng
Samba khác với tài khoản người dùng hệ thống. Tuy nhiên, gói libpam-winbind sẽ
đồng bộ người dùng hệ thống với CSDL người dùng của Samba.
-
security = domain: Cho phép Samba
server xuất hiện trước Windows như Primary Domain Controller (PDC), Backup
Domain Controller (BDC), hoặc một Domain Member Server (DMS).
-
security = ADS: Cho phép Samba server
tham gia một Active Directory domain.
-
security = server: Cho phép Samba trở
thành thành viên server. Tuy nhiên, vì lý do an ninh, chế độ này không nên được
sử dụng.
-
security = share: Cho phép máy khác
kết nối đến chia sẻ mà không cần cùng cấp tên sử dụng và mật khẩu.
Sử dụng chế độ security=user để yêu cầu chia sẻ có
xác thực. Đầu tiên, cài đặt gói libpam-winbind để đồng bộ người dùng hệ thống
vào CSDL người dùng của Samba.
sudo apt install libpam-winbind
Cập nhật tệp cấu hình /etc/samba/smb.conf, trong
phần [myshare] đặt:
[myshare]
…
guest ok = no
…
Khởi động lại Samba:
sudo
systemctl restart smbd.service nmbd.service
Bây giờ khi kết nối đến chia sẻ bạn sẽ cần cung
cấp tên sử dụng và mật khẩu hệ thống.
Có thể giới hạn người dùng và nhóm người dùng được
quyền kêt nối đến chia sẻ bằng tham số valid user. Ví dụ sau chỉ cho người dùng
hungpv và nhóm admin được kết nối đến chia sẻ.
[myshare]
…
valid users=hungpv,@admin
…
Trong cấu hình chia sẻ, có thể sử dụng các tham số
read list, write list và admin users để chỉ định người dùng, nhóm người dùng có
quyền đọc, ghi hay quản trị, tương ứng. Ví dụ
[myshare]
…
read
list = @qa
write list = @sysadmin,
vincent
admin
users = melissa