

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configurar los dispositivos AWS IoT Greengrass V2 principales como dispositivos no root
<a name="setup-greengrass-non-root"></a>

Esta página presenta cuatro soluciones para ejecutar el software AWS IoT Greengrass principal sin root. Revise la tabla de comparación para comprender las características y desventajas de cada solución y, a continuación, utilice el diagrama de flujo de decisiones para identificar cuál se ajusta a sus necesidades.

**nota**  
Las soluciones no root de esta página se aplican únicamente al AWS IoT Greengrass núcleo de los dispositivos Linux. Windows no está incluido porque AWS IoT Greengrass V2 debe ejecutarse como un servicio del sistema en Windows. Para obtener información sobre la instalación raíz estándar en Linux, consulte[Instale el software AWS IoT Greengrass principal con aprovisionamiento automático de recursos](quick-installation.md).  
Para ejecutar AWS IoT Greengrass nucleus lite como usuario no root, consulte [Uso de Podman](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/BUILD.md#optional-using-podman) en el repositorio de AWS IoT Greengrass nucleus lite GitHub .

**Topics**
+ [Elija una solución que no sea root](#non-root-choose-solution)
+ [Solución 1: configurar AWS IoT Greengrass V2 sin acceso a la raíz](#non-root-solution-1)
+ [Solución 2: Configúrela AWS IoT Greengrass V2 como no root sin separar los componentes entre los usuarios](#non-root-solution-2)
+ [Solución 3: Configúrela AWS IoT Greengrass V2 como no root con separación de los usuarios de los componentes](#non-root-solution-3)
+ [Solución 4: AWS IoT Greengrass V2 Configúrelo como root con capacidades limitadas](#non-root-solution-4)
+ [Capacidades de Linux requeridas por AWS IoT Greengrass V2](#linux-capabilities-reference)

## Elija una solución que no sea root
<a name="non-root-choose-solution"></a>

Utilice la siguiente tabla para comparar las soluciones que no son raíz y comprender sus ventajas y desventajas. Cada solución ofrece capacidades diferentes en función de los requisitos de seguridad y las limitaciones del dispositivo.


**Soluciones que no son root**  

| Solución | Requiere acceso root | Puede ejecutar componentes como diferentes usuarios | Ejecuta Greengrass como servicio de sistema | Lo mejor para | 
| --- | --- | --- | --- | --- | 
| [Solución 1: Sin acceso a la raíz](#non-root-solution-1) | No | No | No (servicio de usuario opcional) | Dispositivos a los que no tienes acceso root | 
| [Solución 2: usuario único que no es root](#non-root-solution-2) | Sí (solo para configuración) | No | Sí | Ejecutar Greengrass como usuario no root con todos los componentes ejecutándose como el mismo usuario | 
| [Solución 3: sin root, multiusuario](#non-root-solution-3) | Sí (solo para configuración) | Sí | Sí | Ejecutar Greengrass como usuario no root mientras se ejecutan componentes como usuarios diferentes | 
| [Solución 4: Rootear con capacidades limitadas](#non-root-solution-4) | Sí | Sí | Sí | Ejecutar Greengrass como root con un conjunto limitado de capacidades de Linux | 

El siguiente diagrama de flujo le guía para seleccionar la solución adecuada en función de las limitaciones y requisitos de su dispositivo.

![\[Diagrama de flujo que muestra el proceso de decisión para elegir una solución no raíz. Comience por preguntar si tiene acceso root en su dispositivo principal. Si no, usa la Solución 1. En caso afirmativo, pregunte si necesita ejecutar los componentes como distintos usuarios de Linux. Si la respuesta es no, utilice la Solución 2. En caso afirmativo, pregunte si quiere que Greengrass se ejecute como usuario root con capacidades limitadas. En caso afirmativo, utilice la Solución 4. Si la respuesta es no, utilice la Solución 3.\]](http://docs.aws.amazon.com/es_es/greengrass/v2/developerguide/images/non-root-solution-decision-flow.png)


## Solución 1: configurar AWS IoT Greengrass V2 sin acceso a la raíz
<a name="non-root-solution-1"></a>

Use esta solución cuando no tenga acceso root en el dispositivo. En esta configuración, el software AWS IoT Greengrass Core se ejecuta completamente como un usuario no root sin privilegios elevados.

**Desventajas**  
Esta solución tiene las siguientes limitaciones:
+ **Sin separación entre los usuarios** de los componentes: todos los componentes se ejecutan como el mismo usuario que ejecuta el software AWS IoT Greengrass Core. No puede usar la `posixUser` configuración para ejecutar componentes como usuarios diferentes.
+ **RequiresPrivilege ignorado**: el software AWS IoT Greengrass Core ignora la `RequiresPrivilege` opción en las recetas de componentes. Los componentes no pueden solicitar privilegios elevados.
+ **Sin servicio del sistema**: no puede instalar el software AWS IoT Greengrass principal como un servicio del sistema. Si lo desea, puede configurarlo AWS IoT Greengrass V2 para que se ejecute como un servicio de usuario de systemd.

**Requisitos previos**  
Esta solución requiere:
+ Una cuenta de usuario no root en el dispositivo
+ Acceda por escrito al directorio en el que desea instalar el software AWS IoT Greengrass Core

**Para instalarlo y ejecutarlo AWS IoT Greengrass V2 sin acceso root**

1. Complete los siguientes pasos[Instale el software AWS IoT Greengrass principal con aprovisionamiento automático de recursos](quick-installation.md): configure el entorno de su dispositivo, proporcione las credenciales y descargue el software AWS IoT Greengrass principal.

1. Cree el directorio de instalación y asegúrese de que es propiedad de su usuario.

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

1. Ejecute el instalador sin él`sudo`. `--component-default-user`Configúrelo a su usuario actual.

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

   No lo utilice `--setup-system-service true` porque no tiene acceso root para crear un servicio del sistema.

**(Opcional) Configure un servicio de usuario de systemd**  
Puede configurar un servicio de usuario de systemd para administrar el software AWS IoT Greengrass Core. Esto permite que el software se inicie automáticamente al iniciar sesión.

**Para configurar un servicio de usuario de systemd**

1. Detenga el software AWS IoT Greengrass principal si se está ejecutando actualmente.

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

1. Cree el directorio de servicios de usuario de systemd.

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

1. Cree el archivo de servicio `$HOME/.config/systemd/user/greengrass.service` con el siguiente contenido.

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

   En los archivos de unidades de usuario de systemd, `%h` es un especificador que se convierte en el directorio principal del usuario que ejecuta el servicio.

   */path/to/java*Sustitúyalo por la ruta a la instalación de Java.

1. Habilite e inicie el servicio.

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

**Comportamiento de reinicio y actualización OTA**  
El comportamiento depende de si configuró un servicio de usuario de systemd.

Con un servicio de usuario  
+ **Reinicio del dispositivo**: el software AWS IoT Greengrass principal se inicia automáticamente cuando el usuario inicia sesión.
+ **Actualización OTA**: las actualizaciones OTA se realizan correctamente y el software se reinicia automáticamente.

Sin un servicio de usuario  
+ **Reinicio del dispositivo**: el software AWS IoT Greengrass principal no se reinicia automáticamente. Debe iniciarlo manualmente.
+ **Actualización OTA**: las actualizaciones OTA se realizan correctamente, pero después debes iniciar manualmente el software AWS IoT Greengrass principal.

**Límites de recursos del sistema**  
Los límites de recursos por componente que utilizan cgroups no funcionan en esta solución porque los usuarios que no son root no pueden crear directorios de cgroup en ellos. `/sys/fs/cgroup/` Si despliega un componente con los límites de recursos configurados, el software AWS IoT Greengrass Core ignora los límites configurados.

Puede utilizar las siguientes alternativas para gestionar el uso de los recursos:
+ **Límites del servicio de usuario de Systemd**: si ejecuta el software AWS IoT Greengrass Core como un servicio de usuario de systemd, puede añadir límites de recursos al archivo de servicio en. `$HOME/.config/systemd/user/greengrass.service` Estos límites se aplican a todo el servicio, incluido el núcleo de Greengrass y todos los componentes.

  ```
  MemoryMax=2G
  CPUQuota=100%
  ```
+ **Límites de la JVM del núcleo Greengrass**: puede limitar la memoria de procesos del núcleo de Greengrass configurando las opciones de la JVM. Para obtener más información, consulte [Configurar el software AWS IoT Greengrass principal](configure-greengrass-core-v2.md).

## Solución 2: Configúrela AWS IoT Greengrass V2 como no root sin separar los componentes entre los usuarios
<a name="non-root-solution-2"></a>

Utilice esta solución cuando tenga acceso root para la configuración inicial y desee que el software AWS IoT Greengrass principal se ejecute como un servicio de sistema no root, pero no necesite ejecutar los componentes como usuarios diferentes. Es similar a la solución 1, pero el software se ejecuta como un servicio del sistema que se inicia automáticamente al arrancar.

**Desventajas**  
Esta solución tiene las siguientes limitaciones:
+ **Sin separación entre los usuarios** de los componentes: todos los componentes se ejecutan como el mismo usuario que ejecuta el software AWS IoT Greengrass Core. No puede usar la `posixUser` configuración para ejecutar componentes como usuarios diferentes.
+ **RequiresPrivilege ignorado**: el software AWS IoT Greengrass Core ignora la `RequiresPrivilege` opción en las recetas de componentes. Los componentes no pueden solicitar privilegios elevados.

**Requisitos previos**  
Esta solución requiere:
+ Acceso root para la configuración inicial
+ systemd en tu dispositivo

**Para instalarlo y ejecutarlo sin necesidad AWS IoT Greengrass V2 de separar los usuarios de los componentes**

1. Complete los siguientes pasos[Instale el software AWS IoT Greengrass principal con aprovisionamiento automático de recursos](quick-installation.md): configure el entorno de su dispositivo, proporcione las credenciales y descargue el software AWS IoT Greengrass principal.

1. Cree un usuario que no sea root y que ejecute el software AWS IoT Greengrass principal y todos los componentes.

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

1. Inicie sesión como usuario no root y ejecute el instalador. `--component-default-user`Configúrelo para el mismo usuario. No utilice `sudo` ni configure un servicio del sistema.

   ```
   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. Como root, cree el archivo de servicio del sistema `/etc/systemd/system/greengrass.service` con el siguiente contenido.

   ```
   [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. Detenga la instancia AWS IoT Greengrass Core en ejecución y, a continuación, habilite e inicie el servicio del sistema.

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

**Comportamiento de reinicio y actualización OTA**  
En esta solución:
+ El software AWS IoT Greengrass principal se ejecuta como un servicio del sistema y se reinicia automáticamente en caso de fallo o se reinicia el dispositivo.
+ Las actualizaciones OTA del software AWS IoT Greengrass Core funcionan. El servicio se reinicia automáticamente como usuario no root configurado.

**Límites de recursos del sistema**  
Los límites de recursos por componente que utilizan cgroups no funcionan en esta solución porque los usuarios que no son root y no tienen capacidades de Linux no pueden crear directorios de cgroup en ellos. `/sys/fs/cgroup/` Si implementa un componente con los límites de recursos configurados, el software AWS IoT Greengrass Core ignora los límites configurados.

Puede utilizar las siguientes alternativas para gestionar el uso de los recursos:
+ **Límites de servicio de Systemd**: puede añadir límites de recursos al archivo de servicio del sistema en`/etc/systemd/system/greengrass.service`. Estos límites se aplican a todo el servicio, incluido el núcleo de Greengrass y todos los componentes.

  ```
  MemoryMax=2G
  CPUQuota=100%
  ```
+ **Límites de la JVM del núcleo Greengrass**: puede limitar la memoria de procesos del núcleo de Greengrass configurando las opciones de la JVM. Para obtener más información, consulte [Configurar el software AWS IoT Greengrass principal](configure-greengrass-core-v2.md).

## Solución 3: Configúrela AWS IoT Greengrass V2 como no root con separación de los usuarios de los componentes
<a name="non-root-solution-3"></a>

Utilice esta solución cuando tenga acceso root para la configuración inicial, pero desee que el software AWS IoT Greengrass principal se ejecute como un usuario no root y, al mismo tiempo, mantenga la capacidad de ejecutar los componentes como usuarios diferentes. Esta configuración utiliza las funciones y funciones de Linux para permitir que el usuario que no es root cambie a otros usuarios al ejecutar los componentes.

**Desventajas**  
Esta solución tiene las siguientes limitaciones:
+ **Requiere la configuración de sudoers**: debe configurar sudoers para que el AWS IoT Greengrass V2 usuario pueda ejecutar comandos como otros usuarios.

**Requisitos previos**  
Esta solución requiere:
+ Acceso root para la configuración inicial
+ systemd versión 229 o posterior, que admite`AmbientCapabilities`. Para comprobar la versión, ejecute `systemctl --version`.

**Para instalarlo y ejecutarlo AWS IoT Greengrass V2 como usuario no root, con separación de los usuarios de los componentes**

1. Complete los siguientes pasos[Instale el software AWS IoT Greengrass principal con aprovisionamiento automático de recursos](quick-installation.md): configure el entorno de su dispositivo, proporcione las credenciales y descargue el software AWS IoT Greengrass principal.

1. Cree un usuario que no sea root y que ejecute el software AWS IoT Greengrass principal.

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

1. Añada el usuario que no es root a sudoers para que pueda ejecutar comandos como usuario del componente. Cree un archivo en. `/etc/sudoers.d/gg_non_root`

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

   Si configura los componentes para que se ejecuten como usuarios adicionales`posixUser`, añada una entrada sudoers para cada usuario. Por ejemplo:

   ```
   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. Inicie sesión como usuario no root y ejecute el instalador. No utilice `sudo` ni configure un servicio del sistema.

   ```
   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. Como root, cree el archivo de servicio del sistema `/etc/systemd/system/greengrass.service` con el siguiente contenido.

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

   Para obtener información sobre las capacidades requeridas, consulte[Capacidades de Linux requeridas por AWS IoT Greengrass V2](#linux-capabilities-reference).
   + `AmbientCapabilities`otorga las capacidades de Linux especificadas al usuario no root que ejecuta el servicio. Esto permite que el software AWS IoT Greengrass principal realice operaciones privilegiadas, como cambiar de usuario al ejecutar componentes, sin ejecutarlo como root.
   + `CapabilityBoundingSet`limita el conjunto máximo de capacidades que pueden utilizar el servicio y sus procesos secundarios. Las capacidades que no estén incluidas en este conjunto se eliminan de forma permanente.
   + `ProtectSystem=strict`hace que todo el sistema de archivos sea de solo lectura para el servicio, lo que impide la modificación del sistema operativo.
   + `ReadWritePaths`especifica los únicos directorios en los que el servicio puede escribir.

1. Detenga la instancia AWS IoT Greengrass Core en ejecución y, a continuación, habilite e inicie el servicio del sistema.

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

**Comportamiento de reinicio y actualización OTA**  
En esta solución:
+ El software AWS IoT Greengrass principal se ejecuta como un servicio del sistema y se reinicia automáticamente en caso de fallo o se reinicia el dispositivo.
+ Las actualizaciones OTA del software AWS IoT Greengrass Core funcionan. El servicio se reinicia automáticamente como usuario no root configurado.

**Límites de recursos del sistema**  
Los límites de recursos por componente para la memoria y la CPU funcionan en esta solución de la misma manera que cuando se ejecuta el software AWS IoT Greengrass Core como usuario root.

## Solución 4: AWS IoT Greengrass V2 Configúrelo como root con capacidades limitadas
<a name="non-root-solution-4"></a>

Utilice esta solución cuando desee que el software AWS IoT Greengrass principal se ejecute como root pero con un conjunto reducido de capacidades de Linux. Esta configuración proporciona la funcionalidad completa de ejecutarse como usuario root y, al mismo tiempo, limita la superficie de ataque al restringir las capacidades disponibles para el software y sus componentes.

**Desventajas**  
Esta solución tiene las siguientes consideraciones:
+ **Componentes con RequiresPrivilege capacidades limitadas**: los componentes que se utilizan se `RequiresPrivilege` ejecutan con el mismo conjunto limitado de capacidades que el software AWS IoT Greengrass principal, no con todos los privilegios de root.

**Requisitos previos**  
Esta solución requiere:
+ Acceso root
+ systemd en tu dispositivo

**Para instalar y ejecutar AWS IoT Greengrass V2 como root con capacidades limitadas**

1. Complete los siguientes pasos[Instale el software AWS IoT Greengrass principal con aprovisionamiento automático de recursos](quick-installation.md): configure el entorno de su dispositivo, proporcione las credenciales y descargue el software AWS IoT Greengrass principal.

1. Modifique el archivo de plantilla de servicio en el directorio en el que descargó el software AWS IoT Greengrass Core. `GreengrassInstaller/bin/greengrass.service.template` Añada las siguientes líneas a la `[Service]` sección antes de ejecutar el instalador:

   ```
   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`es una función de seguridad de systemd que limita las capacidades de Linux disponibles para el software AWS IoT Greengrass principal y todos sus procesos secundarios. Al configurar un conjunto delimitador, se restringe lo que pueden hacer el proceso y los componentes del núcleo de Greengrass, incluso cuando se ejecutan como root. Para obtener información sobre cada capacidad, consulte. [Capacidades de Linux requeridas por AWS IoT Greengrass V2](#linux-capabilities-reference)
   + `ProtectSystem=strict`hace que todo el sistema de archivos sea de solo lectura para el servicio, lo que impide la modificación del sistema operativo. Esto proporciona a Systemd un entorno aislado que protege los archivos del sistema incluso si un componente malintencionado se ejecuta con privilegios elevados.
   + `ReadWritePaths`especifica los únicos directorios en los que el servicio puede escribir. Además`ProtectSystem=strict`, esto limita el servicio a escribir únicamente en el directorio AWS IoT Greengrass V2 raíz y`/tmp`.

1. Ejecute el instalador con`--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
   ```

**Comportamiento de reinicio y actualización OTA**  
En esta solución:
+ El software AWS IoT Greengrass principal se ejecuta como un servicio del sistema y se reinicia automáticamente en caso de fallo o se reinicia el dispositivo.
+ Las actualizaciones OTA del software AWS IoT Greengrass Core funcionan. El software se actualiza y se reinicia automáticamente.

**Límites de recursos del sistema**  
Los límites de recursos por componente para la memoria y la CPU funcionan en esta solución de la misma manera que cuando se ejecuta el software AWS IoT Greengrass Core como usuario root.

## Capacidades de Linux requeridas por AWS IoT Greengrass V2
<a name="linux-capabilities-reference"></a>

La siguiente tabla describe las capacidades de Linux que requiere el software AWS IoT Greengrass Core cuando se ejecuta en configuraciones que no son root. Estas capacidades se utilizan en las soluciones 3 y 4.


**Capacidades de Linux requeridas**  

| Funcionalidad | Description (Descripción) | Necesario para | 
| --- | --- | --- | 
| `CAP_CHOWN` | Realice cambios arbitrarios en el archivo UIDs y GIDs | Cambiar la propiedad del archivo en función del usuario que ejecute el componente | 
| `CAP_DAC_OVERRIDE` | Omita las comprobaciones de permisos de lectura, escritura y ejecución de archivos | Permitir al usuario principal de Greengrass ejecutar archivos cuando se utilizan para scripts con `RequiresPrivilege` | 
| `CAP_DAC_READ_SEARCH` | Omita las comprobaciones de permisos de lectura de archivos y las comprobaciones de permisos de lectura y ejecución de directorios | Recorrer la jerarquía de carpetas incluso en el caso de carpetas que el usuario de Greengrass Nucleus no tiene permiso para leer | 
| `CAP_FOWNER` | Omita las comprobaciones de permisos en operaciones que normalmente requieren que el UID del sistema de archivos del proceso coincida con el UID del archivo | Omitir las comprobaciones de propiedad de los archivos | 
| `CAP_SETUID` | Realice manipulaciones arbitrarias del proceso UIDs | Se usa `sudo` cuando se ejecutan scripts como un usuario diferente al usuario que ejecuta el núcleo de Greengrass | 
| `CAP_SETGID` | Realice manipulaciones arbitrarias del proceso GIDs | Se usa `sudo` cuando se ejecutan scripts como un grupo diferente al grupo que ejecuta el núcleo de Greengrass | 
| `CAP_SYS_RESOURCE` | Anule los límites de recursos | Establecer límites de recursos en los procesos de los componentes, incluso si los límites no se especifican en las implementaciones | 
| `CAP_AUDIT_WRITE` | Escriba registros en el registro de auditoría del núcleo | Permitir `sudo` escribir en el registro de auditoría del núcleo | 