コンテナがマップされたフォルダまたはファイルにアクセスすることができず、「アクセス権が拒否されました」というエラーが表示されます。どうしたらよいでしょう。
最終更新日:2024年5月3日
コンテナがマップされたフォルダまたはファイルにアクセスすることができず、「アクセス権が拒否されました」というエラーが表示されます。どうしたらよいでしょう。
記事のいくつかは英語から機械翻訳されており、不正確な箇所や文法の間違いを含む場合があります。
症状
コンテナがSynology NASでマップされたフォルダまたはファイルにアクセスすることができません。そして、コンテナのログに「アクセス権が拒否されました」というエラーが表示されます。このエラーが発生すると、コンテナが突然停止する可能性があります。
この記事では例としてNode-REDコンテナを取り上げます。以下のログが表示されます。
Error: EACCES: permission denied, copyfile '/usr/src/node-red/node_modules/node-red/settings.js' -> '/data/settings.js'
解決策
マップしたフォルダやファイルの権限を変更するには、次の手順に従ってください。
- [ Container Manager ] > [コンテナ] で、コンテナを選択し、[詳細] をクリックします。
- [設定] > [ボリューム設定]で、マップされたフォルダまたはファイルのアクセス許可をチェックします。下の例では、コンテナの/dataボリュームが読み取り/書き込み権限を持つ/docker/noderedフォルダにマップされています。
- File Stationで割り当てたフォルダまたはファイルに進み、権限を構成します。 File StationとContainer Managerの権限設定は一貫している必要があります。 Container Managerの設定に基づいて、 File Stationのアクセス許可を以下のように構成します。
例えば、 Everyoneが/docker/noderedフォルダを読み書きできるようにします。
注意:
- 「docker」共有フォルダのデフォルト権限をチェックします。
- コンテナは DSM でrootまたはその他の任意のユーザーとして実行されます。コンテナが使用するユーザー アカウントは、コンテナの構成に応じて異なる場合があります。したがって、 Everyoneに権限を割り当てると、マップされたフォルダとファイルがrootまたは任意のユーザーのどちらかがコンテナにアクセスできることを保証します。
- データのセキュリティを高めるため、共有フォルダ全体で行うのではなく、マップしたサブフォルダまたはファイルにのみ、 Everyoneに対する読み書き権限を適用します。これらの権限に加えて、共有フォルダ全体に対する権限を設定してアクセスをコントロールできます。