まずはインストールから
事前準備
以前、SSH、VNCサーバー、ファイアウォールをセットアップしたRaspberryPi4B(初期セットアップ記事はこちら)を使用して、ファイルサーバーを構築することにしました。ちなみに初期セットアップを行ったラズパイは1月半近く稼働させていましたがハングアップすることなく動いていました。やはりRaspberryPiOSで動かすのが良いですね。
用意するもの
- SSH設定が完了したRaspberryPi4B
設定は全てSSH通信にて行います。 - USBメモリまたはHDD,SSD
動作確認用にフラッシュメモリを用意しました。最終的には現在稼働しているファイルサーバーを置き換えるので、そのHDDを付け替えます。
OSアップデート
いきなりインストールしようとすると、エラーでアップデートしてくださいと言われたのでOSアップデートから行います。
hoge@raspberrypi:~ $ sudo apt update hoge@raspberrypi:~ $ sudo apt upgrade
sambaのインストール
hoge@raspberrypi:~ $ sudo apt-get install samba
色々出てきますが全て"yes"にしました。以上でインストールは完了です。
sambaの初期設定
初期設定ファイルの編集
基本的にはcentOSで設定していた内容を移植していきます。
hoge@raspberrypi:~ $ sudo vim /etc/samba/smb.conf
次のようにファイルの内容を編集します。
###### #省略# ###### #======================= Global Settings ======================= [global] unix charset = UTF8 #追加 sambaサーバの文字コードを指定 dos charset = CP932 #追加 windows側の文字コードを指定 ## Browsing/Identification ### # Change this to the workgroup/NT-domain name your Samba server will part of workgroup = WORKGROUP sever string = Samba Server Version %v #追加 サーバーの説明を追加 netbios name = RaspberryPi #追加 マシン名 hosts allow = 192.168.***.0/24 10.8.***.0/24 #追加 接続元制限 ###### #省略# ###### # This option controls how unsuccessful authentication attempts are mapped # to anonymous connections security = user #map to guest = bad user ←コメントアウト map to guest = Never #追加 ゲスト接続拒否 ###### #省略# ###### # Allow users who've been granted usershare privileges to create # public shares, not just authenticated ones #usershare allow guests = yes ←コメントアウト usershare allow guests = no #追加 認証されていないユーザー拒否 ###### #省略# ###### #[homes] ←コメントアウト homeディレクトリを共有したくないのでコメントアウト # comment = Home Directories ←コメントアウト # browseable = no ←コメントアウト # By default, the home directories are exported read-only. Change the # next parameter to 'no' if you want to be able to write to them. # read only = yes ←コメントアウト # File creation mask is set to 0700 for security reasons. If you want to # create files with group=rw permissions, set next parameter to 0775. # create mask = 0700 ←コメントアウト # Directory creation mask is set to 0700 for security reasons. If you want to # create dirs. with group=rw permissions, set next parameter to 0775. # directory mask = 0700 ←コメントアウト # By default, \\server\username shares can be connected to by anyone # with access to the samba server. # The following parameter makes sure that only "username" can connect # to \\server\username # This might need tweaking when using external authentication schemes # valid users = %S ←コメントアウト ###### #省略# ###### #以下追加(フラッシュメモリ用設定) [Pi4B_USBflash] #path = /mnt/usb_flash/share #writable = yes #guest ok = no #guest only = no #create mode = 777 #directory mode = 777 #share modes = yes
設定解説
- 文字コード指定
接続先OSでファイル等の情報が正しく表示されるように無難な設定とします。 - 接続元制限
特定のIPからしか接続を受け付けないようにします。記述しない場合、誰でもアクセス可能となります。 - map to guest = Never
有効なユーザー名およびパスワードとしてログインしなかった場合は拒否します。"Bad User"とした場合、パスワード間違いは拒否され、ユーザー名間違いはゲストユーザーとしてログインされます。 - usershare allow guests = no
ゲストとしてログインすることを拒否します。何故かデフォルトがyesでした。 - [home]設定のコメントアウト
コメントアウトしていない場合、外部から各ユーザーの"/home/[user name]/"以下が閲覧可能となります。
マウント用ディレクトリの作成
設定で指定したフラッシュメモリのマウント先を設定します。アクセス者は誰でも読み書き出来るように権限を設定します。
hoge@raspberrypi:~ $ sudo mkdir /mnt/usb_flash/share hoge@raspberrypi:~ $ sudo chmod 777 /usb_flash/share
ファイアウォールの設定
sambaでは445ポートを使用するため、解放しておきます。
hoge@raspberrypi:~ $ sudo ufw allow 445
sambaサービスのスタート
サービスの起動と自動起動設定を行います。設定内容に問題がなければエラーが出ずに完了します。
hoge@raspberrypi:~ $ sudo systemctl start smbd.service hoge@raspberrypi:~ $ sudo systemctl enable smbd.service
以上、でsamba初期設定は完了です。
外付けHDDおよびUSBメモリのマウント設定
NTFSフォーマットに対応してるか確認
USBメモリ等で使用されることの多いFAT32は1ファイルのサイズ上限が4GBなのでファイルサーバーとしては適していません。なのでNTFSが扱えるようにします。
RaspberryPiOSをフルインストールした場合、元からNTFSフォーマットを読み込めましたが、念のためapt-getで確認しておきます。
hoge@raspberrypi:~ $ sudo apt-get install ntfs-3g
USBメモリを接続してみる
通常のLinuxOSではマウントを行わないといけませんがRaspberryPiOSは自動マウントが有効になっているようです。sanbaで設定した場所に変更します。
hoge@raspberrypi:~ $ df -l ... /dev/sda1 30356460 40 30356420 1% /media/hoge #自動マウントされていればこのような表示になる ... hoge@raspberrypi:~ $ sudo umount /media/hoge #マウント済の場合はアンマウント hoge@raspberrypi:~ $ sudo mount -t ntfs-3g /dev/sda1 /mnt/usb_flash/share #再マウント
クライアントPCからUSBメモリの中が見れれば完了
以上の設定でクライアントPCからsambaにアクセスし、USBメモリの中が確認出来れば設定完了です。
起動時の自動マウント設定
今の状態では、起動時に手動でマウント設定を行う必要があるため、起動時の自動マウント設定を行います。
記憶媒体のPARTUUID確認
PCでは記憶媒体をPARTUUIDという唯一のIDで管理しています。そのIDを使用すれば、複数のUSBメモリやHDDを接続しても指定した場所に自動マウントできます。設定のためPARTUUIDを確認します。
hoge@raspberrypi:~ $ sudo blkid #記憶媒体のPARTUUID確認 ... /dev/sda1: LABEL="Seagate Expansion Drive" UUID="****************" TYPE="ntfs" PARTUUID="********-01" ...
ここで出力されたPARTUUIDを記録しておきます。
起動時のマウント設定を追加
hoge@raspberrypi:~ $ sudo vim /etc/fstab
fstabにはboot設定等が書かれていますが、下記のUSBメモリのマウント設定も追加します。
PARTUUID=********-01 /mnt/usb_flash/share/ ntfs defaults,nofail 0 0
以上でマウント設定は完了です。再起動後に自動マウントが行われ、クライアント端末からアクセス可能であれば成功です。