LinuxからWindowsの共有フォルダーにアクセスする方法

LinuxからWindowsの共有フォルダーにアクセスする方法 WindowsとLinux間でデータ転送する場合、WindowsからLinuxにSSH接続する方法が一般的ですが、ローカルネットワーク環境でLinuxからWindowsの共有フォルダーに接続する場合は、smbclientコマンドを使った方法や、mountコマンドを使った方法が一般的です。

そこでここでは、Linuxからsmbclientコマンドやmountコマンドを使って、Windows 10に作成した共有フォルダーに接続する方法を紹介します。

この記事は、以下の環境での動作結果を基にしています。他のソフトウェアやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
AlmaLinux9.4
Windows 10 Pro 64bit22H2

smbclinetコマンドを使った方法

smbclientは、LinuxをWindowsネットワーク上のサーバやクライアントとして動作させることができるソフトウェア「Samba」に含まれるツールで、LinuxからWindowsの共有フォルダーへアクセスすることができるツールです。

インストール

smbclientは、以下のコマンドでインストールできます。

# dnf install samba-client

共有フォルダーへ接続

Windowsの共有フォルダー(//pc-001/test)にアクセスするときは、次のようにコマンドを実行します。なお、ユーザー名にはMicrosoftカウントも指定できます。

# smbclient //pc-001/test -U <usernamae>%<password> -m SMB3

共有フォルダーに正常に接続されると、プロンプトが「smb: \>」に変わり、対話型シェルで操作ができます。

smb: \> 

LinuxからWindowsの共有フォルダーにアクセスする方法

ファイル一覧の表示

共有フォルダー内のファイルを一覧表示するときは、lsコマンドを実行します。

smb: \> ls

LinuxからWindowsの共有フォルダーにアクセスする方法

ディレクトリの移動

test2ディレクトリに移動するときは、cdコマンドを使います。

smb: \> cd test2

LinuxからWindowsの共有フォルダーにアクセスする方法

ファイルのダウンロード

sample2.txtファイルをダウンロードするときは、getコマンドを使います。なお、ダウンロードしたファイルはsmbclientコマンドを実行したときのカレントディレクトリに保存されます。

smb: \> get sample2.txt

LinuxからWindowsの共有フォルダーにアクセスする方法

ちなみに、共有フォルダーにファイルをアップロードするときはputコマンドを使います。

共有フォルダーから切断

共有フォルダーから切断するときは、exitコマンドを実行します。

smb: \> exit

ヘルプ

対話式シェルで利用できるコマンドは、以下のコマンドで確認できます。

smb: \> help

LinuxからWindowsの共有フォルダーにアクセスする方法

また、特定のコマンドの使い方などを調べたときは、以下のコマンドを実行します。

smb: \> help command_name

LinuxからWindowsの共有フォルダーにアクセスする方法

スクリプトモード

smbclientは「-c」オプションを使うことで、対話型シェルで実行するコマンドを自動実行させることもできます。

たとえば、共有フォルダーへの接続>ディレクトリの移動>ファイルのダウンロード>共有フォルダーからの切断までの操作を自動実行させるときは、以下のようにコマンドを実行します。

# smbclient //pc-001/test -U <usernamae>%<password> -m SMB3 -c "cd test2 ; get sample2.txt ; exit"

mountコマンドを使った方法

mountコマンドを使えば、Windowsの共有フォルダーをローカルのディレクトリにマウントすることができます。なお、mountコマンドでWindowsの共有フォルダーに接続するには、cifs-utilsパッケージが必要になります。

インストール

cifs-utilsパッケージは、以下のコマンドでインストールできます。

# dnf install cifs-utils

マウントポイントの作成

次に、Windowsの共有フォルダーをマウントするためのローカルディレクトリを作成します。ここでは例として「/mnt/windows」ディレクトリを作成します。

# mkdir -p /mnt/windows

共有フォルダーのマウント

次に、以下のコマンドでWindowsの共有フォルダー「//pc-001/test」をローカルのディレクトリ「/mnt/windows」にマウントします。

# mount -t cifs //pc-001/test /mnt/windows -o user=<username>,password=<password>

マウントしたら、Windowsの共有フォルダーをローカルのディレクトリと同じように操作できます。

アクセス権の設定

アクセス権限を指定せずにマウントすると、マウントポイントのアクセス権限は「0755」となりますが、file_modeオプションややdir_modeオプションを使えば、マウントポイントに対してアクセス権限を指定することもできます。

# mount -t cifs //pc-001/test /mnt/windows -o user=<username>,password=<password>,dir_mode=0700,file_mode=0700

マウントの解除

共有フォルダーのマウントを解除するときは、以下のようにコマンドを実行します。

# umount -l /mnt/windows

あとがき

WindowsとLinux間でデータ転送する場合、WindowsからLinuxに接続する方法が一般的ですが、LinuxからWindowsの共有フォルダーに接続したい場合、ローカルネットワークなら上に紹介したいずれかの方法で対応できるでしょう。