「SAMBA」はWindows共有で用いられるSMBプロトコルに対応したファイルサーバーです。
これをRaspbianにインストールし、USBHDD等と組み合わせれば、きっちりとしたファイルサーバーが出来上がります。
ここでは、そんな「SAMBA」を利用して、ファイル共有サーバ(NAS)を立てる方法について説明します。
6.1.「SAMBA」をインストールする前に(前準備)
「SAMBA」をインストールする前に、SAMBA用のユーザーを作成し、USBHDDを起動時にマウントするようにしておきましょう。
USBHDDはあらかじめFAT32でフォーマットしておいてください。
- 以下のコマンドで、SAMBA用のユーザーを作成します。
sudo useradd -s /bin/false (任意のユーザ名)
- 以下のコマンドで、SAMBA用のユーザーのパスワードを変更します。
sudo passwd (先程のユーザ名)
- USBHDDをRaspberyPiに差し込み、以下のコマンドでデバイス名を確認します。
大体は、「sda1」・「sdb1」といった名前になっていると思います。sudo fdisk -l
- 以下のコマンドで、USBHDDをマウントします。
#マウントポイント作成 sudo mkdir /mnt/HDD #USBメモリーをマウント sudo mount /dev/(デバイス名) /mnt/HDD
- 以下のコマンドで、USBHDDのUUIDを確認します。
sudo blkid /dev/(デバイス名)
- 起動時のマウントの仕方を記載している「/etc/fstab」を以下のように編集します。
SAMBA用のユーザーのユーザーID・グループIDを確認するには、以下のコマンドで。(追加) UUID="(USBHDDのUUID)" /mnt/hdd vfat auto,nodev,async,rw,nouser,noexec,iocharset=utf8,codepage=932,uid=(SAMBA用のユーザーのユーザーID),gid=(SAMBA用のユーザーのグループID),fmask=002,dmask=002 0 0
id (SAMBA用のユーザー名)
- 以下のコマンドで、再起動して、USBHDDがマウントされていることを確認する。
#再起動 sudo reboot #マウント確認 df #「Mounted on」を確認し正しくマウントされていることを確認する。
6.2.「SAMBA」のインストール
「SAMBA」をインストールするには、以下のコマンドでインストールできます。
sudo apt-get install samba
6.3.「SAMBA」の設定
- 以下のコマンドで、SAMBAのユーザーデータベースに、「SAMBA用ユーザ」を登録し、「pi」を削除する。
#「SAMBA用ユーザ」を登録 sudo pdbedit -a -u (SAMBA用のユーザー名) #「pi」を削除 sudo pdbedit -x -u pi
- SAMBAの設定ファイル「/etc/samba/smb.conf」を以下のように編集する。
([global]に追加) workgroup = (自身のワークグループ) hosts allow = (ファイル共有したいネットワークアドレス)/(サブネットマスク) localhost interfaces = (ファイル共有したいネットワークアドレス)/(サブネットマスク) localhost bind interfaces only = yes deadtime = 60 max connections = 100 guest ok = no invalid users = root pi @sudo map to guest = Never (ファイルの最後に追加) [hdd] comment = hdd path = /mnt/hdd read only = no guest ok = no valid users = sharehdd (変更) obey pam restrictions = no ↓ #obey pam restrictions = no unix password sync = yes ↓ #unix password sync = yes pam password change = yes ↓ #pam password change = yes usershare allow guests = yes ↓ #usershare allow guests = yes (更にホームディレクトリを共有しない場合、[homes]以下をコメントアウトしてもらえればOKです。)
- 以下のコマンドで、SAMBAの設定ファイル「/etc/samba/smb.conf」が正しく書かれているか確認する。
testparm
- 以下のコマンドで、iptablesの設定を書き換え、SAMBAの通信が通るようにする。
2.5.の通り、iptablesの設定の変更後は以下のコマンドで設定を記録しておくこと。sudo iptables -A INPUT -j ACCEPT -s (ファイル共有したいネットワークアドレス)/(サブネットマスク) --protocol udp --destination-port 137:138 sudo iptables -A INPUT -j ACCEPT -s (ファイル共有したいネットワークアドレス)/(サブネットマスク) --protocol tcp --destination-port 139 sudo iptables -A INPUT -j ACCEPT -s (ファイル共有したいネットワークアドレス)/(サブネットマスク) --protocol tcp --destination-port 445 #WindowsがWebDAV優先で接続しようとすることに対する対策(Webサーバーを立てているなどの場合は追加しない) sudo iptables -A INPUT -j REJECT -s (ファイル共有したいネットワークアドレス)/(サブネットマスク) -p tcp --destination-port 80 --reject-with tcp-reset ( sudo iptables -A OUTPUT -j ACCEPT -p tcp --tcp-flags FIN,SYN,RST RST -m state --state RELATED,ESTABLISHED )
一見SAMBAとは関係のない80番(http)ポートですが、Windowsでは接続の際に、まずSAMBAではなく、WebDAVというプロトコルで接続しようとします。sudo iptables-save | sudo tee /etc/iptables/rules.v4
これにより、サーバ接続後、右クリック等でファイル情報を取得しようとすると、WebDAVの応答待ちでエクスプローラーがフリーズします。
これを防ぐために、80番(http)ポートに接続があった場合に、RSTパケットを返すことで、応答待ちをさせないようにしています。 - 以下のコマンドで、SAMBAに設定を読み直しさせます。
sudo /etc/init.d/samba reload
- 外部からサーバを見てみる。
Windowsの場合は、「ネットワーク」から見れます。
中へアクセスする際には、設定したSAMBA用ユーザー名とパスワードでログインしてください。
その他のOSから見る方法は、ネット等で調べてください。(^^;)
6.参考サイト
- fstabについて詳しく知りたい方は、fstab (日本語) - ArchWikiを参照
- smb.confについて詳しく知りたい方は、smb.conf - 日本Sambaユーザー会Webサイトを参照
製品紹介(Amazonアフィリエイト)
2016/06/22 iptablesの設定の書き換えと、WebDAVの説明追加