# login dengan password
user@host:~$ ssh remoteuser@remotehost
# login dengan key
user@host:~$ ssh -i mylab.pem remoteuser@remotehost
# 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
# 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
user@host:~$ head -n 3 \
/usr/share/dict/words \
/usr/share/dict/linux.words
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 | 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. |
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. |
| 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. |
# 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
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
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
Sistem terdaftar menyimpan beberapa sertifikat di bawah direktori /etc/pki.
/etc/pki/product-default: Mengidentifikasi produk Red Hat yang terpasang pada sistem./etc/pki/consumer: Mengidentifikasi sistem./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
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?"
| 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 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 ..
# 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 ..
# 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
| 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
| 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.
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)?
# menggunakan vim-minimal
user@host:~$ vi namafile
# menggunakan vim-enhanced
user@host:~$ vim namafile
:w menulis (menyimpan) file dan tetap dalam mode perintah untuk pengeditan lebih lanjut.:wq menulis (menyimpan) file dan keluar dari Vim.:q! keluar dari Vim, dan membuang semua perubahan file yang dilakukan setelah penulisan terakhir.Di Vim bisa melakukan yank dan put (salin dan tempel). Masuk mode visual untuk seleksi teks:
Mode visual berguna untuk menyorot dan memanipulasi teks di berbagai baris dan kolom. Gunakan kombinasi tombol berikut:
File konfigurasi vim ada di
/etc/vimrcdan~/.vimrc
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 |
| 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). |
# 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
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.
user@host:~$ ls -l /usr/bin | less
user@host:~$ ls | wc -l
user@host:~$ ls -t | head -n 10 > /tmp/first-ten-changed-files
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
root dan UID akunnya 0. Memiliki akses penuh ke sistem.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/nologin untuk melarang login interaktif dengan akun tersebut.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.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.
# 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.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.
user1@host:~$ sudo -i
[sudo] password for user1: user1_password
root@host:~#
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
%wheel adalah pengguna atau grup yang menjadi sasaran aturan tersebut. Tanda persen (%) sebelum kata wheel menentukan grup.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.ALL terakhir 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
Perintah useradd username membuat akun pengguna bernama username. Perintah ini menyelesaikan tugas-tugas berikut untuk menyiapkan dan mengkonfigurasi akun baru:
useradd sebagai superuser.useradd membaca konfigurasi pembuatan pengguna dari file /etc/login.defs.useradd menulis entri di file /etc/group, /etc/passwd, dan /etc/shadow dengan informasi yang diberikan kepada pengguna username (ID pengguna dan ID grup).useradd membuat direktori home pengguna username di jalur /home/username.useradd menyalin file profil pengguna di direktori /etc/skel ke direktori home pengguna username (di bawah /home/username).Gunakan perintah usermod untuk modifikasi user, untuk bantuan usermod --help.
# contoh menambahkan user1 ke grup grup2
user@host: sudo usermod -aG grup2 user1
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.
root@host: passwd user1
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:
# 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:
root@host:~# groupdel group0022
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.$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.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
date untuk mendapatkan tanggal saat ini.date untuk mendapatkan tanggal 30 hari dari sekarang.chage dengan opsi -E untuk mengubah tanggal kedaluwarsa kata sandi untuk pengguna cloudadmin10.chage dengan opsi -l untuk menampilkan kebijakan masa berlaku kata sandi untuk pengguna cloudadmin10.Misalnya ingin pengguna cloudadmin10 mengubah kata sandi pada saat login berikutnya, gunakan perintah berikut:
root@host:~# chage -d 0 cloudadmin10
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.
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
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
| 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. |
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.d adalah direktori.l adalah tautan simbolik.c adalah berkas perangkat karakter.b adalah berkas perangkat blok.p adalah berkas pipa bernama.s adalah berkas soket lokal.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
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:
# 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
# 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
| 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
| Permission | Octal Notation | Symbolic Notation |
|---|---|---|
| setuid | 4 | u+s |
| setgid | 2 | g+s |
| sticky | 1 | o+t |
# 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
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.
# 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
Nama file paket RPM terdiri dari empat elemen (ditambah akhiran .rpm): nama-versi-rilis.arsitektur:
# 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...
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...
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%]
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
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.
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
# 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
# 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'
| 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. |
# 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
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.
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.
# 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
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
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
Contoh berikut menunjukkan pencarian yang menggunakan kata kunci thunderbird untuk menemukan aplikasi di repositori jarak jauh Flatpak:
user@host:~$ flatpak -v search thunderbird
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. |
# 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
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
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
user@host:~$ flatpak uninstall --delete-data thunderbird
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, … |
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
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
Contoh berikut memasang partisi /dev/sda3 pada titik pemasangan /mnt/data:
root@host:~# mount /dev/sda3 /mnt/data
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
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.
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
locate mencari nama file atau jalur file dalam indeks yang telah dibuat sebelumnya, dan mengembalikan hasilnya secara instan.find mencari file secara real-time dengan menganalisis hierarki sistem file.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...
root@host:~# find / -name sshd_config
/etc/ssh/sshd_config
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*'
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...
developer@host:~$ find -size 10M
...output omitted...
developer@host:~$ find -size +10G
...output omitted...
developer@host:~$ find -size -10k
...output omitted...
root@host:~# find / -mmin 120
...output omitted...
root@host:~# find / -mmin +200
...output omitted...
root@host:~# find / -mmin -150
...output omitted...
Opsi -type pada perintah find membatasi cakupan pencarian ke tipe file tertentu. Gunakan flag berikut untuk membatasi cakupan pencarian:
f.d.l.b.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:
Lingkungan suatu proses adalah daftar informasi yang mencakup hal-hal berikut:
| 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. |
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...
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
user@host:~$ sleep 10000 &
[1] 5947
user@host:~$ jobs
[1]+ Running sleep 10000 &
user@host:~$ fg %1
sleep 10000
Gunakan kombinasi tombol Ctrl+Z
user@host:~$ sleep 10000
^Z
[1]+ Stopped sleep 10000
user@host:~$ bg %1
[1]+ sleep 10000 &
| 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).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
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)
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
user@host:~$ jobs
[1]- Running sleep 500 &
[2]+ Running sleep 1000 &
user@host:~$ kill -SIGTERM %1
user@host:~$ jobs
[2]+ Running sleep 1000 &
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)
# 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
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: ZombieTIME: 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.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...
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. |
root@host:~# systemctl is-active sshd.service
active
root@host:~# systemctl is-enabled sshd.service
enabled
root@host:~# systemctl is-failed sshd.service
active
# 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
# 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
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
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
# 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
| 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. |
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.
Nama antarmuka jaringan diawali dengan jenis antarmuka:
en.wl.ww.Bagian lain dari nama antarmuka didasarkan pada informasi dari firmware server, atau ditentukan oleh lokasi perangkat dalam topologi PCI.
oN menunjukkan perangkat onboard dengan indeks unik N dari firmware server. Nama eno1 adalah perangkat Ethernet onboard 1.sN menunjukkan perangkat di slot hotplug PCI N. Misalnya, ens3 adalah kartu Ethernet di slot hotplug PCI 3.pMsN menunjukkan perangkat PCI pada bus M di slot N. Misalnya, enp2s3.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.
| 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
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.
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.
Contoh:
2001:0db8:0000:0010:0000:0000:0000:00012001:db8:0:10:0:0:0:12001:db8:0:10::1| 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. |
IPv6 mendukung konfigurasi manual serta dua metode dinamis: DHCPv6 dan SLAAC (Stateless Address Autoconfiguration).
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.
user@host:~$ ip link show
user@host:~$ ip addr show ens3
user@host:~$ ip -s link show ens3
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
# untuk ipv4
user@host:~$ ip route
# untuk ipv6
user@host:~$ ip -6 route
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...
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.
root@host:~# nmcli dev status
# menampilkan daftar semua koneksi
root@host:~# nmcli con show
root@host:~# nmcli con show --active
# 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'
# 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
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
root@host:~# nmcli con del enp8s0
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 | 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, 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.[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
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
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
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
Demi keamanan, pengaturan default klien SSH adalah memerlukan konfirmasi manual sebelum kunci host baru diterima dan disimpan.
Cara klien SSH menangani kunci host dapat disesuaikan dengan mengedit salah satu dari dua file konfigurasi:
/etc/ssh/ssh_config mengkonfigurasi pengaturan klien SSH di seluruh sistem.~/.ssh/config mengkonfigurasi 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-newnoaskuser@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:~$
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:~$
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
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_hostsJika 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
# 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
user@host:~$ ssh-keygen
# Menentukan jalur file untuk menyimpan pasangan kunci.
user@host:~$ ssh-keygen -f .ssh/key-with-pass
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
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.
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:~$
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:~$
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
Daemon sshd menyediakan layanan OpenSSH. Layanan tersebut dapat dikonfigurasi dengan mengedit file /etc/ssh/sshd_config.
# edif file /etc/ssh/sshd_config, temukan baris PermitRootLogin yes, ubah menjadi no:
PermitRootLogin no
# lalu restart/reload
root@host:~# systemctl reload sshd
# edit file /etc/ssh/sshd_config, temukan baris PasswordAuthentication yes, ubah jadi no:
PasswordAuthentication no
# lalu restart/reload