2k1
  • Home
  • Programming
  • System
  • Design
  • Applications
  • Tech
No Result
View All Result
  • Login
2k1
  • Home
  • Programming
  • System
  • Design
  • Applications
  • Tech
No Result
View All Result
2k1
No Result
View All Result

SMB là gì? Hướng Dẫn Chi Tiết Tạo Server Chia Sẻ File Với Samba

Nguyen Pham by Nguyen Pham
06/10/2025
in Blog
Reading Time: 13 mins read
A A
0

Trong thế giới kết nối ngày nay, việc chia sẻ tập tin và tài nguyên giữa các thiết bị là một nhu cầu thiết yếu đối với cả người dùng cá nhân lẫn doanh nghiệp. Dù bạn đang làm việc trong môi trường đa nền tảng hay chỉ đơn giản là muốn truy cập dữ liệu từ nhiều máy tính khác nhau, việc hiểu rõ các giao thức chia sẻ mạng là vô cùng quan trọng. Một trong những giao thức phổ biến và mạnh mẽ nhất chính là SMB (Server Message Block).

Bài viết này sẽ đưa bạn đi sâu vào SMB là gì, cách nó hoạt động, và quan trọng hơn, hướng dẫn bạn từng bước cách tạo một máy chủ chia sẻ tập tin hiệu quả bằng Samba trên nền tảng Linux, giúp bạn dễ dàng kết nối với các máy tính Windows và các hệ điều hành khác.

SMB (Server Message Block) Là Gì?

SMB (Server Message Block) là một giao thức mạng được sử dụng để cung cấp quyền truy cập chia sẻ vào các tập tin, máy in, cổng nối tiếp và các tài nguyên truyền thông khác giữa các nút mạng. Nó cho phép các ứng dụng trên một máy tính đọc, ghi và quản lý các tập tin trên một máy chủ từ xa.

Lịch Sử và Sự Phát Triển

  • SMB1 (CIFS): Phiên bản đầu tiên của SMB, thường được biết đến với tên CIFS (Common Internet File System), được IBM phát triển vào những năm 1980. CIFS là một giao thức đầy đủ tính năng nhưng có nhiều hạn chế về hiệu suất và bảo mật, đặc biệt là khi hoạt động trên mạng WAN (Wide Area Network).
  • SMB2: Được Microsoft giới thiệu cùng với Windows Vista và Windows Server 2008. SMB2 mang lại những cải tiến đáng kể về hiệu suất, khả năng mở rộng và bảo mật. Nó giảm số lượng lệnh và yêu cầu mạng, giúp tăng tốc độ truyền tải dữ liệu.
  • SMB3: Ra mắt cùng với Windows 8 và Windows Server 2012, SMB3 tiếp tục nâng cao hiệu suất và đặc biệt là bảo mật. Các tính năng nổi bật bao gồm:
    • SMB Multichannel: Cho phép sử dụng nhiều kết nối mạng đồng thời để tăng băng thông và khả năng chịu lỗi.
    • SMB Direct (RDMA): Tận dụng các adapter mạng hỗ trợ RDMA để truyền dữ liệu trực tiếp vào bộ nhớ mà không cần can thiệp của CPU, giảm độ trễ và tăng thông lượng.
    • SMB Encryption: Mã hóa dữ liệu truyền tải end-to-end để bảo vệ chống lại các cuộc tấn công nghe lén.
    • Directory Leasing: Cải thiện hiệu suất cho các chi nhánh văn phòng.

Ngày nay, Microsoft và các chuyên gia bảo mật đều khuyến nghị ngừng sử dụng SMB1 do những lỗ hổng bảo mật nghiêm trọng của nó. SMB2 và SMB3 là các phiên bản được khuyến nghị để đảm bảo an toàn và hiệu suất.

Samba: Cầu Nối Giữa Linux và SMB

Nếu bạn đang sử dụng hệ điều hành Linux và muốn chia sẻ tập tin với các máy tính Windows hoặc macOS thông qua giao thức SMB, Samba chính là giải pháp.

Samba là gì?

Samba là một phần mềm mã nguồn mở thực hiện giao thức SMB/CIFS trên các hệ thống Unix và Linux. Nó cho phép các máy chủ Linux hoạt động như một máy chủ tập tin và máy in tương thích với Windows, đồng thời cho phép các máy khách Linux truy cập tài nguyên chia sẻ từ máy chủ Windows.

