

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS IoT Greengrass V2 コアデバイスを非ルートとして設定する
<a name="setup-greengrass-non-root"></a>

このページでは、 AWS IoT Greengrass Core ソフトウェアを非ルートとして実行するための 4 つのソリューションを紹介します。比較表を確認して各ソリューションの特徴とトレードオフを理解し、決定フローチャートを使用して要件に合ったものを特定します。

**注記**  
このページの非ルートソリューションは、Linux デバイスの AWS IoT Greengrass nucleus にのみ適用されます。は Windows のシステムサービスとして実行 AWS IoT Greengrass V2 する必要があるため、Windows は含まれません。Linux での標準ルートインストールについては、「」を参照してください[自動リソースプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアをインストールする](quick-installation.md)。  
非ルートユーザーとして AWS IoT Greengrass nucleus lite を実行するには、 AWS IoT Greengrass nucleus lite GitHub リポジトリの[「Podman](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/BUILD.md#optional-using-podman) の使用」を参照してください。

**Topics**
+ [非ルートソリューションを選択する](#non-root-choose-solution)
+ [解決策 1: ルートアクセス AWS IoT Greengrass V2 なしでセットアップする](#non-root-solution-1)
+ [解決策 2: コンポーネントユーザーを分離せずに非ルート AWS IoT Greengrass V2 としてセットアップする](#non-root-solution-2)
+ [解決策 3: コンポーネントユーザーを分離して非ルート AWS IoT Greengrass V2 として設定する](#non-root-solution-3)
+ [解決策 4: 機能が制限されたルート AWS IoT Greengrass V2 としてセットアップする](#non-root-solution-4)
+ [に必要な Linux 機能 AWS IoT Greengrass V2](#linux-capabilities-reference)

## 非ルートソリューションを選択する
<a name="non-root-choose-solution"></a>

次の表を使用して、非ルートソリューションを比較し、そのトレードオフを理解します。各ソリューションは、セキュリティ要件とデバイスの制約に応じて異なる機能を提供します。


**非ルートソリューション**  

| ソリューション | ルートアクセスが必要 | コンポーネントを異なるユーザーとして実行できる | Greengrass をシステムサービスとして実行します | 次の用途に適しています | 
| --- | --- | --- | --- | --- | 
| [解決策 1: ルートアクセスなし](#non-root-solution-1) | いいえ | いいえ | いいえ (ユーザーサービスはオプション) | ルートアクセスがないデバイス | 
| [解決策 2: 非ルート、単一ユーザー](#non-root-solution-2) | はい (セットアップのみ) | いいえ | はい | すべてのコンポーネントが同じユーザーとして実行されている非ルートユーザーとして Greengrass を実行する | 
| [解決策 3: 非ルート、マルチユーザー](#non-root-solution-3) | はい (セットアップのみ) | はい | はい | コンポーネントを異なるユーザーとして実行しながら、非ルートユーザーとして Greengrass を実行する | 
| [解決策 4: 機能が制限されたルート](#non-root-solution-4) | はい | はい | はい | Linux 機能の限られたセットで Greengrass をルートとして実行する | 

次のフローチャートは、デバイスの制約と要件に基づいて適切なソリューションを選択する方法を示しています。

![\[非ルートソリューションを選択するための決定プロセスを示すフローチャート。まず、コアデバイスにルートアクセスがあるかどうかを尋ねます。いいえの場合は、ソリューション 1 を使用します。「はい」の場合は、コンポーネントを別の Linux ユーザーとして実行する必要があるかどうかを尋ねます。いいえの場合は、ソリューション 2 を使用します。「はい」の場合は、機能が制限されたルートユーザーとして Greengrass を実行するかどうかを尋ねます。「はい」の場合は、ソリューション 4 を使用します。いいえの場合は、ソリューション 3 を使用します。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/images/non-root-solution-decision-flow.png)


## 解決策 1: ルートアクセス AWS IoT Greengrass V2 なしでセットアップする
<a name="non-root-solution-1"></a>

このソリューションは、デバイスでルートアクセスがない場合に使用します。この設定では、 AWS IoT Greengrass Core ソフトウェアは、昇格された権限のない非ルートユーザーとして完全に実行されます。

**トレードオフ**  
このソリューションには以下の制限があります。
+ **コンポーネントユーザーの分離なし** – すべてのコンポーネントは、 AWS IoT Greengrass Core ソフトウェアを実行するのと同じユーザーとして実行されます。`posixUser` 設定を使用して、コンポーネントを異なるユーザーとして実行することはできません。
+ **RequiresPrivilege ignored** – AWS IoT Greengrass Core ソフトウェアは、コンポーネントレシピの `RequiresPrivilege`オプションを無視します。コンポーネントは昇格された権限をリクエストできません。
+ **システムサービスなし** – AWS IoT Greengrass Core ソフトウェアをシステムサービスとしてインストールすることはできません。オプションで、systemd ユーザーサービスとして を実行する AWS IoT Greengrass V2 ように を設定できます。

**前提条件**  
このソリューションには以下が必要です。
+ デバイス上の非ルートユーザーアカウント
+  AWS IoT Greengrass Core ソフトウェアをインストールするディレクトリへの書き込みアクセス

**ルートアクセス AWS IoT Greengrass V2 なしでインストールして実行するには**

1. から次の手順を実行します[自動リソースプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアをインストールする](quick-installation.md)。デバイス環境のセットアップ、認証情報の提供、 AWS IoT Greengrass Core ソフトウェアのダウンロード。

1. インストールディレクトリを作成し、ユーザーがそのディレクトリを所有していることを確認します。

   ```
   mkdir -p $HOME/greengrass/v2
   ```

1. なしでインストーラを実行します`sudo`。`--component-default-user` を現在のユーザーに設定します。

   ```
   java -Droot="$HOME/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --aws-region region \
     --thing-name MyGreengrassCore \
     --thing-group-name MyGreengrassCoreGroup \
     --thing-policy-name GreengrassV2IoTThingPolicy \
     --tes-role-name GreengrassV2TokenExchangeRole \
     --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \
     --component-default-user $USER \
     --provision true
   ```

   システムサービスを作成するためのルートアクセス`--setup-system-service true`がないため、 を使用しないでください。

**(オプション) systemd ユーザーサービスを設定する**  
 AWS IoT Greengrass Core ソフトウェアを管理するように systemd ユーザーサービスを設定できます。これにより、ログイン時にソフトウェアを自動的に起動できます。

**systemd ユーザーサービスをセットアップするには**

1.  AWS IoT Greengrass Core ソフトウェアが現在実行されている場合は停止します。

   ```
   kill $(cat $HOME/greengrass/v2/alts/loader.pid)
   ```

1. systemd ユーザーサービスディレクトリを作成します。

   ```
   mkdir -p $HOME/.config/systemd/user
   ```

1. 次のコンテンツ`$HOME/.config/systemd/user/greengrass.service`を含むサービスファイルを に作成します。

   ```
   [Unit]
   Description=Greengrass Core
   
   [Service]
   Type=simple
   PIDFile=%h/greengrass/v2/alts/loader.pid
   RemainAfterExit=no
   Restart=on-failure
   RestartSec=10
   ExecStart=/bin/sh %h/greengrass/v2/alts/current/distro/bin/loader
   Environment="JAVA_HOME=/path/to/java"
   
   [Install]
   WantedBy=default.target
   ```

   systemd ユーザーユニットファイルでは、 `%h`はサービスを実行しているユーザーのホームディレクトリに解決される指定子です。

   */path/to/java* を Java インストールへのパスに置き換えます。

1. サービスを有効にして起動します。

   ```
   systemctl --user daemon-reload
   systemctl --user enable greengrass.service
   systemctl --user start greengrass.service
   ```

**再起動と OTA 更新の動作**  
動作は、systemd ユーザーサービスを設定したかどうかによって異なります。

ユーザーサービスを使用する  
+ **デバイスの再起動** – ユーザーがログインすると AWS IoT Greengrass Core ソフトウェアが自動的に起動します。
+ **OTA 更新** – OTA 更新は成功し、ソフトウェアは自動的に再起動します。

ユーザーサービスなし  
+ **デバイス再起動** – AWS IoT Greengrass Core ソフトウェアは自動的に再起動しません。手動で起動する必要があります。
+ **OTA 更新** – OTA 更新は成功しますが、後で AWS IoT Greengrass Core ソフトウェアを手動で起動する必要があります。

**システムリソースの制限**  
非ルートユーザーは で cgroup ディレクトリを作成できないため、cgroup を使用するコンポーネントごとのリソース制限はこのソリューションでは機能しません`/sys/fs/cgroup/`。リソース制限が設定されたコンポーネントをデプロイすると、 AWS IoT Greengrass Core ソフトウェアは設定された制限を無視します。

リソースの使用を管理するには、次の代替方法を使用できます。
+ **Systemd ユーザーサービスの制限** – AWS IoT Greengrass Core ソフトウェアを systemd ユーザーサービスとして実行する場合は、 のサービスファイルにリソース制限を追加できます`$HOME/.config/systemd/user/greengrass.service`。これらの制限は、Greengrass nucleus とすべてのコンポーネントを含むサービス全体に適用されます。

  ```
  MemoryMax=2G
  CPUQuota=100%
  ```
+ **Greengrass nucleus JVM の制限** – JVM オプションを設定することで、Greengrass nucleus プロセスメモリを制限できます。詳細については、「[AWS IoT Greengrass Core ソフトウェアを設定する](configure-greengrass-core-v2.md)」を参照してください。

## 解決策 2: コンポーネントユーザーを分離せずに非ルート AWS IoT Greengrass V2 としてセットアップする
<a name="non-root-solution-2"></a>

このソリューションは、初期セットアップ用のルートアクセスがあり、 AWS IoT Greengrass Core ソフトウェアを非ルートシステムサービスとして実行する場合に使用しますが、コンポーネントを別のユーザーとして実行する必要はありません。これはソリューション 1 に似ていますが、ソフトウェアは起動時に自動的に開始されるシステムサービスとして実行されます。

**トレードオフ**  
このソリューションには以下の制限があります。
+ **コンポーネントユーザーの分離なし** – すべてのコンポーネントは、 AWS IoT Greengrass Core ソフトウェアを実行するのと同じユーザーとして実行されます。`posixUser` 設定を使用して、コンポーネントを異なるユーザーとして実行することはできません。
+ **RequiresPrivilege ignored** – AWS IoT Greengrass Core ソフトウェアは、コンポーネントレシピの `RequiresPrivilege`オプションを無視します。コンポーネントは昇格された権限をリクエストできません。

**前提条件**  
このソリューションには以下が必要です。
+ 初期設定のルートアクセス
+ デバイス上の systemd

**コンポーネントユーザーを分離せずに非ルート AWS IoT Greengrass V2 としてインストールして実行するには**

1. から次の手順を実行します[自動リソースプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアをインストールする](quick-installation.md)。デバイス環境のセットアップ、認証情報の提供、 AWS IoT Greengrass Core ソフトウェアのダウンロード。

1.  AWS IoT Greengrass Core ソフトウェアとすべてのコンポーネントを実行する非ルートユーザーを作成します。

   ```
   sudo useradd --create-home gg_non_root
   ```

1. 非ルートユーザーとしてログインし、インストーラを実行します。を同じユーザー`--component-default-user`に設定します。を使用したり`sudo`、システムサービスをセットアップしたりしないでください。

   ```
   java -Droot="/home/gg_non_root/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --aws-region region \
     --thing-name MyGreengrassCore \
     --thing-group-name MyGreengrassCoreGroup \
     --thing-policy-name GreengrassV2IoTThingPolicy \
     --tes-role-name GreengrassV2TokenExchangeRole \
     --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \
     --component-default-user gg_non_root \
     --provision true \
     --setup-system-service false
   ```

1. root として、次の内容`/etc/systemd/system/greengrass.service`のシステムサービスファイルを に作成します。

   ```
   [Unit]
   Description=Greengrass Core
   After=network.target
   
   [Service]
   Type=simple
   User=gg_non_root
   PIDFile=/home/gg_non_root/greengrass/v2/alts/loader.pid
   RemainAfterExit=no
   Restart=on-failure
   RestartSec=10
   ExecStart=/bin/sh -c "exec /home/gg_non_root/greengrass/v2/alts/current/distro/bin/loader >> /home/gg_non_root/greengrass/v2/logs/loader.log 2>&1"
   KillMode=mixed
   NoNewPrivileges=true
   ProtectSystem=strict
   ReadWritePaths=/home/gg_non_root/greengrass /tmp
   
   [Install]
   WantedBy=multi-user.target
   ```

1. 実行中の AWS IoT Greengrass Core インスタンスを停止し、システムサービスを有効にして起動します。

   ```
   sudo systemctl daemon-reload
   sudo systemctl enable greengrass.service
   sudo systemctl start greengrass.service
   ```

**再起動と OTA 更新の動作**  
このソリューションでは、次の操作を行います。
+  AWS IoT Greengrass Core ソフトウェアはシステムサービスとして実行され、障害発生時またはデバイスの再起動時に自動的に再起動します。
+  AWS IoT Greengrass Core ソフトウェアの OTA 更新は機能します。設定された非ルートユーザーとしてサービスが自動的に再起動します。

**システムリソースの制限**  
cgroups を使用するコンポーネントごとのリソース制限は、Linux 機能を持たない非ルートユーザーは で cgroup ディレクトリを作成できないため、このソリューションでは機能しません`/sys/fs/cgroup/`。リソース制限が設定されたコンポーネントをデプロイすると、 AWS IoT Greengrass Core ソフトウェアは設定された制限を無視します。

リソースの使用を管理するには、次の代替方法を使用できます。
+ **Systemd service limits** – のシステムサービスファイルにリソース制限を追加できます`/etc/systemd/system/greengrass.service`。これらの制限は、Greengrass nucleus とすべてのコンポーネントを含むサービス全体に適用されます。

  ```
  MemoryMax=2G
  CPUQuota=100%
  ```
+ **Greengrass nucleus JVM の制限** – JVM オプションを設定することで、Greengrass nucleus プロセスメモリを制限できます。詳細については、「[AWS IoT Greengrass Core ソフトウェアを設定する](configure-greengrass-core-v2.md)」を参照してください。

## 解決策 3: コンポーネントユーザーを分離して非ルート AWS IoT Greengrass V2 として設定する
<a name="non-root-solution-3"></a>

このソリューションは、初期設定用のルートアクセスがあるが、コンポーネントを異なるユーザーとして実行する能力を維持しながら、 AWS IoT Greengrass Core ソフトウェアを非ルートユーザーとして実行する場合に使用します。この設定では、Linux 機能と sudoer を使用して、非ルートユーザーがコンポーネントの実行時に他のユーザーに切り替えることができます。

**トレードオフ**  
このソリューションには以下の制限があります。
+ **sudoers 設定が必要** – AWS IoT Greengrass V2 ユーザーが他のユーザーとしてコマンドを実行できるように sudoers を設定する必要があります。

**前提条件**  
このソリューションには以下が必要です。
+ 初期設定のルートアクセス
+ systemd バージョン 229 以降。 をサポートしています`AmbientCapabilities`。バージョンを確認するには、`systemctl --version` を実行します。

**コンポーネントユーザーを分離して非ルート AWS IoT Greengrass V2 としてインストールして実行するには**

1. から次の手順を実行します[自動リソースプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアをインストールする](quick-installation.md)。デバイス環境のセットアップ、認証情報の提供、 AWS IoT Greengrass Core ソフトウェアのダウンロード。

1.  AWS IoT Greengrass Core ソフトウェアを実行する非ルートユーザーを作成します。

   ```
   sudo useradd --create-home gg_non_root
   ```

1. 非ルートユーザーを sudoers に追加して、コンポーネントユーザーとしてコマンドを実行できるようにします。でファイルを作成します`/etc/sudoers.d/gg_non_root`。

   ```
   gg_non_root ALL=(ggc_user:ggc_group) NOPASSWD: SETENV: /bin/sh, /bin/bash
   ```

   で追加のユーザーとして を実行するようにコンポーネントを設定する場合は`posixUser`、ユーザーごとに sudoers エントリを追加します。例えば、次のようになります。

   ```
   gg_non_root ALL=(ggc_user:ggc_group) NOPASSWD: SETENV: /bin/sh, /bin/bash
   gg_non_root ALL=(another_user:another_group) NOPASSWD: SETENV: /bin/sh, /bin/bash
   ```

1. 非ルートユーザーとしてログインし、インストーラを実行します。を使用したり`sudo`、システムサービスをセットアップしたりしないでください。

   ```
   java -Droot="/home/gg_non_root/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --aws-region region \
     --thing-name MyGreengrassCore \
     --thing-group-name MyGreengrassCoreGroup \
     --thing-policy-name GreengrassV2IoTThingPolicy \
     --tes-role-name GreengrassV2TokenExchangeRole \
     --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \
     --component-default-user ggc_user:ggc_group \
     --provision true \
     --setup-system-service false
   ```

1. root として、次の内容`/etc/systemd/system/greengrass.service`のシステムサービスファイルを に作成します。

   ```
   [Unit]
   Description=Greengrass Core
   After=network.target
   
   [Service]
   Type=simple
   User=gg_non_root
   PIDFile=/home/gg_non_root/greengrass/v2/alts/loader.pid
   RemainAfterExit=no
   Restart=on-failure
   RestartSec=10
   ExecStart=/bin/sh -c "exec /home/gg_non_root/greengrass/v2/alts/current/distro/bin/loader >> /home/gg_non_root/greengrass/v2/logs/loader.log 2>&1"
   KillMode=mixed
   AmbientCapabilities=CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_SYS_RESOURCE CAP_AUDIT_WRITE
   CapabilityBoundingSet=CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_SYS_RESOURCE CAP_AUDIT_WRITE
   ProtectSystem=strict
   ReadWritePaths=/home/gg_non_root/greengrass /tmp
   
   [Install]
   WantedBy=multi-user.target
   ```

   必要な機能の詳細については、「」を参照してください[に必要な Linux 機能 AWS IoT Greengrass V2](#linux-capabilities-reference)。
   + `AmbientCapabilities` は、サービスを実行している非ルートユーザーに指定された Linux 機能を付与します。これにより、 AWS IoT Greengrass Core ソフトウェアは、ルートとして実行せずに、コンポーネントの実行時にユーザーを切り替えるなどの特権オペレーションを実行できます。
   + `CapabilityBoundingSet` は、サービスとその子プロセスが使用できる機能の最大セットを制限します。このセットにない機能は完全に削除されます。
   + `ProtectSystem=strict` は、 サービスのファイルシステム全体を読み取り専用にして、オペレーティングシステムの変更を防ぎます。
   + `ReadWritePaths` は、サービスが書き込むことができる唯一のディレクトリを指定します。

1. 実行中の AWS IoT Greengrass Core インスタンスを停止し、システムサービスを有効にして起動します。

   ```
   sudo systemctl daemon-reload
   sudo systemctl enable greengrass.service
   sudo systemctl start greengrass.service
   ```

**再起動と OTA 更新の動作**  
このソリューションでは、次の操作を行います。
+  AWS IoT Greengrass Core ソフトウェアはシステムサービスとして実行され、障害発生時またはデバイスの再起動時に自動的に再起動します。
+  AWS IoT Greengrass Core ソフトウェアの OTA 更新は機能します。設定された非ルートユーザーとしてサービスが自動的に再起動します。

**システムリソースの制限**  
このソリューションでのメモリと CPU のコンポーネントごとのリソース制限は、 AWS IoT Greengrass Core ソフトウェアをルートとして実行する場合と同じ方法で機能します。

## 解決策 4: 機能が制限されたルート AWS IoT Greengrass V2 としてセットアップする
<a name="non-root-solution-4"></a>

 AWS IoT Greengrass Core ソフトウェアをルートとして実行するが、Linux 機能のセットを減らす場合は、このソリューションを使用します。この設定は、ソフトウェアとそのコンポーネントで使用できる機能を制限することで、攻撃対象領域を制限しながら、ルートとして を実行するための完全な機能を提供します。

**トレードオフ**  
このソリューションには以下の考慮事項があります。
+ **RequiresPrivilege を使用するコンポーネントには制限された機能**があります – を使用するコンポーネントは、完全なルート権限ではなく、 AWS IoT Greengrass Core ソフトウェアと同じ制限された機能セットで`RequiresPrivilege`実行されます。

**前提条件**  
このソリューションには以下が必要です。
+ ルートアクセス
+ デバイス上の systemd

**機能が制限されたルート AWS IoT Greengrass V2 としてインストールして実行するには**

1. から次の手順を実行します[自動リソースプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアをインストールする](quick-installation.md)。デバイス環境のセットアップ、認証情報の提供、 AWS IoT Greengrass Core ソフトウェアのダウンロード。

1. Core AWS IoT Greengrass ソフトウェアをダウンロードしたディレクトリ`GreengrassInstaller/bin/greengrass.service.template`の でサービステンプレートファイルを変更します。インストーラを実行する前に、次の行を `[Service]`セクションに追加します。

   ```
   CapabilityBoundingSet=CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_SYS_RESOURCE CAP_AUDIT_WRITE
   ProtectSystem=strict
   ReadWritePaths=/greengrass /tmp
   ```
   + `CapabilityBoundingSet` は、 AWS IoT Greengrass Core ソフトウェアとそのすべての子プロセスで使用できる Linux 機能を制限する systemd セキュリティ機能です。境界セットを設定することで、ルートとして実行されている場合でも、Greengrass nucleus プロセスとコンポーネントが実行できる操作を制限できます。各機能の詳細については、「」を参照してください[に必要な Linux 機能 AWS IoT Greengrass V2](#linux-capabilities-reference)。
   + `ProtectSystem=strict` は、 サービスのファイルシステム全体を読み取り専用にして、オペレーティングシステムの変更を防ぎます。これにより、悪意のあるコンポーネントが昇格された権限で実行されていても、システムファイルを保護するシステム化されたサンドボックスが提供されます。
   + `ReadWritePaths` は、サービスが書き込むことができる唯一のディレクトリを指定します。これにより`ProtectSystem=strict`、 とともに、ルート AWS IoT Greengrass V2 ディレクトリと への書き込みのみに制限されます`/tmp`。

1. でインストーラを実行します`--setup-system-service true`。

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --aws-region region \
     --thing-name MyGreengrassCore \
     --thing-group-name MyGreengrassCoreGroup \
     --thing-policy-name GreengrassV2IoTThingPolicy \
     --tes-role-name GreengrassV2TokenExchangeRole \
     --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \
     --component-default-user ggc_user:ggc_group \
     --provision true \
     --setup-system-service true
   ```

**再起動と OTA 更新の動作**  
このソリューションでは、次の操作を行います。
+  AWS IoT Greengrass Core ソフトウェアはシステムサービスとして実行され、障害発生時またはデバイスの再起動時に自動的に再起動します。
+  AWS IoT Greengrass Core ソフトウェアの OTA 更新は機能します。ソフトウェアは自動的に更新および再起動します。

**システムリソースの制限**  
このソリューションでのメモリと CPU のコンポーネントごとのリソース制限は、 AWS IoT Greengrass Core ソフトウェアをルートとして実行する場合と同じ方法で機能します。

## に必要な Linux 機能 AWS IoT Greengrass V2
<a name="linux-capabilities-reference"></a>

次の表は、非ルート設定で を実行するときに AWS IoT Greengrass Core ソフトウェアに必要な Linux 機能を示しています。これらの機能は、ソリューション 3 および 4 で使用されます。


**必要な Linux 機能**  

| 機能 | 説明 | に必須 | 
| --- | --- | --- | 
| `CAP_CHOWN` | ファイルの UIDs と GIDs | コンポーネントを実行するユーザーに応じてファイルの所有権を変更する | 
| `CAP_DAC_OVERRIDE` | ファイルの読み取り、書き込み、実行のアクセス許可チェックをバイパスする | でスクリプトに使用すると、Greengrass nucleus ユーザーにファイルの実行を許可する `RequiresPrivilege` | 
| `CAP_DAC_READ_SEARCH` | ファイル読み取りアクセス許可チェックとディレクトリ読み取りおよび実行アクセス許可チェックをバイパスする | Greengrass nucleus ユーザーに読み取り許可がないフォルダでもフォルダ階層をウォークする | 
| `CAP_FOWNER` | プロセスのファイルシステム UID がファイルの UID と一致する必要があるオペレーションのアクセス許可チェックをバイパスする | ファイル所有権チェックをバイパスする | 
| `CAP_SETUID` | プロセス UIDs | Greengrass nucleus を実行しているユーザーとは異なるユーザーとしてスクリプトを実行する`sudo`ときに を使用する | 
| `CAP_SETGID` | プロセス GIDs | Greengrass nucleus を実行しているグループとは異なるグループとしてスクリプトを実行する`sudo`ときに を使用する | 
| `CAP_SYS_RESOURCE` | リソース制限を上書きする | デプロイで制限が指定されていない場合でも、コンポーネントプロセスにリソース制限を設定する | 
| `CAP_AUDIT_WRITE` | カーネル監査ログにレコードを書き込む | がカーネル監査ログ`sudo`に書き込むことを許可する | 