Lệnh smbclient trong linux với các ví dụ dễ hiểu

Lệnh smbclient trong linux là một công cụ dòng lệnh mạnh mẽ, cho phép bạn truy cập các tài nguyên chia sẻ trên mạng SMB/CIFS một cách dễ dàng. Với lệnh smbclient, bạn có thể duyệt thư mục, tải lên và tải xuống tập tin từ các máy chủ Windows hoặc Samba. Nó cung cấp một giao diện tương tác, giúp bạn quản lý các kết nối mạng chia sẻ một cách hiệu quả và trực quan.

Lệnh smbclient trong linux là gì?

Command smbclient in linux là một công cụ dòng lệnh mạnh mẽ, cho phép bạn truy cập và tương tác với các chia sẻ SMB/CIFS trên mạng, tương tự như cách bạn sử dụng Windows Explorer. Nó giúp bạn duyệt các thư mục chia sẻ, tải lên và tải xuống tập tin, cũng như thực hiện các thao tác quản lý khác trên máy chủ SMB. Với smbclient in linux, bạn có thể dễ dàng kết nối đến các máy chủ Windows hoặc Linux chia sẻ tài nguyên qua giao thức SMB. Đây là một công cụ hữu ích cho việc quản lý và chia sẻ tập tin trong môi trường mạng hỗn hợp, đặc biệt khi làm việc với các hệ thống Windows. Hãy thử sử dụng nó để khám phá các tài nguyên chia sẻ trên mạng của bạn nhé!

Cài đặt smbclient trên Ubuntu 22.04

Gói smbclient là một công cụ dòng lệnh cho phép hệ thống Linux tương tác với SMB/CIFS file shares.

Trong bước này, chúng ta sẽ cài đặt gói smbclient trên hệ thống Ubuntu của mình một cách dễ dàng.

Trước tiên, hãy cập nhật package index để đảm bảo chúng ta có phiên bản mới nhất của phần mềm.

sudo apt update

Bạn sẽ thấy kết quả tương tự như sau sau khi chạy lệnh cập nhật:

Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB]
Fetched 324 kB in 1s (324 kB/s)
Reading package lists... Done

Bây giờ, chúng ta hãy tiến hành cài đặt gói smbclient vào hệ thống của mình.

sudo apt install -y smbclient

Kết quả trả về sẽ trông giống như thế này sau khi cài đặt xong:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libsmbclient
Suggested packages:
  samba-common
The following NEW packages will be installed:
  libsmbclient smbclient
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 479 kB of archives.
After this operation, 1,711 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsmbclient amd64 2:4.15.5+dfsg-1ubuntu2 [222 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 smbclient amd64 2:4.15.5+dfsg-1ubuntu2 [257 kB]
Fetched 479 kB in 0s (1,030 kB/s)
Selecting previously unselected package libsmbclient.
(Reading database ... 26536 files and directories currently installed.)
Preparing to unpack .../libsmbclient_2%3a4.15.5+dfsg-1ubuntu2_amd64.deb ...
Unpacking libsmbclient (2:4.15.5+dfsg-1ubuntu2) ...
Selecting previously unselected package smbclient.
Preparing to unpack .../smbclient_2%3a4.15.5+dfsg-1ubuntu2_amd64.deb ...
Unpacking smbclient (2:4.15.5+dfsg-1ubuntu2) ...
Setting up libsmbclient (2:4.15.5+dfsg-1ubuntu2) ...
Setting up smbclient (2:4.15.5+dfsg-1ubuntu2) ...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3) ...

Để xác minh rằng smbclient đã được cài đặt chính xác, hãy chạy lệnh sau.

smbclient --version

Bạn sẽ thấy kết quả hiển thị phiên bản của smbclient đã được cài đặt.

Version 4.15.5-Ubuntu

Bây giờ chúng ta đã cài đặt smbclient, chúng ta có thể bắt đầu sử dụng nó để tương tác với SMB/CIFS shares.

Tìm hiểu các kiến thức cơ bản về smbclient

Sau khi cài đặt smbclient, hãy tìm hiểu cách sử dụng và cú pháp cơ bản của nó.

Cú pháp lệnh

Cú pháp cơ bản cho lệnh smbclient như sau:

smbclient //server/share -U username%password [options]

Trong đó:

  • //server/share là đường dẫn UNC (Universal Naming Convention) đến thư mục SMB.
  • -U username%password chỉ định tên người dùng và mật khẩu để xác thực.
  • [options] là các tham số bổ sung mà bạn có thể cung cấp.

Tạo thư mục cục bộ để thực hành

Hãy tạo một thư mục để lưu trữ các tệp mà ta có thể muốn chuyển đến hoặc từ thư mục SMB:

mkdir -p ~/project/smb-files

Hãy tạo một tệp mẫu trong thư mục này để sử dụng sau này:

echo "This is a test file for SMB transfer" > ~/project/smb-files/test.txt

Khám phá trợ giúp của smbclient

Để xem tất cả các tùy chọn có sẵn cho smbclient, hãy sử dụng lệnh help:

smbclient --help

Lệnh này sẽ hiển thị một đoạn văn bản dài với tất cả các tùy chọn có sẵn. Đây là một đoạn trích:

