【smbclient入門】インストールからコマンド・オプションの使い方まで徹底解説!

LinuxからWindows共有フォルダにアクセスできるコマンドラインツール
- smbclient -

本記事では、smbclientのインストール方法から基本操作、よく使うオプション、さらには使用例まで丁寧に解説しています。

検証環境での具体的な実行結果を示しながら解説しているので、すぐに活用できる内容になっています。

smbclientは便利なツールですが、その使用には十分な注意が必要です。許可を得ていないシステムに対して使用すると、不正アクセスとみなされる可能性があります。許可がない環境では、決して使用しないでください。学習目的で試す場合は、実運用環境ではなく「やられアプリ」などの教材をご活用ください。

目次

smbclientとは

smbclientは、SMB/CIFSプロトコルを使用してファイル共有サービスにアクセスするためのCLIツールです。

smbclientはオープンソースプロジェクトであるThe Samba Teamによって開発され、バックエンドにはSambaプロジェクトが提供するライブラリ群(libsmbclient など)が使用されています。

LinuxやUNIX環境からWindowsやSambaの共有フォルダに接続し、FTPクライアントに似た対話型インターフェースでファイルを操作することができます。(例.lsgetputなど)

smbclientをインストール

ここでは代表的なLinuxディストリビューションであるKali LinuxおよびUbuntuにおけるインストール方法を解説します。

Kali Linuxの場合

Kali Linuxにはsmbclientがプリインストールされており、ユーザーによるインストール作業は必要ありません。smbclientはCLI(コマンドライン・インターフェース)のツールであるため、ターミナル上でコマンド実行します。

$ smbclient --usage    # 例.コマンドの使い方を表示

smbclientは、Kali Linuxのアプリケーションメニューから起動することもできます。

09-Discoveryの場合

Kali Linuxのアプリケーションメニュー「09-Discovery」からsmbclientを起動

12-Command and Controlの場合

Kali Linuxのアプリケーションメニュー「12-Command and Control」からsmbclientを起動

09-Discovery(探索)>Network Share Discovery(ネットワーク共有検出)>smbclient

または

12-Command and Control(コマンド&コントロール)>Application Layer Protocol(アプリケーション層プロトコル)>smbclient

を選択すると、ターミナルが立ち上がり、smbclientコマンドが実行されます。

ターミナルが立ち上がり、smbclientコマンドが実行される

Ubuntuの場合

Ubuntuでは、smbclientは標準でインストールされていないため、ユーザー自身でインストールする必要があります。smbclientは、Ubuntu標準リポジトリで提供されているため、aptコマンドを用いてインストールします。

この記事では、Ubuntu 24.04.3 LTSを使用しています。

STEP

パッケージ情報を更新

$ sudo apt update
STEP

smbclientパッケージを確認

$ apt info smbclient
Package: smbclient
Version: 2:4.19.5+dfsg-4ubuntu9.4
Priority: optional
Section: net
Source: samba
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Samba Maintainers <pkg-samba-maint@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 2,128 kB
Provides: samba-client
Depends: samba-common (= 2:4.19.5+dfsg-4ubuntu9.4), samba-libs (= 2:4.19.5+dfsg-4ubuntu9.4), libarchive13t64 (>= 3.0.4), libc6 (>= 2.38), libgnutls30t64 (>= 3.7.0), libndr3 (>= 2:4.17.2), libpopt0 (>= 1.14), libreadline8t64 (>= 6.0), libsmbclient0 (>= 2:4.10.0+dfsg), libtalloc2 (>= 2.4.1~), libtevent0t64 (>= 0.15.0)
Suggests: cifs-utils, heimdal-clients
Homepage: https://www.samba.org
Task: samba-server, kubuntu-desktop, kubuntu-full, ubuntustudio-desktop, ubuntu-mate-core, ubuntu-mate-desktop
Download-Size: 470 kB
APT-Sources: http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages
Description: command-line SMB/CIFS clients for Unix
 Samba is an implementation of the SMB/CIFS protocol for Unix systems,
 providing support for cross-platform file and printer sharing with
 Microsoft Windows, OS X, and other Unix systems.
 .
 This package contains command-line utilities for accessing Microsoft
 Windows and Samba servers, including smbclient, smbtar, and smbspool.
 Utilities for mounting shares locally are found in the package
 cifs-utils.

N: There is 1 additional record. Please use the '-a' switch to see it
STEP

smbclientをインストール

$ sudo apt install smbclient

インストール後、次のコマンドで動作確認を行います。

STEP

実行ファイルの場所を確認

$ which smbclient
/usr/bin/smbclient
STEP

バージョン確認

$ smbclient -V
Version 4.19.5-Ubuntu

