

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configurer les appareils AWS IoT Greengrass V2 principaux en tant que périphériques non root
<a name="setup-greengrass-non-root"></a>

Cette page présente quatre solutions pour exécuter le logiciel AWS IoT Greengrass Core en tant que non-root. Consultez le tableau de comparaison pour comprendre les caractéristiques et les inconvénients de chaque solution, puis utilisez le diagramme de décision pour identifier celle qui répond à vos besoins.

**Note**  
Les solutions non root présentées sur cette page s'appliquent uniquement au AWS IoT Greengrass noyau sur les appareils Linux. Windows n'est pas inclus car AWS IoT Greengrass V2 il doit être exécuté en tant que service système sous Windows. Pour une installation root standard sous Linux, consultez[Installation AWS IoT Greengrass du logiciel Core avec provisionnement automatique des ressources](quick-installation.md).  
Pour exécuter AWS IoT Greengrass Nucleus Lite en tant qu'utilisateur non root, voir [Utilisation de Podman](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/BUILD.md#optional-using-podman) dans le référentiel AWS IoT Greengrass Nucleus Lite GitHub .

**Topics**
+ [Choisissez une solution non racinaire](#non-root-choose-solution)
+ [Solution 1 : configuration AWS IoT Greengrass V2 sans accès root](#non-root-solution-1)
+ [Solution 2 : configurer en AWS IoT Greengrass V2 tant que non-root sans séparation entre les utilisateurs des composants](#non-root-solution-2)
+ [Solution 3 : configuration en AWS IoT Greengrass V2 tant que non-root avec séparation des utilisateurs des composants](#non-root-solution-3)
+ [Solution 4 : configurer en AWS IoT Greengrass V2 tant que root avec des fonctionnalités limitées](#non-root-solution-4)
+ [Fonctionnalités Linux requises par AWS IoT Greengrass V2](#linux-capabilities-reference)

## Choisissez une solution non racinaire
<a name="non-root-choose-solution"></a>

Utilisez le tableau suivant pour comparer les solutions non root et comprendre leurs inconvénients. Chaque solution offre des fonctionnalités différentes en fonction de vos exigences en matière de sécurité et des contraintes de votre appareil.


**Solutions autres que les racines**  

| Solution | Nécessite un accès root | Peut exécuter des composants en tant qu'utilisateurs différents | Exécute Greengrass en tant que service système | Idéal pour | 
| --- | --- | --- | --- | --- | 
| [Solution 1 : aucun accès root](#non-root-solution-1) | Non | Non | Non (service utilisateur facultatif) | Appareils sur lesquels vous n'avez pas d'accès root | 
| [Solution 2 : utilisateur unique, non root](#non-root-solution-2) | Oui (configuration uniquement) | Non | Oui | Exécuter Greengrass en tant qu'utilisateur non root avec tous les composants exécutés sous le même nom d'utilisateur | 
| [Solution 3 : multi-utilisateurs non root](#non-root-solution-3) | Oui (configuration uniquement) | Oui | Oui | Exécuter Greengrass en tant qu'utilisateur non root tout en exécutant les composants en tant qu'utilisateurs différents | 
| [Solution 4 : Rooter avec des capacités limitées](#non-root-solution-4) | Oui | Oui | Oui | Exécuter Greengrass en tant que root avec un ensemble limité de fonctionnalités Linux | 

L'organigramme suivant vous guide dans le choix de la solution appropriée en fonction des contraintes et des exigences de votre appareil.

![\[Organigramme illustrant le processus de décision pour le choix d'une solution non racinaire. Commencez par demander si vous avez un accès root sur votre appareil principal. Si ce n'est pas le cas, utilisez la Solution 1. Dans l'affirmative, demandez si vous devez exécuter les composants en tant qu'utilisateurs Linux différents. Si ce n'est pas le cas, utilisez la Solution 2. Si oui, demandez si vous souhaitez que Greengrass fonctionne en tant qu'utilisateur root avec des capacités limitées. Dans l'affirmative, utilisez la Solution 4. Si ce n'est pas le cas, utilisez la Solution 3.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v2/developerguide/images/non-root-solution-decision-flow.png)


## Solution 1 : configuration AWS IoT Greengrass V2 sans accès root
<a name="non-root-solution-1"></a>

Utilisez cette solution lorsque vous ne disposez pas d'un accès root sur l'appareil. Dans cette configuration, le logiciel AWS IoT Greengrass Core s'exécute entièrement en tant qu'utilisateur non root sans privilèges élevés.

**Compromis**  
Cette solution présente les limites suivantes :
+ **Aucune séparation entre les utilisateurs des composants** : tous les composants s'exécutent sous le même nom d'utilisateur que le logiciel AWS IoT Greengrass Core. Vous ne pouvez pas utiliser la `posixUser` configuration pour exécuter des composants en tant qu'utilisateurs différents.
+ **RequiresPrivilege ignoré** — Le logiciel AWS IoT Greengrass Core ignore l'`RequiresPrivilege`option dans les recettes de composants. Les composants ne peuvent pas demander de privilèges élevés.
+ **Aucun service système** : vous ne pouvez pas installer le logiciel AWS IoT Greengrass Core en tant que service système. Vous pouvez éventuellement le configurer AWS IoT Greengrass V2 pour qu'il s'exécute en tant que service utilisateur Systemd.

**Conditions préalables**  
Cette solution nécessite :
+ Un compte utilisateur non root sur l'appareil
+ Accès en écriture au répertoire dans lequel vous souhaitez installer le logiciel AWS IoT Greengrass Core

**Pour installer et exécuter AWS IoT Greengrass V2 sans accès root**

1. Effectuez les étapes suivantes à partir de [Installation AWS IoT Greengrass du logiciel Core avec provisionnement automatique des ressources](quick-installation.md) : configurer l'environnement de votre appareil, fournir des informations d'identification et télécharger le logiciel AWS IoT Greengrass Core.

1. Créez le répertoire d'installation et assurez-vous qu'il appartient à votre utilisateur.

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

1. Exécutez le programme d'installation sans`sudo`. `--component-default-user`Réglez sur votre utilisateur actuel.

   ```
   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
   ```

   Ne l'utilisez pas `--setup-system-service true` car vous ne disposez pas d'un accès root pour créer un service système.

**(Facultatif) Configurer un service utilisateur Systemd**  
Vous pouvez configurer un service utilisateur Systemd pour gérer le logiciel AWS IoT Greengrass Core. Cela permet au logiciel de démarrer automatiquement lorsque vous vous connectez.

**Pour configurer un service utilisateur Systemd**

1. Arrêtez le logiciel AWS IoT Greengrass Core s'il est en cours d'exécution.

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

1. Créez le répertoire du service utilisateur systemd.

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

1. Créez le fichier de service `$HOME/.config/systemd/user/greengrass.service` à l'adresse suivante.

   ```
   [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
   ```

   Dans les fichiers d'unité utilisateur systemd, `%h` il s'agit d'un spécificateur qui correspond au répertoire personnel de l'utilisateur exécutant le service.

   */path/to/java*Remplacez-le par le chemin d'accès à votre installation Java.

1. Activez et démarrez le service.

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

**Comportement de redémarrage et de mise à jour OTA**  
Le comportement dépend de la configuration ou non d'un service utilisateur Systemd.

Avec un service utilisateur  
+ **Redémarrage de l'appareil** : le logiciel AWS IoT Greengrass Core démarre automatiquement lorsque l'utilisateur se connecte.
+ **Mise à jour OTA** : les mises à jour OTA réussissent et le logiciel redémarre automatiquement.

Sans service utilisateur  
+ **Redémarrage de l'appareil** : le logiciel AWS IoT Greengrass Core ne redémarre pas automatiquement. Vous devez le démarrer manuellement.
+ **Mise à jour OTA** : les mises à jour OTA réussissent, mais vous devez ensuite démarrer manuellement le logiciel AWS IoT Greengrass Core.

**Limites des ressources du système**  
Les limites de ressources par composant à l'aide de cgroups ne fonctionnent pas dans cette solution car les utilisateurs non root ne peuvent pas créer de répertoires de cgroup dans. `/sys/fs/cgroup/` Si vous déployez un composant avec des limites de ressources configurées, le logiciel AWS IoT Greengrass Core ignore les limites configurées.

Vous pouvez utiliser les alternatives suivantes pour gérer l'utilisation des ressources :
+ **Limites du service utilisateur Systemd** — Si vous exécutez le logiciel AWS IoT Greengrass Core en tant que service utilisateur Systemd, vous pouvez ajouter des limites de ressources au fichier de service à l'adresse. `$HOME/.config/systemd/user/greengrass.service` Ces limites s'appliquent à l'ensemble du service, y compris le noyau Greengrass et tous ses composants.

  ```
  MemoryMax=2G
  CPUQuota=100%
  ```
+ Limites de la **JVM du noyau Greengrass : vous pouvez limiter** la mémoire du processus du noyau Greengrass en configurant les options de la JVM. Pour de plus amples informations, veuillez consulter [Configuration du logiciel AWS IoT Greengrass de base](configure-greengrass-core-v2.md).

## Solution 2 : configurer en AWS IoT Greengrass V2 tant que non-root sans séparation entre les utilisateurs des composants
<a name="non-root-solution-2"></a>

Utilisez cette solution lorsque vous disposez d'un accès root pour la configuration initiale et que vous souhaitez que le logiciel AWS IoT Greengrass Core s'exécute en tant que service système non root, mais que vous n'avez pas besoin d'exécuter les composants en tant qu'utilisateurs différents. Ceci est similaire à la Solution 1, mais le logiciel s'exécute en tant que service système qui démarre automatiquement au démarrage.

**Compromis**  
Cette solution présente les limites suivantes :
+ **Aucune séparation entre les utilisateurs des composants** : tous les composants s'exécutent sous le même nom d'utilisateur que le logiciel AWS IoT Greengrass Core. Vous ne pouvez pas utiliser la `posixUser` configuration pour exécuter des composants en tant qu'utilisateurs différents.
+ **RequiresPrivilege ignoré** — Le logiciel AWS IoT Greengrass Core ignore l'`RequiresPrivilege`option dans les recettes de composants. Les composants ne peuvent pas demander de privilèges élevés.

**Conditions préalables**  
Cette solution nécessite :
+ Accès root pour la configuration initiale
+ systemd sur votre appareil

**À installer et à exécuter AWS IoT Greengrass V2 en tant que non-root sans séparation entre les utilisateurs des composants**

1. Effectuez les étapes suivantes à partir de [Installation AWS IoT Greengrass du logiciel Core avec provisionnement automatique des ressources](quick-installation.md) : configurer l'environnement de votre appareil, fournir des informations d'identification et télécharger le logiciel AWS IoT Greengrass Core.

1. Créez un utilisateur non root qui exécutera le logiciel AWS IoT Greengrass Core et tous les composants.

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

1. Connectez-vous en tant qu'utilisateur non root et exécutez le programme d'installation. `--component-default-user`Défini pour le même utilisateur. N'utilisez pas `sudo` et ne configurez pas de service système.

   ```
   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. En tant qu'utilisateur root, créez le fichier de service système `/etc/systemd/system/greengrass.service` à l'adresse suivante.

   ```
   [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. Arrêtez l'instance AWS IoT Greengrass Core en cours d'exécution, puis activez et démarrez le service système.

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

**Comportement de redémarrage et de mise à jour OTA**  
Dans cette solution :
+ Le logiciel AWS IoT Greengrass Core s'exécute en tant que service système et redémarre automatiquement en cas de panne ou de redémarrage de l'appareil.
+ Les mises à jour OTA du logiciel AWS IoT Greengrass Core fonctionnent. Le service redémarre automatiquement en tant qu'utilisateur non root configuré.

**Limites des ressources du système**  
Les limites de ressources par composant à l'aide de cgroups ne fonctionnent pas dans cette solution car les utilisateurs non root dépourvus de fonctionnalités Linux ne peuvent pas créer de répertoires de cgroup dans. `/sys/fs/cgroup/` Si vous déployez un composant avec des limites de ressources configurées, le logiciel AWS IoT Greengrass Core ignore les limites configurées.

Vous pouvez utiliser les alternatives suivantes pour gérer l'utilisation des ressources :
+ **Limites de service Systemd** — Vous pouvez ajouter des limites de ressources au fichier de service système à `/etc/systemd/system/greengrass.service` l'adresse. Ces limites s'appliquent à l'ensemble du service, y compris le noyau Greengrass et tous ses composants.

  ```
  MemoryMax=2G
  CPUQuota=100%
  ```
+ Limites de la **JVM du noyau Greengrass : vous pouvez limiter** la mémoire du processus du noyau Greengrass en configurant les options de la JVM. Pour de plus amples informations, veuillez consulter [Configuration du logiciel AWS IoT Greengrass de base](configure-greengrass-core-v2.md).

## Solution 3 : configuration en AWS IoT Greengrass V2 tant que non-root avec séparation des utilisateurs des composants
<a name="non-root-solution-3"></a>

Utilisez cette solution lorsque vous disposez d'un accès root pour la configuration initiale, mais que vous souhaitez que le logiciel AWS IoT Greengrass Core s'exécute en tant qu'utilisateur non root tout en conservant la possibilité d'exécuter les composants en tant qu'utilisateurs différents. Cette configuration utilise les fonctionnalités de Linux et les sudoers pour permettre à l'utilisateur non root de passer à d'autres utilisateurs lors de l'exécution de composants.

**Compromis**  
Cette solution présente les limites suivantes :
+ **Nécessite la configuration de sudoers** : vous devez configurer sudoers pour permettre à l' AWS IoT Greengrass V2 utilisateur d'exécuter des commandes comme les autres utilisateurs.

**Conditions préalables**  
Cette solution nécessite :
+ Accès root pour la configuration initiale
+ systemd version 229 ou ultérieure, qui prend en charge`AmbientCapabilities`. Pour vérifier votre version, lancez`systemctl --version`.

**À installer et à exécuter AWS IoT Greengrass V2 en tant que non-root avec séparation des utilisateurs entre les composants**

1. Effectuez les étapes suivantes à partir de [Installation AWS IoT Greengrass du logiciel Core avec provisionnement automatique des ressources](quick-installation.md) : configurer l'environnement de votre appareil, fournir des informations d'identification et télécharger le logiciel AWS IoT Greengrass Core.

1. Créez un utilisateur non root qui exécutera le logiciel AWS IoT Greengrass Core.

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

1. Ajoutez l'utilisateur non root à sudoers afin qu'il puisse exécuter des commandes en tant qu'utilisateur du composant. Créez un fichier à l'adresse`/etc/sudoers.d/gg_non_root`.

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

   Si vous configurez des composants pour qu'ils s'exécutent en tant qu'utilisateurs supplémentaires`posixUser`, ajoutez une entrée sudoers pour chaque utilisateur. Par exemple :

   ```
   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. Connectez-vous en tant qu'utilisateur non root et exécutez le programme d'installation. N'utilisez pas `sudo` et ne configurez pas de service système.

   ```
   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. En tant qu'utilisateur root, créez le fichier de service système `/etc/systemd/system/greengrass.service` à l'adresse suivante.

   ```
   [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
   ```

   Pour plus d'informations sur les fonctionnalités requises, consultez[Fonctionnalités Linux requises par AWS IoT Greengrass V2](#linux-capabilities-reference).
   + `AmbientCapabilities`accorde les fonctionnalités Linux spécifiées à l'utilisateur non root exécutant le service. Cela permet au logiciel AWS IoT Greengrass Core d'effectuer des opérations privilégiées, telles que le changement d'utilisateur lors de l'exécution de composants, sans s'exécuter en tant que root.
   + `CapabilityBoundingSet`limite l'ensemble maximal de fonctionnalités que le service et ses processus enfants peuvent utiliser. Les fonctionnalités qui ne figurent pas dans cet ensemble sont définitivement supprimées.
   + `ProtectSystem=strict`met l'ensemble du système de fichiers en lecture seule pour le service, empêchant ainsi toute modification du système d'exploitation.
   + `ReadWritePaths`indique les seuls répertoires dans lesquels le service peut écrire.

1. Arrêtez l'instance AWS IoT Greengrass Core en cours d'exécution, puis activez et démarrez le service système.

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

**Comportement de redémarrage et de mise à jour OTA**  
Dans cette solution :
+ Le logiciel AWS IoT Greengrass Core s'exécute en tant que service système et redémarre automatiquement en cas de panne ou de redémarrage de l'appareil.
+ Les mises à jour OTA du logiciel AWS IoT Greengrass Core fonctionnent. Le service redémarre automatiquement en tant qu'utilisateur non root configuré.

**Limites des ressources du système**  
Les limites de ressources par composant pour la mémoire et le processeur fonctionnent dans cette solution de la même manière que lors de l'exécution du logiciel AWS IoT Greengrass Core en tant qu'utilisateur root.

## Solution 4 : configurer en AWS IoT Greengrass V2 tant que root avec des fonctionnalités limitées
<a name="non-root-solution-4"></a>

Utilisez cette solution lorsque vous souhaitez que le logiciel AWS IoT Greengrass Core s'exécute en tant que root, mais avec un ensemble réduit de fonctionnalités Linux. Cette configuration fournit toutes les fonctionnalités d'exécution en tant que root tout en limitant la surface d'attaque en limitant les fonctionnalités disponibles pour le logiciel et ses composants.

**Compromis**  
Cette solution tient compte des considérations suivantes :
+ **Composants RequiresPrivilege dotés de capacités limitées** : les composants utilisés s'`RequiresPrivilege`exécutent avec le même ensemble limité de fonctionnalités que le logiciel AWS IoT Greengrass principal, et non avec des privilèges root complets.

**Conditions préalables**  
Cette solution nécessite :
+ Accès root
+ systemd sur votre appareil

**Pour installer et exécuter AWS IoT Greengrass V2 en tant que root avec des fonctionnalités limitées**

1. Effectuez les étapes suivantes à partir de [Installation AWS IoT Greengrass du logiciel Core avec provisionnement automatique des ressources](quick-installation.md) : configurer l'environnement de votre appareil, fournir des informations d'identification et télécharger le logiciel AWS IoT Greengrass Core.

1. Modifiez le fichier de modèle de service à l'adresse`GreengrassInstaller/bin/greengrass.service.template`, dans le répertoire où vous avez téléchargé le logiciel AWS IoT Greengrass Core. Ajoutez les lignes suivantes à la `[Service]` section avant d'exécuter le programme d'installation :

   ```
   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`est une fonctionnalité de sécurité de Systemd qui limite les fonctionnalités Linux disponibles pour le logiciel AWS IoT Greengrass Core et tous ses processus enfants. En configurant un ensemble de limites, vous limitez ce que le processus du noyau Greengrass et ses composants peuvent faire, même lorsqu'ils sont exécutés en tant que root. Pour plus d'informations sur chaque fonctionnalité, consultez[Fonctionnalités Linux requises par AWS IoT Greengrass V2](#linux-capabilities-reference).
   + `ProtectSystem=strict`met l'ensemble du système de fichiers en lecture seule pour le service, empêchant ainsi toute modification du système d'exploitation. Cela fournit un sandboxing Systemd qui protège les fichiers système même si un composant malveillant s'exécute avec des privilèges élevés.
   + `ReadWritePaths`indique les seuls répertoires dans lesquels le service peut écrire. De plus`ProtectSystem=strict`, cela limite le service à écrire uniquement dans le répertoire AWS IoT Greengrass V2 racine et`/tmp`.

1. Exécutez le programme d'installation avec`--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
   ```

**Comportement de redémarrage et de mise à jour OTA**  
Dans cette solution :
+ Le logiciel AWS IoT Greengrass Core s'exécute en tant que service système et redémarre automatiquement en cas de panne ou de redémarrage de l'appareil.
+ Les mises à jour OTA du logiciel AWS IoT Greengrass Core fonctionnent. Le logiciel est mis à jour et redémarre automatiquement.

**Limites des ressources du système**  
Les limites de ressources par composant pour la mémoire et le processeur fonctionnent dans cette solution de la même manière que lors de l'exécution du logiciel AWS IoT Greengrass Core en tant qu'utilisateur root.

## Fonctionnalités Linux requises par AWS IoT Greengrass V2
<a name="linux-capabilities-reference"></a>

Le tableau suivant décrit les fonctionnalités Linux requises par le logiciel AWS IoT Greengrass Core lorsqu'il est exécuté dans des configurations autres que root. Ces fonctionnalités sont utilisées dans les solutions 3 et 4.


**Fonctionnalités Linux requises**  

| Capacité | Description | Nécessaire pour | 
| --- | --- | --- | 
| `CAP_CHOWN` | Apportez des modifications arbitraires au fichier UIDs et GIDs | Modification de la propriété du fichier en fonction de l'utilisateur exécutant le composant | 
| `CAP_DAC_OVERRIDE` | Contourner les vérifications d'autorisation de lecture, d'écriture et d'exécution de fichiers | Permettre à l'utilisateur du noyau Greengrass d'exécuter des fichiers lorsqu'il est utilisé pour des scripts avec `RequiresPrivilege` | 
| `CAP_DAC_READ_SEARCH` | Contourner les vérifications d'autorisation de lecture de fichiers et les vérifications d'autorisation de lecture et d'exécution de répertoires | Parcourir la hiérarchie des dossiers, même pour les dossiers que l'utilisateur du noyau Greengrass n'est pas autorisé à lire | 
| `CAP_FOWNER` | Contourner les contrôles d'autorisation sur les opérations qui nécessitent normalement que l'UID du système de fichiers du processus corresponde à l'UID du fichier | Contourner les contrôles de propriété des fichiers | 
| `CAP_SETUID` | Effectuer des manipulations arbitraires du processus UIDs | À utiliser `sudo` lors de l'exécution de scripts en tant qu'utilisateur différent de celui qui exécute le noyau Greengrass | 
| `CAP_SETGID` | Effectuer des manipulations arbitraires du processus GIDs | À utiliser `sudo` lors de l'exécution de scripts en tant que groupe différent du groupe exécutant le noyau Greengrass | 
| `CAP_SYS_RESOURCE` | Remplacer les limites de ressources | Définition de limites de ressources pour les processus des composants, même si les limites ne sont pas spécifiées dans les déploiements | 
| `CAP_AUDIT_WRITE` | Écrire des enregistrements dans le journal d'audit du noyau | `sudo`Autoriser l'écriture dans le journal d'audit du noyau | 