Red Hat System Administration I 10.0
Daftar isi
- Mengakses CLI
- Bantuan dari dokumentasi lokal
- Mendaftarkan sistem untuk dukungan redhat
- Bantuan berbasis AI untuk RHEL Lightspeed
- Navigasi hirarki file sistem
- Mengelola file dari CLI
- Mengedit file teks
- Mengalihkan input dan output shell
- Mengelola User dan Grup lokal
- Mengontrol Akses ke File
- Menginstal dan Memperbarui Software dengan RPM
- Menginstal dan Memperbarui Aplikasi dengan Menggunakan Flatpak
- Mengakses Removable Media
- Memantau dan Mengelola Proses Linux
- Mengontrol Layanan dan Daemon
- Pengantar Jaringan Komputer
- Mengelola Konfigurasi Jaringan
- Mengonfigurasi dan Mengamankan SSH
Mengakses CLI
Login ke sistem remote
# login dengan password
user@host:~$ ssh remoteuser@remotehost
# login dengan key
user@host:~$ ssh -i mylab.pem remoteuser@remotehost
Eksekusi perintah dengan bash
# menggabungkan lebih dari 1 perintah
user@host:~$ command1 ; command2
# menampilkan waktu
user@host:~$ date
Tue Apr 29 17:58:22 UTC 2025
user@host:~$ date +%R
17:58
user@host:~$ date +%x
04/29/25
# mengubah password
user@host:~$ passwd
# mengetahui tipe/jenis file
user@host:~$ file /etc/passwd
# menampilkan file
user@host:~$ cat file1 file2
user@host:~$ less file
user@host:~$ head /etc/passwd
user@host:~$ tail -n 3 /etc/passwd
# menghitung jumlah baris, kata, dan karakter di dalam file
user@host:~$ wc /etc/passwd
user@host:~$ wc -l /etc/passwd ; wc -l /etc/group
user@host:~$ wc -m /etc/group /etc/hosts
Tab completion
# tekan tab 2x
user@host:~$ pasTab+Tab
passt passt.avx2 pasta paste
passt-repair passwd pasta.avx2
# tekan tab 2x
user@host:~$ passTab+Tab
passt passt-repair passt.avx2 passwd
# tekan tab 1x
user@host:~$ passwTab
Current password:
user@host:~$ ls /etc/pasTab
Tulis Perintah Panjang dalam Beberapa Baris
user@host:~$ head -n 3 \
/usr/share/dict/words \
/usr/share/dict/linux.words
Menampilkan history
user@host:~$ history
...output omitted...
28 ls -lah
29 date
30 history
# menggunakan perintah sebelumnya tanpa mengetik ulang semuanya
user@host:~$ !ls
ls -lah
# menggunakan nomor dari history
user@host:~$ !28
ls -lah
Shortcut CLI serbaguna
| Shortcut | Deskripsi |
|---|---|
| Ctrl+A | Lompat ke awal baris perintah. |
| Ctrl+E | Lompat ke akhir baris perintah. |
| Ctrl+U | Hapus dari posisi kursor hingga awal baris perintah. |
| Ctrl+K | Hapus dari posisi kursor hingga akhir baris perintah. |
| Ctrl+LeftArrow | Lompat ke awal kata sebelumnya pada baris perintah. |
| Ctrl+RightArrow | Lompat ke akhir kata berikutnya pada baris perintah. |
| Ctrl+R | Cari riwayat perintah berdasarkan pola (pattern) yang dimasukkan. |
Bantuan dari dokumentasi lokal
Perintah man yang berada di direktori /usr/share/man untuk mengakses bantuan manual. Halaman man dibagi menjadi beberapa bagian. Setiap bagian berisi informasi tentang topik tertentu.
| Bagian | Tipe Konten | Deskripsi |
|---|---|---|
| 1 | User commands | Program shell dan program yang dapat dieksekusi. |
| 2 | System calls | Rutinitas kernel yang dipanggil dari ruang pengguna. |
| 3 | Library functions | Disediakan oleh pustaka pemrograman. |
| 4 | Special files | Misalnya, file perangkat (device files). |
| 5 | File formats | Untuk banyak file konfigurasi dan struktur data. |
| 6 | Games and screensavers | Bagian historis untuk program-program hiburan. |
| 7 | Conventions, standards, and miscellaneous | Protokol dan sistem file. |
| 8 | System administration and privileged commands | Tugas pemeliharaan sistem. |
| 9 | Linux kernel API | Panggilan internal kernel. |
Navigasi dan mencari di halaman manual
| Command | Hasil |
|---|---|
| Spacebar | Gulir maju (ke bawah) satu layar. |
| PageDown | Gulir maju satu layar. |
| PageUp | Gulir mundur (ke atas) satu layar. |
| DownArrow | Gulir maju satu baris. |
| UpArrow | Gulir mundur satu baris. |
| D | Gulir maju setengah layar. |
| U | Gulir mundur setengah layar. |
| /string | Cari maju dengan kata “string” pada halaman manual (man page). |
| N | Ulangi pencarian sebelumnya ke arah maju pada halaman manual. |
| Shift+N | Ulangi pencarian sebelumnya ke arah mundur pada halaman manual. |
| G | Ke awal halaman manual. |
| Shift+G | Ke akhir halaman manual. |
| Q | Keluar dari halaman manual dan kembali ke prompt shell perintah. |
Cari halaman manual berdasarkan kata kunci
# berdasarkan title
user@host:~$ man -f passwd
# lebih powerful, tidak hanya title tapi juga deskripsi semua halaman (setara perintah apropos)
user@host:~$ man -k passwd
# Perintah man dengan opsi -K (huruf besar) mencari kata kunci di halaman teks lengkap, bukan hanya di judul dan deskripsi.
# Pencarian teks lengkap menggunakan sumber daya sistem yang lebih besar dan membutuhkan waktu lebih lama.
# Dengan pencarian halaman teks lengkap, perintah man menampilkan halaman pertama yang cocok.
# Tekan Q untuk keluar dari halaman pertama ini, dan perintah man akan menampilkan halaman berikutnya.
user@host:~# man -K passwd
Mendaftarkan sistem untuk dukungan redhat
Mengggunakan rhc
root@host:~# rhc connect
Connecting host.example.com to Red Hat.
This might take a few seconds.
...
# perintah rhc mengaktifkan 3 fitur utama secara default. Jika hanya ingin mengaktifkan akses ke repositori konten tanpa mendaftar ke Red Hat Insights:
root@host:~# rhc connect --disable-feature=analytics,remote-management
# menggunakan kunci aktivasi
root@host:~# rhc connect --activation-key=<activation_key_name> --organization=<organization_ID>
# membatalkan Pendaftaran Sistem
root@host:~# rhc disconnect
Menggunakan subscription-manager
root@host:~# subscription-manager register
# menggunakan kunci aktivasi
root@host:~# subscription-manager register --activationkey <activation_key_name> --org <organization_ID>
# verifikasi status registrasi
root@host:~# subscription-manager status
Memeriksa kartu identitas
Sistem terdaftar menyimpan beberapa sertifikat di bawah direktori /etc/pki.
- Sertifikat
/etc/pki/product-default: Mengidentifikasi produk Red Hat yang terpasang pada sistem. - Pasangan sertifikat dan kunci
/etc/pki/consumer: Mengidentifikasi sistem. - Pasangan sertifikat dan kunci
/etc/pki/entitlement: Mengautentikasi sistem ke repositori.
Gunakan perintah rct cat-cert untuk memeriksa sertifikat secara lebih detail:
root@host:~# rct cat-cert /etc/pki/product-default/479.pem
Bantuan berbasis AI untuk RHEL Lightspeed
Untuk menggunakan command-line-assistant harus menjalankan sistem yang berlangganan. Bisa menggunakan alat pengelola langganan untuk mengelola langganan sistem. RHEL 10.0 dan RHEL 9.6 serta versi yang lebih baru didukung.
root@host:~# dnf install command-line-assistant
# cara menggunakan
user@host:~$ c chat "How do I list running services?"
# untuk troubleshooting
user@host:~$ c chat "How do I check the status of the sshd service?"
# mode interaktif
user@host:~$ c chat --interactive
# contoh, jika sedang cek log dari Apache dan butuh bantuan untuk mendiagnosis kesalahan terbaru, jalankan perintah berikut
user@host:~$ sudo journalctl -u httpd.service --since "1 hour ago" | c chat "What could be causing errors in these logs?"
# memberikan informasi kepada asisten mengenai penggunaan memori saat ini, sehingga dapat mengidentifikasi konsumsi memori yang tinggi atau meningkat
user@host:~$ ps aux --sort=-%mem | head -n 20 | c chat "Is there a possible memory leak in one of these processes?"
# untuk analisis isi file
user@host:~$ cat /var/log/messages | c chat "Look for critical errors in this log file."
# analisis data
user@host:~$ c chat -a /var/log/boot.log "Why did the last boot take so long?"
Navigasi hirarki file sistem
Hirarki file sistem
| Lokasi | Tujuan |
|---|---|
| /boot | File-file untuk memulai proses booting. |
| /dev | File perangkat khusus yang digunakan sistem untuk mengakses hardware. |
| /etc | File konfigurasi khusus sistem. |
| /home | Direktori home, tempat pengguna biasa menyimpan data dan file konfigurasi mereka. |
| /root | Direktori home untuk pengguna super administratif, root. |
| /run | Data runtime untuk proses yang berjalan sejak booting terakhir. Data ini mencakup file ID proses dan file lock. Isi direktori ini dibuat ulang saat reboot. Direktori ini menggabungkan direktori /var/run dan /var/lock dari versi awal Red Hat Enterprise Linux. |
| /tmp | Ruang yang dapat ditulis oleh semua pengguna untuk file sementara. File yang tidak diakses, diubah, atau dimodifikasi selama 10 hari akan dihapus secara otomatis dari direktori ini. Direktori /var/tmp juga merupakan direktori temporary, di mana file yang tidak diakses, diubah, atau dimodifikasi selama lebih dari 30 hari akan dihapus secara otomatis. |
| /usr | Perangkat lunak yang terinstal, pustaka bersama (shared libraries), termasuk file, dan data program yang hanya dapat dibaca. Subdirektori penting dalam direktori /usr meliputi perintah-perintah berikut: /usr/bin: Perintah pengguna /usr/sbin: Perintah administrasi sistem /usr/local: Perangkat lunak kustom lokal |
| /var | Data variabel khusus sistem yang harus bertahan di antara booting. File yang berubah secara dinamis, seperti database, direktori cache, file log, dokumen cetak antrean (printer-spooled), dan konten website, dapat ditemukan di direktori /var. |
Di Red Hat Enterprise Linux 7 dan versi yang lebih baru, empat direktori di direktori root berisi file yang sama dengan file yang sesuai di direktori /usr:
- /bin dan /usr/bin
- /sbin dan /usr/sbin
- /lib dan /usr/lib
- /lib64 dan /usr/lib64
Absolute path dan relative path
# absolute path dimulai dari direktori root (/) dan mencakup setiap subdirektori yang harus dilalui untuk mencapai file tertentu
# contoh: /var/log/messages
# relative path hanya menentukan jalur yang diperlukan untuk mencapai lokasi tersebut dari direktori kerja
# contoh: cd / ; cd var ; cd log ; cd ..
Navigasipath di file sistem
# menampilkan direktori saat ini (print working directory)
user@host:~$ pwd
# membuat file baru
user@host:~$ touch Videos/blockbuster1.ogg
user@host:~$ touch Videos/blockbuster2.ogg
user@host:~$ touch Documents/thesis_chapter1.txt
user@host:~$ touch Documents/thesis_chapter2.txt
# menampilkan daftar file di direktori home
user@host:~$ cd /var/log/
user@host:/var/log$ ls -l ~
# ke direktori sebelumnya
user@host:~$ cd -
user@host:~$ cd ..
Mengelola file dari CLI
Manajemen file
# membuat direktori secara rekursif
user@host:~/Documents$ mkdir -p Thesis/Chapter1 Thesis/Chapter2 Thesis/Chapter3
# menyalin file dan direktori
user@host:~/Videos$ cp blockbuster1.ogg blockbuster3.ogg
# menyalin direktori secara rekursif
user@host:~/ProjectY$ cp -r ../Thesis/ .
# mengubah nama dan memindahkan file/direktori
user@host:~/Documents$ mv thesis_chapter2.txt thesis_chapter2_reviewed.txt
user@host:~/Documents$ mv -v thesis_chapter1.txt Thesis/Chapter1
# menghapus file dan direktori
user@host:~/Documents$ rm Thesis/Chapter1/thesis_chapter1.txt
user@host:~/Documents$ rm -r Thesis/Chapter1
# gunakan opsi -i (interaktif) untuk konfirmasi sebelum neghapus
user@host:~/Documents$ rm -ri Thesis
Membuat link antar file
| Aspek | Hard Link | Symbolic Link (Symlink) |
|---|---|---|
| Definisi | Referensi langsung ke inode file (data fisik di disk) | File khusus yang berisi path ke file target (seperti pintasan) |
| Inode | Memiliki inode yang sama dengan file asli | Memiliki inode berbeda dari file target |
| File asli dihapus | Data tetap tersedia melalui hard link karena isi data masih ada | Symlink menjadi rusak (broken link) karena target tidak ditemukan |
| Lintas filesystem | Tidak bisa (hanya dalam satu partisi/disk yang sama) | Bisa (dapat merujuk ke file di partisi berbeda) |
| Ke direktori | Tidak bisa (kecuali oleh root dengan opsi khusus) | Bisa (dapat menunjuk ke direktori) |
| Link count | Meningkatkan hitungan link pada inode | Tidak mempengaruhi link count target |
| Ukuran file | Tidak memiliki ukuran tersendiri (hanya entri direktori) | Memiliki ukuran kecil (menyimpan path target sebagai teks) |
| Ciri di ls -l | Tidak ada indikasi khusus | Menunjukkan -> ke target: symlink -> /path/target |
| Perintah membuat | ln target hardlink | ln -s target symlink |
| File relatif | Referensi tetap sama | Path relatif bisa berubah jika symlink dipindahkan |
| Tracking perubahan | Semua link selalu sinkron (menunjuk ke data yang sama) | Perubahan pada target tercermin, tapi symlink hanya “penunjuk” |
# membuat file asli
user@host:~$ echo "Hello" > file.txt
# hard link
user@host:~$ ln file.txt hardlink.txt
# symlink
user@host:~$ ln -s file.txt symlink.txt
# lihat perbedaan (opsi -i untuk menampilkan inode)
user@host:~$ ls -li file.txt hardlink.txt symlink.txt
# 123456 -rw-r--r-- 2 user group 6 Jun 11 10:00 file.txt
# 123456 -rw-r--r-- 2 user group 6 Jun 11 10:00 hardlink.txt
# 123457 lrwxrwxrwx 1 user group 8 Jun 11 10:00 symlink.txt -> file.txt
Mencocokkan nama file dengan ekspansi shell
Ekspansi nama path dan pencocokan pola
| Pola | Kecocokan |
|---|---|
* | String apa pun dengan nol atau lebih karakter |
? | Satu karakter apa pun |
[abc…] | Salah satu karakter dalam kelas yang diapit (di antara tanda kurung siku) |
[!abc…] | Satu karakter apa pun yang tidak termasuk dalam kelas yang diapit |
[^abc…] | Satu karakter apa pun yang tidak termasuk dalam kelas yang diapit |
[[:alpha:]] | Karakter alfabet apa pun |
[[:lower:]] | Karakter huruf kecil apa pun |
[[:upper:]] | Karakter huruf besar apa pun |
[[:alnum:]] | Karakter alfabet atau digit apa pun |
[[:punct:]] | Karakter tercetak apa pun yang bukan spasi atau alfanumerik |
[[:digit:]] | Satu digit tunggal dari 0 hingga 9 |
[[:space:]] | Satu karakter spasi putih tunggal, yang dapat mencakup tab, baris baru, carriage return, form feed, atau spasi |
user@host:~/glob$ ls a*
able alfa
user@host:~/glob$ ls *a*
able alfa baker bravo cast charlie delta easy
user@host:~/glob$ ls [ac]*
able alfa cast charlie
user@host:~/glob$ ls ????
able cast easy echo
user@host:~/glob$ ls ?????
baker bravo delta
# brace expansion
user@host:~/glob$ echo {Sunday,Monday,Tuesday,Wednesday}.log
user@host:~/glob$ echo file{1..3}.txt
user@host:~/glob$ echo file{a..c}.txt
user@host:~/glob$ echo file{a,b}{1,2}.txt
user@host:~/glob$ echo file{a{1,2},b,c}.txt
# tilde expansion
user@host:~/scripts$ echo ~
/home/user
user@host:~/scripts$ echo ~devops
/home/devops
user@host:/var/log$ ls ~/scripts/run-app.sh
/home/user/scripts/run-app.sh
root@host:/var/log# ls ~user/scripts/run-app.sh
/home/user/scripts/run-app.sh
# variable expansion
user@host:~$ USERNAME=operator
user@host:~$ echo $USERNAME
operator
user@host:~$ echo ${USERNAME}
operator
# substitusi perintah
user@host:~/glob$ echo Today is $(date +%A).
Today is Wednesday.
user@host:~/glob$ echo The time is $(date +%M) minutes past $(date +%l%p).
The time is 26 minutes past 11AM.
Melindungi argumen dari ekspansi
user@host:~/glob$ echo The value of $HOME is your home directory.
The value of /home/user is your home directory.
user@host:~/glob$ echo The value of \$HOME is your home directory.
The value of $HOME is your home directory.
# menggunakan petik tunggal
user@host:~/glob$ echo "Will variable $myhost evaluate to $(hostname -s)?"
Will variable host evaluate to host?
user@host:~/glob$ echo 'Will variable $myhost evaluate to $(hostname -s)?'
Will variable $myhost evaluate to $(hostname -s)?
Mengedit file teks
Menggunakan vim
# menggunakan vim-minimal
user@host:~$ vi namafile
# menggunakan vim-enhanced
user@host:~$ vim namafile
Mode operasi vim
Alur kerja dasar vim
- Tombol U membatalkan pengeditan terakhir.
- Tombol X menghapus satu karakter.
- Tombol H memindahkan kursor ke kiri.
- Tombol J memindahkan kursor ke bawah.
- Tombol K memindahkan kursor ke atas.
- Tombol L memindahkan kursor ke kanan.
- Tombol A menambahkan teks di akhir baris saat ini.
- Perintah
:wmenulis (menyimpan) file dan tetap dalam mode perintah untuk pengeditan lebih lanjut. - Perintah
:wqmenulis (menyimpan) file dan keluar dari Vim. - Perintah
:q!keluar dari Vim, dan membuang semua perubahan file yang dilakukan setelah penulisan terakhir.
Salin dan tempel
Di Vim bisa melakukan yank dan put (salin dan tempel). Masuk mode visual untuk seleksi teks:
- Salin: Y
- Tempel: P
Mode visual di vim
Mode visual berguna untuk menyorot dan memanipulasi teks di berbagai baris dan kolom. Gunakan kombinasi tombol berikut:
- Mode karakter: V
- Mode baris: Shift+V
- Mode blok: Ctrl+V
File konfigurasi vim ada di
/etc/vimrcdan~/.vimrc
Mengalihkan input dan output shell
Standar Input, Standar Output, dan Standar Error
- Input standar (0) membaca input dari keyboard.
- Output standar (1) mengirimkan output sistem reguler ke terminal.
- Kesalahan standar (2) mengirimkan pesan kesalahan ke terminal.
Ilustrasi:
Tabel berikut merangkum informasi tentang deskriptor file:
| No | Nama channel | Deskripsi | Koneksi default | Penggunaan |
|---|---|---|---|---|
| 0 | stdin | standar input | keyboard | hanya baca |
| 1 | stdout | standar output | terminal | hanya tulis |
| 2 | stderr | standar error | terminal | hanya tulis |
| 3+ | namafile | file lain | none | baca, tulis, atau keduanya |
Redirect output ke file
| Penggunaan | Penjelasan |
|---|---|
> FILE | Redirect stdout untuk menimpa (overwrite) sebuah file. |
>> FILE | Redirect stdout untuk menambahkan (append) ke sebuah file. |
2> FILE | Redirect stderr untuk menimpa (overwrite) sebuah file. |
2> /dev/null | Membuang pesan error stderr dengan mengarahkannya ke /dev/null. |
> FILE 2>&1 | Mengarahkan stdout dan stderr untuk menimpa file yang sama. |
&> FILE | Cara alternatif untuk mengarahkan stdout dan stderr ke file yang sama (overwrite). |
>> FILE 2>&1 | Mengarahkan stdout dan stderr untuk menambahkan (append) ke file yang sama. |
&>> FILE | Cara alternatif untuk mengarahkan stdout dan stderr ke file yang sama (append). |
Contoh penggunaan redirect output
# Simpan stempel waktu di file /tmp/saved-timestamp untuk referensi di kemudian hari.
user@host:~$ date > /tmp/saved-timestamp
# Salin 100 baris terakhir dari file /var/log/secure ke file /tmp/last-100-log-secure.
user@host:~$ tail -n 100 /var/log/secure > /tmp/last-100-log-secure
# Gabungkan keempat file langkah tersebut menjadi satu file di direktori tmp.
user@host:~$ cat step1.sh step2.log step3 step4 > /tmp/all-four-steps-in-one
# Cantumkan nama file tersembunyi dan file biasa di direktori home, lalu simpan hasilnya ke file my-file-names.
user@host:~$ ls -a > my-file-names
# Tambahkan output dan kesalahan ke file /tmp/all-message-output.
user@host:~$ find /etc -name passwd >> /tmp/all-message-output 2>&1
Menggunakan pipeline
Pipeline adalah rangkaian satu atau lebih perintah yang dipisahkan oleh karakter pipa (|). Pipeline menghubungkan output standar dari perintah pertama ke input standar dari perintah berikutnya.
Contoh penggunaan
user@host:~$ ls -l /usr/bin | less
user@host:~$ ls | wc -l
user@host:~$ ls -t | head -n 10 > /tmp/first-ten-changed-files
Contoh penggunaan pipeline dengan perintah tee
teeadalah perintah di Linux/Unix yang digunakan untuk membaca dari stdin dan menuliskan ke stdout sekaligus ke satu atau lebih file. Berguna ketika ingin melihat output suatu perintah secara langsung di terminal namun tetap menyimpannya ke dalam file untuk keperluan dokumentasi atau pemrosesan lebih lanjut.
user@host:~$ ls -l | tee /tmp/saved-output | less
user@host:~$ ls -t | head -n 10 | tee /tmp/ten-last-changed-files
# opsi -a untuk append
user@host:~$ ls -l | tee -a /tmp/append-files
Mengelola Users dan Grup lokal
Linux Users dan Grup
Tipe Pengguna dalam Sistem Linux
- Superuser: Mengelola sistem. Nama superuser adalah
rootdan UID akunnya0. Memiliki akses penuh ke sistem. - System user: Digunakan oleh proses yang menyediakan layanan pendukung. Proses-proses ini, atau daemon, biasanya tidak perlu dijalankan sebagai superuser dan tidak memiliki sesi terminal pengendali.
- Regular user: Pengguna biasa untuk pekerjaan sehari-hari. Seperti System user, pengguna biasa memiliki akses terbatas ke sistem.
Akun user lokal
Secara default, sistem menggunakan file /etc/passwd untuk menyimpan informasi tentang pengguna lokal.
user01@host:~$ cat /etc/passwd
...output omitted...
user01:x:1000:1000:User One:/home/user01:/bin/bash
user01: Nama pengguna untuk pengguna ini.x: Kata sandi terenkripsi pengguna sebelumnya disimpan di sini; sekarang hanya sebagai tempat penampung.1000: Nomor UID untuk akun pengguna ini.1000: Nomor GID untuk grup utama akun pengguna ini. Grup akan dibahas lebih lanjut di bagian ini.User One: Komentar singkat, deskripsi, atau nama asli untuk pengguna ini./home/user01: Direktori home pengguna, dan direktori kerja awal saat shell login dimulai./bin/bash: Program shell default untuk pengguna ini yang berjalan saat login. Beberapa akun menggunakan shell/sbin/nologinuntuk melarang login interaktif dengan akun tersebut.
Lnux grup
user01@host:~$ cat /etc/group
...output omitted...
group01:x:10000:user01,user02,user03
group01: Nama untuk grup ini.x: Kolom kata sandi grup yang sudah usang; sekarang menjadi tempat penampung.10000: Nomor GID untuk grup ini (10000).user01,user02,user03: Daftar pengguna yang merupakan anggota grup ini sebagai salah satu grup tambahan mereka.
Mendapatkan akses superuser (root)
Di RHEL 10, akun root tidak memiliki kata sandi yang valid secara default. Dengan kata lain, tidak ada kata sandi yang memungkinkan pengguna untuk mengautentikasi dan mengakses akun root, baik dengan mencoba masuk langsung sebagai root atau dengan mencoba menggunakan perintah
su. Administrator sistem dapat mengatur kata sandi untuk akun root terlebih daulu.
Mengganti akun user
# Contoh ini menggunakan perintah su dari akun user01 untuk beralih ke akun user02:
user01@host:~$ su - user02
Password: user02_password
user02@host:~$
# Jika tidak menyertakan nama pengguna, maka perintah su atau su - akan mencoba beralih ke root secara default.
user01@host:~$ su -
Password: root_password
root@host:~#
su -: Memulai sesi login interaktif baru sebagai pengguna yang di alihkan, dan menggunakan pengaturan lingkungan pengguna target.su: Memulai shell interaktif sebagai pengguna yang di alihkan, tetapi sebagian menggunakan pengaturan lingkungan pengguna asli.
Menjalankan perintah dengan sudo
Berbeda dengan perintah su, perintah sudo biasanya mengharuskan pengguna untuk memasukkan kata sandi mereka sendiri untuk otentikasi, bukan kata sandi akun pengguna yang ingin mereka akses.
Perintah sudo dapat dikonfigurasi untuk mengizinkan pengguna tertentu menjalankan perintah apa pun sebagai pengguna lain, atau hanya beberapa perintah sebagai pengguna tersebut. Misalnya, jika mengkonfigurasi perintah sudo untuk mengizinkan pengguna user01 menjalankan perintah usermod sebagai root, maka bisa menjalankan perintah berikut untuk mengunci atau membuka kunci akun pengguna:
user01@host:~$ sudo usermod -L user02
[sudo] password for user01: user01_password
user01@host:~$ su - user02
Password: user02_password
su: Authentication failure
user01@host:~$
Jika pengguna mencoba menjalankan perintah sebagai pengguna lain, dan konfigurasi sudo tidak mengizinkannya, maka Bash akan memblokir perintah tersebut, mencatat upaya tersebut, dan mengirim email ke pengguna root secara default.
user02@host:~$ sudo tail /var/log/secure
[sudo] password for user02: user02_password
user02 is not in the sudoers file. This incident will be reported.
user02@host:~$
Keuntungan lain dari perintah
sudoadalah secara default semua perintah yang dieksekusi dicatat ke dalam file/var/log/secure.
Mendapatkan Shell Root Interaktif dengan sudo
user1@host:~$ sudo -i
[sudo] password for user1: user1_password
root@host:~#
Konfigurasi sudo
File /etc/sudoers adalah file konfigurasi utama. Hanya dapat di edit dengan perintah khusus visudo. Editor visudo juga memvalidasi file tersebut untuk memastikan tidak ada kesalahan sintaks.
%wheel ALL=(ALL:ALL) ALL
- String
%wheeladalah pengguna atau grup yang menjadi sasaran aturan tersebut. Tanda persen (%) sebelum kata wheel menentukan grup. - Perintah
ALL=(ALL:ALL)menentukan bahwa pada host mana pun yang memiliki file ini (ALL pertama), pengguna dalam grup wheel dapat menjalankan perintah seperti pengguna lain (ALL kedua) dan seperti grup lain (ALL ketiga) pada sistem. - Perintah
ALLterakhir menentukan bahwa pengguna dalam grup wheel dapat menjalankan perintah apa pun.
File
/etc/sudoersmenyertakan isi dari file apa pun di direktori/etc/sudoers.d. Jadi bisa menambahkan akses sudo untuk pengguna dengan menempatkan file yang sesuai di direktori tersebut.
# Untuk mengaktifkan akses sudo penuh untuk pengguna user01, buat file /etc/sudoers.d/user01 dengan isi sebagai berikut:
user01 ALL=(ALL) ALL
# Untuk mengaktifkan akses sudo penuh untuk grup group01, buat file /etc/sudoers.d/group01 dengan isi sebagai berikut:
%group01 ALL=(ALL) ALL
# Untuk memungkinkan pengguna dalam grup games menjalankan perintah id sebagai pengguna operator, buat file /etc/sudoers.d/games dengan isi sebagai berikut:
%games ALL=(operator) /bin/id
# juga dapat mengatur sudo untuk memungkinkan pengguna menjalankan perintah sebagai pengguna lain tanpa memasukkan kata sandi mereka:
ansible ALL=(ALL) NOPASSWD: ALL
Mengelola akun user
Membuat user baru
Perintah useradd username membuat akun pengguna bernama username. Perintah ini menyelesaikan tugas-tugas berikut untuk menyiapkan dan mengkonfigurasi akun baru:
- Jalankan perintah
useraddsebagai superuser. - Perintah
useraddmembaca konfigurasi pembuatan pengguna dari file/etc/login.defs. - Perintah
useraddmenulis entri di file/etc/group,/etc/passwd, dan/etc/shadowdengan informasi yang diberikan kepada pengguna username (ID pengguna dan ID grup). - Perintah
useraddmembuat direktori home pengguna username di jalur/home/username. - Perintah
useraddmenyalin file profil pengguna di direktori/etc/skelke direktori home pengguna username (di bawah/home/username).
Modifikasi user yang sudah ada
Gunakan perintah usermod untuk modifikasi user, untuk bantuan usermod --help.
# contoh menambahkan user1 ke grup grup2
user@host: sudo usermod -aG grup2 user1
Menghapus user
Perintah
userdel usernamemenghapus nama penggunauserdari file/etc/passwd, tetapi membiarkan direktori home pengguna tetap utuh. Perintahuserdel -r usernamemenghapus pengguna dari file/etc/passwddan menghapus direktori home pengguna.
Mengatur password
root@host: passwd user1
Mengelola akun grup
Membuat grup baru
root@host:~# groupadd -g 10000 group01
root@host:~# tail /etc/group
...output omitted...
group01:x:10000:
# Perintah groupadd dengan opsi -r membuat grup sistem. Seperti halnya grup biasa, grup sistem menggunakan GID dari rentang GID sistem valid yang tercantum dalam file /etc/login.defs. Item konfigurasi SYS_GID_MIN dan SYS_GID_MAX dalam file /etc/login.defs menentukan rentang GID sistem.
root@host:~# groupadd -r group02
root@host:~# tail /etc/group
...output omitted...
group01:x:10000:
group02:x:988:
Modifikasi grup yang sudah ada
# mengubah nama grup
root@host:~# groupmod -n newgroup oldgroup
# Opsi -g menetapkan ulang nama grup ke GID baru.
root@host:~# groupmod -g 20000 group0022
root@host:~# tail /etc/group
...output omitted...
group0022:x:20000:
Menghapus grup
root@host:~# groupdel group0022
Mengelola password user
Setiap pengguna memiliki entri dalam file /etc/shadow. Contoh entri dari file /etc/shadow memiliki sembilan kolom yang dipisahkan oleh titik dua:
root@host:~# cat /etc/shadow
...output omitted...
user03:$y$j9T$qybndwEWzHhr0uTGAwO4Q0$OuNgGC5Mx2RrCO4JOXtR2VJfTA8dLPxa7NV1tvhziHC:20222:0:99999:7:2:20282::
user03: Nama akun pengguna.$y$j….ziHC: Kata sandi pengguna yang di-hash secara kriptografis.20222: Jumlah hari sejak epoch terakhir kali kata sandi diubah, di mana epoch adalah 1970-01-01 dalam zona waktu UTC.0: Jumlah hari minimum sejak perubahan kata sandi terakhir sebelum pengguna dapat mengubahnya lagi.99999: Jumlah hari maksimum tanpa perubahan kata sandi sebelum kata sandi kedaluwarsa. Kolom kosong berarti kata sandi tidak pernah kedaluwarsa.7: Jumlah hari sebelumnya untuk memperingatkan pengguna bahwa kata sandi mereka akan kedaluwarsa.2: Jumlah hari tanpa aktivitas, dimulai dari hari kata sandi kedaluwarsa, sebelum akun dikunci secara otomatis.20282: Hari ketika akun kedaluwarsa dalam hitungan hari sejak epoch. Kolom kosong berarti akun tidak pernah kedaluwarsa.- Kolom terakhir biasanya kosong dan dicadangkan untuk penggunaan di masa mendatang.
Format Kata Sandi yang Di-hash Secara Kriptografis
$y$j9T$qybndwEWzHhr0uTGAwO4Q0$OuNgGC5Mx2RrCO4JOXtR2VJfTA8dLPxa7NV1tvhziHC
y: Algoritma hashing yang digunakan untuk kata sandi ini. y menunjukkan hash yescrypt; 6 menunjukkan hash SHA-512; dan 5 menunjukkan SHA-256. Format sisa kata sandi bergantung pada algoritma.j9T: Parameter yang mengatur perilaku hashing yescrypt. Opsi ini distandarisasi oleh alat yang mengatur kata sandi untuk memastikan penyetelan yang aman. Algoritma lain mungkin tidak memiliki bidang ini.qybndwEWzHhr0uTGAwO4Q0: Salt yang digunakan untuk melakukan hashing kriptografis pada kata sandi; awalnya dipilih secara acak.OuNgGC5Mx2RrCO4JOXtR2VJfTA8dLPxa7NV1tvhziHC: Hash kriptografis dari kata sandi pengguna. Segmen ini adalah hasil penggabungan salt dan kata sandi teks biasa, kemudian menggunakan algoritma hashing kriptografis untuk menghasilkan hash kata sandi.
Konfigurasi masa berlaku password
Contoh berikut menunjukkan penggunaan perintah chage untuk mengubah kebijakan kata sandi pengguna sysadmin05. Perintah ini menetapkan usia minimum (-m) 0 hari, usia maksimum (-M) 90 hari, periode peringatan (-W) 7 hari, dan periode tidak aktif (-I) 14 hari.
root@host:~# chage -m 0 -M 90 -W 7 -I 14 sysadmin05
Misalkan ingin menetapkan kebijakan masa berlaku password pengguna cloudadmin10, masa berlaku akun menjadi 30 hari dari hari ini, gunakan perintah berikut:
root@host:~# date +%F
2025-05-14
root@host:~# date -d "+30 days" +%F
2025-06-13
root@host:~# chage -E $(date -d "+30 days" +%F) cloudadmin10
root@host:~# chage -l cloudadmin10 | grep "Account expires"
Account expires : Jun 13, 2025
- Gunakan perintah
dateuntuk mendapatkan tanggal saat ini. - Gunakan perintah
dateuntuk mendapatkan tanggal 30 hari dari sekarang. - Gunakan perintah
chagedengan opsi-Euntuk mengubah tanggal kedaluwarsa kata sandi untuk penggunacloudadmin10. - Gunakan perintah
chagedengan opsi-luntuk menampilkan kebijakan masa berlaku kata sandi untuk penggunacloudadmin10.
Misalnya ingin pengguna cloudadmin10 mengubah kata sandi pada saat login berikutnya, gunakan perintah berikut:
root@host:~# chage -d 0 cloudadmin10
Menyesuaikan Masa Berlaku password untuk Pengguna Baru
Modifikasi file /etc/login.defs.
PASS_MAX_DAYS: Menetapkan jumlah hari maksimum kata sandi berlaku sebelum pengguna diharuskan untuk mengubahnya.PASS_MIN_DAYS: Menentukan jumlah hari minimum yang harus berlalu sebelum kata sandi dapat diubah.PASS_WARN_AGE: Menentukan berapa hari sebelumnya pengguna menerima peringatan tentang kata sandi mereka yang akan kedaluwarsa.
Untuk akun pengguna baru, perintah
useraddjuga mengambil nilai default dari file/etc/default/useradd.
Membatasi akses user
Batasi akses pengguna ke sistem Linux dengan menggunakan perintah usermod -L untuk mengunci akun pengguna dengan menonaktifkan kata sandi pengguna.
Keterbatasan dari penggunaan opsi
-Lsaja adalah opsi ini tidak memengaruhi otentikasi berbasis kunci SSH. Jika kunci SSH yang valid telah dikonfigurasi untuk pengguna, maka pengguna masih dapat masuk dari jarak jauh tanpa memasukkan kata sandi. Menimbulkan potensi risiko keamanan.Opsi lain adalah dengan membuat akun kedaluwarsa, mencegah semua upaya masuk, termasuk masuk menggunakan kunci SSH. Opsi
-epada perintahusermodmengatur tanggal kedaluwarsa akun. Tanggal kedaluwarsa dapat diatur dengan menggunakan bilangan bulat untuk menentukan jumlah hari sejak 1 Januari 1970, atau dengan menggunakan format YYYY-MM-DD.
root@host:~# usermod -L -e 2026-06-06 cloudadmin10
# untuk mengaktifkan kembali user:
root@host:~# usermod -U -e '' cloudadmin10
Shell nologin
Praktik keamanan yang baik adalah menonaktifkan akun agar tidak masuk ke sistem ketika akun tidak memerlukannya. Solusi umum untuk situasi ini adalah dengan mengatur shell login pengguna ke /sbin/nologin. Jika pengguna mencoba masuk ke sistem secara langsung, maka shell nologin akan menutup koneksi.
root@host:~# usermod -s /sbin/nologin user1
Mengontrol Akses ke File
Izin file sistem linux
| Izin | Efek pada File | Efek pada Direktori |
|---|---|---|
| r (read) | Isi file dapat dibaca. | Isi direktori (nama-nama file) dapat dilihat/didaftar. |
| w (write) | Isi file dapat diubah. | File apa pun dalam direktori dapat dibuat atau dihapus. |
| x (execute) | File dapat dijalankan sebagai perintah. | Direktori dapat menjadi direktori kerja saat ini (current working directory). Bisa menjalankan perintah cd untuk berpindah ke direktori tersebut, tetapi juga memerlukan izin baca (read) untuk melihat file di dalamnya. |
Melihat Izin dan Kepemilikan File dan Direktori
user@host:~$ ls -l test
-rw-rw-r--. 1 student student 0 Mar 8 17:36 test
user@host:~$ ls -ld /home
drwxr-xr-x. 5 root root 4096 Feb 31 22:00 /home
-adalah berkas biasa.dadalah direktori.ladalah tautan simbolik.cadalah berkas perangkat karakter.badalah berkas perangkat blok.padalah berkas pipa bernama.sadalah berkas soket lokal.
Mengubah Izin File dan Direktori
Mengubah Izin dengan Metode Simbolik
user@host:~$ chmod Who/What/Which file|directory
| Who | User class | Deskripsi |
|---|---|---|
| u | user | Pemilik file. |
| g | group | Anggota dari grup pemilik file. |
| o | other | Pengguna yang bukan pemilik file maupun anggota grup pemilik file. |
| a | all | Ketiga kelompok sebelumnya (u, g, dan o). |
Operator yang digunakan untuk modifikasi izin:
| What | Operation | Deskripsi |
|---|---|---|
| + | add | Menambahkan izin yang diberikan ke file. |
| - | remove | Menghapus izin yang diberikan dari file. |
| = | set exactly | Mengatur secara tepat (menimpa) izin yang diberikan ke file. |
# Contoh berikut menunjukkan penggunaan metode simbolik untuk menghapus izin baca dan tulis untuk grup dan pengguna lain pada file document.pdf:
user@host:~$ chmod go-rw document.pdf
# Contoh ini menunjukkan cara menambahkan izin eksekusi untuk semua orang pada file myscript.sh:
user@host:~$ chmod a+x myscript.sh
# Gunakan perintah chmod dengan opsi -R untuk mengatur izin secara rekursif pada file di seluruh struktur direktori:
user@host:~$ chmod -R g+rwx /home/user/myfolder
Mengubah Izin dengan Metode Oktal
Dengan metode oktal dapat merepresentasikan izin sebagai angka oktal 3 digit (atau 4 digit, saat mengatur izin tingkat lanjut). Satu digit oktal dapat mewakili nilai tunggal apa pun dari 0-7. Dalam representasi oktal 3 digit untuk izin, setiap digit mewakili satu tingkat akses, dari kiri ke kanan: pengguna, grup, dan lainnya. Untuk menentukan setiap digit:
- Mulai dengan 0.
- Untuk menambahkan izin baca untuk tingkat akses ini, tambahkan 4.
- Untuk menambahkan izin tulis, tambahkan 2.
- Untuk menambahkan izin eksekusi, tambahkan 1.
# menggunakan metode oktal untuk mengatur izin baca dan tulis untuk pengguna, dan izin baca untuk grup dan lainnya, pada file sample.txt:
user@host:~$ chmod 644 sample.txt
# Mengatur izin baca, tulis, dan eksekusi untuk pengguna, izin baca dan eksekusi untuk grup, dan tidak memberikan izin apa pun untuk yang lain pada direktori sampledir:
user@host:~$ chmod 750 sampledir
Mengubah Kepemilikan Pengguna atau Grup File dan Direktori
# Berikan hak kepemilikan file app.conf kepada pengguna student, gunakan perintah berikut:
root@host:~# chown student app.conf
# Perintah chown dengan opsi -R secara rekursif mengubah kepemilikan seluruh struktur direktori. Perintah berikut memberikan kepemilikan direktori Pictures dan semua file serta subdirektori di dalamnya kepada pengguna student:
root@host:~# chown -R student Pictures
# Gunakan perintah chown untuk mengubah kepemilikan grup pada sebuah file dengan menambahkan titik dua (:) di depan nama grup. Misalnya, perintah berikut mengubah kepemilikan grup direktori Pictures menjadi admins:
root@host:~# chown :admins Pictures
# Gunakan perintah chown untuk mengubah pemilik dan grup secara bersamaan dengan menggunakan sintaks pemilik:grup. Misalnya, untuk mengubah kepemilikan direktori Gambar ke pengguna visitor dan ke grup guests, gunakan perintah berikut:
root@host:~# chown visitor:guests Pictures
Izin khusus
| Permission | Efek pada File | Efek pada Direktori |
|---|---|---|
| u+s (suid) | File dijalankan sebagai pemilik file (user yang memiliki file), bukan sebagai pengguna yang menjalankan file. | Tidak berpengaruh. |
| g+s (sgid) | File dijalankan sebagai grup pemilik file. | File yang dibuat di dalam direktori akan memiliki grup pemilik yang sama dengan grup pemilik direktori tersebut. |
| o+t (sticky) | Tidak berpengaruh. | Pengguna yang memiliki izin tulis pada direktori tidak dapat menghapus atau mengganti nama file yang bukan milik mereka. |
Salah satu contohnya adalah perintah plocate, yang merupakan pengganti modern untuk locate. Izin setgid diatur pada biner /usr/bin/plocate, seperti yang ditunjukkan pada contoh berikut:
user@host:~$ ls -ld /usr/bin/plocate
-rwxr-sr-x. 1 root plocate 318224 Feb 14 00:00 /usr/bin/plocate
Mengatur Izin khusus
| Permission | Octal Notation | Symbolic Notation |
|---|---|---|
| setuid | 4 | u+s |
| setgid | 2 | g+s |
| sticky | 1 | o+t |
Contoh Izin khusus
# Tambahkan bit setgid pada direktori contoh dengan menggunakan metode simbolik:
user@host:~$ chmod g+s example
# Hapus sticky bit dari direktori contoh dengan menggunakan metode simbolik:
user@host:~$ chmod o-t example
# Atur bit setgid dan tambahkan izin baca, tulis, dan eksekusi untuk pengguna dan grup, tanpa akses untuk yang lain, pada direktori contoh dengan menggunakan metode oktal:
user@host:~$ chmod 2770 example
# Hapus bit setgid dan tambahkan izin baca, tulis, dan eksekusi untuk pengguna dan grup, tanpa akses untuk yang lain, pada direktori contoh dengan menggunakan metode oktal.
# Perhatikan bahwa perlu menambahkan angka 0 ekstra di awal nilai izin saat menghapus izin khusus dengan menggunakan metode oktal:
user@host:~$ chmod 00770 example
Izin Default
Pengaturan umask mengubah pengaturan izin untuk file atau direktori yang baru dibuat. umask adalah filter izin yang diterapkan pada izin default saat file atau direktori dibuat. Setiap bit yang diatur dalam umask menghapus izin yang sesuai dari izin akhir file atau direktori baru.
| umask | Efek pada File | Efek pada Direktori |
|---|---|---|
| 0022 | rw-r–r– | rwxr-xr-x |
| 0027 | rw-r—– | rwxr-x— |
| 0002 | rw-rw-r– | rwxrwxr-x |
Di RHEL 9 dan versi yang lebih baru,
umaskdefault untuk semua pengguna biasa adalah0022. Perintahumasktanpa argumen menampilkan nilaiumaskshell saat ini.
Contoh pengaturan umask
# Pada contoh berikut, sistem memberikan akses baca dan tulis kepada pemilik file, dan akses baca saja kepada grup dan pihak lain, yang mencerminkan pengaturan umask 0022 yang umum yang membatasi akses tulis untuk non-pemilik.
user@host:~$ umask
0022
user@host:~$ touch default.txt
user@host:~$ ls -l default.txt
-rw-r--r--. 1 user user 0 May 29 22:11 default.txt
# Sebagai contoh, nilai umask diatur ke 0, yang mengubah izin file untuk pengguna lain dari baca menjadi baca dan tulis.
# Izin direktori untuk pengguna lain berubah dari baca dan eksekusi menjadi baca, tulis, dan eksekusi.
user@host:~$ umask 0
user@host:~$ touch zero.txt
user@host:~$ ls -l zero.txt
-rw-rw-rw-. 1 user user 0 May 29 22:17 zero.txt
user@host:~$ mkdir zero
user@host:~$ ls -ld zero
drwxrwxrwx. 2 user user 6 May 29 22:17 zero
# Nilai umask 027 memastikan bahwa file baru memiliki izin baca dan tulis untuk pengguna dan izin baca untuk grup.
# Direktori baru memiliki izin baca dan eksekusi untuk grup dan tidak memiliki izin untuk yang lain.
user@host:~$ umask 027
user@host:~$ touch two-seven.txt
user@host:~$ ls -l two-seven.txt
-rw-r-----. 1 user user 0 May 29 22:19 two-seven.txt
user@host:~$ mkdir two-seven
user@host:~$ ls -ld two-seven
drwxr-x---. 2 user user 6 May 29 22:20 two-seven
Menginstal dan Memperbarui Software dengan RPM
Nama file paket RPM terdiri dari empat elemen (ditambah akhiran .rpm): nama-versi-rilis.arsitektur:
Memeriksa Paket RPM
# Mengambil informasi umum tentang paket yang terpasang:
# - rpm -qa: Mencantumkan semua paket yang terpasang.
# - rpm -qf FILENAME: Menentukan paket mana yang menyediakan FILENAME.
user@host:~$ rpm -qf /etc/yum.repos.d
redhat-release-10.0-30.el10.x86_64
# Dapatkan informasi tentang paket tertentu:
# - rpm -q: Menampilkan versi paket yang terpasang saat ini.
user@host:~$ rpm -q dnf
dnf-4.20.0-12.el10_0.noarch
# Mulai dari RHEL 10, perintah rpmsort dapat digunakan seperti perintah sort dalam pipeline, tetapi dapat mengurutkan string versi RPM dengan benar dalam output perintah:
user@host:~$ rpm -q kernel | sort
kernel-6.12.0-141.el10.x86_64
kernel-6.12.0-45.el10.x86_64
user@host:~$ rpm -q kernel | rpmsort
kernel-6.12.0-45.el10.x86_64
kernel-6.12.0-141.el10.x86_64
# - rpm -qi: Mendapatkan informasi detail paket.
# - rpm -ql: Mencantumkan file yang diinstal oleh paket.
user@host:~$ rpm -ql dnf
/usr/bin/dnf
/usr/lib/systemd/system/dnf-makecache.service
...output omitted...
# - rpm -qc: Hanya menampilkan file konfigurasi yang diinstal oleh paket tersebut.
user@host:~$ rpm -qc openssh-clients
/etc/ssh/ssh_config
/etc/ssh/ssh_config.d/50-redhat.conf
# - rpm -qd: Hanya menampilkan file dokumentasi yang diinstal oleh paket tersebut.
user@host:~$ rpm -qd openssh-clients
/usr/share/man/man1/scp.1.gz
...output omitted...
# - rpm -q --scripts: Menampilkan daftar skrip shell yang dijalankan sebelum atau setelah Anda menginstal atau menghapus paket.
user@host:~$ rpm -q --scripts openssh-server
preinstall scriptlet (using /bin/sh):
...output omitted...
# - rpm -q --changelog: Menampilkan informasi log perubahan untuk paket tersebut.
user@host:~$ rpm -q --changelog audit
* Wed Jan 08 2025 Attila Lakatos <alakatos@redhat.com> - 4.0.3-1
- Rebase to 4.0.3
- Pluginst must have .conf suffix, otherwise skipped
Resolves: RHEL-58838
...output omitted...
Mengakses File RPM Sebelum Instalasi
rpm -qlp: Mencantumkan file yang diinstal oleh paket lokal.
user@host:~$ ls -l podman-5.4.0-1.el10.x86_64.rpm
-rw-r--r--. 1 user user 16494682 Jun 9 23:43 podman-5.4.0-1.el10.x86_64.rpm
user@host:~$ rpm -qlp podman-5.4.0-1.el10.x86_64.rpm
/usr/bin/podman
...output omitted...
Menginstal Paket RPM
root@host:~# rpm -ivh podman-5.4.0-1.el10.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
podman-6:5.4.0-1 ################################# [100%]
Mengekstrak Paket RPM
Gunakan perintah
rpm2cpiountuk mengekstrak file dari file paket RPM tanpa menginstal paket tersebut. Perintahrpm2cpiomengkonversi paket RPM menjadi arsip cpio. Setelah paket RPM dikonversi menjadi arsip cpio, perintah cpio dapat mengekstrak daftar file. Gunakan perintahcpiodengan opsi-iuntuk mengekstrak file dari input standar. Gunakan opsi-duntuk membuat subdirektori sesuai kebutuhan, dimulai dari direktori kerja saat ini. Gunakan opsi-vuntuk output yang lebih detail.
user@host:~/tmp-extract$ rpm2cpio httpd-2.4.63-1.el10.x86_64.rpm | cpio -idv
...output omitted...
121 blocks
user@host:~/tmp-extract$ ls -l
total 56
drwxr-xr-x. 3 user user 19 Jun 9 23:51 etc
-rw-r--r--. 1 root root 54557 Jun 9 23:50 httpd-2.4.63-1.el10.x86_64.rpm
drwxr-xr-x. 5 user user 43 Jun 9 23:51 usr
Ekstrak file satu per satu dengan menentukan jalur file tersebut:
user@host:~$ rpm2cpio httpd-2.4.63-1.el10.x86_64.rpm | \
cpio -id "/etc/httpd/conf.modules.d/00-systemd.conf"
121 blocks
user@host:~$ ls etc/httpd/conf.modules.d/
00-brotli.conf 00-systemd.conf
Gunakan perintah rpm2cpio dan cpio -t untuk menampilkan daftar file dalam paket RPM. Gunakan opsi -v pada perintah cpio untuk output yang lebih detail.
user@host:~$ rpm2cpio httpd-2.4.63-1.el10.x86_64.rpm | cpio -tv
-rw-r--r-- 1 root root 47 Jan 27 00:00 ./etc/httpd/conf.modules.d/00-brotli.conf
-rw-r--r-- 1 root root 88 Jan 27 00:00 ./etc/httpd/conf.modules.d/00-systemd.conf
...output omitted...
121 blocks
Menginstal dan Memperbarui Paket dengan DNF
Dimulai dengan Red Hat Enterprise Linux 9, DNF (Dandified YUM) menggantikan YUM sebagai manajer paket. Perintah DNF secara fungsional sama dengan perintah YUM. Untuk kompatibilitas, perintah YUM masih ada sebagai tautan simbolis ke DNF.
Mencari Software dengan DNF
user@host:~$ dnf list 'http*'
user@host:~$ dnf search all 'web server'
Perintah dnf info PACKAGENAME mengembalikan informasi detail tentang sebuah paket, termasuk ruang disk yang dibutuhkan untuk instalasi. Misalnya, perintah berikut mengambil informasi tentang paket httpd:
Perintah dnf provides PATHNAME menampilkan paket-paket yang cocok dengan nama jalur yang ditentukan (nama jalur sering kali menyertakan karakter wildcard).
user@host:~$ dnf provides /var/www/html
...output omitted...
httpd-filesystem-2.4.63-1.el10.noarch : The basic directory layout for the
: Apache HTTP Server
Repo : rhel-10.0-for-x86_64-appstream-rpms
Matched from:
Filename : /var/www/html
Menginstal, Memperbarui, dan Menghapus Perangkat Lunak dengan DNF
# install
user@host:~$ sudo dnf install httpd
# upgrade
user@host:~$ sudo dnf upgrade
# list kernel
user@host:~$ dnf list kernel
# hapus
user@host:~$ sudo dnf remove httpd
Menginstal dan Menghapus Grup Software dengan DNF
# Menampilkan nama-nama grup yang terpasang dan tersedia
user@host:~$ dnf group list
# menampilkan informasi tentang suatu grup
user@host:~$ dnf group info 'Security Tools'
# Menginstal sebuah grup yang menginstal paket wajib dan paket bawaannya beserta paket-paket yang bergantung padanya.
user@host:~$ sudo dnf group install 'System Tools'
Ringkasan Perintah DNF
| Command | Tugas |
|---|---|
dnf list [NAME-PATTERN] | Menampilkan daftar paket yang terinstal dan tersedia berdasarkan nama. |
dnf group list | Menampilkan daftar grup yang terinstal dan tersedia. |
dnf search KEYWORD | Mencari paket berdasarkan kata kunci. |
dnf info PACKAGENAME | Menampilkan detail informasi tentang sebuah paket. |
dnf install PACKAGENAME | Menginstal sebuah paket. |
dnf group install GROUPNAME | Menginstal sebuah grup paket. |
dnf upgrade | Memperbarui (upgrade) semua paket. |
dnf remove PACKAGENAME | Menghapus sebuah paket. |
dnf history | Menampilkan riwayat transaksi. |
Mengelola Repositori Software
# menampilkan semua repositori yang tersedia dan statusnya
root@host:~# dnf repolist all
# mengaktifkan dan menonaktifkan repositori
root@host:~# dnf config-manager --enable rhel-10-for-x86_64-baseos-debug-rpms
Mengonfigurasi Repositori DNF
Untuk mengkonfigurasi repositori DNF secara manual, buat file .repo di direktori /etc/yum.repos.d/, atau tambahkan bagian [repository] ke file /etc/dnf/dnf.conf. Red Hat merekomendasikan penggunaan file .repo, dan menyimpan file dnf.conf untuk konfigurasi repositori tambahan.
root@host:~# dnf config-manager \
--add-repo="https://https://dl.fedoraproject.org/pub/epel/10/Everything/x86_64/"
Updating Subscription Management repositories.
Adding repo from: https://dl.fedoraproject.org/pub/epel/10/Everything/x86_64/
# File .repo yang bersangkutan dapat dilihat di direktori /etc/yum.repos.d/:
root@host:~# cd /etc/yum.repos.d
root@host:/etc/yum.repos.d# cat dl.fedoraproject.org_pub_epel_10_Everything_x86_64_.repo
Perintah rpm menggunakan kunci GPG untuk menandatangani paket, dan mengimpor kunci publik untuk memverifikasi integritas dan keaslian paket. Perintah dnf menggunakan file konfigurasi repositori untuk menyediakan lokasi kunci publik GPG, dan mengimpor kunci tersebut untuk memverifikasi paket.
Kunci disimpan di berbagai lokasi di situs repositori jarak jauh, seperti https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-10. Administrator sebaiknya mengunduh kunci ke file lokal daripada menggunakan perintah dnf untuk mengambil kunci dari sumber eksternal.
Mengonfigurasi Repositori dengan Menggunakan Paket RPM
user@host:~$ rpm --import https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-10
user@host:~$ dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
Impor kunci GPG RPM sebelum menginstal paket yang ditandatangani, untuk memastikan bahwa paket berasal dari sumber tepercaya. Jika kunci GPG RPM tidak diimpor, maka perintah dnf gagal menginstal paket yang ditandatangani.
Opsi
--nogpgcheckpada perintah dnf mengabaikan kunci GPG yang hilang, tetapi dapat mengakibatkan penginstalan paket yang disusupi atau dipalsukan.
File .repo sering kali mencantumkan beberapa referensi repositori dalam satu file. Setiap referensi repositori diawali dengan nama satu kata dalam tanda kurung siku.
Menginstal dan Memperbarui Aplikasi dengan Menggunakan Flatpak
Mengelola Repositori Jarak Jauh Flatpak
# instal
root@host:~# dnf install flatpak
# cek versi
user@host:~$ flatpak --version
# login ke kontainer radhat dengan podman
user@host:~$ podman login registry.redhat.io
# simpan kredensial pengguna saat ini secara permanen
user@host:~$ cp $XDG_RUNTIME_DIR/containers/auth.json $HOME/.config/flatpak/oci-auth.json
# simpan kredensial di seluruh sistem
root@host:~# cp $XDG_RUNTIME_DIR/containers/auth.json /etc/flatpak/oci-auth.json
# Jika ingin pengguna biasa mengakses repositori jarak jauh dengan kredensial yang sama, ubah izin file pada token otentikasi:
root@host:~# chmod 644 /etc/flatpak/oci-auth.json
# lihat daftar semua repositori jarak jauh yang dikonfigurasi pada sistem
user@host:~$ flatpak remotes
# Tampilkan detail untuk repositori jarak jauh
user@host:~$ flatpak remotes -d
# daftar aplikasi yang tersedia di repositori jarak jauh
user@host:~$ flatpak remote-ls --app
Menambahkan Repositori Jarak Jauh Flatpak
Sebagai contoh, Fedora Project menyediakan registry jarak jauh yang juga dapat digunakan oleh distribusi lain karena desain universal Flatpak. Untuk menambahkan repositori jarak jauh ini, jalankan perintah flatpak remote-add.
user@host:~$ flatpak remote-add --if-not-exists fedora oci+https://registry.fedoraproject.org
# Konfirmasi bahwa repositori Fedora telah ditambahkan sebagai sumber instalasi
user@host:~$ flatpak remotes
# Mengkonfigurasi repositori Flathub dalam mode pengguna
user@host:~$ flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# lihat repositori jarak jauh yang tersedia untuk semua pengguna.
user@host:~$ flatpak remotes --system
# lihat repositori jarak jauh yang tersedia untuk pengguna saat ini
user@host:~$ flatpak remotes --user
# Setelah menambahkan repositori jarak jauh, lihat isi repositori dengan menggunakan perintah flatpak remote-ls
user@host:~$ flatpak remote-ls fedora --app
Menghapus Repositori Jarak Jauh Flatpak
user@host:~$ flatpak remote-delete fedora
# disable repositori (daripada menghapus)
user@host:~$ flatpak remote-modify --disable fedora
# enable
user@host:~$ flatpak remote-modify --enable fedora
Mengelola Aplikasi dengan Flatpak CLI
Contoh berikut menunjukkan pencarian yang menggunakan kata kunci thunderbird untuk menemukan aplikasi di repositori jarak jauh Flatpak:
user@host:~$ flatpak -v search thunderbird
Menginstal Objek Flatpak dari Repositori Jarak Jauh
user@host:~$ flatpak install thunderbird
Berikut opsi berguna untuk perintah flatpak install:
| Opsi | Deskripsi |
|---|---|
--runtime | Hanya menginstal runtime. |
--app | Hanya menginstal aplikasi. |
--or-update | Melakukan pembaruan (update) jika aplikasi atau runtime sudah terinstal. |
--system | Menginstal aplikasi atau runtime secara sistem-wide (untuk semua pengguna). |
-u, --user | Menginstal aplikasi atau runtime hanya untuk pengguna saat ini. |
-y, --assumeyes | Secara otomatis menjawab “ya” untuk semua pertanyaan. |
--no-deploy | Mengunduh ke cache lokal tanpa menginstal. |
--no-pull | Menginstal hanya dari cache lokal (tidak mengunduh dari repositori). |
--noninteractive | Menghasilkan output minimal dan menganggap “ya” untuk semua pertanyaan. |
Mengakses Objek Flatpak Secara Lokal
# list objek flatpak yang terinstall
user@host:~$ flatpak list
Name Application ID Version Branch Installation
Red Hat Platform com.redhat.Platform 10 el10 system
Thunderbird org.mozilla.Thunderbird stable system
# Menampilkan informasi tentang objek yang terpasang berdasarkan pengidentifikasi objek
user@host:~$ flatpak info org.mozilla.Thunderbird
Menginstal Objek Flatpak dari Cabang Tertentu
user@host:~$ flatpak remote-info rhel com.redhat.Platform
# Jika tahu cabang mana yang harus dituju, maka tinggal menentukan versi objek dengan menggunakan tiga pengidentifikasi (identifier triple) nya
user@host:~$ flatpak install com.redhat.Platform/x86_64/el8
Mengupdate Objek Flatpak
user@host:~$ flatpak update com.redhat.Platform
# Untuk mencegah pembaruan yang tidak diinginkan pada objek tertentu, gunakan perintah flatpak mask
user@host:~$ flatpak mask com.redhat.Platform
# Untuk membuka mask sebuah objek, gunakan perintah flatpak mask --remove dengan pengidentifikasi objek
user@host:~$ flatpak mask --remove com.redhat.Platform
Menghapus Instalasi Objek Flatpak
user@host:~$ flatpak uninstall --delete-data thunderbird
Mengakses Removable Media
Sistem Berkas dan Perangkat Penyimpanan
Red Hat Enterprise Linux (RHEL) menggunakan Extents File System (XFS) sebagai sistem file lokal default. RHEL mendukung sistem file Extended File System (ext4) untuk mengelola file lokal. Mulai dari RHEL 10, sistem file Extensible File Allocation Table (exFAT) didukung untuk penggunaan Removable Media.
| Tipe Perangkat | Pola Penamaan Perangkat |
|---|---|
| SATA/SAS/USB-attached storage (SCSI driver) | /dev/sda, /dev/sdb, /dev/sdc, … |
| virtio-blk paravirtualized storage (VMs) | /dev/vda, /dev/vdb, /dev/vdc, … |
| virtio-scsi paravirtualized storage (VMs) | /dev/sda, /dev/sdb, /dev/sdc, … |
| NVMe-attached storage (SSDs) | /dev/nvme0, /dev/nvme1, … |
| SD/MMC/eMMC storage (SD cards) | /dev/mmcblk0, /dev/mmcblk1, … |
Periksa Sistem Berkas
Contoh berikut menampilkan sistem file dan titik pemasangan (mount point) pada mesin host:
user@host:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 10213356 2458040 7755316 25% /
devtmpfs 4096 0 4096 0% /dev
tmpfs 873064 0 873064 0% /dev/shm
tmpfs 349228 10784 338444 4% /run
tmpfs 1024 0 1024 0% /run/credentials/systemd-journald...
/dev/sda2 204580 8580 196000 5% /boot/efi
# untuk format yang mudah dibaca manusia
user@host:~$ df -h
# untuk direktori spesifik
root@host:~# du -h /usr/share
# menampilkan ringkasan total penggunaan disk untuk sebuah file atau direktori
[root@host ~]# du -sh /etc /boot /var
Memasang dan Melepas File Sistem
Mengidentifikasi Perangkat Blok
root@host:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 200M 0 part /boot/efi
└─sda3 8:3 0 9.8G 0 part /
sdb 8:16 0 5G 0 disk
sdc 8:32 0 5G 0 disk
sdd 8:48 0 5G 0 disk
sr0 11:0 1 514K 0 rom
Memasang File Sistem dengan Nama Partisi
Contoh berikut memasang partisi /dev/sda3 pada titik pemasangan /mnt/data:
root@host:~# mount /dev/sda3 /mnt/data
Memasang File Sistem dengan UUID Partisi
root@host:~# lsblk -fp
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
/dev/sda
├─/dev/sda1
├─/dev/sda2 vfat FAT16 7B77-95E7 191.4M 4% /boot/efi
└─/dev/sda3 xfs root 15507695-...-...95983f 7.4G 24% /
/dev/sdb
/dev/sdc
/dev/sdd
/dev/sr0 iso9660 Joliet Extension config-2 2025-06-12-05-06-37-00
# Pasang sistem file berdasarkan UUID sistem file.
root@host:~# mount UUID="15507695-22bb-4c65-94e6-a438e095983f" /mnt/data
Automatically Mounting Removable Storage Devices
Perangkat penyimpanan yang dapat dilepas dipasang di lokasi /run/media/USERNAME/LABEL. USERNAME adalah nama pengguna yang masuk ke lingkungan grafis. LABEL adalah pengidentifikasi, yang biasanya merupakan label pada media penyimpanan.
Untuk melepaskan perangkat yang dapat dilepas dengan aman, lepaskan semua sistem file pada perangkat secara manual terlebih dahulu.
Melepaskan File Sistem
root@host:~# umount /mnt/data
# Pelepasan mount tidak dimungkinkan ketika sistem file yang terpasang sedang digunakan.
# Agar perintah umount berhasil, semua proses harus berhenti mengakses data di bawah titik mount tersebut.
root@host:~# cd /mnt/data
root@host:~# umount /mnt/data
umount: /mnt/data: target is busy.
# Perintah lsof mencantumkan semua file yang terbuka dan proses yang mengakses sistem file.
root@host:~# lsof /mnt/data
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1593 root cwd DIR 253,17 6 128 /mnt/data
lsof 2532 root cwd DIR 253,17 19 128 /mnt/data
# Identifikasi dan tunggu hingga proses selesai, atau kirim sinyal SIGTERM atau SIGKILL untuk menghentikannya.
# Dalam hal ini bisa beralih ke direktori kerja saat ini yang berada di luar titik pemasangan (mount point).
root@host:~# cd
root@host:~# umount /mnt/data
Mencari File
- Perintah
locatemencari nama file atau jalur file dalam indeks yang telah dibuat sebelumnya, dan mengembalikan hasilnya secara instan. - Perintah
findmencari file secara real-time dengan menganalisis hierarki sistem file.
Mencari File berdasarkan Nama
root@host:~# updatedb
developer@host:~$ locate passwd
/etc/passwd
/etc/passwd-
...output omitted...
root@host:~# locate image
/etc/selinux/targeted/contexts/virtual_image_context
/usr/bin/grub2-mkimage
...output omitted...
# Opsi -i pada perintah locate melakukan pencarian tanpa memperhatikan huruf besar/kecil.
developer@host:~$ locate -i messages
...output omitted...
# Opsi perintah find -n membatasi jumlah hasil pencarian yang dikembalikan
developer@host:~$ locate -n 5 passwd
...output omitted...
Pencarian File Secara Real Time
root@host:~# find / -name sshd_config
/etc/ssh/sshd_config
Mencari File dengan Karakter Wildcard
root@host:~# find / -name '*.txt'
root@host:~# find /etc -name '*pass*'
# Untuk melakukan pencarian nama file tanpa memperhatikan huruf besar/kecil, gunakan opsi -iname pada perintah find.
root@host:~# find / -iname '*messages*'
Mencari File Berdasarkan Kepemilikan atau Izin
developer@host:~$ find -user developer
...output omitted...
developer@host:~$ find -group developer
...output omitted...
developer@host:~$ find -uid 1000
...output omitted...
developer@host:~$ find -gid 1000
...output omitted...
root@host:~# find / -user root -group mail
/var/spool/mail
...output omitted...
# Opsi -perm pada perintah find mencari file dengan set izin tertentu.
root@host:~# find /home -perm 764
...output omitted...
root@host:~# find /home -perm u=rwx,g=rw,o=r
...output omitted...
root@host:~# find /home -perm 764 -ls
...output omitted...
root@host:~# find /home -perm -324
...output omitted...
root@host:~# find /home -perm -u=wx,g=w,o=r
...output omitted...
root@host:~# find /home -perm /442
...output omitted...
root@host:~# find /home -perm /u=r,g=r,o=w
...output omitted...
developer@host:~$ find -perm -004
...output omitted...
developer@host:~$ find -perm -o=r
...output omitted...
developer@host:~$ find -perm -002
...output omitted...
developer@host:~$ find -perm -o=w
...output omitted...
Mencari File Berdasarkan Ukuran
developer@host:~$ find -size 10M
...output omitted...
developer@host:~$ find -size +10G
...output omitted...
developer@host:~$ find -size -10k
...output omitted...
Pencarian File Berdasarkan Waktu Modifikasi
root@host:~# find / -mmin 120
...output omitted...
root@host:~# find / -mmin +200
...output omitted...
root@host:~# find / -mmin -150
...output omitted...
Mencari File Berdasarkan Tipe File
Opsi -type pada perintah find membatasi cakupan pencarian ke tipe file tertentu. Gunakan flag berikut untuk membatasi cakupan pencarian:
- Untuk file biasa, gunakan flag
f. - Untuk direktori, gunakan flag
d. - Untuk soft link, gunakan flag
l. - Untuk perangkat blok, gunakan flag
b.
Memantau dan Mengelola Proses Linux
Definisi Proses
Suatu proses adalah contoh yang sedang berjalan dari program yang diluncurkan dan dapat dieksekusi. Sejak saat suatu proses dibuat, proses tersebut terdiri dari hal-hal berikut:
- Ruang alamat memori yang dialokasikan
- Properti keamanan, termasuk kredensial kepemilikan dan hak akses
- Satu atau lebih thread eksekusi kode program
- Status proses
Lingkungan suatu proses adalah daftar informasi yang mencakup hal-hal berikut:
- Variabel lokal dan global
- Konteks penjadwalan saat ini
- Sumber daya sistem yang dialokasikan, seperti deskriptor file dan port jaringan
Status Proses
| Nama | Flag | Nama dan Deskripsi Status yang Ditentukan Kernel |
|---|---|---|
| Running | R | TASK_RUNNING: Proses sedang dieksekusi pada CPU atau menunggu untuk berjalan. Proses dapat menjalankan rutinitas pengguna atau rutinitas kernel (panggilan sistem), atau berada dalam antrian dan siap ketika dalam status Running (atau Runnable). |
| Sleeping | S | TASK_INTERRUPTIBLE: Proses menunggu suatu kondisi: permintaan perangkat keras, akses sumber daya sistem, atau sinyal. Ketika suatu peristiwa atau sinyal memenuhi kondisi tersebut, proses kembali ke status Running. |
| D | TASK_UNINTERRUPTIBLE: Proses ini juga tidur (sleeping), tetapi tidak seperti status S, proses ini tidak merespons sinyal. Status ini hanya digunakan ketika interupsi proses dapat menyebabkan status perangkat yang tidak dapat diprediksi. | |
| K | TASK_KILLABLE: Sama dengan status D (uninterruptible), tetapi dimodifikasi untuk mengizinkan tugas yang menunggu merespons sinyal untuk menghentikannya (keluar sepenuhnya). Utilitas sering menampilkan proses Killable sebagai status D. | |
| I | TASK_REPORT_IDLE: Subset dari status D yang digunakan untuk thread kernel. Kernel tidak menghitung proses ini saat menghitung beban rata-rata (load average). Bendera TASK_UNINTERRUPTIBLE dan TASK_NOLOAD disetel. Status ini mirip dengan TASK_KILLABLE, dan menerima sinyal fatal. | |
| Stopped | T | TASK_STOPPED: Proses dihentikan (ditangguhkan), biasanya karena diberi sinyal oleh pengguna atau proses lain. Proses dapat dilanjutkan (diresume) dengan sinyal lain untuk kembali ke status Running. |
| T | TASK_TRACED: Proses yang sedang di-debug juga dihentikan sementara dan berbagi bendera status T. | |
| Zombie | Z | EXIT_ZOMBIE: Proses anak memberi sinyal kepada induknya saat keluar. Semua sumber daya kecuali identitas proses (PID) dilepaskan. |
| X | EXIT_DEAD: Ketika proses induk membersihkan (reaps) struktur proses anak yang tersisa, proses sekarang dilepaskan sepenuhnya. Status ini tidak dapat diamati di utilitas daftar proses. |
Proses Penerjemahan Keadaan
user@host:~$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 49516 41072 10164 S 0.0 0.7 0:02.30 systemd
...output omitted...
user@host:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
...output omitted...
root 2 0.0 0.0 0 0 ? S 11:57 0:00 [kthreadd]
student 2496 0.0 0.0 231132 3872 pts/0 R+ 16:45 0:00 ps aux
...output omitted...
Jobs dan Sesi
user@host:~$ ps
PID TTY TIME CMD
2328 pts/0 00:00:00 bash
8910 pts/0 00:00:00 ps
# Gunakan perintah ps j untuk menemukan informasi proses dan sesi, serta detail tentang pekerjaan.
user@host:~$ ps j
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
...output omitted...
8527 8528 8528 8528 pts/0 8633 Ss 1000 0:00 -bash
8528 8559 8559 8528 pts/0 8633 T 1000 0:00 sleep 10000
8528 8633 8633 8528 pts/0 8633 R+ 1000 0:00 ps j
Menjalankan Tugas di Latar Belakang
user@host:~$ sleep 10000 &
[1] 5947
user@host:~$ jobs
[1]+ Running sleep 10000 &
Membawa Tugas Latar Belakang ke Depan
user@host:~$ fg %1
sleep 10000
Mengirim Proses Latar Depan ke Latar Belakang
Gunakan kombinasi tombol Ctrl+Z
user@host:~$ sleep 10000
^Z
[1]+ Stopped sleep 10000
Memulai Proses yang Ditangguhkan
user@host:~$ bg %1
[1]+ sleep 10000 &
Mengontrol Proses dengan Sinyal
| Sinyal | Nama | Definisi |
|---|---|---|
| 1 | HUP | Hangup : Melaporkan penghentian proses pengendali (controlling process) dari sebuah terminal. Juga meminta inisialisasi ulang proses (reload konfigurasi) tanpa penghentian. |
| 2 | INT | Keyboard interrupt : Menyebabkan penghentian program. Dapat diblokir atau ditangani. Dikirim dengan menekan urutan tombol INTR (Interrupt) yaitu Ctrl+C. |
| 3 | QUIT | Keyboard quit : Mirip dengan SIGINT; menambahkan dump proses saat penghentian. Dikirim dengan menekan urutan tombol QUIT yaitu Ctrl+\. |
| 9 | KILL | Kill, unblockable : Menyebabkan penghentian program secara tiba-tiba. Tidak dapat diblokir, diabaikan, atau ditangani; selalu fatal. |
| 15 (default) | TERM | Terminate : Menyebabkan penghentian program. Tidak seperti SIGKILL, sinyal ini dapat diblokir, diabaikan, atau ditangani. Memungkinkan program menyelesaikan operasi penting dan membersihkan diri (self-cleanup) sebelum dihentikan. |
| 18 | CONT | Continue : Dikirim ke proses untuk melanjutkan jika dihentikan (stopped). Tidak dapat diblokir. Meskipun ditangani, sinyal ini tetap melanjutkan proses. |
| 19 | STOP | Stop, unblockable : Menangguhkan proses. Tidak dapat diblokir atau ditangani. |
| 20 | TSTP | Keyboard stop : Tidak seperti SIGSTOP, sinyal ini dapat diblokir, diabaikan, atau ditangani. Dikirim dengan menekan urutan tombol suspend yaitu Ctrl+Z. |
Setiap sinyal memiliki tindakan default, yang biasanya salah satu dari tindakan berikut:
Term: Menghentikan program (keluar) segera.Core: Menyimpan citra memori program (core dump), lalu menghentikan program.Stop: Menghentikan program yang sedang berjalan (menangguhkan) dan menunggu untuk melanjutkan (melanjutkan).
Mengirim Sinyal Berdasarkan Permintaan Langsung
user@host:~$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
...output omitted...
user@host:~$ ps aux | grep task
...output omitted...
user@host:~$ kill 6564
[1] Terminated task1
user@host:~$ kill -9 6566
[2]- Killed task2
user@host:~$ ps aux | grep task2
user 6568 0.0 0.0 228796 3220 pts/0 S 17:22 0:00 /bin/bash ~/bin/task3
...output omitted...
user@host:~$ kill -SIGKILL 6568
[3]+ Killed task3
Mengontrol Proses Tertentu
root@host:~# pgrep -l -u bob
7391 bash
7426 sleep
7427 sleep
7428 sleep
root@host:~# w -u bob
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
bob tty3 18:37 5:04 0.03s 0.03s -bash
root@host:~# pkill -t tty3
root@host:~# pgrep -l -u bob
7391 bash
root@host:~# pstree -p bob
bash(8391)─┬─sleep(8425)
├─sleep(8426)
└─sleep(8427)
root@host:~# pkill -P 8391
root@host:~# pgrep -l -u bob
bash(8391)
root@host:~# pkill -SIGKILL -P 8391
root@host:~# pgrep -l -u bob
bash(8391)
Mengirim Sinyal ke Beberapa Proses
user@host:~$ ps aux | grep job
user 9259 0.0 0.0 228796 3236 pts/0 S 20:05 0:00 /bin/bash ~/bin/control job1
user 9261 0.0 0.0 228796 3232 pts/0 S 20:05 0:00 /bin/bash ~/bin/control job2
user 9270 0.0 0.0 228796 3240 pts/0 S 20:06 0:00 /bin/bash ~/bin/control job3
...output omitted...
user@host:~$ killall job
[1] Terminated control job1
[2] Terminated control job2
[3]- Terminated control job3
Menghentikan Tugas Latar Belakang
user@host:~$ jobs
[1]- Running sleep 500 &
[2]+ Running sleep 1000 &
user@host:~$ kill -SIGTERM %1
user@host:~$ jobs
[2]+ Running sleep 1000 &
Keluar Pengguna Secara Administratif
user@host:~$ w -f
12:43:06 up 27 min, 5 users, load average: 0.03, 0.17, 0.66
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 12:26 14:58 0.04s 0.04s -bash
bob tty3 12:28 14:42 0.02s 0.02s -bash
user pts/1 desktop.example.com 12:41 2.00s 0.03s 0.03s w
user@host:~$
Perintah w menunjukkan siapa yang sedang login dan apa yang dilakukan setiap pengguna. Sebaliknya, perintah who hanya memberikan informasi dasar tentang pengguna yang sedang login.
user@host:~$ who
root tty2 2025-06-09 12:26 (tty2)
bob tty3 2025-06-09 12:28 (tty3)
user pts/1 2025-06-09 12:41 (desktop.example.com)
# Setelah mengidentifikasi sesi yang akan dihentikan, gunakan perintah pkill -t untuk mengakhirinya.
user@host:~$ sudo pkill -t tty3
user@host:~$ who
root tty2 2025-06-09 12:26 (tty2)
user pts/1 2025-06-09 12:41 (desktop.example.com)
Memantau Aktivitas Proses
# Menafsirkan Nilai Rata-Rata Beban
user@host:~$ uptime
15:29:03 up 14 min, 2 users, load average: 2.92, 4.48, 5.20
# mengetahui jumlah CPU di sistem
user@host:~$ lscpu
Pemantauan Proses Secara Real-time
user@host:~$ top
...output omitted...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
16486 root 20 0 0 0 0 I 0.3 0.0 0:00.03 kworker/1:1-events
16811 student 20 0 232736 5624 3448 R 0.3 0.3 0:00.02 top
1 root 20 0 48740 40544 10352 S 0.0 2.0 0:07.37 systemd
...output omitted...
Kolom output utama default adalah sebagai berikut:
PID: ID proses.USER: Nama pengguna pemilik proses.VIRT: Memori virtual adalah semua memori yang digunakan proses, termasuk set residen, pustaka bersama, dan halaman memori yang dipetakan atau ditukar (berlabel VSZ dalam perintah ps).RES: Memori residen adalah memori fisik yang digunakan proses, termasuk objek bersama residen (berlabel RSS dalam perintah ps).S: Status proses dapat berupa salah satu dari status berikut:D: Tidur yang tidak dapat digangguR: Berjalan atau dapat dijalankanS: TidurT: Berhenti atau dilacakZ: Zombie
TIME: Waktu CPU adalah total waktu pemrosesan sejak proses dimulai. Waktu CPU dapat diubah untuk menyertakan waktu kumulatif dari semua proses anak sebelumnya.COMMAND: Nama perintah proses.
Mengontrol Layanan dan Daemon
Daftar Unit Layanan
root@host:~# systemctl list-units --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
accounts-daemon.service loaded active running Accounts Service
atd.service loaded active running Deferred execution ...
auditd.service loaded active running Security Audit ...
...output omitted...
Dalam contoh ini, opsi --type=service membatasi tipe unit systemd hanya pada unit layanan. Outputnya memiliki kolom-kolom berikut:
UNIT: Nama unit layanan.LOAD: Apakah daemon systemd berhasil memparsing konfigurasi unit dan memuat unit ke dalam memori.ACTIVE: Status aktivasi tingkat tinggi unit. Informasi ini menunjukkan apakah unit berhasil dijalankan.SUB: Status aktivasi tingkat rendah unit. Informasi ini menunjukkan informasi yang lebih detail tentang unit. Informasinya bervariasi berdasarkan tipe unit, status, dan cara unit dijalankan.DESCRIPTION: Deskripsi singkat unit.
Secara default, perintah systemctl list-units --type=service hanya menampilkan unit layanan dengan status aktivasi aktif. Opsi systemctl list-units --all menampilkan semua unit layanan tanpa memperhatikan status aktivasinya. Gunakan opsi --state= untuk memfilter berdasarkan nilai pada kolom LOAD, ACTIVE, atau SUB.
Perintah systemctl tanpa argumen apa pun akan menampilkan daftar unit yang sedang dimuat dan aktif.
# gunakan opsi list-unit-files pada perintah systemctl untuk melihat status semua file unit yang terpasang:
root@host:~# systemctl list-unit-files --type=service
UNIT FILE STATE VENDOR PRESET
arp-ethers.service disabled disabled
atd.service enabled enabled
auditd.service enabled enabled
auth-rpcgss-module.service static -
autovt@.service alias -
blk-availability.service disabled disabled
...output omitted...
Melihat Status Layanan
Lihat status suatu unit dengan perintah systemctl status name.type.
root@host:~# systemctl status sshd.service
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-05-22 14:47:33 UTC; 2h 48min ago
Invocation: 215ee4e3b9e2426880cb727cb3933db1
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 2212 (sshd)
Tasks: 1 (limit: 35724)
Memory: 3.2M (peak: 6.4M)
CPU: 8.984s
CGroup: /system.slice/sshd.service
└─2212 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
May 22 17:33:34 workstation sshd-session[5124]: Connection closed by ...
...output omitted...
Informasi Unit Layanan:
| Field | Deskripsi |
|---|---|
| Loaded | Apakah unit layanan dimuat ke dalam memori. |
| Active | Apakah unit layanan berjalan, dan jika ya, sudah berapa lama. |
| Docs | Tempat untuk menemukan informasi lebih lanjut tentang layanan. |
| Main PID | ID proses utama dari layanan, termasuk nama perintahnya. |
| Status | Informasi lebih lanjut tentang layanan. |
| Process | Informasi lebih lanjut tentang proses terkait. |
| CGroup | Informasi lebih lanjut tentang grup kontrol (control groups) terkait. |
Status Layanan di Output systemctl:
| Keyword | Deskripsi |
|---|---|
| loaded | File konfigurasi unit telah diproses. |
| active (running) | Layanan sedang berjalan dengan proses yang terus aktif. |
| active (exited) | Layanan berhasil menyelesaikan konfigurasi satu kali (one-time configuration). |
| active (waiting) | Layanan sedang berjalan tetapi menunggu suatu peristiwa (event). |
| inactive | Layanan tidak sedang berjalan. |
| enabled | Layanan akan dimulai pada saat boot. |
| disabled | Layanan tidak disetel untuk dimulai pada saat boot. |
| static | Layanan tidak dapat diaktifkan (enabled), tetapi unit yang diaktifkan mungkin akan memulainya secara otomatis. |
Memeriksa Status Layanan
root@host:~# systemctl is-active sshd.service
active
root@host:~# systemctl is-enabled sshd.service
enabled
root@host:~# systemctl is-failed sshd.service
active
Memulai dan Menghentikan Layanan
# verifikasi status layanan
root@host:~# systemctl status sshd.service
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-05-22 14:47:33 UTC; 7h ago
...output omitted...
# memulai layanan
root@host:~# systemctl start sshd
# menghentikan layanan
root@host:~# systemctl stop sshd.service
Memulai Ulang dan Memuat Ulang Layanan
# mulai ulang
root@host:~# systemctl restart sshd.service
# reload konfigurasi, tanpa restart
root@host:~# systemctl reload sshd.service
# jika tidak yakin pakai yang mana
root@host:~# systemctl reload-or-restart sshd.service
Lihat Daftar Dependensi Unit
root@host:~# systemctl list-dependencies sshd.service
sshd.service
○ ├─ssh-host-keys-migration.service
● ├─system.slice
● ├─sshd-keygen.target
○ │ ├─sshd-keygen@ecdsa.service
○ │ ├─sshd-keygen@ed25519.service
○ │ └─sshd-keygen@rsa.service
● └─sysinit.target
...output omitted...
# untuk reverse
root@host:~# systemctl list-dependencies --reverse NetworkManager.service
NetworkManager.service
● ├─NetworkManager-wait-online.service
● └─multi-user.target
● └─graphical.target
Menonaktifkan (Masking) dan Mengaktifkan (Unmasking) Layanan
root@host:~# systemctl mask httpd.service
Created symlink '/etc/systemd/system/httpd.service' → '/dev/null'.
# verifikasi status
root@host:~# systemctl status httpd.service
○ httpd.service
Loaded: masked (Reason: Unit httpd.service is masked.)
Active: inactive (dead)
...output omitted...
root@host:~# systemctl list-unit-files httpd.service
UNIT FILE STATE PRESET
httpd.service masked disabled
# setelah di mask, layanan tidak bisa dijalankan
root@host:~# systemctl start httpd.service
Failed to start httpd.service: Unit httpd.service is masked.
# jika ingin menjalankan, unmask dulu
root@host:~# systemctl unmask httpd.service
Removed '/etc/systemd/system/httpd.service'.
root@host:~# systemctl start httpd.service
Mengaktifkan Layanan untuk Mulai atau Berhenti saat Boot
# enable dari ketika booting
root@root:~# systemctl enable sshd.service
Created symlink '/etc/systemd/system/multi-user.target.wants/sshd.service' → '/usr/lib/systemd/system/sshd.service'.
# enable ketika boot dan mulai saat ini
root@root:~# systemctl enable --now sshd.service
Created symlink '/etc/systemd/system/multi-user.target.wants/sshd.service' → '/usr/lib/systemd/system/sshd.service'.
# disable untuk boot milai saat ini
root@host:~# systemctl disable --now sshd.service
Removed '/etc/systemd/system/multi-user.target.wants/sshd.service'.
# verifikasi status
root@host:~# systemctl is-enabled sshd.service
enabled
Ringkasan Perintah systemctl
| Perintah | Tugas |
|---|---|
systemctl status UNIT | Menampilkan informasi rinci tentang status suatu unit. |
systemctl stop UNIT | Menghentikan layanan pada sistem yang sedang berjalan. |
systemctl start UNIT | Menjalankan layanan pada sistem yang sedang berjalan. |
systemctl restart UNIT | Memulai ulang (restart) layanan pada sistem yang sedang berjalan. |
systemctl reload UNIT | Memuat ulang (reload) file konfigurasi dari layanan yang sedang berjalan. |
systemctl mask UNIT | Menonaktifkan layanan agar tidak dapat dijalankan, baik secara manual maupun saat boot. |
systemctl unmask UNIT | Mengaktifkan kembali layanan yang telah di-mask. |
systemctl enable UNIT | Mengonfigurasi layanan agar berjalan saat boot. Gunakan opsi --now untuk juga menjalankan layanan tersebut. |
systemctl disable UNIT | Menonaktifkan layanan agar tidak berjalan saat boot. Gunakan opsi --now untuk juga menghentikan layanan tersebut. |
Pengantar Jaringan Komputer
Model Jaringan TCP/IP
Model jaringan TCP/IP adalah seperangkat protokol komunikasi empat lapisan yang menjelaskan bagaimana komunikasi data dikemas, dialamatkan, ditransmisikan, dirutekan, dan diterima antar komputer melalui jaringan. Protokol ini ditentukan oleh RFC 1122: Requirements for Internet Hosts - Communication Layers.
Empat lapisan model jaringan TCP/IP adalah: aplikasi, transport, internet, dan tautan.
Penamaan Antarmuka Jaringan
Nama antarmuka jaringan diawali dengan jenis antarmuka:
- Nama antarmuka Ethernet diawali dengan
en. - Nama antarmuka WLAN diawali dengan
wl. - Nama antarmuka WWAN diawali dengan
ww.
Bagian lain dari nama antarmuka didasarkan pada informasi dari firmware server, atau ditentukan oleh lokasi perangkat dalam topologi PCI.
oNmenunjukkan perangkat onboard dengan indeks unikNdari firmware server. Namaeno1adalah perangkat Ethernet onboard 1.sNmenunjukkan perangkat di slot hotplug PCIN. Misalnya,ens3adalah kartu Ethernet di slot hotplug PCI 3.pMsNmenunjukkan perangkat PCI pada busMdi slotN. Misalnya,enp2s3.
Jaringan IPv4
Alamat IPv4 adalah angka 32-bit, yang dinyatakan sebagai empat oktet 8-bit dalam format desimal yang nilainya berkisar dari 0 sampai 255, dipisahkan oleh titik tunggal.
Contoh Perhitungan Jaringan: 192.168.1.107/24
| Komponen | Notasi Desimal | Notasi Biner |
|---|---|---|
| Alamat Host | 192.168.1.107 | 11000000.10101000.00000001.01101011 |
| Netmask | /24 atau 255.255.255.0 | 11111111.11111111.11111111.00000000 |
| Alamat Jaringan | 192.168.1.0 | 11000000.10101000.00000001.00000000 |
| Rentang Host | 192.168.1.1 - 192.168.1.254 | 11000000.10101000.00000001.00000001 hingga 11000000.10101000.00000001.11111110 |
| Alamat Broadcast | 192.168.1.255 | 11000000.10101000.00000001.11111111 |
user@host:~$ ipcalc 10.1.1.18/8
Address: 10.1.1.18
Network: 10.0.0.0/8
Netmask: 255.0.0.0 = 8
Broadcast: 10.255.255.255
Address space: Private Use
HostMin: 10.0.0.1
HostMax: 10.255.255.254
Hosts/Net: 16777214
Routing IPv4
Paket jaringan bergerak dari host ke host di subnet dan melalui router dari jaringan ke jaringan. Setiap host menggunakan tabel routing untuk menentukan antarmuka jaringan mana yang digunakan untuk mengirim paket ke jaringan tertentu.
Konfigurasi Alamat IPv4
Sebuah host dapat secara otomatis mengonfigurasi pengaturan jaringan IPv4 dengan berinteraksi dengan server Dynamic Host Configuration Protocol (DHCP). Klien DHCP menyiarkan permintaan penemuan pada segmen jaringan lokalnya untuk menemukan server DHCP yang tersedia. Setelah menerima tawaran dari server DHCP, klien meminta dan diberi alamat IPv4 unik, bersama dengan parameter jaringan lainnya seperti subnet mask, gateway default, dan alamat server DNS.
Jaringan IPv6
Contoh:
2001:0db8:0000:0010:0000:0000:0000:00012001:db8:0:10:0:0:0:12001:db8:0:10::1
Subnet IPv6
| Alamat/Jaringan IPv6 | Tujuan | Deskripsi |
|---|---|---|
::1/128 | localhost | Setara dengan alamat IPv6 untuk 127.0.0.1/8, yang disetel pada antarmuka loopback. |
:: | Alamat yang tidak ditentukan (unspecified address) | Setara dengan IPv6 untuk 0.0.0.0. Untuk layanan jaringan, ini dapat menunjukkan bahwa layanan mendengarkan (listening) pada semua alamat IP yang dikonfigurasi. |
::/0 | Rute default (internet IPv6) | Setara dengan IPv6 untuk alamat 0.0.0.0/0. Rute default dalam tabel routing cocok dengan jaringan ini; router untuk jaringan ini adalah tempat semua lalu lintas dikirim jika tidak ada rute yang lebih baik. |
2000::/3 | Alamat unicast global | Internet Assigned Numbers Authority (IANA) saat ini mengalokasikan alamat IPv6 publik yang dapat dirutekan dari ruang ini. Alamat-alamat tersebut mencakup semua jaringan yang berkisar dari 2000::/16 hingga 3fff::/16. |
fd00::/8 | Alamat lokal unik (Unique local addresses - RFC 4193) | IPv6 tidak memiliki padanan langsung untuk ruang alamat pribadi RFC 1918, meskipun rentang jaringan ini mendekati. Sebuah organisasi dapat menggunakan jaringan ini untuk mengalokasikan sendiri ruang alamat IP pribadi yang dapat dirutekan secara internal. Namun, jaringan ini tidak dapat digunakan di internet global. Organisasi harus memilih secara acak sebuah /48 dari ruang ini, tetapi dapat melakukan subnetting alokasi menjadi jaringan /64 seperti biasa. |
fe80::/10 | Alamat link-local | Setiap antarmuka IPv6 secara otomatis mengonfigurasi alamat unicast link-local yang tidak dapat dirutekan ke jaringan publik. |
ff00::/8 | Alamat multicast | Setara dengan IPv6 untuk alamat 224.0.0.0/4. Multicast mengirimkan paket ke beberapa host secara bersamaan. Fungsionalitas satu-ke-banyak ini sangat penting, karena IPv6 tidak menggunakan alamat broadcast. |
Konfigurasi Alamat IPv6
IPv6 mendukung konfigurasi manual serta dua metode dinamis: DHCPv6 dan SLAAC (Stateless Address Autoconfiguration).
Nama Host dan Resolusi Nama
Metode yang mudah untuk resolusi nama adalah dengan membuat entri statis untuk nama host di file /etc/hosts setiap sistem. Metode ini memiliki kelemahan yang signifikan: yaitu harus memperbarui file hosts secara manual di setiap sistem.
Mendapatkan Informasi Jaringan
Identifikasi Perangkat Jaringan
user@host:~$ ip link show
Menampilkan Alamat IP
user@host:~$ ip addr show ens3
Menampilkan Statistik Performa
user@host:~$ ip -s link show ens3
Memeriksa Koneksi Antar Host
user@host:~$ ping -c3 192.0.2.254
user@host:~$ ping6 2001:db8:0:1::1
user@host:~$ ping6 -c 1 fe80::f482:dbff:fe25:6a9f%ens4
Mengatasi Masalah Routing
Menampilkan Tabel Routing
# untuk ipv4
user@host:~$ ip route
# untuk ipv6
user@host:~$ ip -6 route
Melacak Rute Lalu Lintas
user@host:~$ tracepath access.redhat.com
...output omitted...
user@host:~$ tracepath6 2001:db8:0:2::451
user@host:~$ mtr -r -c 5 access.redhat.com
Start: 2025-05-29T22:41:52+0000
HOST: servera Loss% Snt Last Avg Best Wrst StDev
1.|-- classroom.lab.example.com 0.0% 5 0.4 0.4 0.3 0.5 0.1
2.|-- 72.32.49.3 0.0% 5 1.0 1.3 0.9 2.3 0.6
3.|-- 72.32.28.27 0.0% 5 1.3 1.5 1.3 1.7 0.2
4.|-- aggr172b-54-cored.dfw3.ra 0.0% 5 1.0 1.0 0.8 1.0 0.1
5.|-- dcpe3-cored.dfw3.rackspac 0.0% 5 1.9 2.1 1.9 2.5 0.2
6.|-- 10.25.1.101 0.0% 5 2.0 2.0 2.0 2.1 0.1
7.|-- equinix-dfw2.netarch.akam 0.0% 5 15.8 15.9 6.3 27.9 9.0
...output omitted...
Memperbaiki Masalah Port dan Layanan
Perintah ss, yang menampilkan statistik soket, telah menggantikan alat netstat sebelumnya (dari paket net-tools), meskipun perintah netstat mungkin masih familiar bagi administrator sistem yang berpengalaman.
Mengelola Konfigurasi Jaringan
Mengelola Perangkat dan Koneksi Jaringan
Melihat Informasi Jaringan
root@host:~# nmcli dev status
# menampilkan daftar semua koneksi
root@host:~# nmcli con show
root@host:~# nmcli con show --active
Menambahkan Koneksi Jaringan
# Contoh ini menambahkan koneksi tipe ethernet untuk antarmuka jaringan enp8s0
root@host:~# nmcli con add ifname enp8s0 type ethernet
# Contoh ini membuat koneksi enp9s0 tipe ethernet untuk antarmuka jaringan enp9s0 dengan pengaturan jaringan IPv4 statis.
root@host:~# nmcli con add con-name enp9s0 type ethernet ifname enp9s0 \
ipv4.method manual ipv4.addresses 192.168.0.5/24 ipv4.gateway 192.168.0.254
# Contoh ini membuat koneksi enp10s0 untuk perangkat enp10s0 dengan alamat IPv6 dan IPv4 statis.
# Perintah ini mengkonfigurasi alamat IPv6 2001:db8:0:1::c000:207 dengan prefiks jaringan /64 dan alamat 2001:db8:0:1::1 sebagai gateway default.
root@host:~# nmcli con add con-name enp10s0 type ethernet ifname enp10s0 \
ipv6.method manual ipv6.addresses '2001:db8:0:1::c000:207/64' ipv6.gateway \
'2001:db8:0:1::1' ipv4.method manual ipv4.addresses '192.0.2.7/24' ipv4.gateway '192.0.2.1'
Mengelola Koneksi Jaringan
# mengaktifkan koneksi jaringan pada perangkat yang terikat dengannya
root@host:~# nmcli con show
NAME UUID TYPE DEVICE
enp1s0 55e68e96-905d-4613-a29a-f5f88d3a12e8 ethernet enp1s0
lo 8ddeb3e7-1399-4619-a1bc-c82c9aa11034 loopback lo
enp8s0 2e779f16-5fc5-4ecc-a92e-c16b9a0cd0a4 ethernet --
root@host:~# nmcli con up enp8s0
# Memutuskan sambungan perangkat jaringan dan menutup koneksi:
root@host:~# nmcli dev dis enp8s0
Memperbarui Pengaturan Koneksi Jaringan
Koneksi layanan NetworkManager memiliki dua jenis pengaturan. Properti koneksi statis dikonfigurasi oleh administrator dan disimpan dalam file konfigurasi
/etc/NetworkManager/system-connections/*.nmconnection. Properti koneksi dinamis diminta dari server DHCP dan tidak disimpan secara permanen.
# Untuk melihat pengaturan koneksi saat ini, gunakan perintah nmcli connection show.
root@host:~# nmcli -p con show enp8s0
# Pilih kolom tertentu saat mencetak detail koneksi:
root@host:~# nmcli -f ipv4.method,ipv4.addresses,ipv4.gateway con show enp8s0
Memperbarui Pengaturan Koneksi dari Baris Perintah:
# Perbarui koneksi enp8s0 untuk mengatur alamat IPv4 192.0.2.2/24 dan gateway default 192.0.2.254.
root@host:~# nmcli con mod enp8s0 ipv4.addresses 192.0.2.2/24 ipv4.gateway 192.0.2.254 connection.autoconnect yes
# perbarui koneksi enp8s0 untuk mengatur alamat IPv6 2001:db8:0:1::a00:1/64 dan gateway default 2001:db8:0:1::1
root@host:~# nmcli con mod enp8s0 ipv6.addresses '2001:db8:0:1::a00:1/64' ipv6.gateway '2001:db8:0:1::1'
# Contoh ini menambahkan server DNS 2.2.2.2 ke koneksi enp8s0.
root@host:~# nmcli con mod enp8s0 +ipv4.dns 2.2.2.2
Mmodifikasi profil jaringan dapat dilakukan dengan mengedit file konfigurasi koneksi di direktori /etc/NetworkManager/system-connections/.
# Setelah memperbarui file konfigurasi koneksi secara manual, gunakan perintah nmcli untuk memuat ulang semua profil koneksi:
root@host:~# nmcli con reload
# Contoh selanjutnya hanya membaca ulang profil koneksi enp8s0 di /etc/NetworkManager/system-connections/enp8s0.nmconnection:
root@host:~# nmcli con reload enp8s0
Menghapus Koneksi Jaringan
root@host:~# nmcli con del enp8s0
Izin untuk Memodifikasi Pengaturan NetworkManager
root@host:~# nmcli gen permissions
PERMISSION VALUE
org.freedesktop.NetworkManager.checkpoint-rollback yes
org.freedesktop.NetworkManager.enable-disable-connectivity-check yes
user@host:~$ nmcli gen permissions
PERMISSION VALUE
org.freedesktop.NetworkManager.checkpoint-rollback auth
org.freedesktop.NetworkManager.enable-disable-connectivity-check no
Perintah NetworkManager yang Berguna
| Perintah | Tujuan |
|---|---|
nmcli dev status | Menampilkan status NetworkManager dari semua antarmuka jaringan. |
nmcli con show | Menampilkan daftar semua koneksi. |
nmcli con show name | Menampilkan pengaturan saat ini untuk koneksi dengan nama tertentu. |
nmcli con add con-name name | Menambahkan dan memberi nama pada profil koneksi baru. |
nmcli con mod name | Mengubah (memodifikasi) koneksi dengan nama tertentu. |
nmcli con reload | Memuat ulang file konfigurasi setelah pengeditan file secara manual. |
nmcli con up name | Mengaktifkan (menjalankan) koneksi dengan nama tertentu. |
nmcli dev dis dev | Memutuskan (disconnect) antarmuka, yang juga menonaktifkan koneksi saat ini. |
nmcli con del name | Menghapus koneksi yang ditentukan beserta file konfigurasinya. |
File Konfigurasi Koneksi
Lokasi File Konfigurasi
File konfigurasi koneksi, yang berada di direktori /etc/NetworkManager/system-connections/, biasanya diberi nama name.nmconnection, di mana name sesuai dengan perangkat atau koneksi yang dikendalikannya.
NetworkManager mengatur file konfigurasinya di direktori berikut:
/etc/NetworkManager/system-connections/: Direktori ini menyimpan profil koneksi permanen yang telah dibuat atau dimodifikasi oleh pengguna./run/NetworkManager/system-connections/: Direktori ini menyimpan profil sementara. Profil ini akan dihapus secara otomatis saat sistem dihidupkan ulang./usr/lib/NetworkManager/system-connections/: Direktori ini berisi profil koneksi yang telah dikonfigurasi sebelumnya dan tidak dapat diubah.
Contoh Pengeditan File Konfigurasi
[connection]
id=Wired connection 1
uuid=27afa607-ee36-43f0-b8c3-9d245cdc4bb3
type=ethernet
autoconnect=true
interface-name=ens4
[ethernet]
mac-address=00:1A:2B:3C:4D:5E
[ipv4]
method=manual
address1=172.25.0.10/24
gateway=172.25.0.254
dns=172.25.254.254
dns-search=example.com
Untuk spesifikasi tambahan, koneksi dapat menyertakan alamat MAC, tetapi ini tidak wajib.
Dalam skenario berikut mencontohkan jika ingin mengubah alamat IP koneksi static-ens4 secara permanen dari 172.24.250.30 menjadi 172.24.250.40.
Pertama, verifikasi pengaturan antarmuka saat ini. Awalnya, perintah ip dan nmcli sama-sama menampilkan alamat IP aktif 172.25.250.30. Perhatikan bahwa perintah ip menampilkan informasi jaringan secara real-time, sedangkan perintah nmcli con show menampilkan konfigurasi tetap yang digunakan selama startup sistem.
root@host:~# ip -4 -br addr show dev ens4
ens4 UP 172.24.250.30/24
root@host:~# nmcli -f ipv4.addresses con show static-ens4
ipv4.addresses: 172.24.250.30/24
# Edit file koneksi untuk mengubah informasi alamat IP secara permanen.
root@host:~# sed -i 's/172.24.250.30/172.24.250.40/' /etc/NetworkManager/system-connections/static-ens4.nmconnection
# Terapkan perubahan dari file koneksi.
root@host:~# nmcli con reload
# Setelah melakukan reload, perintah nmcli con show menampilkan alamat IP baru, tetapi perintah ip masih menampilkan alamat asli dalam konfigurasi runtime saat ini.
root@host:~# nmcli -f ipv4.addresses con show static-ens4
ipv4.addresses: 172.24.250.40/24
root@host:~# ip -4 -br addr show dev ens4
ens4 UP 172.24.250.30/24
# Untuk melihat alamat IP baru dalam konfigurasi runtime, koneksi harus diaktifkan kembali dengan menggunakan perintah nmcli con up:
root@host:~# nmcli con up static-ens4
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)
root@host:~# ip -4 -br addr show dev ens4
ens4 UP 172.24.250.40/24
Memperbarui Nama Host Sistem
Nama host domain yang sepenuhnya memenuhi syarat (FQDN) secara unik mengidentifikasi setiap server dalam jaringan. Perintah hostname menampilkan atau memodifikasi sementara FQDN sistem.
Pada contoh berikut mengubah sementara nama host host.example.com menjadi web1.example.com:
root@host:~# hostname
host.example.com
root@host:~# hostname web1.example.com
root@host:~# hostname
web1.example.com
Untuk mengatur nama host tetap, nama host tersebut harus ditentukan dalam file /etc/hostname, yang dibaca saat sistem dimulai.
# melihat nama host saat ini
root@host:~# hostnamectl hostname
host.example.com
root@host:~# hostnamectl hostname db1.example.com
root@host:~# hostnamectl hostname
db1.example.com
# Pastikan file /etc/hostname telah diperbarui dengan nama host yang baru.
root@host:~# cat /etc/hostname
Mengonfigurasi Resolusi Nama
Secara default, sistem mencoba menyelesaikan permintaan dengan terlebih dahulu menggunakan file /etc/hosts.
Jika file /etc/hosts tidak berisi entri yang cocok, maka resolver stub akan meminta server nama DNS untuk mencari nama host. File /etc/resolv.conf mengontrol bagaimana permintaan DNS ini dilakukan:
search: Daftar nama domain yang akan ditambahkan saat nama host pendek dicari.nameserver: Alamat IP server nama yang akan diminta. Hingga tiga arahan server nama dapat diberikan untuk menyediakan cadangan jika salah satu server nama sedang tidak aktif.
root@host:~# cat /etc/resolv.conf
# Generated by NetworkManager
search example.com
nameserver 172.25.250.100
NetworkManager menggunakan pengaturan DNS yang tersimpan dalam profil koneksi untuk memperbarui file /etc/resolv.conf. Gunakan perintah nmcli untuk memodifikasi koneksi:
root@host:~# nmcli con mod 'Wired connection 1' ipv4.dns 172.25.250.220
root@host:~# cd /etc/NetworkManager/system-connections/
root@host:/etc/NetworkManager/system-connections# cat Wired\ connection\ 1.nmconnection
...output omitted...
[ipv4]
...output omitted...
dns=172.25.250.220;
...output omitted...
root@host:/etc/NetworkManager/system-connections# nmcli con up 'Wired connection 1'
Secara default, perintah nmcli con mod ID ipv4.dns IP akan menimpa entri name server yang ada dengan alamat IP yang diberikan. Untuk menambahkan atau menghapus server DNS tertentu, tambahkan karakter plus (+) atau minus (-) di depan opsi ipv4.dns.
root@host:~# nmcli con mod 'Wired connection 1' +ipv4.dns 172.25.254.254
root@host:~# nmcli con up 'Wired connection 1'
root@host:~# cat /etc/resolv.conf
# Generated by NetworkManager
search example.com
nameserver 172.25.250.220
nameserver 172.25.254.254
Pada contoh berikut, server DNS dengan alamat IPv6 2001:4860:4860::8888 ditambahkan ke daftar server nama yang tersimpan dalam profil static-ens4:
root@host:~# nmcli con mod static-ens4 +ipv6.dns 2001:4860:4860::8888
Pengujian Resolusi Nama DNS
root@host:~# host servera.lab.example.com
servera.lab.example.com has address 172.25.250.10
root@host:~# host 172.25.250.10
10.250.25.172.in-addr.arpa domain name pointer servera.lab.example.com.
# Perintah dig adalah alternatif yang lebih ampuh daripada perintah host dasar untuk melakukan kueri ke server DNS.
root@host:~# dig servera.lab.example.com
Gunakan perintah getent hosts untuk menguji resolusi nama host dengan menggunakan panggilan pustaka C standar, yang mengikuti prosedur yang sama seperti aplikasi lain di sistem Anda. Perlu diingat bahwa konfigurasi default memprioritaskan pemeriksaan file /etc/hosts sebelum menggunakan pencarian server DNS.
root@host:~# getent hosts servera.lab.example.com
172.25.250.10 servera.lab.example.com
Mengonfigurasi dan Mengamankan SSH
Pemeriksaan Kunci Host yang Ketat pada Klien
Demi keamanan, pengaturan default klien SSH adalah memerlukan konfirmasi manual sebelum kunci host baru diterima dan disimpan.
Konfigurasi Pemeriksaan Kunci Host dengan File Konfigurasi
Cara klien SSH menangani kunci host dapat disesuaikan dengan mengedit salah satu dari dua file konfigurasi:
- File
/etc/ssh/ssh_configmengkonfigurasi pengaturan klien SSH di seluruh sistem. - File
~/.ssh/configmengkonfigurasi pengaturan klien SSH khusus pengguna.
Perlu diingat bahwa pengaturan apa pun dalam file
~/.ssh/configakan menimpa pengaturan dalam konfigurasi di seluruh sistem.
Untuk mengontrol cara klien SSH menangani kunci host, ubah parameter StrictHostKeyChecking. Atur parameter ke salah satu opsi berikut:
yesaccept-newnoask
Mengonfigurasi Pemeriksaan Kunci Host dari Baris Perintah
user@host:~$ ssh -o StrictHostKeyChecking=accept-new hostb
Warning: Permanently added 'hostb' (ED25519) to the list of known hosts.
user@hostb's password: password
...output omitted...
user@hostb:~$
Memverifikasi Sidik Jari Kunci Host SSH
Di server SSH, gunakan perintah ssh-keygen untuk menampilkan sidik jari kunci publiknya:
user@host:~$ ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Qit7NeebQCgP2otXSaVXbw1rGmUVMlybXyV68qaND/M root@hostb (ED25519)
Pada contoh berikut, pengguna harus dengan cermat membandingkan sidik jari server SSH dengan sumber tepercaya, sebelum mengetik “yes” untuk melanjutkan koneksi.
user@host:~$ ssh hostb
The authenticity of host 'hostb (192.168.250.11)' can't be established.
ED25519 key fingerprint is SHA256:Qit7NeebQCgP2otXSaVXbw1rGmUVMlybXyV68qaND/M.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'hostb' (ED25519) to the list of known hosts.
user@hostb's password: password
...output omitted...
user@hostb:~$
Memperbarui Kunci Host SSH pada Server
Mulai dari Red Hat Enterprise Linux 10, server SSH secara default menggunakan tiga pasang kunci dan algoritma kunci host ED25519, ECDSA, dan RSA. File kunci host ini berada di direktori /etc/ssh/ pada server:
user@host:~$ ls -l /etc/ssh/ssh_host_*
-rw-------. 1 root root 480 Jun 13 16:56 /etc/ssh/ssh_host_ecdsa_key
-rw-r--r--. 1 root root 162 Jun 13 16:56 /etc/ssh/ssh_host_ecdsa_key.pub
-rw-------. 1 root root 387 Jun 13 16:56 /etc/ssh/ssh_host_ed25519_key
-rw-r--r--. 1 root root 82 Jun 13 16:56 /etc/ssh/ssh_host_ed25519_key.pub
-rw-------. 1 root root 2578 Jun 13 16:56 /etc/ssh/ssh_host_rsa_key
-rw-r--r--. 1 root root 554 Jun 13 16:56 /etc/ssh/ssh_host_rsa_key.pub
Jika perlu membuat pasangan kunci host SSH baru, hapus pasangan kunci yang ada dan mulai ulang daemon SSH. Unit sshd.service secara otomatis mendeteksi tidak adanya kunci-kunci ini selama proses memulai layanan dan membuat ulang ketiga pasangan kunci tersebut.
root@host:~# rm -f /etc/ssh/ssh_host_*
root@host:~# systemctl restart sshd.service
Mengelola File Known Host pada Klien
Setelah membuat ulang kunci host, untuk setiap klien SSH yang sebelumnya terhubung ke server, kunci host sebelumnya masih tersimpan dalam file known_hosts nya. Klien SSH menyimpan daftar sistem jarak jauh yang dikenal dan kunci host yang sesuai di salah satu dari dua lokasi berikut:
/etc/ssh/ssh_known_hosts~/.ssh/known_hosts
Jika kunci host server jarak jauh berubah, hapus entri yang sudah usang dari file ~/.ssh/known_hosts.
user@host:~$ ssh-keygen -R hostb
# Jika kunci yang bermasalah ada dalam file host yang dikenal di seluruh sistem, maka administrator harus menghapus entri yang sesuai:
root@host:~# ssh-keygen -R hostb -f /etc/ssh/ssh_known_hosts
Mengisi File Host yang Dikenal
# mengambil dan menyimpan kunci publik dari host jarak jauh
user@host:~$ ssh-keyscan hostb >> ~/.ssh/known_hosts
# verifikasi sidik jari kunci host yang disimpan
user@host:~$ ssh-keygen -l -f ~/.ssh/known_hosts
3072 SHA256:1PpHYtWyiygoQh548NRXxRn6GCMvHSzljrtbAaHKqPc hostb (RSA)
256 SHA256:rMXtr4eS4bCSE6Si81a3v7hNb9RXdMCv8ngjFs7Yj1s hostb (ECDSA)
256 SHA256:89iCusliyLGcq5m0JOnvoTUaa9xkjaKaOGODgbXiTmk hostb (ED25519)
# Tambahkan host baru ke file host yang dikenal di seluruh sistem.
root@host:~# ssh-keyscan -q -t ed25519 hostb >> /etc/ssh/ssh_known_hosts
# contoh memindai seluruh segmen jaringan untuk kunci host untuk mengumpulkan kunci host RSA:
root@host:~# ssh-keyscan -q -t rsa 172.25.250.0/24 >> /etc/ssh/ssh_known_hosts
Otentikasi berbasis kunci SSH
Membuat Kunci SSH
user@host:~$ ssh-keygen
# Menentukan jalur file untuk menyimpan pasangan kunci.
user@host:~$ ssh-keygen -f .ssh/key-with-pass
Berbagi Kunci Publik
user@host:~$ ssh-copy-id -i .ssh/key-with-pass.pub user@remotehost
# setelah itu coba login dengan kunci
user@host:~$ ssh -i .ssh/key-with-pass user@remotehost
Otentikasi Non-Interaktif dengan Pengelola Kunci ssh-agent
Perintah ssh-agent menjalankan perintah shell tambahan untuk mengatur variabel lingkungan saat dijalankan secara manual. Variabel lingkungan ini diperlukan saat menggunakan perintah ssh-add.
Contoh berikut menggunakan perintah ssh-add untuk menambahkan kunci pribadi dari file default ~/.ssh/id_ed25519, dan kemudian menambahkan kunci pribadi dari file ~/.ssh/key-with-pass:
user@host:~$ ssh-add
Identity added: /home/user/.ssh/id_ed25519 (user@host.lab.example.com)
user@host:~$ ssh-add .ssh/key-with-pass
Enter passphrase for .ssh/key-with-pass: my-secret
Identity added: .ssh/key-with-pass (user@host.lab.example.com)
Opsi -l pada perintah ssh-add menampilkan sidik jari dari semua kunci SSH yang saat ini dimuat di pengelola kunci ssh-agent.
user@host:~$ ssh-add -l
256 SHA256:+w3lT...mftuM user@host (ED25519)
256 SHA256:sb6vK...jN3YQ user@host (ED25519)
Perintah ssh berikut menggunakan kunci privat ~/.ssh/key-with-pass untuk mengakses akun di server jarak jauh.
user@host:~$ ssh -i .ssh/key-with-pass user@remotehost
...output omitted...
Last login: Thu Jun 19 21:50:35 2025 host.example.com
user@remotehost:~$
Saat keluar dari sesi yang menggunakan pengelola kunci ssh-agent, semua frasa sandi yang tersimpan dalam cache akan dihapus dari memori.
Penyelesaian Masalah Koneksi SSH
SSH dapat tampak rumit ketika akses jarak jauh dengan otentikasi pasangan kunci tidak berhasil. Perintah ssh menyediakan tiga tingkat detail informasi dengan opsi -v, -vv, dan -vvv, yang masing-masing memberikan informasi debugging yang semakin banyak.
Contoh ini menunjukkan informasi yang diberikan saat menggunakan opsi detail informasi terendah:
user@host:~$ ssh -v user@remotehost
OpenSSH_9.9p1, OpenSSL 3.2.2 4 Jun 2024 ---> 1
debug1: Reading configuration data /etc/ssh/ssh_config ---> 2
debug1: Reading configuration data /etc/ssh/ssh_config.d/01-training.conf
debug1: /etc/ssh/ssh_config.d/01-training.conf line 1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config.d/50-redhat.conf
...output omitted...
debug1: Connecting to remotehost [192.168.1.10] port 22. ---> 3
debug1: Connection established.
...output omitted...
debug1: Authenticating to remotehost:22 as 'user' ---> 4
...output omitted...
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password ---> 5
...output omitted...
debug1: Next authentication method: publickey ---> 6
debug1: Offering public key: /home/user/.ssh/id_ed25519 ED25519 SHA256:+w3lTa7BdiZwVO1AuAP9GjlwRdzwqk+JKcrhosmftuM ---> 7
debug1: Server accepts key: /home/user/.ssh/id_ed25519 ED25519 SHA256:+w3lTa7BdiZwVO1AuAP9GjlwRdzwqk+JKcrhosmftuM ---> 8
Authenticated to remotehost ([192.168.1.10]:22) using "publickey".
...output omitted...
user@remotehost:~$
- Versi OpenSSH dan OpenSSL
- Berkas konfigurasi OpenSSH
- Koneksi ke host jarak jauh
- Mencoba mengautentikasi pengguna di host jarak jauh
- Metode autentikasi yang diizinkan oleh host jarak jauh
- Mencoba mengautentikasi pengguna dengan menggunakan kunci SSH
- Menggunakan berkas kunci /home/user/.ssh/id_rsa untuk autentikasi
- Host jarak jauh menerima kunci SSH.
Contoh ini menunjukkan akses jarak jauh dengan kunci SSH yang gagal, tetapi kemudian server SSH menawarkan autentikasi kata sandi yang berhasil.
user@host:~$ ssh -v user@remotehost
...output omitted...
debug1: Next authentication method: publickey
debug1: Offering public key: /home/user/.ssh/id_ed25519 ED25519 SHA256:+w3lTa7BdiZwVO1AuAP9GjlwRdzwqk+JKcrhosmftuM
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
...output omitted...
debug1: Next authentication method: password
user@remotehost's password: user-password
Authenticated to remotehost ([172.25.250.10]:22) using "password".
...output omitted...
user@remotehost:~$
Mengkonfigurasi Klien SSH
Buat file ~/.ssh/config untuk mengkonfigurasi koneksi SSH terlebih dahulu. Di dalam file konfigurasi, tentukan parameter koneksi seperti pengguna, kunci, dan port untuk host tertentu. File ini menghilangkan kebutuhan untuk menentukan parameter perintah secara manual setiap kali terhubung ke host. File ~/.ssh/config berikut mengkonfigurasi dua koneksi host dengan pengguna dan kunci yang berbeda:
user@host:~$ cat ~/.ssh/config
host remotehosta
HostName remotehosta.example.com
User usera
IdentityFile ~/.ssh/id_ed25519_remotehosta
host remotehostb
HostName remotehostb.example.com
User userb
IdentityFile ~/.ssh/id_ed25519_remotehostb
Mengkonfigurasi Server SSH
Daemon sshd menyediakan layanan OpenSSH. Layanan tersebut dapat dikonfigurasi dengan mengedit file /etc/ssh/sshd_config.
Melarang Superuser (root) untuk Masuk
# edif file /etc/ssh/sshd_config, temukan baris PermitRootLogin yes, ubah menjadi no:
PermitRootLogin no
# lalu restart/reload
root@host:~# systemctl reload sshd
Melarang Otentikasi Berbasis Kata Sandi
# edit file /etc/ssh/sshd_config, temukan baris PasswordAuthentication yes, ubah jadi no:
PasswordAuthentication no
# lalu restart/reload