Tugas Administrasi

Tugas tambahan meniru tugas administrasi Linux lainnya dan menggunakan utilitas yang tersedia dalam distribusi Fedora. Beberapa tugas dijelaskan di bawah ini dengan tautan khusus ke Dokumentasi Fedora lainnya atau dokumentasi upstream.

Sumber Daya Umum:

Manajemen Pengguna

Image awal menyertakan akun root yang terkunci tanpa kata sandi, kunci ssh dapat ditambahkan menggunakan ignition.

$ id testuser
uid=1000(testuser) gid=1000(testuser) groups=1000(testuser),10(wheel)
$ getent passwd testuser
testuser:x:1000:1000::/home/testuser:/bin/bash

Instalasi paket dapat menambahkan pengguna tambahan untuk memiliki file dan proses pada sistem. Misalnya, skrip instalasi paket httpd akan membuat pengguna apache jika belum ada.

$ id apache
uid=48(apache) gid=48(apache) groups=48(apache)
$ getent passwd apache
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

Akun ini biasanya merupakan akun sistem dengan UID di bawah 1000, tanpa kata sandi, dan shell /sbin/nologin. Akun dengan shell nologin tidak dapat digunakan secara interaktif. Akun-akun ini juga tidak memiliki direktori home yang dibuat di /home

Untuk membuat akun sistem secara manual bagi aplikasi Anda, gunakan perintah useradd:

$ sudo useradd -r -s /sbin/nologin appuser
$ getent passwd appuser
appuser:x:992:981::/var/home/appuser:/sbin/nologin

Akun pengguna terpusat (LDAP, Kerberos) dapat dikonfigurasi dengan authconfig setelah paket klien, termasuk sssd, telah diinstal. File /etc/nsswitch.conf sudah dikonfigurasi untuk mencari sss serta files dan altfiles untuk informasi akun.

Akun pengguna yang merupakan anggota grup wheel secara otomatis memiliki hak penuh dengan perintah sudo. Ini berasal dari baris-baris berikut dalam file konfigurasi sudo:

$ sudo grep wheel /etc/sudoers
## Allows people in group wheel to run all commands
%wheel	ALL=(ALL)	ALL
# %wheel	ALL=(ALL)	NOPASSWD: ALL

Pengeditan pada file konfigurasi ini harus dilakukan dengan perintah visudo agar sintaks diperiksa saat keluar. Alih-alih mengedit file konfigurasi utama, berikan pengguna lain kemampuan untuk menjalankan perintah tertentu sebagai pengguna yang berbeda dengan menambahkan file konfigurasi ke direktori /etc/sudoers.d/.

Gunakan ssh-keygen untuk menghasilkan pasangan kunci ssh lalu tambahkan kunci publik ke akun pengguna di perangkat Fedora IoT Anda:

$ ssh-copy-id testuser@10.11.12.13

Ganti nama pengguna dan alamat IP dengan milik perangkat Anda. Gunakan opsi -i untuk menentukan file kunci selain default file ~/.ssh/id_*pub yang paling baru dimodifikasi. Perintah ssh-copy-id akan menambahkan kunci publik ke file authorized keys pengguna di perangkat. Perintah ini akan membuat direktori ~/.ssh jika belum ada dan memastikan izin pada file sudah benar.

Manajemen Grup

Karena cara rpm-ostree menangani entri pengguna + grup, mungkin tidak memungkinkan untuk menggunakan usermod -a -G guna menambahkan pengguna ke grup dengan sukses. Sampai rpm-ostree beralih menggunakan systemd sysusers, pengguna harus mengisi file /etc/group dari file /usr/lib/group sebelum mereka dapat menambahkan diri mereka ke grup.

Misalnya, jika Anda ingin menambahkan pengguna ke grup libvirt:

$ grep -E '^libvirt:' /usr/lib/group | sudo tee -a /etc/group
$ sudo usermod -aG libvirt $USER
Anda perlu keluar dan masuk kembali untuk menerapkan perubahan ini.

Masalah ini dilacak di rpm-ostree#29 dan rpm-ostree#49.

(Teks disalin dari dokumentasi Fedora Silverblue)

Konfigurasi Jaringan

Tampilkan daftar perangkat jaringan:

$ nmcli dev
DEVICE  TYPE      STATE      CONNECTION
eth0    ethernet  connected  System eth0
lo      loopback  unmanaged  --

Tampilkan detail perangkat:

$ nmcli dev show eth0
GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         B8:27:EB:B4:93:D8
GENERAL.MTU:                            1500
...Output Omitted...

Tampilkan daftar konfigurasi koneksi:

$ nmcli con
NAME         UUID                                  TYPE      DEVICE
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  eth0
enp1s0       8a6006ff-a1b5-4048-be93-258087a1853f  ethernet  --

Hanya satu koneksi per perangkat yang dapat AKTIF tetapi beberapa koneksi dapat didefinisikan.

Tampilkan informasi koneksi:

$ nmcli con show enp1s0
connection.id:                          enp1s0
connection.uuid:                        8a6006ff-a1b5-4048-be93-258087a1853f
connection.stable-id:                   --
connection.type:                        802-3-ethernet
... Output Omitted ...

Perintah nmcli conn memiliki berbagai opsi termasuk edit, modify, up, down, add, dan delete. Gunakan perintah nmcli conn help untuk melihat sintaksnya.

Konfigurasi default akan mencoba mendapatkan informasi koneksi dari layanan DHCP di jaringan Anda. Jika tidak ada layanan DHCP yang tersedia di jaringan Anda, Anda dapat menambahkan koneksi statis:

