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

Windows から Linux へファイルを送る場合、Windows に共有フォルダを作成してそこを Linux でつつきにいくのが手っ取り早いです。

本記事では Windows で作成した共有フォルダ内に任意のファイルを配置し、Linux でそのファイルにアクセスする簡単な方法を紹介します。

Linux が CIFS を理解しなければつつけない

Linux で Windows の共有フォルダにアクセスするにはまず「cifs-utils」とインストールする必要があります。

例えば CentOS の場合は以下を実行します。

yum install cifs-utils

Cent OS の場合

なぜ「yum install cifs-utils」が必要かというと、Linux が Windows のファイル共有プロトコルである「SMB」を理解できるようにするためです。

SMB は元々 Windows 以外が利用できないプロトコルですが、後に Windows 以外も利用できるようになりました。それに伴い名前が SMB から CIFS(Common Internet File System)と変わっていたんですが、また SMB に戻ったという経緯があります。なので「yum install smb-utils」ではなく「yum install cifs」でもさほど違和感はないというわけです。

マウント用のディレクトリを作成

次に Linux 側にディレクトリを作成します。作成するコマンドは以下です。

mkdir 任意のディレクトリ名

Cent OS の場合

この時作成するフォルダ名は Windows 側の共有フォルダと同じでもいいし、同じじゃなくてもいいです。

共有フォルダの準備

Windows 側で共有フォルダを用意します。なお、今回は共有フォルダの中に「Acronis Backup」というソフトウェアの Linux 用評価版 bin ファイルを置いておきました。

共有フォルダ名はなんでもいいですが、今回は「Win-Share」にしています。

次に適当なユーザで共有をかけます。

Linux で共有フォルダをマウントする

最後に Windows の共有フォルダを Linux にマウントします。以下のコマンドを参考にマウントしてください。

mount -t cifs -o username=Win-CL,password=P@ssw0rd //192.168.1.10/Win-Share /root/windows

これは適宜読み替えて欲しいのですが、「username」と「password」は共有フォルダにアクセス権限のある Windows 側のアカウント情報を入力。

「//192.168.1.10/Win-Share」は Windows の IPアドレスと共有フォルダ名。

「/root/windows」はあらかじめ作成した Linux のディレクトリ名です。

マウント後に共有フォルダ内にある Acronis Backup のファイルが Linux に共有されていることが分かります。

ありがちなエラー

以下のエラーは発生しがちです。

cifs_mount failed w/return code = -111

CIFS VFS: Error connecting to socket. Aborting operation.

CIFS VFS: cifs_mount failed w/return code = -111

Unable to find suitable address.

このエラーが発生した場合はネットワークを見直してください。ネットワーク的な不備があった場合に発生するエラーです。

cifs_mount failed w/return code = -112

Windows 10 から共有を張ろうとするとこうなることがあります。

CIFS VFS: cifs_mount failed w/return code = -112
mount: mount ... failed: Host is down

その場合は以下の書式のように「vers=2.0(もしくは3.0)」を追加してください。

mount -t cifs -o username=Win-CL,password=P@ssw0rd,vers=2.0 //192.168.1.10/Win-Share /root/windows

ioctl error in smb2_get_dfs_refer rc=-5

下図のようなエラーが表示される場合があります。

CIFS VFS: ioctl error in smb2_get_dfs_refer rc=-5
mount error(16): Device or resource busy
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

その場合はカーネルを変えて実行するとうまくいく場合があります。

私の場合は「3.10.0-693.el7.x86_64」ではうまくいっていたのに「3.10.0-957.5.1.el7.x86_64」だと上記のエラーでうまくいきませんでした。

まとめ

  1. yum install cifs-utils
  2. ディレクトリの作成
  3. 共有フォルダの作成
  4. mount -t cifs -o username=ユーザ名,password=パスワード //WindowsIPアドレス/共有フォルダ名 ディレクトリパス

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)