Raspberry Pi 2 Model Bでファイルサーバを構築してみた
本記事は、Raspberry Pi 3に対応しています。
Raspbian jessie でSambaを使ってファイルサーバ(NAS)を構築しました。
ファイルサーバのデータ格納領域は以下の記事で書いたSanDisk Ultra Fit 128GBを使います。
Raspberry Pi 2 Model B用にUSBメモリ(SanDisk Ultra Fit 128GB)を購入してみた
構築方法は以下のとおり
必要パッケージのインストール
ファイルサーバ(samba)構築に必要なパッケージをインストールします。
1 |
$
sudo apt-get
install samba samba-conmmon samba-common-bin |
サービスの管理に便利なchkconfigコマンドもインストールしておきます。
1 |
$
sudo apt-get
install chkconfig |
sambaの設定
sambaの設定ファイルに設定を記載します。
1 |
$
sudo vi
/etc/samba/smb.conf |
記載する内容の例は以下のとおりです。
グローバル設定
ここでは以下の2つの設定をする例を紹介します。
- 日本語対応設定
- 192.168.0.x のセグメントからしか接続を許可しない設定
1 2 3 4 |
[global] unix charset
=
UTF-8 dos charset
=
CP932 hosts allow
=
192.168.0. |
共有フォルダ設定
ここでは以下の2つの設定をする例を紹介します。
- /usbmem というディレクトリを、shareという共有フォルダ名で公開
- 共有フォルダには誰でも書き込みOK
1 2 3 4 5 6 |
[share] path
=
/usbmem public
=
yes writable
=
yes guest ok
=
yes create mode
0777 |
以上の設定で、192.168.0.xのセグメントからの接続なら誰でも書き込みOKという設定が完了です。
sambaサービスの起動
起動
以下のコマンドで起動します。
1 |
$
sudo service samba-ad-dc start |
稼動状態確認
1 2 3 4 |
$
sudo service samba-ad-dc status ●
samba-ad-dc.service
-
LSB:
start Samba daemons for
the AD DC Loaded:
loaded
(/etc/init.d/samba-ad-dc) Active:
active
(exited)
since
水
2016-01-20
00:47:31
JST;
18s
ago |
参考
以下のコマンドでは起動できないようです。上記のようにsamba-ad-dcというサービスを起動する必要があります。
1 2 3 4 5 6 |
$
sudo service samba start Failed to
start samba.service:
Unit samba.service
is
masked. ●
samba.service Loaded:
masked
(/dev/null) Active:
inactive
(dead) |
自動起動設定
OS起動時にsambaが自動起動するように設定します。
1 |
$
sudo chkconfig samba-ad-dc on |
別デバイスからの動作確認
Windowsから接続してみましょう
Raspberry Pi (Raspbian jessie)のIPアドレスが192.168.0.20の場合、以下にアクセスしてみます。
1 |
\\192.168.0.20\ |
shareの中をさらに開き、何かファイルを書き込んでみて、書き込めたら成功です。
書き込めればOK。書き込めない場合は、ディレクトリのアクセス権をきちんと設定する必要があります。書き込めない場合の手順は以下のとおりです。
書き込めない場合
公開するディレクトリの権限をnobody:nogroupにする必要があります。
公開ディレクトリがUSBメモリ等のマウントディレクトリではない場合
Raspbian上に作成した、/share という公開ディレクトリの権限を変える場合を例にします。
1 2 3 4 5 6 7 |
$
ls-
l
/ drwxr-xr-x
1
root:root
4096
1月
1
1970
share $
sudo chown
nobody:nogroup
/share
$
ls-
l
/
drwxr-xr-x
1
nobody nogroup
4096
1月
1
1970
share |
sambaサービスを再起動します。
1 |
$
sudo service samba-ad-dc restart |
これで書き込めるようになったハズです。
USBメモリ等をマウントして公開している場合
この場合は少しテクニックがいります。
まずsambaサービスが公開ディレクトリを掴んでいるため、sambaサービスを停止します。
1 |
$
sudo service samba-ad-dc stop |
/usbmemというディレクトリにUSBメモリをマウントしている場合を例にします。
少し解説ですが、マウントする前のディレクトリの権限が以下のようになっていても、マウントするとroot:rootの権限になるため、マウントオプションを付けてマウントする必要があります。
1 2 |
$
ls
-l
/ drwxr-xr-x 1
nobody nogroup
131072 1月
20
00:32
usbmem |
試しに、nobody:nogroupの権限のディレクトリに、USBメモリ(dev/sda1)をマウントしてみると、
1 2 3 4 |
$
sudo mount
/dev/sda1
/usbmem $
ls
-l
/ drwxr-xr-x 1
root root
131072 1月 1 1970
usbmem |
root:rootの権限になりました。
この状態で、さらに、マウントされている状態で権限を変えようとすると、以下のように拒否されます。
1 2 |
$
sudo chown
nobody:nogroup usbmem chown:
`usbmem'
の所有者を変更中:
許可されていない操作です |
と、このようにうまくいきません。
実は、マウントした状態の権限を変更するには、マウントオプションに権限を追加する必要があります。(解説終わりです。長くなってすみません)
正しいやり方はここからです。まず、nobodyのuidとnogroupのgidを確認します。
1 2 |
$
cat
/etc/passwd
|grep
nobody nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin |
uidは65534でした。
1 2 |
$
cat
/etc/group
|grep
nogroup nogroup:x:65534: |
gidは65534でした。
この結果をもとに、/etc/fstabにuidとgidを固定するマウントオプションを追記します。
1 2 3 4 5 |
$
sudo vi
/etc/fstab proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults 0 2 /dev/mmcblk0p2 / ext4 defaults,noatime 0 1 /dev/sda1 /usbmem exfat defaults,noatime,uid=65534,gid=65534 0 0★ここの行です。 |
追記が終わったら、rebootコマンドで再起動し、再度ディレクトリのアクセス権を確認します。(再起動で、先ほど停止したsambaサービスも起動してきます)
以下のようになっていれば成功です。
1 2 |
$
ls
-l
/ drwxr-xr-x 1
nobody nogroup
131072 1月 1 1970
usbmem |
後は、再度Windows等から書き込みテストをしましょう。
なお、私がRaspberry Piのファイルサーバ領域として使っているUSBメモリはこちらです。
小さくて大容量でイイ感じです!
Raspberry Pi 2 Model B用にUSBメモリ(SanDisk Ultra Fit 128GB)を購入してみた
ディスカッション
コメント一覧
まだ、コメントがありません