Usage: smbclient [OPTION...] service <password>
  -M, --message=HOST                           Send message
  -I, --ip-address=IP                          Use this IP to connect to
  -E, --stderr                                 Write messages to stderr instead of stdout
  -L, --list=HOST                              Get a list of shares available on a host
  -T, --tar=<c|x>IXFvgbNan                     Command line tar
  -D, --directory=DIR                          Start from directory
...

Các lệnh smbclient thông dụng

Khi bạn đã kết nối với một thư mục SMB bằng smbclient, bạn có thể sử dụng các lệnh khác nhau để điều hướng và thao tác trên các tệp.

  • ls hoặc dir: Liệt kê các tệp và thư mục.
  • cd directory: Thay đổi sang một thư mục khác.
  • get file [localfile]: Tải xuống một tệp từ thư mục.
  • put file [remotefile]: Tải lên một tệp lên thư mục.
  • mget files...: Tải xuống nhiều tệp.
  • mput files...: Tải lên nhiều tệp.
  • mkdir directory: Tạo một thư mục.
  • rmdir directory: Xóa một thư mục.
  • rm file: Xóa một tệp.
  • help hoặc ?: Hiển thị trợ giúp.
  • quit hoặc exit: Thoát khỏi smbclient.

Bây giờ ta đã hiểu các kiến thức cơ bản về smbclient, bước tiếp theo là kết nối đến một thư mục SMB thực tế.

Thiết lập Môi trường Kiểm thử SMB

Trong thực tế, bạn sẽ kết nối đến máy chủ Windows hoặc Samba thật. Tuy nhiên, trong lab này, ta sẽ mô phỏng môi trường SMB bằng Samba server cục bộ. Cách này giúp ta thực hành lệnh smbclient mà không cần truy cập server bên ngoài.

Cài đặt Samba Server

Đầu tiên, hãy cài đặt gói Samba server bằng lệnh sau:

sudo apt install -y samba

Bạn sẽ thấy thông tin đầu ra cho biết quá trình cài đặt đang diễn ra:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  attr python3-dnspython python3-gpg python3-ldb python3-markdown python3-pygments python3-samba samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules tdb-tools
Suggested packages:
  bind9 bind9utils ctdb ldb-tools ntp | chrony python-markdown-doc python-pygments-doc
The following NEW packages will be installed:
  attr python3-dnspython python3-gpg python3-ldb python3-markdown python3-pygments python3-samba samba samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules tdb-tools
0 upgraded, 14 newly installed, 0 to remove and 0 not upgraded.
Need to get 10.1 MB of archives.
After this operation, 51.3 MB of additional disk space will be used.
...

Tạo một Chia sẻ Samba

Bây giờ, hãy tạo cấu hình chia sẻ Samba đơn giản. Trước tiên, sao lưu file cấu hình gốc:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

Tạo một thư mục để chia sẻ:

mkdir -p ~/project/samba-share

Hãy tạo một file kiểm thử trong thư mục chia sẻ này:

echo "This is a test file in our Samba share" > ~/project/samba-share/shared-test.txt

Tiếp theo, tạo một cấu hình Samba đơn giản như sau:

sudo bash -c 'cat > /etc/samba/smb.conf << EOF
[global]
   workgroup = WORKGROUP
   server string = Samba Server
   log file = /var/log/samba/log.%m
   max log size = 50
   security = user
   map to guest = bad user

[testshare]
   path = /home/labex/project/samba-share
   browseable = yes
   read only = no
   guest ok = yes
   force user = labex
EOF'

Thêm người dùng hiện tại vào danh sách người dùng Samba và đặt mật khẩu để kiểm thử:

sudo smbpasswd -a labex

Khi được hỏi, nhập mật khẩu đơn giản như password (bạn cần nhập hai lần):

New SMB password:
Retype new SMB password:
Added user labex.

Khởi động lại dịch vụ Samba để áp dụng các thay đổi:

sudo service smbd restart

Bây giờ, ta đã có một chia sẻ Samba cục bộ tên là testshare trên hệ thống. Ta có thể dùng smbclient để kết nối đến nó như một chia sẻ Windows từ xa.

Kết luận cho linux smbclient command

Vậy là chúng ta đã cùng nhau khám phá những điều cơ bản về lệnh smbclient trong Linux. Hy vọng hướng dẫn này giúp bạn dễ dàng truy cập và quản lý các tài nguyên chia sẻ trên mạng Windows từ hệ thống Linux của mình. Linux smbclient command là một công cụ mạnh mẽ, nhưng đừng ngại thử nghiệm để làm quen với các tùy chọn khác nhau. Hãy nhớ rằng, việc thực hành thường xuyên sẽ giúp bạn nắm vững các lệnh và giải quyết các vấn đề một cách hiệu quả hơn. Chúc bạn thành công trong việc kết nối và chia sẻ dữ liệu giữa các hệ điều hành khác nhau! Đừng quên tham khảo tài liệu chính thức của Samba để tìm hiểu sâu hơn về các tính năng nâng cao. Hãy tận dụng sức mạnh của smbclient để tối ưu hóa quy trình làm việc của bạn. Chúc bạn có những trải nghiệm tuyệt vời với Linux!

Last Updated : 15/10/2025