Raspberry Pi 2 Model Bでファイルサーバを構築してみた

2016年1月28日

本記事は、Raspberry Pi 3に対応しています。

Raspbian jessie でSambaを使ってファイルサーバ(NAS)を構築しました。

ファイルサーバのデータ格納領域は以下の記事で書いたSanDisk Ultra Fit 128GBを使います。

Raspberry Pi 2 Model B用にUSBメモリ(SanDisk Ultra Fit 128GB)を購入してみた

構築方法は以下のとおり

必要パッケージのインストール

ファイルサーバ(samba)構築に必要なパッケージをインストールします。

サービスの管理に便利なchkconfigコマンドもインストールしておきます。

sambaの設定

sambaの設定ファイルに設定を記載します。

記載する内容の例は以下のとおりです。

グローバル設定

ここでは以下の2つの設定をする例を紹介します。

  1. 日本語対応設定
  2. 192.168.0.x のセグメントからしか接続を許可しない設定

共有フォルダ設定

ここでは以下の2つの設定をする例を紹介します。

  1. /usbmem というディレクトリを、shareという共有フォルダ名で公開
  2. 共有フォルダには誰でも書き込みOK

以上の設定で、192.168.0.xのセグメントからの接続なら誰でも書き込みOKという設定が完了です。

sambaサービスの起動

起動

以下のコマンドで起動します。

稼動状態確認

参考

以下のコマンドでは起動できないようです。上記のようにsamba-ad-dcというサービスを起動する必要があります。

自動起動設定

OS起動時にsambaが自動起動するように設定します。

別デバイスからの動作確認

Windowsから接続してみましょう

Raspberry Pi (Raspbian jessie)のIPアドレスが192.168.0.20の場合、以下にアクセスしてみます。

shareという共有フォルダが見えれば成功です。
samba_01

shareの中をさらに開き、何かファイルを書き込んでみて、書き込めたら成功です。
samba_write_test

書き込めればOK。書き込めない場合は、ディレクトリのアクセス権をきちんと設定する必要があります。書き込めない場合の手順は以下のとおりです。

書き込めない場合

公開するディレクトリの権限をnobody:nogroupにする必要があります。

公開ディレクトリがUSBメモリ等のマウントディレクトリではない場合

Raspbian上に作成した、/share という公開ディレクトリの権限を変える場合を例にします。

sambaサービスを再起動します。

これで書き込めるようになったハズです。

USBメモリ等をマウントして公開している場合

この場合は少しテクニックがいります。

まずsambaサービスが公開ディレクトリを掴んでいるため、sambaサービスを停止します。

/usbmemというディレクトリにUSBメモリをマウントしている場合を例にします。

少し解説ですが、マウントする前のディレクトリの権限が以下のようになっていても、マウントするとroot:rootの権限になるため、マウントオプションを付けてマウントする必要があります。

試しに、nobody:nogroupの権限のディレクトリに、USBメモリ(dev/sda1)をマウントしてみると、

root:rootの権限になりました。

この状態で、さらに、マウントされている状態で権限を変えようとすると、以下のように拒否されます。

と、このようにうまくいきません。

実は、マウントした状態の権限を変更するには、マウントオプションに権限を追加する必要があります。(解説終わりです。長くなってすみません)

 

正しいやり方はここからです。まず、nobodyのuidとnogroupのgidを確認します。

uidは65534でした。

gidは65534でした。

この結果をもとに、/etc/fstabにuidとgidを固定するマウントオプションを追記します。

追記が終わったら、rebootコマンドで再起動し、再度ディレクトリのアクセス権を確認します。(再起動で、先ほど停止したsambaサービスも起動してきます)

以下のようになっていれば成功です。

後は、再度Windows等から書き込みテストをしましょう。

書き込めるハズです。
samba_write_test

なお、私がRaspberry Piのファイルサーバ領域として使っているUSBメモリはこちらです。
小さくて大容量でイイ感じです!
Raspberry Pi 2 Model B用にUSBメモリ(SanDisk Ultra Fit 128GB)を購入してみた