$ nmcli connection add con-name cable ipv4.addresses \
192.168.0.10/24 ipv4.gateway 192.168.0.1 \
connection.autoconnect true ipv4.dns "8.8.8.8,1.1.1.1" \
type ethernet ifname eth0 ipv4.method manual

Hubungkan perangkat ke SSID wifi, dengan meminta kata sandi:

$ sudo nmcli –ask device wifi connect SSID-Name

Untuk opsi wifi lainnya, lihat:

$ nmcli device wifi help

Mengamankan akses jarak jauh

Akun root dikunci secara default tanpa kata sandi yang ditetapkan. Daemon SSH dikonfigurasi dengan autentikasi kata sandi dinonaktifkan untuk akun root dan hanya mengizinkan akses jarak jauh jika kunci ssh telah ditambahkan.

Nonaktifkan akses ssh jarak jauh untuk root dengan mengedit baris berikut dalam file /etc/ssh/sshd_config:

PermitRootLogin no

Untuk menonaktifkan autentikasi kata sandi bagi semua pengguna, edit file /etc/ssh/sshd_config dan tambahkan yang berikut:

PasswordAuthentication no

Lihat konfigurasi firewall default:

$ sudo firewall-cmd --list-all

Layanan firewalld berbeda dengan layanan systemd. Untuk melihat konfigurasi apa yang disertakan oleh layanan firewalld, gunakan:

$ sudo firewall-cmd --info-service=mdns
mdns
  ports: 5353/udp
  protocols:
  source-ports:
  modules:
  destination: ipv4:224.0.0.251 ipv6:ff02::fb

Gunakan opsi --add-service atau --add-port untuk membuka port di firewall:

$ sudo firewall-cmd --add-port=8080/tcp --add-port=8081/tcp --permanent
$ sudo firewall-cmd --reload

Opsi --permanent menyimpan pengaturan ke file sehingga akan dimuat saat firewalld dimuat berikutnya. Opsi --reload memuat ulang konfigurasi dari file yang tersimpan. Jika Anda menambahkan port atau layanan tanpa opsi --permanent, hal itu akan mengubah pengaturan firewalld runtime tetapi tidak akan menyimpan perubahan Anda untuk bertahan setelah reboot sistem.

Manajemen Layanan

Layanan dikelola oleh systemd dan dapat dimulai serta diaktifkan dengan systemctl.

Image Fedora IoT melakukan boot ke target multi-user secara default.

$ systemctl get-default
multi-user.target

Sejumlah kecil layanan diaktifkan:

$ systemctl list-unit-files  --state enabled

Instalasi paket biasanya tidak memulai atau mengaktifkan layanan:

$ systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabl>
   Active: inactive (dead)
     Docs: man:httpd.service(8)

Opsi --now memungkinkan Anda memulai layanan pada perintah enable:

$ sudo systemctl enable httpd --now
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

Melihat Log

File log umumnya terletak di direktori /var/log. Log sistem dapat dilihat dan dicari dengan journalctl.

Mengedit Argumen Baris Perintah Kernel

Terkadang berguna untuk dapat mengedit argumen baris perintah kernel, baik untuk menambahkan konsol serial atau beberapa opsi untuk debugging.

Lihat baris perintah kernel saat ini:

$ sudo rpm-ostree kargs

Edit argumen baris perintah kernel dengan editor default (default untuk editor adalah vim) untuk penyesuaian seperti menambahkan konsol serial:

$ sudo rpm-ostree kargs --editor

Reboot sistem:

$ sudo systemctl reboot

Administrasi Jarak Jauh dengan Ansible

Image Fedora IoT menyertakan python3 dan Ansible versi 2.5 ke atas memiliki dukungan untuk Python 3 (hanya python 3.5 ke atas). Untuk menggunakan Ansible dalam mengonfigurasi perangkat Fedora IoT Anda, atur opsi konfigurasi ansible_python_interpreter untuk menggunakan binary python3 /usr/bin/python3. Hal ini dilakukan dengan variabel inventaris seperti yang dijelaskan dalam dokumentasi Dukungan Ansible Python 3.

Panduan Pengguna Ansible mencakup cara bekerja dengan Ansible. Beberapa modul yang berguna meliputi:

  • Jaringan: nmcli

  • Pengguna: user, authorized_key, htpasswd

  • Paket, layanan, dan port: yum_repository, service, firewalld

  • File dan direktori: file, copy, template, get_url, unarchive

  • Berinteraksi dengan layanan web HTTP dan HTTPS: uri

  • Sistem: timezone, reboot

Terdapat modul yang didukung komunitas untuk rpm-ostree, community.general.rpm_ostree_pkg, yang dapat digunakan untuk menambah dan menghapus overlay. Anda harus menginstal koleksi community.general untuk menggunakan modul ini.

$ ansible-galaxy collection install community.general

Kemudian modul dapat digunakan seperti berikut:

- name: install cockpit
  community.general.rpm_ostree_pkg:
    name:
    - cockpit
    - cockpit-podman
    - cockpit-storaged
    - cockpit-ostree
    state: present
  register: result

- name: reboot if new stuff was installed
  reboot:
    reboot_timeout: 300
  when: result.changed

- name: start and enable cockpit
  service:
    name: cockpit.socket
    state: started
    enabled: true

- name: allow cockpit through firewall
  firewalld:
    service: cockpit
    permanent: yes
    immediate: yes
    state: enabled