ONFS ファイル共有

$Date: 2017/04/11 10:18:29 $


概要

 ONFS で使用している外部ストレージには、ネットワーク上の PC から Windows のファイル共有機能を用いてアクセスします。ONFS のファイル共有機能の仕様について説明します。


用語の定義

ONFS ...
本機能、オーバーレイネットワークファイルサーバーを表す略語です。

外部ストレージ ...
USB-HDD/USB メモリ/microSD カードなど、ルーターの外部ストレージインタフェースに接続するストレージをまとめて外部ストレージと表現します。

ACL ...
アクセス制御機能で参照されるアクセス制御リスト ( Access Control List ) を示します。ACL の設定内容に従ってアクセス制御が行われます。

システム要件

ファイル共有
クライアント PC の対応 OS Microsoft Windows XP (※1)
Microsoft Windows Vista (※1)
Microsoft Windows 7
対応プロトコル NetBIOS
SMB1.0/SMB2.0
NBT (NetBIOS over TCP/IP)/CIFS (Direct Hosting SMB Service)

(※1) マイクロソフト社の Windows OS サポート終了をもって、Windows OS における本機能のサポートを終了しました。


詳細

  1. ネットワーク設定

     Microsoft ネットワークの初期設定は次のようになっています。この設定は、ルーター GUI の ONFS 設定ページ、または、onfs sharing service コマンドから変更が可能です。

    コンピューターの名前 機種名-XXXXXX (X:ルーターの LAN1 MACアドレス下位3バイト)
    コンピューターの説明 Yamaha Router
    ネットワーク種別 ワークグループ
    ワークグループ名 WORKGROUP

     Windows エクスプローラーでこのコンピューター名を探してアクセスするか、ルーターのアドレスを指定してアクセスすると、外部ストレージ上の共有フォルダー ( system/local/sync ) が参照できます。共有フォルダーの種別については ONFS ファイルシステムを参照してください。


  2. system フォルダーのユーザー認証

     system フォルダーはルーター管理者のみがアクセスできるように、最初からユーザー認証が設定されています。ネットワーク上の PC から system フォルダーにアクセスすると認証ダイアログが開くので、ユーザー名とパスワードを下記の通り入力してください。system フォルダーのユーザー認証を無効にしたり、ユーザー名を変更することはできません。

     ユーザー名:rtadmin
     パスワード:( onfs reset コマンドで設定したパスワード )

     なお、共有フォルダー ( 共有リソース ) にアクセスしたとき、Windows の初期設定状態ではまず Windows のログオンユーザー名でユーザー認証処理が行われます。したがって、最初に local フォルダー、または、sync フォルダーへアクセスすると任意のユーザー名で接続できてしまうために、そのユーザー名が特定の共有リソース ( 特定のネットワークアドレス ) に対する接続情報として Windows にキャッシュされてしまうことがあります。その状態では、system フォルダーにアクセスしたときに表示される認証ダイアログで上記のユーザー名とパスワードを入力しても、system フォルダーへの接続ができなくなることがあります。また、同一のアドレスから同時に複数のユーザー名で共有リソースへ接続することも禁止されているため、共有リソースへの接続中にユーザー名を変更することもできません。これらの原因により system フォルダーへ接続することができない場合は、下記のようなエラー画面が表示されます。

    アクセスエラー画面 ( Windows 7 の例 )

    このように、system フォルダーへ接続できない場合は次の対処を行ってください。

    1. Windows エクスプローラーや、共有フォルダー内のファイルを使用しているアプリケーションを一旦すべて終了してから、再度 Windows エクスプローラーを起動し、目的のルーターに接続したら最初に system フォルダーにアクセスしてユーザー名とパスワードを入力する。

    2. I を実行してもアクセスできない場合は、下記の手順で共有リソースの接続情報を消去してから、再度アクセスする。

      1. Windows エクスプローラーや、共有フォルダー内のファイルを使用しているアプリケーションをすべて終了する。アプリケーションの中にはファイルを閉じてもそのファイルとの接続状態を保持するものがあるため、ファイルを閉じるだけでなく、アプリケーションを終了してください。

      2. コマンドプロンプトから "net use" コマンドを実行して接続情報を表示させる。
        C:\Users>net use
        新しい接続は記憶されます。
        
        ステータス  ローカル名 リモート名               ネットワーク名
        
        -------------------------------------------------------------------------------
        OK           N:        \\hogehoge\abc           Microsoft Windows Network
        OK                     \\NVR500-FFFFFF\local    Microsoft Windows Network   ★
        OK                     \\NVR500-FFFFFF\IPC$     Microsoft Windows Network   ★
        コマンドは正常に終了しました。
        
      3. コマンドプロンプトから "net use (リモート名) /delete" を実行して目的のルーターに関する接続情報(★)をすべて消去する。
        C:\Users>net use \\NVR500-FFFFFF\IPC$ /delete
        \\NVR500-FFFFFF\IPC$ が削除されました。
        
        C:\Users>net use \\NVR500-FFFFFF\local /delete
        \\NVR500-FFFFFF\local が削除されました。
        
      4. show status onfs sharing コマンドを実行し、”現在のログオンユーザー”に先に接続していたユーザー名が表示されていないことを確認する。先に接続したユーザー名が表示されていた場合は消えるまで待つ。

      5. Windows エクスプローラーを開いて、目的のルーターに接続したら最初に system フォルダーにアクセスしてユーザー名とパスワードを入力する。

    なお、一度 system フォルダーへの接続に成功した PC ではその接続情報が Windows にキャッシュされるので、Windows をログオフしない限りは認証ダイアログが表示されなくなります。さらに、認証ダイアログの入力時に 「パスワードを記憶する」、もしくは、「資格情報を記憶する」 のチェックボックスをチェックしておくと、入力したユーザー名とパスワードが特定のネットワークアドレスに対する接続情報として Windows に登録されるので、Windows の再起動後もユーザー名とパスワードを入力することなく system フォルダーへ接続できるようになります。

    この特定のネットワークアドレスに対するログオンユーザー名とパスワード ( 以降、ログオン情報と呼ぶ ) は、事前に Windows に登録しておくこともできます。



  3. アクセス許可ホストの設定

     onfs sharing host コマンドで共有フォルダーへのアクセスを許可するホストやセグメントを任意に設定できます。したがって、不必要なセグメントにまでファイルを公開せずに済みます。


  4. アクセス制御

    (注) アクセス制御機能は Rev.11.00.13 以降のファームウェアで対応しています。

     任意のファイル/フォルダー単位で、ユーザー名/グループ名によるアクセス制限をかけることが可能です。アクセス権の登録されたリストを ACL ( Access Control List ) と呼び、ACL の設定は set-acl コマンドから行います。なお、共有フォルダーの local/sync フォルダー自身、および、 local/sync フォルダーよりも下位にあるファイル/フォルダーが ACL の設定対象となります。system フォルダーは常にルーターの管理者権限を持つユーザーのみがフルアクセスできるように設定されており、アクセス権の変更はできません。
     ミラーリング機能を使用している場合は、ミラーリングされたファイル/フォルダーに付随する ACL もミラーリンググループ内で共有されます。したがって、アクセス制限のかけてあるファイル/フォルダーが他の拠点へミラーリングされた場合、ミラーリング先の拠点においてもアクセス権を持つユーザーしかアクセスすることができないようになっています。ただし、アクセス制御機能の搭載されていないファームウェアを使っている拠点があったり、アクセス制御機能を有効にしていない ( onfs sharing acl コマンドで on を設定していない ) 拠点がある場合は、ミラーリングによってアクセス制限が解除されてしまうことがあることに注意してください。

    ユーザー/グループ管理

     アクセス制御機能を使用するためには、事前にルーターにユーザーとグループの設定を入れておく必要があります。それぞれ、onfs sharing useronfs sharing group コマンドで設定します。ミラーリング機能を使用する場合は、ミラーリンググループ内で sync フォルダー内の ACL が共有されるため、ACL の設定内容に合わせて、ユーザー/グループを各拠点のルーターで個別に設定する必要があります。言い換えれば、ユーザー/グループの設定に関しては各拠点で異なる設定をすることができるため、例えば、"staff" というグループ名でアクセス制限のかけられているフォルダーがある場合、"staff" に所属するユーザーを各拠点で変更し、拠点ごとにアクセスを許可するユーザーを変える、といった運用が可能になります。

    アクセス権の種別

     アクセス権の種別には次の3種類があります。このアクセス権をユーザー単位/グループ単位で設定します。

     アクセス制御機能を有効にするために必要な操作の流れを、例を挙げて説明します。各コマンドの詳細な仕様については後述のコマンド仕様を参照してください。

    [ アクセス権の設定内容 ]

    [ アクセス権の設定手順 ]

    1. ストレージの初期設定を済ませ、ストレージを接続しておきます。
    2. ファイル共有機能を利用して、ネットワーク上の PC から "/sync/kyoten1_report" および "/local/support" というフォルダーをストレージ内に作成します。ここでファイル共有機能は利用せずに、ストレージを PC に直接繋いでフォルダーを作成しても構いません。
    3. アクセス権を与えたいユーザー/グループを onfs sharing useronfs sharing group コマンドを使用してルーターに設定します。ユーザー名には日本語を使用することもできますが、グループ名に日本語を使用することはできません。ここで設定するユーザー名/パスワードが共有フォルダーへのログオン時に必要なユーザー名/パスワードとなります。Windows エクスプローラーで共有フォルダーへアクセスしたときに認証ダイアログが表示された場合は、このユーザー名/パスワードを入力してください。
      # onfs sharing user 1 ichiro passwod1
      # onfs sharing user 2 jiro password2
      # onfs sharing user 3 saburo password3
      # onfs sharing group 1 support-g 2 3
      

      ユーザー名/パスワードは、当該ユーザーが通常利用している Windows アカウントのユーザー名/パスワードと同一の設定をすることを推奨します。Windows アカウントとは異なる設定をする場合、アクセスするルーターに対するログオン情報を事前に Windows に登録しておく必要があります。ログオン情報の設定方法は下記のページで紹介しています。なお、下記のページでは system フォルダーへのアクセス権を持つ "rtadmin" の設定例を示しているので、設定例の中のユーザー名/パスワードには onfs sharing user コマンドで設定したユーザー名/パスワードを設定するようにしてください。


    4. set-acl コマンドで二つのフォルダに ACL を設定します。本コマンドは実行コマンド ( ルーターの設定には保存されないコマンド ) であり、設定内容を ".rtacl" というファイルに記録し、ストレージ内に保存します。したがって、ストレージが接続されていなかったり、対象のファイル/フォルダーの存在が確認できない場合、本コマンドはエラー応答します。なお、誤操作防止のため、ネットワーク上の PC からは ".rtacl" の存在を確認することができないようになっています。
      # set-acl usb1:/sync/kyoten1_report user:ichiro:w other::r
      アクセス権を設定しました
      # set-acl usb1:/local/support group:support-g:w other::-
      アクセス権を設定しました
      
    5. ACL が意図通りに設定されているか、show acl コマンドで確認します。間違っている場合は、clear acl コマンドで一旦 ACL を消去してから再設定してください。
      # show acl usb1:/sync/kyoten1_report
      [ usb1:/sync/kyoten1_report ]
      u:ichiro:w o::r
      --------------------------+--------------------------+---------------
       <user>               R W | <group>              R W | <other>  R W
       ichiro               o o |                          |          o -
      --------------------------+--------------------------+---------------
      
      # show acl usb1:/local/support
      [ usb1:/local/support ]
      g:support-g:w o::-
      --------------------------+--------------------------+---------------
       <user>               R W | <group>              R W | <other>  R W
                                | support-g            o o |          - -
      --------------------------+--------------------------+---------------
      
      
    6. onfs sharing acl コマンドでアクセス制御機能を有効にします。
      # onfs sharing acl on
      

    これで設定は完了です。set-acl コマンドはストレージが接続されていればいつでも実行することができるので、ファイル共有機能の利用中でも ACL を自由に変更することができます。上記で設定した ACL を変更する場合の操作方法を下記に示します。

    [ アクセス権の変更内容 ]

    [ アクセス権の設定手順 ]

    1. set-acl コマンドは、対象のファイル/フォルダーに既に ACL が設定されていれば、その ACL を消去せずに追記・上書きをします。したがって、新しいユーザーのアクセス権を加える場合は、そのユーザーのアクセス権のみを本コマンドに指定するだけで構いません。
      # set-acl usb1:/sync/kyoten1_report user:jiro:w
      アクセス権を設定しました
      
      # show acl usb1:/sync/kyoten1_report
      [ usb1:/sync/kyoten1_report ]
      u:ichiro:w u:jiro:w o::r
      --------------------------+--------------------------+---------------
       <user>               R W | <group>              R W | <other>  R W
       ichiro               o o |                          |          o -
       jiro                 o o |                          |
      --------------------------+--------------------------+---------------
      
      
    2. 一方、対象のファイル/フォルダーに ACL の設定が既にあり、その中の特定のユーザー/グループのアクセス権の設定を消去する場合は、clear acl コマンドで対象のファイル/フォルダーに関する ACL を一旦すべて消去してから、再設定する必要があります。show acl コマンドでは文字列形式の ACL も表示されるので、その文字列をコピー/編集して set-acl コマンドに指定すれば簡単に再設定することができます。
      # clear acl usb1:/local/support
      アクセス権の設定を消去しました
      # set-acl /local/support user:jiro:w user:saburo:w other::-
      アクセス権を設定しました
      

    ACL が存在しないファイル/フォルダーのアクセス制御規則

    ACL を設定していないファイル/フォルダーや、".rtacl" が破壊されていて ACL を読み取ることができないファイル/フォルダーへアクセスする場合、ACL の設定があるフォルダーが見つかるまで上位階層へさかのぼっていき、最初に見つかった ACL のアクセス権に従います。ただし、共有フォルダーの local/sync 自身の ACL が設定されていない場合は、local/sync フォルダーへのすべてのアクセスを許可します。したがって、最上位である共有フォルダー local/sync までさかのぼっても ACL が見つからなかった場合は、すべてのアクセスが許可されることになります。

    このように、ACL が存在しないファイル/フォルダーへのアクセス制御は上位フォルダーの ACL に従うという規則があるため、一つのフォルダーに ACL を設定しておくだけで、それより下位にあるすべてのファイル/フォルダーがその ACL に従うことになります。

    ストレージ交換時の ACL の引き継ぎ

    本機能で設定した ACL ( ".rtacl" ファイル ) はストレージの各共有フォルダーよりも下位の階層に保存されているので、ストレージを交換する際に共有フォルダーごとコピーしておけば、新しいストレージへの交換後も ACL の再設定をする必要はなく、交換前と同じ内容のアクセス制御が働きます。



注意事項


コマンド


参考情報