SMB - Hướng dẫn chia sẻ thư mục qua Samba trên Ubuntu

SMB (Server Message Block) – còn được biết đến với tên gọi CIFS (Common Internet File System) – là giao thức chia sẻ file và máy in phổ biến nhất trong môi trường Windows.

Nhờ có Samba, Ubuntu có thể trở thành một máy chủ chia sẻ file hoạt động liền mạch với Windows, macOS và cả các bản phân phối Linux khác.

Trong bài viết này, tôi sẽ hướng dẫn bạn từng bước thiết lập một thư mục chia sẻ qua SMB trên Ubuntu, kèm theo các tùy chọn xác thực và phân quyền cơ bản.


1. Điều kiện tiên quyết

  • Một máy tính cài Ubuntu 20.04/22.04/24.04 (các phiên bản khác cũng tương tự).

  • Quyền sudo hoặc tài khoản root.

  • Máy chủ và máy khách nằm trong cùng mạng nội bộ.

  • Địa chỉ IP tĩnh được khuyến khích để tránh thay đổi sau mỗi lần khởi động lại.


2. Cập nhật hệ thống và cài đặt Samba

Trước tiên, hãy cập nhật danh sách gói và nâng cấp hệ thống:

bash

sudo apt update && sudo apt upgrade -y

Sau đó cài đặt Samba:

bash

sudo apt install samba -y

Sau khi cài đặt, bạn có thể kiểm tra phiên bản Samba:

bash

Kết quả tương tự: Version 4.15.13-Ubuntu.


3. Tạo thư mục muốn chia sẻ

Giả sử bạn muốn chia sẻ thư mục share nằm trong thư mục người dùng nqdev. Tạo thư mục và cấp quyền phù hợp:

bash

  • chmod 0755: chủ sở hữu có toàn quyền (đọc, ghi, thực thi), nhóm và người khác chỉ đọc và thực thi.

  • chown nqdev:nqdev: gán chủ sở hữu và nhóm là nqdev.

Nếu bạn muốn cho phép người dùng khác ghi vào thư mục, hãy đặt quyền 0777 (không an toàn) hoặc tạo nhóm riêng và gán quyền.


4. Sao lưu file cấu hình gốc

Trước khi sửa file cấu hình, hãy sao lưu để dễ khôi phục:

bash


5. Cấu hình Samba

Mở file cấu hình bằng trình soạn thảo (nano hoặc vim):

bash

5.1. Cấu hình phần [global] (tuỳ chọn)

Bạn có thể để mặc định hoặc thêm các tuỳ chỉnh sau vào cuối phần [global]:

ini

  • map to guest = bad user: nếu người dùng không tồn tại, tự động chuyển thành guest (hữu ích khi bật guest access).

5.2. Định nghĩa share

Cuối file, thêm một định nghĩa share. Ví dụ:

ini

Giải thích các tuỳ chọn:

  • [MyShare] – tên share sẽ hiển thị trên mạng.

  • comment – mô tả (xuất hiện khi duyệt mạng).

  • path – đường dẫn thư mục thực tế.

  • browseable – hiển thị trong danh sách share khi duyệt mạng.

  • read only = no – cho phép ghi.

  • guest ok = no – yêu cầu xác thực (đặt yes nếu muốn cho phép khách không cần mật khẩu).

  • valid users – chỉ cho phép người dùng nqdev truy cập.

  • create mask / directory mask – quyền tạo file/thư mục mới (theo chuẩn Linux).

Nếu bạn muốn cho phép truy cập guest (không cần mật khẩu) và không yêu cầu tài khoản, đặt:

ini

Lưu file và thoát (Ctrl + O, Enter, Ctrl + X với nano).


6. Thêm người dùng Samba

Samba sử dụng cơ sở dữ liệu riêng để quản lý mật khẩu. Tạo người dùng Samba với mật khẩu (người dùng này phải tồn tại trong hệ thống Ubuntu):

bash

Hệ thống sẽ yêu cầu nhập mật khẩu (có thể khác với mật khẩu đăng nhập Ubuntu). Để kích hoạt tài khoản:

bash


7. Khởi động lại dịch vụ Samba và cấu hình tường lửa

Khởi động lại các dịch vụ smbd (server SMB) và nmbd (hỗ trợ NetBIOS):

bash

Kích hoạt tự động khởi động cùng hệ thống:

bash

Nếu bạn đang sử dụng tường lửa ufw, hãy mở các cổng cho Samba:

bash

hoặc cụ thể hơn:

bash


8. Kiểm tra trạng thái dịch vụ

Xem smbd đã chạy chưa:

bash

Kiểm tra cấu hình Samba có lỗi cú pháp không:

bash

Lệnh này sẽ hiển thị cấu hình hợp lệ và cảnh báo nếu có lỗi.


9. Truy cập thư mục chia sẻ

9.1. Từ máy tính Windows

  • Mở File Explorer, nhập đường dẫn:

    text

    Ví dụ: \\192.168.1.100\MyShare

  • Nhập tên người dùng và mật khẩu Samba (đã tạo ở bước 6).

  • Nếu không thấy share, hãy thử dùng IP thay vì tên máy.

9.2. Từ macOS

  • Mở Finder → menu GoConnect to Server... (⌘K)

  • Nhập: smb://địa_chỉ_ip_ubuntu/MyShare

  • Nhập thông tin đăng nhập.

9.3. Từ Linux

Dùng lệnh smbclient:

bash

Hoặc mount thư mục vào hệ thống:

bash


10. Xử lý sự cố thường gặp

10.1. Lỗi “Permission denied” khi ghi file

  • Kiểm tra quyền Linux của thư mục: ls -ld /home/nqdev/share

  • Kiểm tra create maskdirectory mask trong smb.conf.

  • Nếu dùng guest, hãy thêm force user = nqdev để đảm bảo quyền ghi.

10.2. Không thể kết nối từ Windows

  • Tắt tường lửa tạm thời để kiểm tra: sudo ufw disable (sau đó bật lại).

  • Đảm bảo máy khách và máy chủ cùng subnet.

  • Kiểm tra log Samba: sudo tail -f /var/log/samba/log.smbd

10.3. Vẫn hỏi mật khẩu dù đã đặt guest ok = yes

Thêm dòng map to guest = bad user vào phần [global] trong smb.conf và khởi động lại Samba.

10.4. Lỗi “You do not have permission to access” trên Windows 10/11

  • Mở Control PanelPrograms and FeaturesTurn Windows features on or off → bật SMB 1.0/CIFS Client (không khuyến khích vì bảo mật) hoặc đảm bảo máy chủ Samba hỗ trợ SMB2/3 (Samba mặc định hỗ trợ).

  • Đôi khi Windows yêu cầu đăng nhập với định dạng tên_máy\tên_người_dùng.


11. Kết luận

Bạn đã hoàn tất việc thiết lập một máy chủ chia sẻ file SMB trên Ubuntu. Với cấu hình trên, bạn có thể dễ dàng chia sẻ dữ liệu giữa các hệ điều hành khác nhau trong mạng nội bộ.

Samba còn rất nhiều tuỳ chỉnh nâng cao như chia sẻ theo nhóm, tích hợp với Active Directory, giới hạn băng thông, v.v. Tuỳ vào nhu cầu, bạn có thể mở rộng cấu hình để đáp ứng các yêu cầu phức tạp hơn.

Hy vọng bài viết này hữu ích với bạn. Nếu có bất kỳ thắc mắc, hãy để lại bình luận bên dưới.


Cẩm nang NQDEV – Kiến thức IT thực chiến, dễ hiểu và áp dụng ngay.

Last updated