Tại sao nên sử dụng Samba?

  • Tương thích đa nền tảng: Dễ dàng chia sẻ tập tin giữa Linux, Windows và macOS.
  • Miễn phí và Mã nguồn mở: Giảm chi phí đầu tư phần mềm.
  • Linh hoạt: Cung cấp nhiều tùy chọn cấu hình để phù hợp với các môi trường khác nhau, từ mạng gia đình đến mạng doanh nghiệp lớn.
  • Hỗ trợ Active Directory: Samba có thể hoạt động như một thành viên trong miền Active Directory hoặc thậm chí là một bộ điều khiển miền (Domain Controller) thay thế.

Hướng Dẫn Tạo Server Chia Sẻ File Với Samba Trên Linux

Trong phần này, chúng ta sẽ đi qua các bước cài đặt và cấu hình Samba trên một máy chủ Linux (ví dụ: Ubuntu hoặc Debian) để tạo một thư mục chia sẻ.

Bước 1: Cập Nhật Hệ Thống và Cài Đặt Samba

Đầu tiên, hãy cập nhật danh sách gói và cài đặt gói Samba:

sudo apt update
sudo apt upgrade -y
sudo apt install samba -y

Sau khi cài đặt, dịch vụ Samba (smbd và nmbd) sẽ tự động khởi động.

Bước 2: Tạo Thư Mục Chia Sẻ

Bạn cần tạo một thư mục trên máy chủ Linux mà bạn muốn chia sẻ qua mạng. Ví dụ, chúng ta sẽ tạo một thư mục tên là myshare trong /srv/samba/.

sudo mkdir -p /srv/samba/myshare

Tiếp theo, chúng ta cần gán quyền sở hữu và phân quyền phù hợp cho thư mục này. Để đảm bảo rằng người dùng Samba có thể đọc và ghi vào thư mục, chúng ta có thể gán quyền sở hữu cho một người dùng hoặc nhóm cụ thể.

Ví dụ, tạo một nhóm smbgroup và gán quyền sở hữu thư mục cho nhóm này:

sudo groupadd smbgroup
sudo chown -R nobody:smbgroup /srv/samba/myshare
sudo chmod -R 2770 /srv/samba/myshare
  • sudo groupadd smbgroup: Tạo một nhóm mới tên là smbgroup.
  • sudo chown -R nobody:smbgroup /srv/samba/myshare: Thay đổi chủ sở hữu thư mục và tất cả các tệp/thư mục con thành người dùng nobody và nhóm smbgroup. nobody là một người dùng hệ thống không có đặc quyền.
  • sudo chmod -R 2770 /srv/samba/myshare: Đặt quyền truy cập. 2 là bit setgid, đảm bảo rằng các tệp và thư mục mới được tạo trong myshare sẽ tự động kế thừa nhóm smbgroup. 770 cấp quyền đọc, ghi, thực thi cho chủ sở hữu (nobody) và nhóm (smbgroup), không cấp quyền cho người khác.

Bước 3: Cấu Hình Samba

Tệp cấu hình chính của Samba là /etc/samba/smb.conf. Luôn tạo một bản sao lưu trước khi chỉnh sửa:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo nano /etc/samba/smb.conf

Trong tệp này, bạn sẽ thấy hai phần chính: [global] và các phần chia sẻ cụ thể [share_name].

Cấu hình phần [global]

Đảm bảo các cài đặt sau có trong phần [global]:

[global]
   workgroup = WORKGROUP
   server string = Samba Server %v
   netbios name = sambaserver
   security = user
   map to guest = Bad User
   dns proxy = no

   # Cải thiện bảo mật, chỉ cho phép SMB2/SMB3
   min protocol = SMB2
   max protocol = SMB3
  • workgroup: Tên nhóm làm việc mà máy chủ Samba sẽ tham gia. Thường là WORKGROUP để tương thích với các cài đặt mặc định của Windows.
  • server string: Mô tả máy chủ hiển thị trên mạng.
  • netbios name: Tên NetBIOS của máy chủ.
  • security = user: Yêu cầu xác thực người dùng bằng tên người dùng và mật khẩu Samba.
  • map to guest = Bad User: Nếu một người dùng cố gắng kết nối với tên người dùng không tồn tại, họ sẽ được coi là người dùng khách (Guest).
  • min protocol = SMB2 và max protocol = SMB3: Đảm bảo rằng máy chủ chỉ chấp nhận các kết nối sử dụng giao thức SMB2 hoặc SMB3, tăng cường bảo mật.

Cấu hình thư mục chia sẻ [myshare]

Thêm phần sau vào cuối tệp smb.conf để định nghĩa thư mục chia sẻ của chúng ta:

