[NAS]ラズパイにネットワーク上にあるドライブをマウントする方法

ラズパイでネットワーク上のドライブ(NASやWindowsの共有フォルダなど)をマウントする方法は、主に2つの方法があります。ここでは、最も一般的なCIFS/SMB(Windows共有フォルダ/NAS)と、Linux間でよく使われるNFSについて、手順を追って説明します。

前提:NAS IPアドレス:192.168.2.5


方法1:CIFS/SMBを利用する (Windows共有や一般的なNAS向け)

これは、WindowsのPCや、多くの市販NASで標準的に使われている方法です。

ステップ1:必要なツールをインストールする

まず、CIFSを扱うためのツールをラズパイにインストールします。ターミナルを開いて、以下のコマンドを実行してください。

sudo apt update
sudo apt install cifs-utils

ステップ2:マウントポイントを作成する

マウントポイントとは、ネットワークドライブをラズパイのファイルシステム上のどこに表示させるかを決めるための「出入り口」となる空のディレクトリです。

sudo mkdir /mnt/nas

/mnt/nas という名前のディレクトリを作成しました。名前は任意で変更可能です。

ステップ3:手動でマウントしてみる

まずはお試しで、コマンドを使って手動でマウントしてみましょう。

【パスワードを直接入力するシンプルな方法】

sudo mount -t cifs -o username=ユーザー名,password=パスワード <サーバーのIPアドレス/共有フォルダ名> /mnt/nas
  • ユーザー名/パスワード: NASやWindows PCのログイン情報に置き換えます。
  • サーバーのIPアドレス: NASなどのIPアドレス(例: 192.168.1.10)に置き換えます。
  • 共有フォルダ名: 共有しているフォルダ名(例: sharepublic)に置き換えます。

【例】

sudo mount -t cifs -o username=guest,password=pa55w0rd //192.168.2.5/data /mnt/nas

このコマンドが成功すれば、ls /mnt/nas を実行すると、ネットワークドライブの中身が見えるようになります。

ステップ4:起動時に自動でマウントする (fstabの設定)

毎回手動でマウントするのは大変なので、ラズパイの起動時に自動でマウントするように設定します。これには /etc/fstab というファイルを編集します。

  1. 認証情報ファイルを作成する (推奨) コマンドに直接パスワードを書くのはセキュリティ上好ましくないため、
    別のファイルに保存します。

    sudo nano /etc/samba/credentials

    開いたエディタに以下のように記述して保存(Ctrl+X, Y, Enter)します。

    username=あなたのユーザー名
    password=あなたのパスワード

    次に、このファイルの権限を所有者のみが読み取れるように変更します。

    sudo chmod 600 /etc/samba/credentials
  2. /etc/fstabを編集する

    sudo nano /etc/fstab

    ファイルの末尾に、以下の一行を追加します。uid=pi,gid=pi を付けることで、pi ユーザーが書き込みできるようになります。//サーバーのIPアドレス/共有フォルダ名 /mnt/nas cifs credentials=/etc/samba/credentials,uid=pi,gid=pi 0 0
  3. 設定をテストする 再起動する前に、設定が正しいかテストします。
    sudo mount -a エラーが出なければ、設定は成功です。
    次回からラズパイを起動すると自動でマウントされます。

トラブル:マウントしてもファイルが見えない

原因として最も可能性が高いのは、NAS上の共有フォルダの指定方法が間違っていることです。

mountコマンドで指定するパスは、NAS内部のフルパス (/mnt/array1/Data) ではなく、**ネットワークに公開されている「共有名」**を指定する必要があります。

いくつか確認と解決のためのステップをご提案します。


1. 共有名を確認する

まず、NASの設定画面で/mnt/array1/Dataというフォルダが、ネットワーク上で何という**「共有名」**で公開されているかを確認してください。

NASの管理画面(ブラウザで開く設定ページ)にログインし、「ファイル共有」「共有フォルダ」「SMB設定」といったメニューを探します。多くの場合、dataのような名前で共有されているはずです。

2. smbclientコマンドで共有名を確認する (おすすめ)

ラズパイから直接NASに問い合わせて、公開されている共有フォルダの一覧を取得する方法です。これが一番確実です。

ターミナルで以下のコマンドを実行してください。

sudo apt install smbclient # もしインストールしていなければ
smbclient -L //192.168.2.5 -U <ログインユーザー名>

-Lはリスト表示、-Uはユーザー名指定のオプションです。 実行すると、ユーザ名のパスワードを聞かれますので入力してください。

成功すると、以下のようにSharenameという項目に共有名の一覧が表示されます。

        Sharename       Type      Comment
        ---------       ----      -------
        Data            Disk      My Data Share
        public          Disk
        IPC$            IPC       Remote IPC

この例では、Dataが共有名であることがわかります。