smbclientコマンドの使い方

基本的な使い方

$ smbclient //<ターゲットホスト>/<共有名> -U <ユーザー名>

ターゲットホストは、NetBIOS名、サーバー名、IPアドレスのいずれかで指定します。

例えば、ユーザーjohn10.0.0.5上の共有フォルダpublicにアクセスする場合、以下のコマンドを実行します。

$ smbclient //10.0.0.5/public -U john

パスワード認証に成功するとプロンプトsmb: >が表示され、FTPに似た操作(ls, get, put, cd, mkdir など)が可能になります。

smb: \> ls                # ファイル一覧
smb: \> get <ファイル名>    # ファイルをダウンロード
smb: \> put <ファイル名>    # ファイルをアップロード
smb: \> exit              # 終了

ヘルプコマンド

$ smbclient -?         # ヘルプ(--helpでも可)
$ smbclient --usage    # 使い方
$ man smbclient        # マニュアル

バージョンコマンド

$ smbclient -V    # --versionでも可

主要オプション一覧

接続・認証に関するオプション

オプション説明
-U <ユーザー名>
-U <ユーザー名%パスワード>
接続するユーザー名
-N認証なしで接続(パスワードを要求しない)
-A <認証ファイル>認証情報をファイルから読み込む

例)
username = <value>
password = <value>
-I <IPアドレス>接続先をIPアドレスで指定

SMB通信に関するオプション

オプション説明
-p <ポート番号>TCPポートを指定(非標準ポートで動作している場合)
※デフォルト:139
-m <最大バージョン>SMBプロトコルの最大バージョン
例:NT1(SMB1)、SMB2、SMB3
--option='client min protocol=<最小バージョン>'SMBプロトコルの最小バージョン
例:NT1(SMB1)、SMB2、SMB3

操作系のオプション

オプション説明
-L <ホスト>共有リソースを一覧表示
-c <コマンド>非対話モードでsmbclientの内部コマンドを実行(複数コマンドの場合、; 区切り)

その他のオプション

オプション説明
-?
--help
ヘルプを表示
--usage使い方の概要を表示
-Vバージョンを表示
-s <設定ファイル>設定ファイルを指定(デフォルト:/etc/samba/smb.conf)
-d <デバッグレベル>デバッグレベルを指定(例:0〜10、デフォルト:1)

より詳しい内容やその他のオプションについては、man smbclientコマンドやsmbclient -?で確認してください。

よく使うコマンド一覧

共有リソースを一覧表示

$ smbclient -L 10.0.0.5

-L:共有リソースを一覧表示する

共有フォルダに接続

$ smbclient //10.0.0.5/share -U user

パスワード認証に成功するとプロンプトsmb: \>が表示されます。

smb: \>

認証情報をファイルで指定する

$ cat credential.txt
username = <ユーザー名>
password = <パスワード>

$ smbclient //10.0.0.5/share -A ./credential.txt

-A:認証ファイルを指定

匿名アクセス(認証なし)

# 共有リソースを一覧表示
$ smbclient -L 10.0.0.5 -N

# 共有フォルダに接続
$ smbclient //10.0.0.5/share -N

-N:匿名アクセス(認証しない)

匿名アクセスが許可されている環境の場合、パスワードなしで接続できます。

接続先をIPアドレスで指定

$ smbclient //HOST/share -I 10.0.0.5 -U user

-I:接続先IPアドレス

ホスト名HOSTの代わりに、-Iオプションで指定したIPアドレス10.0.0.5に接続します。

実際の接続は10.0.0.5に行いますが、SMBセッション内ではHOSTとして認識されます。

非対話モードで内部コマンドを実行

$ smbclient //10.0.0.5/share -U user -c "ls; get secret.txt; exit;"

-c:smbclient内部コマンド

内部コマンドを複数指定する場合は、セミコロン;で区切ります。

共有フォルダ接続後に使う内部コマンド

smbclientはFTPクライアントのような操作感で、SMBサーバーに対してファイルの一覧表示、アップロード、ダウンロード、削除などが可能です。

内部コマンド一覧

?コマンド、またはhelpコマンドにて、使用できる内部コマンドを確認することができます。

smb: \> ?
?              allinfo        altname        archive        backup
blocksize      cancel         case_sensitive cd             chmod
chown          close          del            deltree        dir
du             echo           exit           get            getfacl
geteas         hardlink       help           history        iosize
lcd            link           lock           lowercase      ls
l              mask           md             mget           mkdir
mkfifo         more           mput           newer          notify
open           posix          posix_encrypt  posix_open     posix_mkdir
posix_rmdir    posix_unlink   posix_whoami   print          prompt
put            pwd            q              queue          quit
readlink       rd             recurse        reget          rename
reput          rm             rmdir          showacls       setea
setmode        scopy          stat           symlink        tar
tarmode        timeout        translate      unlock         volume
vuid           wdel           logon          listconnect    showconnect
tcon           tdis           tid            utimes         logoff
..             !