[myshare]
   comment = My Samba Shared Folder
   path = /srv/samba/myshare
   browseable = yes
   writable = yes
   valid users = @smbgroup
   create mask = 0660
   directory mask = 0770
   force group = smbgroup
   public = no
  • comment: Mô tả ngắn gọn về thư mục chia sẻ.
  • path: Đường dẫn tuyệt đối đến thư mục chia sẻ trên máy chủ Linux.
  • browseable = yes: Cho phép thư mục này hiển thị khi duyệt mạng.
  • writable = yes: Cho phép người dùng ghi vào thư mục này.
  • valid users = @smbgroup: Chỉ cho phép các thành viên của nhóm smbgroup truy cập. Bạn cũng có thể liệt kê từng người dùng cách nhau bởi dấu phẩy (ví dụ: valid users = user1, user2).
  • create mask = 0660: Đặt quyền mặc định cho các tệp mới được tạo (rw-rw—-).
  • directory mask = 0770: Đặt quyền mặc định cho các thư mục mới được tạo (rwxrwx—).
  • force group = smbgroup: Đảm bảo rằng tất cả các tệp và thư mục mới được tạo trong thư mục chia sẻ sẽ thuộc về nhóm smbgroup.
  • public = no: Không cho phép truy cập công khai mà không cần xác thực.

Lưu và đóng tệp.

Bước 4: Tạo Người Dùng Samba

Samba sử dụng hệ thống mật khẩu riêng, tách biệt với mật khẩu hệ thống Linux. Bạn cần thêm người dùng Linux vào cơ sở dữ liệu người dùng Samba.

Ví dụ, nếu bạn muốn người dùng youruser có thể truy cập Samba, hãy đảm bảo youruser tồn tại trên hệ thống Linux, sau đó thêm họ vào Samba:

# Thêm người dùng vào nhóm smbgroup
sudo usermod -aG smbgroup youruser

# Tạo mật khẩu Samba cho người dùng
sudo smbpasswd -a youruser

Bạn sẽ được yêu cầu nhập và xác nhận mật khẩu Samba cho youruser.

Bước 5: Khởi Động Lại Dịch Vụ Samba

Sau khi thay đổi cấu hình, bạn cần khởi động lại các dịch vụ Samba để áp dụng:

sudo systemctl restart smbd nmbd

Để kiểm tra trạng thái dịch vụ:

sudo systemctl status smbd nmbd

Bước 6: Cấu Hình Tường Lửa (Firewall)

Nếu bạn đang sử dụng tường lửa (ví dụ: UFW), bạn cần cho phép các cổng Samba:

sudo ufw allow samba
sudo ufw enable # Nếu chưa bật
sudo ufw status

Các cổng mặc định mà Samba sử dụng là UDP 137, 138 và TCP 139, 445. Lệnh ufw allow samba sẽ tự động mở các cổng này.

Kết Nối Từ Máy Khách

Bây giờ máy chủ Samba của bạn đã sẵn sàng. Bạn có thể kết nối từ các máy khách Windows, Linux hoặc macOS.

Kết Nối Từ Máy Khách Windows

  1. Mở File Explorer.
  2. Nhấp chuột phải vào This PC (hoặc My Computer) và chọn Map network drive….
  3. Trong cửa sổ Map Network Drive, nhập đường dẫn mạng theo định dạng \\IP_cua_may_chu_Samba\myshare (ví dụ: \\192.168.1.100\myshare).
  4. Chọn một ký tự ổ đĩa (ví dụ: Z:).
  5. Đánh dấu vào Connect using different credentials.
  6. Nhấp Finish.
  7. Khi được yêu cầu, nhập tên người dùng Samba (youruser) và mật khẩu mà bạn đã đặt ở Bước 4.

Bạn sẽ thấy thư mục chia sẻ xuất hiện như một ổ đĩa mạng trên máy tính Windows của mình.

Kết Nối Từ Máy Khách Linux

Bạn có thể sử dụng smbclient để duyệt hoặc mount để gắn kết thư mục chia sẻ:

Sử dụng smbclient (Duyệt)

smbclient //IP_cua_may_chu_Samba/myshare -U youruser

Nhập mật khẩu Samba khi được yêu cầu. Bạn sẽ thấy một dấu nhắc smb: \>, cho phép bạn duyệt các tệp và thư mục.

Gắn kết (Mount) Thư Mục Chia Sẻ

