Raspberry PiにSambaをインストールしてWindowsとファイルを共有する
Raspberry PiにSambaをインストールしてWindowsとファイルを共有してみました。
はじめに
以前 Raspberry Pi に Nginx をインストールして CGI を動かす環境を構築しました。
Nginxで配信するCGIやHTMLなどの資材を SCP や SFTP を使用して Raspberry Pi に配置していましたが少し面倒です。
できれば Windows PC のエクスプローラーからできると便利だと思い Samba をインストールしてフォルダを共有することにしました。
Samba のインストール
まずは apt で Samba をインストールします。
sudo apt update
sudo apt install samba
Samba の共有の設定
共有するディレクトリの作成
まずは Samba で共有するディレクトリを作成します。
以前 USBストレージにext4のファイルシステムを作成してマウントしたディレクトリを使用することにしました。
sudo mkdir /mnt/usb/www
sudo chown www-data:www-data /mnt/usb/www/
sudo chmod 700 /mnt/usb/www/
所有者は Nginx の実行ユーザーの www-data にしました。
Samba の設定
Samba の設定ファイルを編集する前に設定ファイルをバックアップしておきます。
cp -p /etc/samba/smb.conf ./
以下の内容を追記しました。
デフォルトでホームフォルダやプリンターの設定が入っていますが今のところ特に必要ないのでコメントアウトしました。
現在 Nginx で配信しているファイルには CGI もあり実行権限が必要なのでファイルのパーミッションはひとまず 700 とすることにしました。
設定ファイルを編集したので Samba のサービスをリロードします。
sudo service smbd reload
Ubuntu is an open source software operating system that runs from the desktop, to the cloud, to all your internet connected things.
Samba にユーザーを追加
つづいて pdbedit コマンドで Samba にユーザーを追加します。追加は -a オプションで -u オプションで追加するユーザを指定します。
追加するユーザは Nginx の実行ユーザに合わせて www-data にしました。
sudo pdbedit -au www-data
パスワードの設定のプロンプトが表示されますのでパスワードを設定します。
new password:
retype new password:
pdbedit コマンドの -L オプションで Samba のユーザーの一覧を表示して追加されていることを確認しました。
sudo pdbedit -L
www-data が一覧に表示されましたので追加できていました。uid も /etc/passwd の uid と一致しています。
www-data:33:www-data
Samba のユーザーは -x オプションで削除することができます。
Windows のエクスプローラで確認
Samba で共有したディレクトリを Windows のエクスプローラで表示することができるか確認しました。エクスプローラのアドレスバーに「\\192.168.0.33\www」を入力して接続します。(IPアドレスはRaspberry PiのIPアドレスを指定します)
ユーザー名に「www-data」を入力、パスワードに先ほど設定したパスワードを入力して認証されることが確認できました。
エクスプローラからファイルとフォルダを作成してみます。
Raspberry Pi 側で共有しているディレクトリにファイルとディレクトリが作成されているか確認します。
sudo ls -al /mnt/usb/www/
作成されていることと所有者が「www-data」になっていること、パーミッションが Samba の設定どおりになっていることが確認できました。
Nginxの設定
ディレクトリの変更
現在 Nginx で配信する資材を配置しているディレクトリ構成は以下になっています。
- /usr/lib/cgi-bin/NginxのCGIを配置するディレクトリです
- /var/www/html/Nginxの静的ファイルを配信するドキュメントルートです
これらのディレクトリを Samba で共有しているディレクトリのシンボリックリンクに変更することにしました。
まずは現在のファイルとディレクトリを Samba で共有しているディレクトリにコピーしました。
sudo cp -Rp /usr/lib/cgi-bin/ /mnt/usb/www/
sudo cp -Rp /var/www/html/ /mnt/usb/www/
sudo chown -R www-data:www-data /mnt/usb/www/
sudo chmod -R 700 /mnt/usb/www/
パーミッションは Samba の設定で ファイルとディレクトリ共に 700 にしたので、それに合わせました。
念のため現在のディレクトリをバックアップします。
mkdir www_backup
sudo mv /usr/lib/cgi-bin/ ./www_backup/
sudo mv /var/www/html/ ./www_backup/
Nginx で配信する資材を配置しているディレクトリをSamba で共有しているディレクトリのシンボリックリンクに変更しました。
sudo ln -s /mnt/usb/www/cgi-bin /usr/lib/cgi-bin
sudo ln -s /mnt/usb/www/html /var/www/html
Nginx にアクセスして以前作成した CGI が表示されることの確認を行います。
無事表示されました。
おわりに
Raspberry Piに Samba をインストールしてWindows のエクスプローラからファイルの編集やフォルダの作成ができるようになりました。
Samba をインストールすることで今回の目的は簡単に実現することができました。
大容量のSSDなど購入してNAS化してもいいかもと思いました。その時は Samba の設定をしっかり調べてみようと思います。