Samba

(更新:2015/05)LinuxからWindows共有フォルダをマウント
(作成:2011/05)

複数マシンを持っているとファイルのやりとりも頻発するもの。Windows間ならファイアウォール緩めて共有フォルダ、Linux間ならSSHなんて手は幾らでもある。ただまあ、どうせならそこんとこもっと楽チンにしたいよねっていう。
昨今じゃホーム・ルータにUSB HDD付けてOnline storageなんて手もあるにはあるけれど、正直ファイルやりとりに1スパン動作が多いってのはストレス。つまりWindows⇔Online storage⇔Linux。バックアップの観点から考えるとこれは重要ではあるけれど、一時ファイルまでそうするのは正直どうよって話だし、閲覧したいだけなのにいちいちコピーってのも……

ちうわけで、スマートにWindows⇔Linuxのファイル共有を考える。

Install on Ubuntu

まずはWindows→Linuxの向きで参照する方法。必要なものをさくさく導入。

# apt-get install samba

さくさく設定。共有するのはhomeディレクトリだけで良いでしょう。

# vi /etc/samba/smb.conf
[homes]
   comment = Home Directories
   browseable = yes

   read only = no

   create mask = 0644
   directory mask = 0755

print server作る気無ければ [printer] [print$] の項目はコメントアウトしとくと良いかも。マウントした時にウザくない。

さくさくログインアカウント作成。

# pdbedit -a -u (アカウント名)
new password:
retype new password:
...
# smbclient -L (サーバIP) -U (アカウント名)
new password:
retype new password:

Windowsでマウントしてみる。

  • スタート-ファイル名を指定して実行: \\(Ubuntu IP address)\(アカウント名)
    • Account: ( pdbedit で登録したアカウント名)
    • Password: ( pdbedit で登録したパスワード)

マウントできたかな?

Linux→Windows参照

こちらはLinux側からWindowsをSMBマウントしてあげるだけ。といっても多少の下準備が必要。
まずはWindows側。以下の手順で下準備。

  • スタート-コントロールパネル
    • セキュリティセンター
    • Windowsファイアウォール
      • 全般
      • 有効の場合: 例外を許可しない: 未チェック
      • 無効の場合: 下記は無視して OK
      • 例外
      • プログラムおよびサービス
        • ファイルとプリンタの共有: チェック

更にマウントしたいフォルダをあらかじめ共有フォルダにしておく必要がある。例えばD:をまるっと共有フォルダにするには、こんな感じ。

  • マイコンピュータ-D:-プロパティ
    • 共有-危険を認識した上でドライブのルートを共有する場合はここをクリックしてください。
    • ネットワーク上での共有とセキュリティ
      • ネットワーク上でこのフォルダを共有する:チェック
      • ネットワークユーザによるファイルの変更を許可する: チェック
    • 共有名: D

必要なパッケージをインストール。

# apt-get install smbclient smbfs

マウント。マウント先は適当でOK。以下の例は、Windowsマシンの D:\common\ をマウントする場合の方法。

# mount -t cifs //(Windows IP address)/D:/common (mount dir) -o username=(アカウント名),password=(パスワード),codepage=cp932,iocharset=utf8,defaults

因みにこんなコマンドでWindowsサーバの情報を探る事も可能。知っておくと便利かも。

$ smbclient -L (Windows IP address) -U (アカウント名)
Enter riyo's password: (パスワード)
Domain=[XXXXXXXX] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

    Sharename       Type      Comment
    ---------       ----      -------
    IPC$            IPC       Remote IPC
    D               Disk      

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------

LinuxからWindows共有フォルダをマウント

何を今更……という感じの内容ながら、以外と落とし穴があったりなかったりするので久々まとめておくことに。

まず、USB HDDを持っているとする。この中にはWindows環境でもLinux環境でもアクセスしたいファイルが入っているとする。サテ貴方ならどうやって両OSで共有する? というプチ悩み。
正直好きなようにしたら良いんだけれどそれ言ったらこのお話はココで御仕舞いになっちゃうんで、こんな方針で如何かなと。

Windowsがメイン利用、LinuxはVMware Playerなどでサブ利用

「Windowsファイル共有」をしたドライブをLinuxでマウントして使う。ドライブのフォーマットはFAT32とする。
ポイントとして、Windowsで「共有」する際は必ず「アクセス許可」にてWindowsログインユーザを追加し、それに「フルコントロール」許可を設定して使う。そうしないとLinux上でマウントしたときに書き込み出来ない。
Linux上では以下の要領でfstabに登録してマウントする。この例では、Windows側IPは 192.168.1.100 、USB HDDの共有名は E としている。

#### /etc/fstab

//192.168.1.100/e /media/nas cifs username=(Windowsログインユーザ),password=(Windowsログインパスワード),uid=(Linuxユーザ),gid=(Linuxグループ),file_mode=0644,dir_mode=0755,iocharset=utf8,rw,user,exec 0 0

Linuxがメイン利用、WindowsはVMware Playerなどでサブ利用

Linuxでマウントし、Sambaを使ってWindows上でネットワークフォルダとして使う。ドライブのフォーマットはLinuxで使えるお好きなものを。
Linuxでのマウント方法は拙サイト「Disk & Volume雑記 - UUIDを使ったマウント」参照。

Disk & Volume雑記
(更新:2014/10)UUIDを使ったマウント (作成:2012/02) UUIDを使ったマウント 最近のLinuxは、ディスクのマ...

WindowsもLinuxも別環境で同等に利用

上記と同じ。というのも、Linuxで認識できるファイルシステムの方が安定して高速……という偏見。
ごく単純に考えて、有償OSのブラックボックスなFSを有志の力で解析した環境を信じるか、無償OSのオープンソースなFSを仕様通り使える環境を信じるか、という話かなーと思いマス。

#ブラックボックスな有償OSが悪という話ではないので誤解無きよう。むしろセキュア志向として望ましい在り方。同様に有志の力を疑う訳でもありません。解析し実用化した時点で純粋にスゴイ事だと思いマス。

rcpみたいなSambaの使い方

例えばサーバがこんな感じの時。

  • サーバ名 : oni
  • 共有Dir : C:\common
  • ユーザ : riyo
  • ダウンロードしたいファイル : C:\common\path\to\file\hoge.txt

次のようなコマンドでファイルがダウンロードできる。

$ smbclient //oni/common (パスワード) -W WORKGROUP -U (アカウント名) -D /path/to/file -c "prompt; recurse; mget hoge.txt"