ここでは、Linuxからsmbclientコマンドやmountコマンドを使って、Windowsの共有フォルダーに接続する方法を紹介します。
目次
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: \>
ファイル一覧の表示
共有フォルダー内のファイルを一覧表示するときは、lsコマンドを実行します。
smb: \> ls
ディレクトリの移動
test2ディレクトリに移動するときは、cdコマンドを使います。
smb: \> cd test2
ファイルのダウンロード
sample2.txtファイルをダウンロードするときは、getコマンドを使います。なお、ダウンロードしたファイルはsmbclientコマンドを実行したときのカレントディレクトリに保存されます。
smb: \> get sample2.txt
ちなみに、共有フォルダーにファイルをアップロードするときはputコマンドを使います。
共有フォルダーから切断
共有フォルダーから切断するときは、exitコマンドを実行します。
smb: \> exit
ヘルプ
対話式シェルで利用できるコマンドは、以下のコマンドで確認できます。
smb: \> help
また、特定のコマンドの使い方などを調べたときは、以下のコマンドを実行します。
smb: \> help command_name
スクリプトモード
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の共有フォルダーに接続したい場合、ローカルネットワークなら上に紹介したいずれかの方法で対応できるでしょう。