treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

sambaサーバでRaspberry PiをNASに

Raspberry PiにsambaサーバインストールでNASのような使い勝手のファイルサーバを用意する、定番の使い方の一つとなっています。
本ブログでも以前にやっていましたが、Raspbian Stretch Liteでやってみた記録をご報告。

前回

blog.treedown.net

RAID1の外付けUSB接続のHDDを追加したRaspberry Pi、

f:id:treedown:20190424175753p:plain
ここにsambaインストールでNAS化しましたので、その記録。

sambaインストール・初期設定

インストールコマンドは

# apt-get install -y samba

これだけでOK。sambaがインストールされてプロセスが自動的に起動してきます。aptインストールなのでmakeインストールのときのようにスクリプトを作成する必要もなく、自動起動が可能。

インストール後には、ログインユーザと同じユーザ名を

# pdbedit -a %USERNAME%

コマンドで作成しておくようにします。
Windowsのログインユーザ(ローカルユーザ)、Linuxのシステムユーザ、pdbeditで登録するsambaユーザの3種類のユーザ名とパスワードの文字列を同一にしておくほうが使いやすいです。その後、

# vi /etc/samba/smb.conf

で、smb.confファイルを編集し、簡単に初期設定を済ませておきます。
(※と、いうよりか、玄箱Proで元々使っていたsmb.confの記載内容をそのまま転記して終了にしました。)

簡単に編集した内容(だけ)を一例として備忘録
--------------------------------------------------------------
(中略)
[global]
workgroup = %WordGroupNAME%
#max protocol = SMB3
(中略)
#======================= Share Definitions =======================
(中略)

[sharefree]
comment = 誰でもアクセス可能
path = /home/samba/sharefree
browsable = yes
printable = no
writable = yes
guest ok = yes
force create mode = 777
force directory mode = 777

[DocsShare]
comment = ドキュメント保存
path = /home/samba/DocsShare
writeable = yes
# Permission Setting
inherit owner = yes
inherit permissions = yes
force group = root
acl map full control = no
# ファイル属性を拡張属性に保存する設定
store dos attributes = yes

[contents]
comment = コンテンツフォルダ
path = /home/samba/contents
writeable = yes
# Permission Setting
inherit owner = yes
inherit permissions = yes
force group = root
# rwxの表示をフルコントロールにしない
acl map full control = no
# ファイル属性を拡張属性に保存する設定
vfs objects = streams_xattr
# store dos attributes = yes

--------------------------------------------------------------
以前の記事<sambaサーバのSMBバージョンアップ - treedown’s Report>で「max protocol = SMB?」とプロトコル指定をしていたのを思い出して追記したけど、デフォルトでSMB3での通信で接続してくれるようなので、敢えて設定する必要性を感じず、コメントアウトするに至りました。
実際、構築後にPowerShellで
--------------------------------------------------------------
> Get-SmbConnection

ServerName  ShareName  UserName  Credential  Dialect  NumOpens
----------    ---------    --------    ----------    -------   --------
rspnas1   share-1     testuser    testuser   3.1.1   2
--------------------------------------------------------------
Dialectの欄が「3.1.1」と表記されるのでちゃんとSMB3が使われていることが確認できました。

認識した外付けHDDに共有ディレクトリ作成

前回記事でfstabに外付けHDDのUUIDを「/home/samba」に指定したので、この配下にsambaで共有ディレクトリを指定することで、Windowsから利用可能な共有フォルダを作成することができます。

# mkdir /home/samba/sharefree
# mkdir /home/samba/DocsShare
# mkdir /home/samba/contents
# chmod 777 /home/samba/*

ここまでやってから

# systemctl restart smbd
# systemctl restart nmbd

サービスリスタート

これで、Windowsから共有フォルダ参照が完了。

共有フォルダ設定のメモ

「ファイル属性を拡張属性に保存する設定」は、一部のファイルで拡張属性が埋め込まれているファイルを取り扱う時の設定。例えば、

f:id:treedown:20190424175105p:plain
こういう、拡張が含まれたファイルって、コピーしようとすると警告メッセージが表示されるのですが、
「vfs objects = streams_xattr」とか「store dos attributes = yes」と設定しておくと拡張属性含めて保存してくれます。
ただ、調べると「vfs objects = streams_xattr」を使っているケースが多いのですが、昔勉強した時って「store dos attributes = yes」だったような気が。旧環境の設定を引き継いで一応そのままの設定にしましたが、なんか不具合があるようだったら寄せてしまおうと思い、現状様子見。