よく使う内部コマンド

  • ls,dir:ファイル一覧を表示
  • get ファイル名:ファイルをダウンロード
  • put ファイル名:ファイルをアップロード
  • cd ディレクトリ : ディレクトリを移動
  • exit,quit,q : 終了

内部コマンドの詳細は、? 内部コマンドまたはhelp 内部コマンドで確認できます。

smb: \> ? ls
HELP ls:
        <mask> list the contents of the current directory

【実演解説】smbclientコマンドの使用例

smbclientの使用例について、具体的なコマンドと実行結果を交えて解説します。

検証環境

smbclient実行マシンKali Linux 2025.3
192.168.10.11
smbclient 4.23.1-Debian-4.23.1+dfsg-1
SambaサーバーUbuntu Server 24.04.3 LTS
192.168.10.102
Samba 4.19.5-Ubuntu

※smbclient実行マシン、およびSambaサーバーは、ローカル環境に構築した仮想マシンとして稼働しています。

STEP

SMBポートを確認する

$ nmap 192.168.10.102
Starting Nmap 7.95 ( https://nmap.org ) at 2025-10-30 16:04 JST
Nmap scan report for 192.168.10.102
Host is up (0.00014s latency).
Not shown: 997 closed tcp ports (reset)
PORT    STATE SERVICE
22/tcp  open  ssh
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 08:00:27:49:5C:47 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.27 seconds

対象サーバーにポートスキャンを実行し、デフォルトのSMBポート(139、445)が開いていることを確認できます。

STEP

共有リソースを列挙

$ smbclient -L 192.168.10.102 -N

Sharename       Type      Comment
---------       ----      -------
print$          Disk      Printer Drivers
public          Disk
private         Disk
IPC$            IPC       IPC Service (ubuntu server (Samba, Ubuntu))
  • -L:共有リソースを一覧表示
  • 192.168.10.102:対象サーバーのIPアドレス
  • -N:パスワードを入力せずに匿名で接続

以降では、publicフォルダとprivateフォルダについて調べます。

STEP

共有フォルダにアクセス

匿名アクセス

# publicフォルダに匿名アクセス(成功)
$ smbclient //192.168.10.102/public -N
Try "help" to get a list of possible commands.
smb: \>

# privateフォルダに匿名アクセス(失敗)
$ smbclient //192.168.10.102/private -N
tree connect failed: NT_STATUS_ACCESS_DENIED

publicフォルダは匿名アクセスに成功しました。一方、privateフォルダは匿名アクセスに失敗したため、認証アクセスを試みます。

認証アクセス

$ smbclient //192.168.10.102/private -U user1
Password for [WORKGROUP\user1]:
Try "help" to get a list of possible commands.
smb: \>

ユーザー名/パスワードを使って、privateフォルダにアクセスします。

接続に成功すると、smb: \>のプロンプトが表示され、内部コマンドが使用可能になります。

STEP

ファイル一覧を確認

smb: \> ls
  .                                   D        0  Thu Oct 30 16:29:40 2025
  ..                                  D        0  Thu Oct 30 16:29:40 2025
  dayly.log                           N       17  Thu Oct 30 16:29:40 2025
  data                                D        0  Thu Oct 30 16:29:05 2025
  sample.xml                          A     2487  Wed Oct 29 14:54:22 2025

                11758760 blocks of size 1024. 5647456 blocks available
smb: \> cd data
smb: \data\> ls
  .                                   D        0  Thu Oct 30 16:29:05 2025
  ..                                  D        0  Thu Oct 30 16:29:40 2025
  secret.txt                          N       41  Thu Oct 30 16:29:05 2025

                11758760 blocks of size 1024. 5647456 blocks available

dataフォルダの中にsecret.txtというファイルを見つけました。

STEP

ファイルをダウンロード

smb: \data\> get secret.txt
getting file \data\secret.txt of size 41 as secret.txt (10.0 KiloBytes/sec) (average 10.0 KiloBytes/sec)

getコマンドを使って、対象ファイルをローカルディスクにダウンロードします。

STEP

ログオフ

smb: \> quit
STEP

ダウンロードしたファイルを確認

$ ls -l secret.txt
-rw-r--r-- 1 kali kali 41 10月 30 16:30 secret.txt

$ cat secret.txt
〜 省略 〜
デフォラボ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次