今回は、Raspberry Piをファイルサーバにしてリモートからファイルアクセスできるようにします。このようにすると、MacやWindowsからファイルを開くことができますので、ファイルの編集がやりやすくなります。必須ではありませんので、必要に応じて作業してみてください。
今回の説明内容
Raspberry Piのファイルサーバ設定は必須ではありませんので、必要がなければ次の「Raspbian補足」の記事に進んでいただいて問題ありません。
前回の開発環境をつくる記事では、デスクトップアプリのエディタ(Atom)上でRaspberry Piに接続する設定をしました。ただ、Atom以外のエディタを使いたい方もいらっしゃるかもしれません。その場合は、Raspberry Piをファイルサーバに設定すれば、MacやWindowsから直接ファイルを操作できます。
このように、macOSの場合はFinderから、Windowsの場合はExplorereからRaspberry Piの/home/piにアクセスできるようになります。本記事では以下の順番で説明します。
- ファイルサーバソフト(Samba)をインストールする
- Sambaの設定を行う
- Sambaのユーザ登録を行う
- Macからアクセス確認する
- Windowsからアクセス確認する
1. ファイルサーバソフト(Samba)をインストールする
ファイルサーバのソフトは何種類かありますが、MacからもWindowsから簡単に接続できるように「Samba」というパッケージをインストールします。
それでは早速インストールしましょう。最初にリポジトリを最新の状態にします。
pi@raspberrypi ~ $ sudo apt-get update
次にSambaをインストールします。インストール途中にインストールしてもいいか確認がありますが、それをスキップするために今回は「-y」オプションをつけています。
pi@raspberrypi ~ $ sudo apt-get -y install samba
結構時間がかかると思いますが、コマンドプロンプトが表示されればインストール完了です。インストールが完了するとSambaが起動していますが、何も設定していませんのでこの段階ではMacやWindowsからアクセスできません。次ステップでアクセスできるように設定を行います。
2. Sambaの設定を行う
それでは、Sambaの設定を行いましょう。設定ファイルは、
/etc/samba/smb.conf
です。このファイルのパーミッションは「- rw- r– r– root root」ですので、root以外は書き込み権限がありません。ということで、これからsudo nanoでこのファイルを開いて編集します。設定変更については、編集前と編集後の内容を記載し、編集箇所は赤文字で示します。
編集を始める前に、smb.confのファイル構成を確認しておきます。smb.confは設定の分類ごとにブロックに分かれていて、[ ] (カギ括弧)や####などで区切られています。この区切りを頼りに編集箇所を説明します。なお、以下の設定はセキュリティ観点でちょっと弱いので、もしRaspberry Piをルータ内ではなく、直接インターネットに接続する場合は、注意してください。
それでは、smb.confを編集する前に、smb.confファイルをバックアップしておきます。
pi@raspberrypi ~ $ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
次に設定ファイルを開きます。
pi@raspberrypi ~ $ sudo nano /etc/samba/smb.conf
開いたら、以下のように変更していきます。
まず、最初の方に [global] ブロックがありますので、ここに文字コードを以下のように追加記入します。
変更前:
[global]
変更後:
[global]
unix charset = UTF-8
dos charset = CP932
次はファイルやフォルダ作成時のパーミッションの変更です。デフォルトの設定はかなり厳しい(=高セキュリティに設定されている)のですが、一般的な設定に変更しておきます。
しばらく下の方に行くと、
#======================= Share Definitions =======================
というところがあります。このブロックで以下の3か所の変更をします。
まず1つ目です。これはファイルの書き込みを許可するように変更する設定です。
変更前:
# 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
変更後:
# 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 = no
2つ目はファイルのパーミッションを緩くする設定です。
変更前:
# 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
変更後:
# 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 = 0664
最後の項目はディレクトリのパーミッションを緩くする設定です。
変更前:
# 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
変更後:
# 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 = 0775
これで設定が終わりましたので、control + Oで保存、Control + Xでnanoを終了します。
Sambaのユーザ登録を行う
次にSamba用にユーザ登録します。Raspberry Piはデフォルトでpiユーザが登録されていて、私たちはこのpiユーザを使用しています。ということはpiユーザでファイルサーバ(Samba)にアクセスできそうなものですが、実際にはできせません。というのは、SambaはRaspbian(Raspberry PiのOS)とは別ものなので、Sambaに「piユーザがアクセスしますよ」ってことを教えてあげる必要があります。
それでは、piユーザをSambaに登録しましょう。「smbpasswd」というコマンドを使用します。
以下のように「sudo smbpasswd -a pi」と入力します。smbpasswdの後に「-a pi」とありますが、「-a」はユーザ追加(add)の意味、そのあとはユーザ名(pi)で、「ユーザ名piを追加してください」という意味になります。
コマンドを入力すると2回パスワードを聞かれますので、パスワードを入力します。このパスワードはMacやWindowsからアクセスする時に入力するパスワードになります。
pi@raspberrypi ~ $ sudo smbpasswd -a pi
New SMB password: [ここでパスワードを入力]
Retype new SMB password: [もう一度パスワードを入力]
Added user pi.
これでユーザ登録が終わりました。
ところで、上のコマンドを入力した時に「command not found」でエラーになってしまう場合は、smbpasswdコマンドがインストールされていないためです。そこで、エラーになる場合は以下のコマンドにより追加でインストールを行ってください。
pi@raspberrypi ~ $ sudo apt-get -y install samba-common-bin
これでユーザ登録が終わったのですが、Samba本体はこの登録したユーザを認識していません。登録したユーザを有効にするために、以下のコマンドを入力してSambaを再起動します。
pi@raspberrypi ~ $ sudo service smbd restart
これでファイルサーバが有効になり、MacやWindowsからアクセスできるようになりました。
4. Macからアクセス確認する
それでは、Macから接続してみます。
Finderの「移動」メニューから「サーバに接続…」を選択します。
接続先を聞かれますので、「smb://raspberrypi.local」と入力します。最初の「smb://」はsambaファイルサーバに接続してください、という意味です。
接続確認ダイアログが表示されますので、OKボタンをクリックします。
ユーザ名とパスワードを聞かれますので、ユーザ名「pi」、パスワードは登録したものを入力します。入力したら「接続」ボタンをクリックします。
アクセスディレクトリの確認があります。「pi」が選択されていることを確認してOKボタンをクリックします。
接続できると、以下のようにホームディレクトリが表示されます。あとは普通のFinderと同じようにファイルのアクセスができます。
これで接続確認できました。ファイルをコピーしたり、ファイルをダブルクリックして好きなエディタで編集できます。
5. Windowsからアクセス確認する
Windowsからアクセス確認します。
最初にエクスプローラを開きます。エクスプローラの「PC」を右クリックするとメニューが表示されますので、「ネットワークドライブの割り当て」を選択します。
次に接続先を設定するダイアログが表示されますので、以下のように入力します。ドライブレターとは、例えば起動ディスクは通常「C:」に割り当てられています。これから接続するRaspberry Piもいずれかのローマ字を割り当てますので、まだ割り当てられていない文字を選択します。
また、「別の資格情報を使用して接続する」は必ずチェックしてください。これをチェックしないと、ユーザ名が現在ログインしているWindowsのユーザ名で接続しようとします。Raspberry Piには「pi」ユーザで接続しますので、このチェックボックスはONにします。
次に接続するためのユーザ名とパスワードの入力ダイアログが表示されますので、以下のように入力します。
さて、ここで「接続できません」と表示されてしまうケースがあります。どうも「raspberrypi.local」で接続できないことがあるらしく、一度接続できないと、何度試しても接続できない現象が発生してしまいます。
そこで、接続できない場合は以下の手順で接続してください。
まず、Windowsメニューの「Windowsシステムツール」から「コマンドプロンプト」を選択します。
次に、コマンドプロンプトの画面で以下のように入力してリターンキーを押します。なお、「V:」の文字は空いているドライブレター、「パスワード」はsmbpasswdで設定したパスワードです。
net use V: ¥¥raspberrypi.local¥pi /user:pi パスワード
うまく接続できると、以下のようにホームディレクトリが表示されます。あとは普通のファイルと同じようにアクセスができます。
これで接続確認できました。ファイルをコピーしたり、ファイルをダブルクリックして好きなエディタで編集できます。
次回はRaspbianの補足説明をしてRaspberry Piのセットアップを終わります。
更新履歴
日付 | 内容 |
---|---|
2015.11.1 | 新規投稿 |
2019.4.21 | Raspbian Stretchの手順に変更 |
> また、「別の資格情報を使用して接続する」は必ずチェックしてください。
> これをチェックしないと、ユーザ名が現在ログインしているWindowsのユー
> ザ名で接続しようとします。Raspberry Piには「pi」ユーザで接続しますの
> で、このチェックボックスはONにします。
チェックしていない場合はWindowsのユーザー名と同じ名前とパスワードを使おうとするというのは合っていますが、Samba側に同名ユーザーと別の名前のユーザーが複数登録してあり、あえて別の名前の方へアクセスしたい場合にチェックするものであって、Samba側に登録しているユーザーが一つしか無いのであれば結局ユーザー名とパスワード入力ダイアログが出るので同じことです。
「必ずチェック」しなければならないということはありません。
コメントどうもありがとうござまいした。
ご指摘どうもありがとうございました。理解が浅く申し訳ございませんでした。Samba側の登録ユーザが1つしかない場合は「必ず」というわけではないんですね。失礼いたしました。
参考になりました!
ありがとうございます。
初めまして!このサイトを見させて頂いている電子工作のど素人ですが、とても親切に書いてくれてあるのでいつも助かっています。こちらの記事でひとつ気になった点があったのでコメントさせていただきます。
sambaのユーザー追加部分にて、「sudo smbpasswd -a pi」とコマンドをタイプする場面がありますが、このsmbpasswdコマンドが何度実行してみても「command not found」となり、コマンドが見つかりませんでした。
調べたところ以下の記事を見つけ、この記事内にある通り「sudo apt-get install samba-common-bin」でインストールしたところ、正しくsmbpasswdコマンドを利用できるようになりました。
http://foolish-oknct.hatenablog.com/entry/2014/06/17/215128
はじめまして!
コメントどうもありがとうございました!
情報どうもありがとうございます。自分の環境ではsmbpasswdが使えてしまった(?)のでこの記事の手順でOKだと思っていたのですが、
samba-common-binのインストールが必要なんですね。インストールしておいても問題ありませんので、後日、samba-common-binもインストールする内容で記事を変更しておきますね。
どうしても自分の環境だけで確認して記事を書くので、このようなコメントいただけるととても助かります。
情報どうもありがとうございました!