Samba は Windows と UNIX の間でファイルやプリンタの共有を実現するソフトウェアです。Linux や Mac はもちろん、Android や iOS のようなスマートデバイスもサーバーに接続できます。
Samba 以外のファイルサーバーとしては NFS が有名です。NFS については Arch Linux で NFS サーバーを構築する を参考にしてください。
サーバー
インストール
samba パッケージをインストールします。
# pacman -Syu samba
Samba の設定
/etc/samba/smb.conf
を作成します。以下は /data/share/public
を共有する設定ファイルの例です。
[global]
# 大文字と小文字を区別する。
case sensitive = yes
# NetBIOS 名が見つからなかった場合に DNS による解決を試行しない。
dns proxy = no
# 192.168.0.0/24 と 127.0.0.0/8 (Loopback) からのアクセスを許可する。
hosts allow = 192.168.0. 127.
# root ユーザからのアクセスを禁止する。
invalid users = root
# ログファイルの名前を設定する。%m は NetBios 名に置換される。
log file = /var/log/samba/%m.log
# ログファイルの最大サイズを KB 単位で指定する。
max log size = 10000
# SMB1 は無効化し、SMB2 以降を使用する。
server min protocol = SMB2
# 認証やリソースの管理をこのサーバーで完結させるスタンドアロンモードで動作させる。
server role = standalone server
# サーバーの説明文を設定する。%h はホスト名に置換される。
server string = Samba File Server on %h
# Mac が create mask を無視しておかしなパーミッションを設定する問題のワークアラウンド。
unix extensions = no
# サーバーが sendfile() をサポートする場合にこれを利用し、パフォーマンスを最適化する。
use sendfile = yes
# ワークグループの名前を適当に設定する。
workgroup = WORKGROUP
# 全ての Samba ユーザーからアクセス可能な共有ファイルサーバーを定義する。
[public]
# サーバー上のファイルパスを指定する。
path = /data/share/public
# ユーザー名とパスワードを使用して認証を行う。
security = user
# 共有ファイルへの読み込みだけでなく書き込みも許可する。
writable = yes
共有ディレクトリの作成
共有対象になるディレクトリがまだ存在しない場合は作成します。他のユーザからもアクセスできるようにパーミッションを 777 に設定しました。
# mkdir -p /data/share/public
# chmod 777 /data/share/public
ファイアウォールの設定
TCP の 137, 138, 139, 445 番ポートを開放してください。以下に iptables の設定例を示します。
-A INPUT -m state --state NEW -m tcp -p tcp --syn -m multiport --dports 137,138,139,445 -j ACCEPT
Samba サーバーの起動
smbd と nmbd を起動します。
# systemctl start smb nmb
また、システムを再起動した後にも自動的に smbd と nmbd が起動するように設定しておきます。
# systemctl enable smb nmb
Samba ユーザーの追加
Samba へのアクセスには Linux ユーザーを使用します。あらかじめ useradd
コマンドを使用するなどして Linux ユーザーを作成しておいてください。ただし、Linux ユーザーのパスワードとは別に Samba 専用のパスワードを設定する必要があります。pdbedit
コマンドを使用してパスワードを設定してください。
# pdbedit -a -u name
Linux のログインパスワードと Samba のパスワードを同期させる方法もありますが、ここでは説明しません。
クライアント
Mac
「移動」「サーバへ接続 (Command + K) 」をクリックするとダイアログが表示されるので、nfs://192.168.0.16/public
のようなアドレスを入力してください。
ただし、これではシステムを再起動するとアンマウントされてしまいます。自動的にマウントされるようにするためには「システム環境設定」「ユーザとグループ」「ログイン項目」「+」から上記のマウントポイントを選択してください。
Android
Google Play ストアから Samba に対応した適当なファイラーアプリケーションをダウンロードしてください。私は CX ファイルエクスプローラ を使用しています。CX ファイルエクスプローラでは以下の手順で Samba のサーバーにアクセスできます。
-
ネットワーク
タブを開き、+
ボタンをクリックする。 -
リモート
タブを開き、SMB
を選択する。 -
ホスト
ユーザー名
パスワード
を入力してOK
ボタンをクリックする。