Để gắn kết thư mục chia sẻ vào hệ thống tệp của máy khách Linux:

  1. Cài đặt cifs-utils:
    bash
    sudo apt install cifs-utils -y
  2. Tạo điểm gắn kết:
    bash
    sudo mkdir /mnt/samba_share
  3. Gắn kết thư mục:
    bash
    sudo mount -t cifs //IP_cua_may_chu_Samba/myshare /mnt/samba_share -o username=youruser,uid=1000,gid=1000

    Thay thế uid=1000,gid=1000 bằng UID và GID của người dùng hiện tại trên máy khách Linux của bạn để đảm bảo quyền sở hữu đúng.

Để tự động gắn kết khi khởi động, bạn có thể thêm một dòng vào tệp /etc/fstab:

//IP_cua_may_chu_Samba/myshare /mnt/samba_share cifs username=youruser,password=yourpassword,iocharset=utf8,file_mode=0660,dir_mode=0770,uid=1000,gid=1000 0 0

Lưu ý: Việc đặt mật khẩu trực tiếp trong /etc/fstab không được khuyến nghị vì lý do bảo mật. Tốt hơn là sử dụng tệp credentials hoặc yêu cầu nhập mật khẩu thủ công.

Các Lưu Ý Về Bảo Mật

  • Tắt SMB1: Luôn đảm bảo bạn đã tắt SMB1 trên cả máy chủ và máy khách để tránh các lỗ hổng bảo mật. Trong cấu hình Samba, min protocol = SMB2 giúp đảm bảo điều này.
  • Mật khẩu mạnh: Sử dụng mật khẩu mạnh và duy nhất cho người dùng Samba.
  • Giới hạn quyền truy cập: Chỉ cấp quyền truy cập cần thiết cho người dùng và nhóm. Tránh sử dụng guest ok = yes hoặc public = yes trong môi trường sản xuất nếu không thực sự cần thiết.
  • Tường lửa: Luôn cấu hình tường lửa để chỉ cho phép các kết nối SMB từ các địa chỉ IP đáng tin cậy.
  • Cập nhật thường xuyên: Đảm bảo hệ điều hành và gói Samba của bạn luôn được cập nhật phiên bản mới nhất để vá các lỗ hổng bảo mật.

Kết Luận

SMB và Samba là một cặp đôi mạnh mẽ cho phép chia sẻ tập tin hiệu quả và an toàn trong môi trường mạng hỗn hợp. Bằng cách làm theo hướng dẫn này, bạn đã có thể thiết lập một máy chủ Samba cơ bản trên Linux, mở ra cánh cửa cho việc trao đổi dữ liệu liền mạch giữa các hệ điều hành khác nhau.

Hãy nhớ rằng, bảo mật luôn là ưu tiên hàng đầu. Luôn áp dụng các biện pháp bảo mật tốt nhất và thường xuyên kiểm tra cấu hình của bạn để đảm bảo dữ liệu được an toàn. Chúc bạn thành công!

Previous Post

Kubernetes (K8s) là gì? Khám phá sức mạnh của nền tảng điều phối container

Next Post

Triển Khai AList Bằng Docker: Quản Lý Đa Dạng Lưu Trữ Đám Mây Dễ Dàng

Related Posts

Blog

Triển Khai AList Bằng Docker: Quản Lý Đa Dạng Lưu Trữ Đám Mây Dễ Dàng

by Nguyen Pham
10/10/2025
Kubernetes (K8s) là gì? Khám phá sức mạnh của nền tảng điều phối container
Blog

Kubernetes (K8s) là gì? Khám phá sức mạnh của nền tảng điều phối container

by Nguyen Pham
06/10/2025
Biểu đồ nến: Chìa khóa vàng để “Đọc Vị” Thị trường
Blog

Biểu đồ nến: Chìa khóa vàng để “Đọc Vị” Thị trường

by Nguyen Pham
06/10/2025
Blog

Tailscale: Cách Mạng Hóa Kết Nối Mạng Từ Xa Với VPN Zero-Config Dựa Trên WireGuard

by Nguyen Pham
28/09/2025
Blog

10 Lệnh Linux Phổ Biến Nhất Mà Mọi Người Dùng Nên Biết

by Nguyen Pham
27/09/2025
Blog

Blockchain và Ethereum: Nền Tảng Của Tương Lai Phi Tập Trung

by Nguyen Pham
27/09/2025
Load More
Next Post

Triển Khai AList Bằng Docker: Quản Lý Đa Dạng Lưu Trữ Đám Mây Dễ Dàng

Please login to join discussion

@2021 2k1.org [email protected]

No Result
View All Result
  • Home
  • Review
  • Applications
  • Computers
  • Gaming
  • Microsoft

© 2021 NData

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In