3. 正しいコマンドで再実行する

正しい共有名がわかったら、それを使ってmountコマンドを再実行します。 例えば、共有名がDataだった場合、コマンドは以下のようになります。

Bash

sudo mount -t cifs -o username=ネットワークドライブログインユーザ名,password=ネットワークドライブログインパスワード //192.168.2.5/Data /mnt/nas

変更点:

  • \\// に変更しました(Linuxではこちらが一般的です)。
  • パスをNAS内部のフルパスから共有名 Data に変更しました。

このコマンドを実行後、ls /mnt/nas を実行して、フォルダの中身が表示されるか確認してみてください。

トラブル:マウント先が権限不足でコピーができない

マウントが成功した後に非常によく起こる問題です。

原因はほぼ間違いなく、「ラズパイ側のユーザー」と「マウントされたフォルダの所有者」が一致していないためです。


何が起きているか?

sudo mount ... コマンドを使ってマウントすると、デフォルトではマウントされたフォルダ (/mnt/nas) の所有者が root ユーザーになります。

そのため、普段使っている一般ユーザー(おそらく pi ユーザー)が、rootユーザーの持ち物である /mnt/nas にファイルを書き込もうとすると、「あなたは所有者ではないので書き込めません」とOSに拒否されてしまいます。これが「権限がない」エラーの正体です。


解決策

マウントする際に、「このフォルダは pi ユーザーのものです」とラズパイに教えてあげるオプションを追加することで解決できます。

ステップ1:一度アンマウントする

まず、現在のマウントを一度解除します。

sudo umount /mnt/nas

ステップ2:所有者を指定して再度マウントする

次に、マウントコマンドに uid (ユーザーID) と gid (グループID) のオプションを追加します。ラズパイのデフォルトユーザーである pi のIDは通常 1000 です。

sudo mount -t cifs -o username=dmcuser,password=dmcuser,uid=1000,gid=1000 //192.168.2.5/DPUData /mnt/nas

【コマンドのポイント】

  • -o の中に uid=1000,gid=1000 を追加しました。
  • これにより、/mnt/nas ディレクトリとその中身が、ラズパイ上の pi ユーザー(ID:1000)によって所有されているように見せかけることができます。

このコマンドでマウントした後、もう一度ファイルのコピーを試してみてください。今度は問題なく成功するはずです。


補足: fstab を使う場合

もし将来的に /etc/fstab で自動マウントを設定する場合も、同様にこのオプションを追記してください。

//192.168.2.5/Data /mnt/nas cifs credentials=/etc/samba/credentials,uid=1000,gid=1000 0 0

もし解決しない場合

万が一、上記の方法でも解決しない場合は、NAS側でログインユーザーに「書き込み権限」が与えられていない可能性があります。その際はNASの管理画面で、共有フォルダのアクセス権設定を見直してみてください。

トラブル:明示的にユーザー名を指定できますか

uidgidオプションは数値のIDを必要としますが、idコマンドを使えばユーザー名からその数値IDを自動で取得できます。


ユーザー名を指定してマウントする方法

$(id -u ユーザー名) という書き方を使います。これは、()内のコマンドを実行し、その結果(この場合はユーザーIDの数値)をその場に埋め込む、というLinuxの便利な機能です。

piユーザーを指定する場合

Bash

sudo mount -t cifs -o username=dmcuser,password=dmcuser,uid=$(id -u pi),gid=$(id -g pi) //192.168.2.5/Data /mnt/nas
  • $(id -u pi): piユーザーのUID(通常は1000)に自動で置き換わります。
  • $(id -g pi): piユーザーのGID(通常は1000)に自動で置き換わります。

この方法を使えば、「piユーザーのIDって何番だっけ?」と調べる手間が省けて、より直感的で間違いが少なくなります。


現在ログインしているユーザーを指定する場合

さらに便利な方法として、現在ターミナルを操作しているユーザー(あなた自身)を指定することもできます。

Bash

sudo mount -t cifs -o username=<ユーザー名>,password=<パスワード>,uid=$(id -u),gid=$(id -g) //192.168.2.5/Data /mnt/nas
  • $(id -u): piを指定しなくても、現在のユーザーのUIDを取得します。
  • $(id -g): 現在のユーザーのGIDを取得します。

スクリプトなどを作成する際に、特定のユーザー名に依存しないため、こちらのほうが汎用性が高くおすすめです。👍


⚠️ 注意点: /etc/fstab での設定

この $(...) を使った自動取得方法は、ターミナルで手動でコマンドを実行する場合にのみ有効です。

起動時に読み込まれる /etc/fstab ファイルの中では、この書き方は機能しません。

/etc/fstab に記述する場合は、これまで通り、id -u pi を実行して出てきた数値(1000など)を直接書き込む必要があります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする