

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Siapkan perangkat AWS IoT Greengrass V2 inti sebagai non-root
<a name="setup-greengrass-non-root"></a>

Halaman ini menyajikan empat solusi untuk menjalankan perangkat lunak AWS IoT Greengrass Core sebagai non-root. Tinjau tabel perbandingan untuk memahami fitur dan pengorbanan dari setiap solusi, lalu gunakan diagram alur keputusan untuk mengidentifikasi mana yang sesuai dengan kebutuhan Anda.

**catatan**  
Solusi non-root pada halaman ini hanya berlaku untuk AWS IoT Greengrass nukleus pada perangkat Linux. Windows tidak termasuk karena AWS IoT Greengrass V2 harus dijalankan sebagai layanan sistem pada Windows. Untuk instalasi root standar di Linux, lihat[Instal perangkat lunak AWS IoT Greengrass Core dengan penyediaan sumber daya otomatis](quick-installation.md).  
Untuk menjalankan AWS IoT Greengrass nucleus lite sebagai pengguna non-root, lihat [Menggunakan Podman di repositori](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/BUILD.md#optional-using-podman) AWS IoT Greengrass nucleus lite GitHub .

**Topics**
+ [Pilih solusi non-root](#non-root-choose-solution)
+ [Solusi 1: Mengatur AWS IoT Greengrass V2 tanpa akses root](#non-root-solution-1)
+ [Solusi 2: Siapkan AWS IoT Greengrass V2 sebagai non-root tanpa pemisahan pengguna komponen](#non-root-solution-2)
+ [Solusi 3: Siapkan AWS IoT Greengrass V2 sebagai non-root dengan pemisahan pengguna komponen](#non-root-solution-3)
+ [Solusi 4: Siapkan AWS IoT Greengrass V2 sebagai root dengan kemampuan terbatas](#non-root-solution-4)
+ [Kemampuan Linux yang dibutuhkan oleh AWS IoT Greengrass V2](#linux-capabilities-reference)

## Pilih solusi non-root
<a name="non-root-choose-solution"></a>

Gunakan tabel berikut untuk membandingkan solusi non-root dan memahami pengorbanannya. Setiap solusi menawarkan kemampuan yang berbeda tergantung pada persyaratan keamanan dan kendala perangkat Anda.


**Solusi non-root**  

| Solusi | Membutuhkan akses root | Dapat menjalankan komponen sebagai pengguna yang berbeda | Menjalankan Greengrass sebagai layanan sistem | Terbaik untuk | 
| --- | --- | --- | --- | --- | 
| [Solusi 1: Tidak ada akses root](#non-root-solution-1) | Tidak | Tidak | Tidak (layanan pengguna opsional) | Perangkat di mana Anda tidak memiliki akses root | 
| [Solusi 2: Non-root, pengguna tunggal](#non-root-solution-2) | Ya (hanya pengaturan) | Tidak | Ya | Menjalankan Greengrass sebagai pengguna non-root dengan semua komponen berjalan sebagai pengguna yang sama | 
| [Solusi 3: Non-root, multi-pengguna](#non-root-solution-3) | Ya (hanya pengaturan) | Ya | Ya | Menjalankan Greengrass sebagai pengguna non-root saat menjalankan komponen sebagai pengguna yang berbeda | 
| [Solusi 4: Root dengan kemampuan terbatas](#non-root-solution-4) | Ya | Ya | Ya | Menjalankan Greengrass sebagai root dengan seperangkat kemampuan Linux terbatas | 

Diagram alur berikut memandu Anda dalam memilih solusi yang sesuai berdasarkan kendala dan persyaratan perangkat Anda.

![\[Diagram alir menunjukkan proses keputusan untuk memilih solusi non-root. Mulailah dengan menanyakan apakah Anda memiliki akses root pada perangkat inti Anda. Jika tidak, gunakan Solusi 1. Jika ya, tanyakan apakah Anda perlu menjalankan komponen sebagai pengguna Linux yang berbeda. Jika tidak, gunakan Solusi 2. Jika ya, tanyakan apakah Anda ingin Greengrass berjalan sebagai pengguna root dengan kemampuan terbatas. Jika ya, gunakan Solusi 4. Jika tidak, gunakan Solusi 3.\]](http://docs.aws.amazon.com/id_id/greengrass/v2/developerguide/images/non-root-solution-decision-flow.png)


## Solusi 1: Mengatur AWS IoT Greengrass V2 tanpa akses root
<a name="non-root-solution-1"></a>

Gunakan solusi ini ketika Anda tidak memiliki akses root pada perangkat. Dalam konfigurasi ini, perangkat lunak AWS IoT Greengrass Core berjalan sepenuhnya sebagai pengguna non-root tanpa hak istimewa yang tinggi.

**Pengorbanan**  
Solusi ini memiliki keterbatasan sebagai berikut:
+ **Tidak ada pemisahan pengguna komponen** — Semua komponen berjalan sebagai pengguna yang sama yang menjalankan perangkat lunak AWS IoT Greengrass Core. Anda tidak dapat menggunakan `posixUser` konfigurasi untuk menjalankan komponen sebagai pengguna yang berbeda.
+ **RequiresPrivilege diabaikan** — Perangkat lunak AWS IoT Greengrass Core mengabaikan `RequiresPrivilege` opsi dalam resep komponen. Komponen tidak dapat meminta hak istimewa yang ditinggikan.
+ **Tidak ada layanan sistem** — Anda tidak dapat menginstal perangkat lunak AWS IoT Greengrass Core sebagai layanan sistem. Anda dapat mengonfigurasi secara opsional AWS IoT Greengrass V2 untuk dijalankan sebagai layanan pengguna systemd.

**Prasyarat**  
Solusi ini membutuhkan:
+ Akun pengguna non-root di perangkat
+ Tulis akses ke direktori tempat Anda ingin menginstal perangkat lunak AWS IoT Greengrass Core

**Untuk menginstal dan menjalankan AWS IoT Greengrass V2 tanpa akses root**

1. Selesaikan langkah-langkah berikut dari[Instal perangkat lunak AWS IoT Greengrass Core dengan penyediaan sumber daya otomatis](quick-installation.md): atur lingkungan perangkat Anda, berikan kredensyal, dan unduh perangkat lunak AWS IoT Greengrass Core.

1. Buat direktori instalasi dan pastikan pengguna Anda memilikinya.

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

1. Jalankan installer tanpa`sudo`. Setel `--component-default-user` ke pengguna Anda saat ini.

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

   Jangan gunakan `--setup-system-service true` karena Anda tidak memiliki akses root untuk membuat layanan sistem.

**(Opsional) Siapkan layanan pengguna systemd**  
Anda dapat mengonfigurasi layanan pengguna systemd untuk mengelola perangkat lunak AWS IoT Greengrass Core. Ini memungkinkan perangkat lunak untuk memulai secara otomatis ketika Anda masuk.

**Untuk menyiapkan layanan pengguna systemd**

1. Hentikan perangkat lunak AWS IoT Greengrass Core jika sedang berjalan.

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

1. Buat direktori layanan pengguna systemd.

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

1. Buat file layanan di `$HOME/.config/systemd/user/greengrass.service` dengan konten berikut.

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

   Dalam file unit pengguna systemd, `%h` adalah specifier yang menyelesaikan ke direktori home pengguna yang menjalankan layanan.

   Ganti */path/to/java* dengan jalur ke instalasi Java Anda.

1. Aktifkan dan mulai layanan.

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

**Mulai ulang dan perilaku pembaruan OTA**  
Perilaku tergantung pada apakah Anda mengonfigurasi layanan pengguna systemd.

Dengan layanan pengguna  
+ **Reboot perangkat** - Perangkat lunak AWS IoT Greengrass Inti dimulai secara otomatis ketika pengguna masuk.
+ **Pembaruan OTA** - Pembaruan OTA berhasil dan perangkat lunak dimulai ulang secara otomatis.

Tanpa layanan pengguna  
+ **Reboot perangkat** — Perangkat lunak AWS IoT Greengrass Core tidak restart secara otomatis. Anda harus memulainya secara manual.
+ **Pembaruan OTA** - Pembaruan OTA berhasil, tetapi Anda harus memulai perangkat lunak AWS IoT Greengrass Core secara manual sesudahnya.

**Batas sumber daya sistem**  
Batas sumber daya per komponen menggunakan cgroups tidak berfungsi dalam solusi ini karena pengguna non-root tidak dapat membuat direktori cgroup di. `/sys/fs/cgroup/` Jika Anda menerapkan komponen dengan batas sumber daya yang dikonfigurasi, perangkat lunak AWS IoT Greengrass Core mengabaikan batas yang dikonfigurasi.

Anda dapat menggunakan alternatif berikut untuk mengelola penggunaan sumber daya:
+ **Batas layanan pengguna Systemd** — Jika Anda menjalankan perangkat lunak AWS IoT Greengrass Core sebagai layanan pengguna systemd, Anda dapat menambahkan batas sumber daya ke file layanan di. `$HOME/.config/systemd/user/greengrass.service` Batasan ini berlaku untuk seluruh layanan, termasuk inti Greengrass dan semua komponen.

  ```
  MemoryMax=2G
  CPUQuota=100%
  ```
+ **Batas JVM inti Greengrass — Anda dapat membatasi memori proses inti Greengrass dengan mengonfigurasi opsi JVM**. Untuk informasi selengkapnya, lihat [Konfigurasikan perangkat lunak AWS IoT Greengrass Inti](configure-greengrass-core-v2.md).

## Solusi 2: Siapkan AWS IoT Greengrass V2 sebagai non-root tanpa pemisahan pengguna komponen
<a name="non-root-solution-2"></a>

Gunakan solusi ini ketika Anda memiliki akses root untuk pengaturan awal dan ingin perangkat lunak AWS IoT Greengrass Core berjalan sebagai layanan sistem non-root, tetapi Anda tidak perlu menjalankan komponen sebagai pengguna yang berbeda. Ini mirip dengan Solusi 1, tetapi perangkat lunak berjalan sebagai layanan sistem yang dimulai secara otomatis saat boot.

**Pengorbanan**  
Solusi ini memiliki keterbatasan sebagai berikut:
+ **Tidak ada pemisahan pengguna komponen** — Semua komponen berjalan sebagai pengguna yang sama yang menjalankan perangkat lunak AWS IoT Greengrass Core. Anda tidak dapat menggunakan `posixUser` konfigurasi untuk menjalankan komponen sebagai pengguna yang berbeda.
+ **RequiresPrivilege diabaikan** — Perangkat lunak AWS IoT Greengrass Core mengabaikan `RequiresPrivilege` opsi dalam resep komponen. Komponen tidak dapat meminta hak istimewa yang ditinggikan.

**Prasyarat**  
Solusi ini membutuhkan:
+ Akses root untuk pengaturan awal
+ systemd di perangkat Anda

**Untuk menginstal dan menjalankan AWS IoT Greengrass V2 sebagai non-root tanpa pemisahan pengguna komponen**

1. Selesaikan langkah-langkah berikut dari[Instal perangkat lunak AWS IoT Greengrass Core dengan penyediaan sumber daya otomatis](quick-installation.md): atur lingkungan perangkat Anda, berikan kredensyal, dan unduh perangkat lunak AWS IoT Greengrass Core.

1. Buat pengguna non-root yang akan menjalankan perangkat lunak AWS IoT Greengrass Core dan semua komponen.

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

1. Masuk sebagai pengguna non-root dan jalankan penginstal. Setel `--component-default-user` ke pengguna yang sama. Jangan gunakan `sudo` dan jangan mengatur layanan sistem.

   ```
   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. Sebagai root, buat file layanan sistem di `/etc/systemd/system/greengrass.service` dengan konten berikut.

   ```
   [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. Hentikan instance AWS IoT Greengrass Core yang sedang berjalan, lalu aktifkan dan mulai layanan sistem.

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

**Mulai ulang dan perilaku pembaruan OTA**  
Dalam solusi ini:
+ Perangkat lunak AWS IoT Greengrass Core berjalan sebagai layanan sistem dan restart secara otomatis pada kegagalan atau reboot perangkat.
+ Pembaruan OTA untuk perangkat lunak AWS IoT Greengrass Core berfungsi. Layanan restart secara otomatis sebagai pengguna non-root yang dikonfigurasi.

**Batas sumber daya sistem**  
Batas sumber daya per komponen menggunakan cgroups tidak berfungsi dalam solusi ini karena pengguna non-root tanpa kemampuan Linux tidak dapat membuat direktori cgroup di. `/sys/fs/cgroup/` Jika Anda menerapkan komponen dengan batas sumber daya yang dikonfigurasi, perangkat lunak AWS IoT Greengrass Core mengabaikan batas yang dikonfigurasi.

Anda dapat menggunakan alternatif berikut untuk mengelola penggunaan sumber daya:
+ **Batas layanan Systemd** — Anda dapat menambahkan batas sumber daya ke file layanan sistem di`/etc/systemd/system/greengrass.service`. Batasan ini berlaku untuk seluruh layanan, termasuk inti Greengrass dan semua komponen.

  ```
  MemoryMax=2G
  CPUQuota=100%
  ```
+ **Batas JVM inti Greengrass — Anda dapat membatasi memori proses inti Greengrass dengan mengonfigurasi opsi JVM**. Untuk informasi selengkapnya, lihat [Konfigurasikan perangkat lunak AWS IoT Greengrass Inti](configure-greengrass-core-v2.md).

## Solusi 3: Siapkan AWS IoT Greengrass V2 sebagai non-root dengan pemisahan pengguna komponen
<a name="non-root-solution-3"></a>

Gunakan solusi ini ketika Anda memiliki akses root untuk pengaturan awal tetapi ingin perangkat lunak AWS IoT Greengrass Core berjalan sebagai pengguna non-root sambil mempertahankan kemampuan untuk menjalankan komponen sebagai pengguna yang berbeda. Konfigurasi ini menggunakan kemampuan Linux dan sudoer untuk memungkinkan pengguna non-root beralih ke pengguna lain saat menjalankan komponen.

**Pengorbanan**  
Solusi ini memiliki keterbatasan sebagai berikut:
+ **Memerlukan konfigurasi sudoers** - Anda harus mengkonfigurasi sudoers untuk memungkinkan pengguna menjalankan perintah sebagai AWS IoT Greengrass V2 pengguna lain.

**Prasyarat**  
Solusi ini membutuhkan:
+ Akses root untuk pengaturan awal
+ systemd versi 229 atau yang lebih baru, yang mendukung. `AmbientCapabilities` Untuk memeriksa versi Anda, jalankan`systemctl --version`.

**Untuk menginstal dan menjalankan AWS IoT Greengrass V2 sebagai non-root dengan pemisahan pengguna komponen**

1. Selesaikan langkah-langkah berikut dari[Instal perangkat lunak AWS IoT Greengrass Core dengan penyediaan sumber daya otomatis](quick-installation.md): atur lingkungan perangkat Anda, berikan kredensyal, dan unduh perangkat lunak AWS IoT Greengrass Core.

1. Buat pengguna non-root yang akan menjalankan perangkat lunak AWS IoT Greengrass Core.

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

1. Tambahkan pengguna non-root ke sudoers sehingga dapat menjalankan perintah sebagai pengguna komponen. Buat file di`/etc/sudoers.d/gg_non_root`.

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

   Jika Anda mengonfigurasi komponen untuk dijalankan sebagai pengguna tambahan`posixUser`, tambahkan entri sudoers untuk setiap pengguna. Contoh:

   ```
   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. Masuk sebagai pengguna non-root dan jalankan penginstal. Jangan gunakan `sudo` dan jangan mengatur layanan sistem.

   ```
   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. Sebagai root, buat file layanan sistem di `/etc/systemd/system/greengrass.service` dengan konten berikut.

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

   Untuk informasi tentang kemampuan yang diperlukan, lihat[Kemampuan Linux yang dibutuhkan oleh AWS IoT Greengrass V2](#linux-capabilities-reference).
   + `AmbientCapabilities`memberikan kemampuan Linux yang ditentukan kepada pengguna non-root yang menjalankan layanan. Hal ini memungkinkan perangkat lunak AWS IoT Greengrass Core untuk melakukan operasi istimewa seperti beralih pengguna saat menjalankan komponen, tanpa berjalan sebagai root.
   + `CapabilityBoundingSet`membatasi serangkaian kemampuan maksimum yang dapat digunakan layanan dan proses turunannya. Kemampuan yang tidak ada dalam set ini akan dijatuhkan secara permanen.
   + `ProtectSystem=strict`membuat seluruh sistem file read-only untuk layanan, mencegah modifikasi sistem operasi.
   + `ReadWritePaths`menentukan satu-satunya direktori yang layanan dapat menulis ke.

1. Hentikan instance AWS IoT Greengrass Core yang sedang berjalan, lalu aktifkan dan mulai layanan sistem.

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

**Mulai ulang dan perilaku pembaruan OTA**  
Dalam solusi ini:
+ Perangkat lunak AWS IoT Greengrass Core berjalan sebagai layanan sistem dan restart secara otomatis pada kegagalan atau reboot perangkat.
+ Pembaruan OTA untuk perangkat lunak AWS IoT Greengrass Core berfungsi. Layanan restart secara otomatis sebagai pengguna non-root yang dikonfigurasi.

**Batas sumber daya sistem**  
Batas sumber daya per komponen untuk memori dan CPU bekerja dalam solusi ini dengan cara yang sama seperti saat menjalankan perangkat lunak AWS IoT Greengrass Core sebagai root.

## Solusi 4: Siapkan AWS IoT Greengrass V2 sebagai root dengan kemampuan terbatas
<a name="non-root-solution-4"></a>

Gunakan solusi ini ketika Anda ingin perangkat lunak AWS IoT Greengrass Core berjalan sebagai root tetapi dengan serangkaian kemampuan Linux yang berkurang. Konfigurasi ini menyediakan fungsionalitas penuh berjalan sebagai root sambil membatasi permukaan serangan dengan membatasi kemampuan yang tersedia untuk perangkat lunak dan komponennya.

**Pengorbanan**  
Solusi ini memiliki pertimbangan sebagai berikut:
+ **Komponen dengan RequiresPrivilege kemampuan terbatas** — Komponen yang digunakan `RequiresPrivilege` berjalan dengan serangkaian kemampuan terbatas yang sama dengan perangkat lunak AWS IoT Greengrass Core, bukan hak akses root penuh.

**Prasyarat**  
Solusi ini membutuhkan:
+ Akses root
+ systemd di perangkat Anda

**Untuk menginstal dan menjalankan AWS IoT Greengrass V2 sebagai root dengan kemampuan terbatas**

1. Selesaikan langkah-langkah berikut dari[Instal perangkat lunak AWS IoT Greengrass Core dengan penyediaan sumber daya otomatis](quick-installation.md): atur lingkungan perangkat Anda, berikan kredensyal, dan unduh perangkat lunak AWS IoT Greengrass Core.

1. Ubah file template layanan di`GreengrassInstaller/bin/greengrass.service.template`, di direktori tempat Anda mengunduh perangkat lunak AWS IoT Greengrass Core. Tambahkan baris berikut ke `[Service]` bagian sebelum Anda menjalankan penginstal:

   ```
   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`adalah fitur keamanan systemd yang membatasi kemampuan Linux yang tersedia untuk perangkat lunak AWS IoT Greengrass Core dan semua proses anaknya. Dengan mengonfigurasi set pembatas, Anda membatasi apa yang dapat dilakukan oleh proses inti Greengrass dan komponen, bahkan saat dijalankan sebagai root. Untuk informasi tentang setiap kemampuan, lihat[Kemampuan Linux yang dibutuhkan oleh AWS IoT Greengrass V2](#linux-capabilities-reference).
   + `ProtectSystem=strict`membuat seluruh sistem file read-only untuk layanan, mencegah modifikasi sistem operasi. Ini menyediakan sandboxing systemd yang melindungi file sistem bahkan jika komponen berbahaya berjalan dengan hak istimewa yang tinggi.
   + `ReadWritePaths`menentukan satu-satunya direktori yang layanan dapat menulis ke. Bersama dengan`ProtectSystem=strict`, ini membatasi layanan untuk menulis hanya ke direktori AWS IoT Greengrass V2 root dan`/tmp`.

1. Jalankan installer dengan`--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
   ```

**Mulai ulang dan perilaku pembaruan OTA**  
Dalam solusi ini:
+ Perangkat lunak AWS IoT Greengrass Core berjalan sebagai layanan sistem dan restart secara otomatis pada kegagalan atau reboot perangkat.
+ Pembaruan OTA untuk perangkat lunak AWS IoT Greengrass Core berfungsi. Pembaruan perangkat lunak dan restart secara otomatis.

**Batas sumber daya sistem**  
Batas sumber daya per komponen untuk memori dan CPU bekerja dalam solusi ini dengan cara yang sama seperti saat menjalankan perangkat lunak AWS IoT Greengrass Core sebagai root.

## Kemampuan Linux yang dibutuhkan oleh AWS IoT Greengrass V2
<a name="linux-capabilities-reference"></a>

Tabel berikut menjelaskan kemampuan Linux yang dibutuhkan oleh perangkat lunak AWS IoT Greengrass Core saat berjalan dalam konfigurasi non-root. Kemampuan ini digunakan dalam Solusi 3 dan 4.


**Kemampuan Linux yang dibutuhkan**  

| Kemampuan | Deskripsi | Diperlukan untuk | 
| --- | --- | --- | 
| `CAP_CHOWN` | Buat perubahan sewenang-wenang pada file UIDs dan GIDs | Mengubah kepemilikan file tergantung pada pengguna yang mengeksekusi komponen | 
| `CAP_DAC_OVERRIDE` | Bypass file membaca, menulis, dan menjalankan pemeriksaan izin | Mengizinkan pengguna inti Greengrass untuk mengeksekusi file saat digunakan untuk skrip dengan `RequiresPrivilege` | 
| `CAP_DAC_READ_SEARCH` | Bypass pemeriksaan izin baca file dan direktori baca dan jalankan pemeriksaan izin | Berjalan di hierarki folder bahkan untuk folder, pengguna inti Greengrass tidak memiliki izin untuk membaca | 
| `CAP_FOWNER` | Bypass pemeriksaan izin pada operasi yang biasanya memerlukan UID sistem file dari proses untuk mencocokkan UID file | Melewati pemeriksaan kepemilikan file | 
| `CAP_SETUID` | Buat manipulasi proses yang sewenang-wenang UIDs | Menggunakan `sudo` saat menjalankan skrip sebagai pengguna yang berbeda dari pengguna yang menjalankan inti Greengrass | 
| `CAP_SETGID` | Buat manipulasi proses yang sewenang-wenang GIDs | Menggunakan `sudo` saat menjalankan skrip sebagai grup yang berbeda dari grup yang menjalankan inti Greengrass | 
| `CAP_SYS_RESOURCE` | Ganti batas sumber daya | Menetapkan batas sumber daya pada proses komponen, meskipun batas tidak ditentukan dalam penerapan | 
| `CAP_AUDIT_WRITE` | Menulis catatan ke log audit kernel | Memungkinkan `sudo` untuk menulis ke log audit kernel | 