linux adminitrasi sistem

Routing
https://radnet-digital.id/


Linux Standard Directory Tree

        Standar Hierarki Sistem Berkas (Filesystem Hierarchy Standard/FHS), yang awalnya dikelola oleh Free Standards Group dan sekarang oleh The Linux Foundation, menentukan direktori utama yang harus ada dan menjelaskan tujuannya. Dokumen FHS dapat diakses secara online.Dengan menentukan tata letak standar, FHS mempermudah prediksi lokasi berkas. Meskipun sebagian besar distribusi Linux menghormati FHS, mungkin tidak ada yang mengikutinya secara persis, dan versi resmi terakhir sudah cukup lama sehingga tidak memperhitungkan beberapa perkembangan baru. Distribusi Linux suka bereksperimen, dan pada akhirnya, beberapa eksperimen tersebut diterima secara umum.

The Root (/) Directory

        Meskipun seluruh sistem berkas dapat dilihat sebagai satu pohon besar, seperti yang telah disebutkan, mungkin ada beberapa partisi dan sistem berkas yang digabungkan bersama. Partisi dan sistem berkas yang berisi direktori root itu sendiri cukup khusus dan sering berada dalam partisi khusus yang didedikasikan, dengan komponen lain seperti direktori `/home`, `/var`, dan `/opt`, dll., yang akan dipasang (mount) nanti.
        Partisi root harus berisi semua file penting yang diperlukan untuk mem-boot sistem dan kemudian memasang semua sistem berkas lainnya. Oleh karena itu, partisi root memerlukan utilitas, file konfigurasi, informasi boot loader, dan data startup penting lainnya. Partisi root harus memadai untuk:

1. Mem-boot sistem.
2. Memulihkan sistem dari cadangan sistem pada media eksternal seperti tape, media removable, atau NAS, dll.




3. Memperbaiki dan/atau memulihkan sistem; seorang administrator yang berpengalaman harus memiliki alat untuk mendiagnosis dan merekonstruksi sistem yang rusak.

Menurut FHS, tidak ada aplikasi atau paket yang boleh membuat subdirektori baru di direktori root.

Penting: `/` bukanlah `/root`. Kita tidak sedang membicarakan `/root`, yang merupakan direktori home dari pengguna root (superuser). Pemilihan kata di sini bisa membingungkan!

/bin 

Direktori `/bin` sangat penting karena:
  •  Berisi program dan skrip yang dapat dieksekusi yang diperlukan oleh administrator sistem dan pengguna biasa, terutama saat sistem belum memasang filesystem lain, seperti saat booting dalam mode single user atau recovery.
  • Dapat juga berisi program yang digunakan secara tidak langsung oleh skrip.
  • Tidak boleh memiliki subdirektori.

Program yang wajib ada di `/bin/` meliputi:  
`cat`, `chgrp`, `chmod`, `chown`, `cp`, `date`, `dd`, `df`, `dmesg`, `echo`, `false`, `hostname`, `kill`, `ln`, `login`, `ls`, `mkdir`, `mknod`, `more`, `mount`, `mv`, `ps`, `pwd`, `rm`, `rmdir`, `sed`, `sh`, `stty`, `su`, `sync`, `true`, `umount`, dan `uname`.

Program yang dianggap tidak terlalu penting untuk ditempatkan di `/bin` akan disimpan di `/usr/bin`. Program yang hanya diperlukan oleh pengguna non-root biasanya ditempatkan di sini.

Catatan: Beberapa distribusi terbaru telah meninggalkan strategi pemisahan `/bin` dan `/usr/bin` (serta `/sbin` dan `/usr/sbin`) dan hanya menggunakan satu direktori dengan tautan simbolis, sehingga mempertahankan tampilan dua direktori. Mereka menganggap konsep lama yang memungkinkan `/usr` berada di partisi terpisah untuk dipasang setelah boot sudah usang.

Versi terbaru dari distribusi seperti RHEL, CentOS, Fedora, dan Ubuntu telah menghubungkan `/bin` dan `/usr/bin` secara simbolis, sehingga keduanya sebenarnya sama.

/boot

    Direktori /boot dan subdirektorinya harus berisi file-file penting untuk mem-boot sistem. Dua file yang mutlak diperlukan adalah:
  • vmlinuz: Kernel Linux yang terkompresi
  • initramfs: Sistem berkas RAM awal yang dipasang sebelum sistem berkas root yang sebenarnya tersedia.
    /boot menyimpan data yang digunakan sebelum kernel mulai menjalankan program mode pengguna. Ini juga mencakup dua file untuk informasi dan debugging:
  • config: Digunakan untuk mengonfigurasi kompilasi kernel.
  • System.map: Tabel simbol kernel, digunakan untuk debugging.
    Isi /boot bervariasi tergantung pada distribusi dan waktu. Pada satu sistem Ubuntu, file-file ini memiliki nama yang lebih panjang yang bergantung pada distribusi Linux dan versi kernel. Selain initramfs, mungkin juga ada initrd (initial ram disk).

/dev

                Direktori ini berisi file perangkat khusus (juga dikenal sebagai node perangkat) yang mewakili perangkat yang tertanam atau terhubung ke sistem. File-file khusus ini sangat penting agar sistem dapat berfungsi dengan baik.File perangkat tersebut mewakili perangkat I/O karakter (aliran byte) dan blok. Perangkat jaringan tidak memiliki node perangkat di Linux, dan sebaliknya dirujuk berdasarkan nama, seperti `eth1` atau `wlan0`.

            Semua distribusi Linux modern menggunakan sistem `udev`, yang membuat node di `/dev` hanya saat diperlukan ketika perangkat ditemukan. Jika Anda melihat direktori `/dev` pada sistem berkas yang belum dipasang, Anda akan menemukannya kosong.Pada sistem lama (atau perangkat tertanam), node perangkat dapat dibuat oleh `MAKEDEV` atau `mknod` saat instalasi atau kapan saja sesuai kebutuhan.

/etc

        Direktori `/etc` berisi file konfigurasi lokal mesin dan beberapa skrip startup; seharusnya tidak ada program biner yang dapat dieksekusi di sini. File dan direktori yang mungkin ditemukan di direktori ini meliputi:

-`csh.login`, `exports`, `fstab`, `ftpusers`, `gateways`, `gettydefs`, `group`, `host.conf`, `hosts.allow`, `hosts.deny`, `hosts.equiv`, `hosts.lpd`, `inetd.conf`, `inittab`, `issue`, `ld.so.conf`, `motd`, `mtab`, `mtools.conf`, `networks`, `passwd`, `printcap`, `profile`, `protocols`, `resolv.conf`, `rpc`, `securetty`, `services`, `shells`, `syslog.conf`.

        Distribusi Linux sering menambahkan file dan direktori konfigurasi ke `/etc`. Sebagai contoh, Red Hat menambahkan sejumlah direktori lain, termasuk `/etc/sysconfig`, di mana terdapat berbagai file dan direktori konfigurasi sistem.

/home 

Pada sistem Linux, direktori pengguna biasanya ditempatkan di bawah `/home`, seperti `/home/coop`, `/home/student`, dan sebagainya. Semua konfigurasi pribadi, data, dan program yang dapat dieksekusi ditempatkan dalam hierarki direktori ini. `/home` juga dapat berisi subdirektori untuk berbagai kelompok atau asosiasi pengguna, seperti `/home/students`, `/home/staff`, `/home/aliens`, dll.

Pada sistem operasi mirip UNIX lainnya, konsep direktori `/home` juga ada, tetapi bisa sedikit berbeda. Misalnya, pada Solaris, direktori pengguna dibuat di `/export/home`, dan kemudian fasilitas automount akan memasukkannya ke `/home`. Hal ini karena biasanya direktori home bisa berada di mana saja di jaringan perusahaan, mungkin di server NFS, dan direktori home akan dipasang secara otomatis saat digunakan.

Linux memiliki fasilitas automount yang sama, tetapi banyak pengguna mungkin tidak menyadarinya, dan pada sistem yang berdiri sendiri, konsep mount NFS mungkin tidak berlaku.

Seorang pengguna selalu dapat mengganti variabel lingkungan `$HOME` untuk direktori root mereka, atau menggunakan singkatan `~`; misalnya, berikut ini setara:

bash
$ ls -l $HOME/public_html
$ ls -l ~/public_html


Ada satu pengecualian: direktori home untuk pengguna root pada sistem Linux selalu ditemukan di `/root`. Beberapa sistem UNIX lama mungkin menggunakan `/`, yang dapat menyebabkan kekacauan.
 

/lib and /lib64

Direktori-direktori ini seharusnya hanya berisi pustaka yang diperlukan untuk menjalankan biner di `/bin` dan `/sbin`. Pustaka-pustaka ini sangat penting untuk mem-boot sistem dan menjalankan perintah dalam sistem berkas root.

Modul kernel (sering kali berupa driver perangkat atau sistem berkas) berada di bawah `/lib/modules/<versi-kernel>`.

File PAM (Pluggable Authentication Modules) disimpan di `/lib/security`.

Sistem yang mendukung biner 32-bit dan 64-bit harus menyimpan kedua jenis pustaka tersebut. Pada beberapa distribusi, terdapat direktori terpisah untuk pustaka 32-bit (`/lib`) dan pustaka 64-bit (`/lib64`).

Catatan: Beberapa distribusi terbaru telah meninggalkan strategi pemisahan `/lib` dan `/usr/lib` (serta `/lib64` dan `/usr/lib64`) dan hanya menggunakan satu direktori dengan tautan simbolis, sehingga mempertahankan tampilan dua direktori. Mereka menganggap konsep lama yang memungkinkan `/usr` berada di partisi terpisah untuk dipasang setelah boot sudah usang.

/media

           Direktori ini biasanya digunakan untuk memasang (mount) sistem berkas pada media yang dapat dilepas, seperti CD, DVD, dan drive USB. Pada sistem Linux, media tersebut dipasang secara dinamis saat dimasukkan, dan `udev` membuat direktori serta memasang sistem berkas yang dapat dilepas di sana, dengan nama yang ditentukan oleh aturan `udev` dalam file konfigurasi. Setelah media dilepas dan di-unmount, direktori yang digunakan sebagai titik mount akan hilang.Jika media memiliki lebih dari satu partisi dan sistem berkas, akan muncul lebih dari satu entri. Pada banyak distribusi Linux, manajer file (seperti Nautilus) akan muncul otomatis saat media dipasang.

Catatan: Pada distribusi Linux terbaru, media yang dapat dilepas akan muncul di `/run/media/[nama_pengguna]/...` alih-alih di `/media`.

/mnt

Direktori ini disediakan agar administrator sistem dapat memasang (mount) sistem berkas sementara ketika diperlukan. Penggunaan umumnya adalah untuk sistem berkas jaringan, termasuk:
  • NFS
  • Samba
  • CIFS
  • AFS.
Secara historis, `/mnt` juga digunakan untuk jenis file yang sekarang dipasang di bawah `/media` (atau `/run/media`) pada sistem modern. Secara umum, direktori ini sebaiknya tidak digunakan oleh program instalasi. Direktori sementara lain yang saat ini tidak digunakan akan lebih cocok untuk keperluan tersebut.

/opt

Direktori /opt pada Linux digunakan untuk menyimpan paket perangkat lunak secara terisolasi agar tidak bercampur dengan sistem utama. Hal ini mempermudah proses instalasi dan uninstalasi karena semua file berada dalam satu lokasi yang terstruktur. Meskipun sistem manajemen paket seperti RPM dan APT juga mempermudah pengelolaan file, direktori ini tetap digunakan oleh penyedia aplikasi, terutama untuk perangkat lunak proprietari atau yang ingin menghindari perbedaan antar distribusi Linux.

Contoh penggunaan /opt dapat dilihat pada paket seperti /opt/brother, /opt/google, dan /opt/zoom, dengan subdirektori tambahan untuk aplikasi seperti Chrome dan Earth. Selain itu, direktori seperti /opt/bin, /opt/lib, dan /opt/man disediakan untuk administrator sistem, tetapi sebagian besar sistem tidak menggunakannya secara default.

/proc

Direktori ini merupakan titik mount untuk sebuah pseudo-filesystem, di mana semua informasi hanya tersimpan di dalam memori dan tidak di disk. Seperti halnya /dev, direktori /proc akan kosong pada sistem yang tidak sedang berjalan. Kernel mengekspos beberapa struktur data penting melalui entri di /proc, dan setiap proses aktif dalam sistem memiliki subdirektorinya sendiri yang memberikan informasi rinci tentang status proses, sumber daya yang digunakan, serta riwayatnya. Entri dalam /proc sering disebut sebagai file virtual dan memiliki karakteristik unik, di mana meskipun sebagian besar ditampilkan dengan ukuran nol byte, ketika dibuka, mereka dapat berisi sejumlah besar informasi. Selain itu, pengaturan waktu dan tanggal pada file virtual mencerminkan waktu dan tanggal saat ini, menunjukkan bahwa informasi di dalamnya terus berubah dan hanya diambil saat file tersebut diakses, bukan diperbarui secara berkala.  

Beberapa pseudo-file penting, seperti /proc/interrupts, /proc/meminfo, /proc/mounts, dan /proc/partitions, memberikan gambaran langsung mengenai perangkat keras sistem, sedangkan file lain seperti /proc/filesystems dan direktori /proc/sys/ menyediakan informasi konfigurasi sistem dan antarmuka. Demi keteraturan, file dengan informasi serupa dikelompokkan dalam direktori dan sub-direktori virtual, misalnya /proc/scsi/ yang berisi informasi tentang semua perangkat SCSI fisik, sedangkan direktori proses menyimpan informasi tentang setiap proses yang sedang berjalan dalam sistem.

/sys

Direktori ini merupakan titik mount untuk pseudo-filesystem sysfs, di mana semua informasi hanya tersimpan di dalam memori dan tidak di disk. Seperti halnya /dev dan /proc, direktori /sys akan kosong pada sistem yang tidak sedang berjalan. Direktori ini berisi informasi tentang perangkat dan driver, modul kernel, struktur konfigurasi sistem, dan sebagainya.

sysfs digunakan baik untuk mengumpulkan informasi tentang sistem maupun untuk memodifikasi perilakunya saat berjalan. Dalam hal ini, sysfs mirip dengan /proc, tetapi lebih baru dan mengikuti standar ketat mengenai jenis entri yang dapat dikandungnya. Sebagai contoh, hampir semua pseudo-file di /sys hanya berisi satu baris atau satu nilai, berbeda dengan entri panjang yang dapat ditemukan di /proc.

/root

Direktori ini (dibaca "slash-root") adalah direktori home untuk pengguna root.

Akun root yang memiliki direktori ini hanya boleh digunakan untuk tindakan yang memerlukan hak akses superuser.


/sbin

Direktori ini berisi binary yang penting untuk proses booting, pemulihan, pemulihan kembali, dan/atau perbaikan, selain binary yang terdapat di direktori /bin. Binary dalam direktori ini juga harus dapat me-mount sistem file lain seperti /usr, /home, dan lokasi lainnya jika diperlukan, setelah sistem file root dipastikan dalam kondisi baik selama proses booting.

Program berikut seharusnya termasuk dalam direktori ini (jika subsistemnya terinstal):

fdisk, fsck, getty, halt, ifconfig, init, mkfs, mkswap, reboot, route, swapon, swapoff, update

$ ls -l /sbin

rwxrwxrwx 1 root root 8 Apr 23 2020 /sbin -> usr/sbin

Catatan: Seperti yang disebutkan sebelumnya, beberapa distribusi terbaru telah meninggalkan strategi pemisahan antara /sbin dan /usr/sbin (serta /bin dan /usr/bin) dan hanya menggunakan satu direktori dengan symbolic link untuk mempertahankan tampilan dua direktori.


/srv

Berisi file data untuk layanan tertentu yang berjalan di sistem.

Membantu pengguna dalam menemukan data yang terkait dengan layanan dengan lebih mudah.

Memastikan layanan yang memerlukan satu direktori untuk data hanya-baca, data yang dapat ditulis, dan skrip dapat berfungsi dengan baik.

Penamaan dan Struktur:

FHS tidak menetapkan aturan ketat untuk penamaan direktori di dalam /srv.

Praktik umum adalah menyusun /srv berdasarkan protokol yang digunakan, misalnya

/srv/www/      # Data server web (Apache, Nginx, dll.)  

/srv/ftp/      # Data FTP  

/srv/git/      # Repositori Git  

/srv/cvs/      # Repositori CVS  

/srv/rsync/    # Data Rsync  


  • Contoh Penggunaan:

  1. Hosting web: Menyimpan file situs web di dalam /srv/www/example.com/.
  2. Server FTP: Menyimpan file yang diunggah pengguna di dalam /srv/ftp/uploads/.
  3. Kontrol versi: Menyimpan repositori proyek di dalam /srv/git/project.git/.

  •   Mengapa Menggunakan /srv Daripada Direktori Lain?

  1. Lebih terstruktur dibandingkan dengan menyimpan file layanan di dalam /var/www/, /var/ftp/, dll.
  2. Memisahkan data layanan dari log sistem dan konfigurasi yang biasanya ada di /var.
  3. Membantu administrator dan pengguna dalam mengidentifikasi data yang terkait dengan layanan dengan lebih cepat.

/tmp 

Ringkasan tentang /tmp Directory

  • Fungsi: Direktori sementara yang dapat diakses oleh semua pengguna dan aplikasi.
  • Ketidakstabilan: File di /tmp tidak dapat diandalkan untuk tetap ada dalam waktu lama karena:
    • Beberapa distribusi menghapus file lebih dari 10 hari secara otomatis.
    • Beberapa distribusi (seperti Ubuntu) menghapus seluruh isi /tmp saat reboot.
    • Distribusi modern (seperti Fedora) menggunakan /tmp sebagai RAM disk (tmpfs), sehingga semua file dihapus saat sistem reboot.
  • Dampak Penggunaan:
    • Hindari menyimpan file besar di /tmp, karena pada sistem dengan tmpfs, file akan menghabiskan memori RAM dan bisa menyebabkan sistem crash.
    • Banyak aplikasi tetap menggunakan /tmp untuk file besar meskipun seharusnya tidak, karena pengguna sering tidak tahu cara mengonfigurasinya.
/usr

Fungsi: /usr adalah hierarki sekunder yang digunakan untuk menyimpan file yang tidak diperlukan saat sistem booting.
Pemisahan dari Root (/): /usr tidak harus berada dalam partisi yang sama dengan direktori root (/).
Berbagi Antar Host: Direktori /usr dapat dibagikan melalui jaringan ke beberapa host yang menggunakan arsitektur sistem yang sama.

Struktur dan Penggunaan:  
  - Software packages tidak boleh membuat subdirektori langsung di dalam `/usr`.  
  - Beberapa symbolic link mungkin ada untuk kompatibilitas.  
  - Biasanya bersifat read-only dan berisi binaries yang tidak diperlukan dalam mode single-user.  
  - Direktori `/usr/local/` digunakan untuk menyimpan binaries dan file lokal.  
  - Halaman manual (man pages) disimpan di `/usr/share/man`.  

- Perubahan dalam Distribusi Modern:  
  - Beberapa distribusi telah menghapus pemisahan tradisional antara `/bin`, `/sbin`, `/lib`, dan `/lib64` dari `/usr`.  
  - Sebagai gantinya, mereka menggunakan symbolic links untuk menggabungkan direktori ini.  
  - Pendekatan lama yang memungkinkan `/usr` berada di partisi terpisah dan dipasang setelah boot dianggap sudah usang.


/var

- Fungsi: Menyimpan data yang sering berubah selama operasi sistem.  
- Isi Direktori:  
  - File log (`/var/log/`)  
  - File dan direktori spool (`/var/spool/`) untuk mail, pencetakan, cron jobs  
  - File administratif  
  - File sementara dan cache  

- Karakteristik:  
  - Tidak dapat dibuat read-only, karena datanya selalu berubah.  
  - Keamanan: Disarankan untuk memisahkan `/var` ke partisi sendiri agar tidak mempengaruhi sistem jika penuh.





  
/run

- Fungsi: Menyimpan file sementara (transient files) yang berisi informasi runtime dan diperlukan sejak awal booting. File di `/run` tidak dipertahankan setelah reboot.  
- Implementasi:  
  - Dipasang sebagai tmpfs (RAM disk), seperti `/dev/shm`.  
  - Bersifat sementara dan hanya ada di memori (bukan disk fisik).  
- Perubahan dalam Sistem File:  
  - `/var/run` dan `/var/lock` kini hanya symbolic links ke `/run`.  
  - Beberapa distribusi mungkin mengarahkan direktori lain ke dalam `/run` sesuai kebijakan masing-masing.  
- Status Standar: Digunakan oleh banyak distribusi Linux, tapi belum secara resmi diterima dalam FHS.

processes

What Is a Program?

Definisi: Program adalah kumpulan instruksi yang dijalankan oleh komputer, dengan data internal dan eksternal untuk mendukung eksekusinya.

Data internal: Misalnya, teks dalam program untuk menampilkan pesan kepada pengguna.
Data eksternal: Misalnya, informasi dari database.
Cara Eksekusi:

Program bisa berupa instruksi tingkat mesin yang langsung dijalankan oleh CPU.
Bisa juga berupa perintah yang diinterpretasikan oleh program lain.
Bahasa Pemrograman: Program ditulis dalam bahasa seperti C, C++, Perl, dan lainnya.

Perintah Sistem: Perintah seperti ls, cat, dan rm adalah program mandiri yang tidak tergabung dalam kernel atau shell, tetapi memiliki file eksekusi tersendiri di disk.

What Is a Process?

Definisi: Proses adalah instance dari program yang sedang dieksekusi.
Status Proses: Dapat berada dalam berbagai kondisi, seperti running atau sleeping.

Identifikasi Proses:

PID (Process ID) → Identifikasi unik setiap proses.
PPID (Parent Process ID) → ID proses induk yang membuatnya.
PGID (Process Group ID) → ID grup proses yang sama.
Komponen Proses:

Kode program
Data dan variabel
File descriptors (akses file terbuka)
Environment variables
Manajemen Proses:

Proses dikontrol oleh scheduler dalam sistem operasi.
Kernel memiliki hak penuh untuk melakukan preemption (menghentikan atau menjadwalkan ulang proses).
Batasan PID:

Maksimum PID secara historis adalah 32768 (16-bit).
Nilai ini dapat diubah melalui /proc/sys/kernel/pid_max, terutama untuk server besar.
Ketika PID mencapai batas pid_max, sistem akan mengulang dari PID 300.

Process Attributes

Setiap proses memiliki beberapa atribut penting:

Program yang dieksekusi → Kode yang sedang berjalan.
Konteks (State) → Snapshot status CPU, memori, dan informasi lainnya.
Izin (Permissions) → Hak akses sesuai pengguna yang menjalankannya.
Sumber daya terkait (Associated Resources) → File, memori, dll.

Konteks Proses & Context Switching

Proses dapat disimpan dan dipulihkan saat dijadwalkan ulang oleh CPU.
Kernel menggunakan context switching untuk menyimpan dan mengembalikan status proses ketika CPU dialihkan ke proses lain.

Izin dan Setuid Programs

Proses memiliki izin berdasarkan pengguna yang menjalankannya.
Setuid Program (memiliki bit eksekusi "s") → Dijalankan dengan ID pengguna pemilik program, bukan pengguna yang menjalankannya.
Contoh Risiko Setuid: Jika setuid program dimiliki oleh root, program dapat memiliki akses yang berpotensi berbahaya.

Process Resource Isolation

Isolasi Proses

Saat proses dimulai, ia berjalan dalam ruang pengguna (user space) terpisah.
Tujuan: Keamanan & Stabilitas → Proses tidak dapat mengakses atau mengganggu proses lain secara langsung.

Akses ke Perangkat Keras

Proses tidak memiliki akses langsung ke perangkat keras.
Kernel mengelola perangkat keras dan bertindak sebagai perantara.
Untuk berinteraksi dengan perangkat keras, proses harus menggunakan system calls.

System Calls

Antarmuka utama antara aplikasi dan kernel.
Digunakan untuk tugas seperti membaca/menulis file, mengalokasikan memori, atau berkomunikasi dengan perangkat I/O.

Controlling Processes with ulimit

Pengertian ulimit

ulimit adalah perintah bawaan Bash untuk menampilkan atau mengatur batas sumber daya pada proses yang berjalan di dalam shell.
Menjalankan ulimit -a akan menampilkan semua batas yang diterapkan pada sistem.

Tujuan Pengaturan ulimit

Membatasi penggunaan sumber daya → Mencegah pengguna atau proses menghabiskan memori, waktu CPU, atau jumlah proses yang berjalan.
Memperluas batasan → Misalnya, server yang menangani banyak klien mungkin perlu menaikkan batas jumlah file terbuka (defaultnya 1024 bisa tidak cukup).

Dua Jenis Batas (ulimit)

Hard Limit (-H) → Maksimum nilai yang hanya bisa dinaikkan oleh root.

$ ulimit -H -n
4096

Soft Limit (-S) → Nilai yang dapat diubah oleh pengguna, tetapi tidak bisa melebihi hard limit.

$ ulimit -S -n
1024

Creating Processes

Forking (Pembuatan Proses Baru)

Linux selalu menciptakan proses baru melalui mekanisme fork.
Forking: Proses induk (parent process) tetap berjalan, sementara proses anak (child process) dibuat dan berjalan secara terpisah.

Fork dan Exec

Setelah fork, sering kali dilakukan exec:
Parent process dihentikan.
Child process mewarisi PID (Process ID) dari parent dan menjalankan program baru.
Istilah "fork and exec" sering digunakan bersama karena ini adalah pola umum dalam Linux.

Contoh Penggunaan Fork dan Threading

Server web yang menangani banyak klien bisa:
Membuat proses baru (fork) setiap kali ada koneksi klien.
Menggunakan thread baru dalam proses yang sama.
Di Linux, membuat proses baru atau thread hampir setara dalam hal kecepatan dan penggunaan sumber daya.

Proses Internal dan Eksternal dalam Kernel

Proses internal kernel:
Digunakan untuk tugas pemeliharaan sistem, seperti flushing buffer ke disk, load balancing CPU, dan menangani device drivers.
Biasanya berjalan selama sistem aktif dan hanya bekerja saat diperlukan.

Proses eksternal:
Berjalan di user space seperti aplikasi biasa.
Namun, dijalankan langsung oleh kernel dan biasanya berumur pendek.

Creating Processes in a Command Shell

Proses Eksekusi Perintah dalam Bash

  • Pengguna menjalankan perintah → Shell membaca perintah yang dimasukkan.
  • Fork: Membuat Proses Baru → Shell membuat proses anak (child process) dari proses login pengguna.
  • Parent Shell Tidur → Proses induk tidur menggunakan wait system call.
  • Exec: Memuat Perintah ke Memori Proses Anak →Program dari perintah tersebut menggantikan kode bash dalam memori proses anak menggunakan exec system call.
  • Eksekusi Perintah & Proses Anak Berakhir → Setelah perintah selesai, proses anak mati menggunakan exit system call.
  • Parent Shell Terbangun → Proses induk kembali aktif saat proses anak mati.
  • Shell Memberikan Prompt Baru → Shell siap menerima perintah berikutnya.
Eksekusi di Latar Belakang vs. Latar Depan

  • Jika perintah dijalankan dengan & (background process), shell tidak menunggu dan langsung memberikan prompt baru.
  • Jika perintah berjalan di foreground, shell menunggu sampai proses selesai atau dihentikan dengan sinyal (misalnya Ctrl+Z).
Perintah Built-in vs. Eksternal

  • Perintah built-in (misal echo, kill): Dieksekusi langsung oleh shell tanpa fork atau exec.
  • Perintah eksternal (misal ls, grep): Menggunakan fork dan exec untuk membuat dan menjalankan proses baru.
Process States


Status Utama Proses dalam Linux
  • Running (Berjalan)
  1. Proses sedang dieksekusi pada CPU atau berada dalam run queue, menunggu jatah waktu eksekusi.
  2. Scheduler akan menentukan kapan proses ini dijalankan atau dipindahkan ke CPU lain jika ada yang kosong.
  • Sleeping (Menunggu I/O)
  1. Proses menunggu permintaan I/O (misal membaca file atau menunggu jaringan).
  2. Setelah I/O selesai, kernel membangunkan proses dan memasukkannya kembali ke run queue.
  • Stopped (Dihentikan Sementara)
  1. Proses dihentikan sementara (misal saat debugging atau pengguna menekan Ctrl+Z).
  2. Bisa dilanjutkan kembali dengan fg (foreground) atau bg (background).
  • Zombie (Defunct Process)
  1. Proses yang telah berhenti tetapi belum di-reap oleh parent process.
  2. Hanya menyimpan exit status dan masih ada di process table.
  3. Jika parent mati, init (PID 1) atau kthreadd (PID 2) akan mengadopsinya.

Mode Eksekusi Proses
  • User Mode (Ring 3 - Mode Pengguna)
  1. Proses berjalan dalam lingkungan terbatas, tidak dapat mengakses langsung perangkat keras.
  2. Keamanan & isolasi sumber daya:Setiap proses memiliki memori terisolasi, kecuali jika berbagi melalui shared memory. Bahkan proses yang dijalankan oleh root tetap dalam user mode, kecuali saat memanggil system call.
  • System Mode (Ring 0 - Kernel Mode)
  1. CPU memiliki akses penuh ke perangkat keras (memori, disk, jaringan, dll.).
  2. Proses user tidak bisa langsung menjalankan instruksi dalam kernel mode.
  3. Masuk ke kernel mode hanya melalui system call, misalnya saat:Membaca/menulis file,Membuat proses baru (fork) dan Mengakses perangkat keras.

System Call & Context Switch
  • System call: Perintah khusus untuk berpindah dari user mode ke kernel mode.
  • Context switch: Perubahan dari satu proses ke proses lain, atau dari user mode ke kernel mode, yang terjadi saat: Proses membutuhkan akses ke sumber daya sistem (misalnya membaca file). Kernel menangani interrupts atau melakukan scheduling. Proses digantikan sementara oleh proses lain dalam sistem multitasking.

Daemons

Karakteristik Daemon
  • Efisien: Hanya berjalan saat diperlukan, menghemat sumber daya.
  • Otomatis: Banyak daemon dimulai saat booting.
  • Penamaan: Umumnya diakhiri dengan d, misalnya httpd, crond, systemd-udevd.
  • Tanpa Terminal: Tidak memiliki kontrol terminal atau input/output standar.
  • Keamanan: Kadang lebih aman karena bekerja di background tanpa interaksi langsung.
  • Pemicu Berjalan: Event-driven: Merespon event eksternal (contoh: systemd-udevd).Time-based: Berjalan berdasarkan waktu (contoh: crond).

Contoh Daemon Umum
  • httpd – Web server Apache.
  • crond – Menjalankan tugas terjadwal (cron jobs).
  • systemd-udevd – Mengelola perangkat keras saat terhubung.
  • vsftpd – Server FTP.
  • lpd – Mengatur pencetakan (printer daemon).
  • xinetd – Mengelola layanan berbasis jaringan berdasarkan permintaan
Set Priorities and Modifying the Nice Value

Konsep Niceness
📌 Niceness menentukan seberapa "baik hati" sebuah proses dalam berbagi CPU.
📌 Range nilai niceness:
  • -20 (prioritas tertinggi)
  • +19 (prioritas terendah)
📌 Semakin tinggi nilai nice → semakin rendah prioritasnya.

Menjalankan Proses dengan Nice
Gunakan perintah nice untuk menetapkan nilai nice saat menjalankan program:

nice -n 5 command_name

Jika tidak diberikan nilai, default +10.
 Untuk melihat nilai nice saat ini:

nice

Mengubah Prioritas Proses dengan Renice
renice digunakan untuk mengubah nilai nice dari proses yang sudah berjalan.

Contoh:
✅ Meningkatkan nilai nice (menurunkan prioritas) ke 5 untuk proses dengan PID 20003

renice +5 -p 20003

✅ Menurunkan nilai nice (meningkatkan prioritas) ke -10 untuk proses dengan PID 12345 (hanya bisa dilakukan oleh root)

sudo renice -10 -p 12345

Hak Akses
🔹 User biasa hanya bisa meningkatkan nilai nice (menurunkan prioritas).
🔹 Hanya root yang bisa menurunkan nilai nice (meningkatkan prioritas).
🔹 Untuk memberi hak ke user biasa agar bisa menurunkan nilai nice, ubah /etc/security/limits.conf.

Static and Shared Libraries

Program dibangun menggunakan pustaka kode yang dikembangkan untuk berbagai tujuan dan dapat digunakan kembali dalam banyak konteks. Terdapat dua jenis pustaka, yaitu static dan shared. Pustaka static menyertakan kode fungsi langsung ke dalam program saat proses kompilasi, sehingga tidak berubah meskipun pustaka diperbarui. Sementara itu, pustaka shared dimuat ke dalam program saat runtime, sehingga jika pustaka diperbarui, program akan langsung menggunakan versi terbaru. Menggunakan pustaka shared lebih efisien karena dapat dipakai oleh banyak aplikasi sekaligus, sehingga menghemat penggunaan memori, mengurangi ukuran file eksekusi, dan mempercepat waktu pemuatan aplikasi. Shared Libraries juga dikenal sebagai Dynamic Link Libraries (DLLs). Untuk melihat dependensi pustaka shared dari suatu program di Linux, dapat digunakan perintah `ldd /bin/ls`, sedangkan untuk melihat daftar pustaka shared yang tersedia di sistem, dapat menggunakan perintah `ldconfig -p`.

Signals

Introduction to Signals in Linux  

Signals digunakan untuk mengirim notifikasi ke proses agar dapat merespons berbagai peristiwa yang sering kali tidak terduga. Peristiwa ini bisa berasal dari dalam proses itu sendiri atau dari sumber eksternal, seperti proses lain. Beberapa sinyal bersifat fatal dan menyebabkan proses langsung terhenti, namun dalam beberapa kasus, proses dapat menangani sinyal tertentu agar tidak berakhir secara tiba-tiba. Selain itu, ada juga sinyal yang hanya bersifat informatif atau meminta tindakan tertentu tanpa menghentikan proses. Di Linux, pengguna dapat mengirim sinyal ke proses menggunakan perintah kill, killall, dan pkill.  

Tujuan Pembelajaran  

Setelah mempelajari bab ini, Anda akan dapat:  

1. Menjelaskan apa itu sinyal dan bagaimana cara kerjanya.  
2. Membahas berbagai jenis sinyal yang tersedia di Linux.  
3. Menggunakan perintah kill, killall, dan pkill untuk mengirim sinyal melalui command line.

What Are Signals?

Sinyal adalah salah satu metode komunikasi antarproses (IPC) tertua yang digunakan untuk memberi tahu proses tentang kejadian asinkron atau pengecualian. Asinkron berarti proses yang menerima sinyal mungkin tidak mengharapkan kejadian tersebut terjadi atau mengharapkannya tetapi tidak tahu kapan kemungkinan besar akan terjadi. Misalnya, jika seorang pengguna ingin menghentikan suatu program yang sedang berjalan, mereka dapat mengirim sinyal melalui kernel untuk menginterupsi dan menghentikan proses tersebut.  

Ada dua jalur utama pengiriman sinyal ke suatu proses: pertama, dari kernel ke proses pengguna akibat pengecualian atau kesalahan pemrograman; kedua, dari proses pengguna yang mengirim sinyal melalui sistem panggilan ke kernel, yang kemudian meneruskannya ke proses pengguna lain, termasuk dirinya sendiri. Sinyal hanya dapat dikirim antara proses yang dimiliki oleh pengguna yang sama atau dari proses yang dimiliki oleh superuser ke proses mana pun.  

Ketika suatu proses menerima sinyal, responsnya bergantung pada bagaimana program tersebut dirancang—bisa menangani sinyal dengan tindakan khusus atau hanya mengikuti respons default sistem. Namun, ada dua sinyal, SIGKILL (#9) dan SIGSTOP (#19), yang tidak dapat ditangani oleh program dan akan selalu menyebabkan proses berakhir.

types of signals

Terdapat berbagai jenis sinyal, dan setiap sinyal yang dikirim oleh kernel menunjukkan jenis kejadian atau pengecualian yang terjadi. Secara umum, sinyal digunakan untuk menangani dua hal utama: pengecualian yang terdeteksi oleh perangkat keras (seperti referensi memori ilegal) dan pengecualian yang dihasilkan oleh lingkungan (seperti kematian prematur suatu proses dari terminal pengguna).  

Untuk melihat daftar lengkap sinyal dalam Linux beserta nomor identifikasinya, perintah kill -l dapat digunakan. Sinyal dalam Linux memiliki makna tertentu yang menunjukkan kejadian yang menyebabkan sinyal dikirim ke suatu proses, terutama ketika dikirim dari kernel.  

Sinyal yang dimulai dari SIGRTMIN disebut sebagai sinyal real-time, yang merupakan penambahan terbaru dalam sistem sinyal Linux. Sinyal ini tidak memiliki tujuan yang telah ditetapkan sebelumnya dan berbeda dari sinyal normal karena dapat diantrikan dan ditangani dalam urutan FIFO (First In, First Out).  

Meskipun pengguna dapat mengirimkan jenis sinyal apa pun ke proses milik mereka, makna yang terkait dengan nomor atau jenis sinyal mungkin tidak selalu sesuai dengan tujuan aslinya dan dapat digunakan sesuai kebutuhan proses. Untuk informasi lebih lanjut, pengguna dapat mengetikkan perintah man 7 signal untuk membaca dokumentasi lebih rinci mengenai sinyal dalam Linux.

kill

Karena suatu proses tidak dapat mengirim sinyal langsung ke proses lain, ia harus meminta kernel untuk mengirimkan sinyal tersebut. Pengguna, termasuk superuser, dapat mengirim sinyal ke proses lain menggunakan perintah kill.  

Meskipun sering digunakan untuk menghentikan proses, kill sebenarnya dirancang untuk mengirim sinyal, bukan hanya untuk membunuh proses, sehingga namanya bisa dianggap kurang tepat.  

Secara default, kill mengirimkan sinyal SIGTERM (#15), yang dapat ditangani atau diabaikan oleh proses penerima agar proses tersebut memiliki kesempatan untuk melakukan pembersihan sebelum berhenti. Jika proses mengabaikan SIGTERM, pengguna biasanya dapat mengirim sinyal SIGKILL (#9) yang tidak dapat diabaikan, sehingga proses akan langsung dihentikan.

Package Management Systems

Learning Objectives 

Pada akhir bab ini, Anda diharapkan mampu:  

- Menjelaskan mengapa sistem manajemen paket perangkat lunak diperlukan.  
- Memahami fungsi paket biner dan paket sumber.  
- Menyebutkan sistem manajemen paket utama yang tersedia.  
- Memahami alasan perlunya dua tingkat utilitas: satu untuk menangani paket secara langsung dan satu lagi untuk menangani dependensi antar paket.  
- Menjelaskan bagaimana membuat paket sendiri dapat meningkatkan kontrol terhadap isi perangkat lunak dan cara instalasinya.  
- Memahami peran sistem kontrol sumber, khususnya Git.

Why Use Packages?  

Sistem manajemen paket perangkat lunak dianggap sebagai salah satu kemajuan terbesar yang dibawa Linux ke lingkungan TI perusahaan. Dengan melacak file dan metadata secara otomatis, sistem manajemen paket memungkinkan administrator sistem mengelola instalasi dalam skala besar tanpa perlu intervensi manual pada setiap sistem. Beberapa fitur utamanya meliputi:  

- Otomatisasi: Tidak perlu instalasi dan pembaruan manual.  
- Skalabilitas: Instal paket pada satu sistem atau hingga 10.000 sistem.  
- Repeatability & Predictability: Proses yang dapat diulang dan diprediksi.  
- Keamanan & Audit: Memastikan integritas dan keamanan sistem.

Software Packaging Concepts

Sistem manajemen paket menyediakan alat bagi administrator sistem untuk mengotomatiskan proses instalasi, pembaruan, konfigurasi, dan penghapusan paket perangkat lunak dengan cara yang terprediksi dan konsisten. Sistem ini bekerja dengan cara:  

- Mengumpulkan dan mengompresi file perangkat lunak terkait ke dalam satu paket (arsip), yang mungkin memiliki dependensi pada paket lain.  
- Memungkinkan instalasi atau penghapusan perangkat lunak dengan mudah.  
- Memverifikasi integritas file melalui basis data internal.  
- Mengautentikasi asal paket.  
- Memfasilitasi pembaruan perangkat lunak.  
- Mengelompokkan paket berdasarkan fitur logis.  
- Mengelola dependensi antar paket.  

Setiap paket dapat berisi file eksekusi, file data, dokumentasi, skrip instalasi, dan file konfigurasi, serta atribut metadata seperti nomor versi, checksum, informasi vendor, dependensi, dan deskripsi. Saat paket diinstal, semua informasi tersebut disimpan dalam basis data internal yang dapat digunakan untuk memeriksa status versi dan pembaruan dengan mudah.

Package Types
Paket perangkat lunak tersedia dalam beberapa jenis, masing-masing dengan tujuan spesifik:
  • Binary Packages: Berisi file yang siap digunakan, termasuk file eksekusi dan pustaka, tetapi bergantung pada arsitektur tertentu.
  • Source Packages: Digunakan untuk membangun paket biner; dari satu paket sumber, dapat dihasilkan paket biner untuk berbagai arsitektur.
  • Architecture-independent Packages: Berisi file dan skrip yang berjalan di interpreter tanpa bergantung pada arsitektur tertentu, serta dokumentasi dan file konfigurasi.
  • Meta-packages: Mengelompokkan beberapa paket terkait yang dibutuhkan untuk menginstal subsistem besar seperti lingkungan desktop atau suite perkantoran.

Available Package Management Systems

RPM (Red Hat Package Manager) adalah sistem manajemen paket yang digunakan oleh distribusi berbasis Red Hat, seperti Fedora, CentOS, dan RHEL. Sistem ini memungkinkan instalasi, pembaruan, dan penghapusan perangkat lunak dengan lebih mudah.

Keunggulan utama RPM adalah kemampuannya dalam mengelola paket perangkat lunak dengan efisien, baik bagi administrator sistem maupun pengembang perangkat lunak. RPM membantu dalam memastikan file yang terinstal berasal dari paket yang benar, memudahkan penghapusan paket, serta mendukung pengelolaan dokumentasi secara terpisah.

Bagi pengembang, RPM memungkinkan mereka menyimpan perubahan yang diperlukan untuk membangun perangkat lunak tanpa mengganggu kode sumber aslinya. Ini sangat berguna dalam menyesuaikan perangkat lunak untuk berbagai sistem Linux dan arsitektur perangkat keras yang berbeda.

Paket RPM memiliki struktur penamaan yang terstandarisasi, di mana formatnya mencakup nama paket, versi, rilis, distribusi atau repositori, serta arsitektur sistem. Database RPM secara default disimpan di /var/lib/rpm dalam bentuk Berkeley DB hash files, yang tidak boleh diedit secara manual dan hanya dapat diperbarui menggunakan perintah rpm. Untuk mengakses database dari sistem lain, pengguna dapat menggunakan opsi --dbpath, sedangkan opsi --rebuilddb digunakan untuk memperbaiki indeks database dari paket yang telah terinstal.  

RPM juga memiliki banyak program pembantu yang tersimpan di /usr/lib/rpm, yang jumlahnya bisa mencapai puluhan, seperti dalam sistem RHEL 8 yang memiliki sekitar 74 program pembantu. Pengguna dapat membuat file konfigurasi rpmrc untuk menetapkan pengaturan default RPM, yang secara otomatis akan dicari dalam urutan /usr/lib/rpm/rpmrc, /etc/rpmrc, dan ~/.rpmrc. Semua file ini akan dibaca oleh RPM, bukan hanya yang pertama ditemukan, dan jika diperlukan, pengguna dapat menentukan file konfigurasi alternatif menggunakan opsi --rcfile.

Perintah kueri dalam RPM menggunakan opsi -q yang dapat dikombinasikan dengan beberapa opsi tambahan, seperti -f untuk menentukan asal paket dari sebuah file, -l untuk menampilkan isi paket, -a untuk melihat semua paket yang terinstal, -i untuk menampilkan informasi paket, dan -p untuk menjalankan kueri pada file paket, bukan pada database paket. Selain itu, terdapat opsi --requires yang menampilkan daftar dependensi suatu paket dan --whatprovides yang menunjukkan paket mana yang menyediakan dependensi tertentu, sehingga memudahkan manajemen paket dalam sistem Linux.  

Untuk memastikan integritas paket yang terinstal, RPM menyediakan opsi -V, yang memungkinkan pengguna memverifikasi apakah file dalam suatu paket masih sesuai dengan database sistem. Perintah rpm -Va dapat digunakan untuk memverifikasi semua paket yang terinstal, dan hasil verifikasi akan menampilkan simbol tertentu seperti S untuk perbedaan ukuran file, M untuk perubahan mode atau izin file, 5 untuk perbedaan checksum MD5, D untuk perbedaan nomor mayor/minor perangkat, L untuk perbedaan jalur simbolik, U untuk perbedaan kepemilikan pengguna, G untuk perbedaan kepemilikan grup, dan T untuk perbedaan waktu modifikasi file.  

Jika perintah rpm -V tidak menghasilkan output, berarti paket dalam kondisi baik, tetapi jika terdapat perbedaan, output akan menunjukkan karakter yang sesuai dengan perbedaan yang terdeteksi. Sebagai contoh, jika ukuran file, checksum, dan waktu modifikasi file logrotate.conf berubah, output akan menunjukkan simbol S.5....T. diikuti dengan path file yang bermasalah. Jika sebuah file hilang karena dipindahkan secara manual, output akan menunjukkan status missing untuk file tersebut. Dengan fitur ini, administrator sistem dapat dengan mudah mengidentifikasi perubahan yang tidak diinginkan pada paket yang terinstal dan mengambil langkah yang diperlukan untuk memperbaikinya.

Proses instalasi paket dengan RPM dilakukan menggunakan perintah rpm -ivh <nama_paket>.rpm, di mana opsi -i  digunakan untuk instalasi, -v untuk menampilkan proses secara detail, dan -h untuk menampilkan tanda hash sebagai indikator progres. Saat menginstal paket, RPM melakukan berbagai tugas seperti pemeriksaan dependensi untuk memastikan semua paket yang diperlukan telah terinstal, pemeriksaan konflik untuk menghindari instalasi paket yang sudah ada atau versi lebih lama, serta mengeksekusi perintah yang dibutuhkan sebelum dan sesudah instalasi. Selain itu, RPM juga menangani file konfigurasi dengan menyimpan versi lama sebagai .rpmsave, memastikan atribut file yang benar seperti izin akses dan kepemilikan, serta memperbarui database sistem untuk mencatat perubahan yang terjadi.  

Untuk menghapus paket, digunakan perintah rpm -e <nama_paket>, tetapi jika paket tersebut memiliki dependensi yang masih dibutuhkan oleh paket lain, maka proses penghapusan akan gagal. Oleh karena itu, opsi --test dapat digunakan untuk memeriksa kemungkinan kegagalan sebelum melakukan uninstall. Namun, penting untuk tidak menghapus paket RPM itu sendiri, karena hal ini dapat menyebabkan sistem tidak dapat digunakan dan hanya dapat diperbaiki dengan menginstal ulang sistem operasi atau masuk ke mode pemulihan.  

Pembaruan paket dalam RPM dilakukan dengan perintah rpm -Uvh <nama_paket>.rpm, yang akan menggantikan versi lama dengan versi baru sambil mempertahankan file konfigurasi lama dengan ekstensi .rpmsave. Jika paket belum terinstal sebelumnya, maka perintah ini akan menginstalnya tanpa menimbulkan kesalahan. Untuk melakukan downgrade ke versi lebih lama, digunakan tambahan opsi --oldpackage. Selain itu, terdapat opsi -F dalam perintah rpm -Fvh .rpm yang memungkinkan proses freshening, yaitu memperbarui hanya paket yang sudah terinstal tanpa menginstal paket baru, sehingga sangat berguna saat menerapkan banyak pembaruan sekaligus tanpa mengubah konfigurasi sistem yang ada.

Untuk memperbarui kernel Linux, diperlukan reboot agar perubahan dapat diterapkan. Namun, tidak disarankan menggunakan opsi -U (upgrade) karena opsi ini akan menghapus kernel lama yang sedang berjalan. Jika terjadi masalah setelah reboot, sistem tidak dapat kembali ke kernel sebelumnya karena sudah dihapus.Sebagai gantinya, gunakan opsi -i (install) agar kernel baru dapat diinstal tanpa menghapus yang lama, sehingga pengguna dapat memilih kernel saat booting. Pada sistem berbasis Red Hat, perintah yang digunakan adalah sudo rpm -ivh kernel-{versi}.{arsitektur}.rpm. Setelah instalasi, konfigurasi GRUB akan diperbarui secara otomatis untuk menjadikan kernel baru sebagai pilihan default saat booting, kecuali sistem dikonfigurasi berbeda. Setelah pengujian kernel baru, pengguna dapat menghapus kernel lama jika diinginkan, tetapi ini tidak wajib. Jika ruang penyimpanan mencukupi, disarankan untuk menyimpan satu atau lebih kernel lama sebagai cadangan jika terjadi masalah pada kernel terbaru.

RPM2Archive dan RPM2Cpio adalah alat yang digunakan untuk mengelola arsip dari paket RPM, di mana RPM2Archive mengonversi file paket RPM menjadi arsip tar, sedangkan RPM2Cpio digunakan untuk mengonversi paket RPM ke arsip cpio atau mengekstrak file tertentu. DPKG merupakan sistem manajemen paket untuk Debian dan turunannya, seperti Ubuntu, yang menggunakan file berformat .deb dengan database tersimpan di  /var/lib/dpkg, serta memiliki berbagai perintah untuk menginstal, memperbarui, dan menghapus paket. DNF dan YUM adalah alat manajemen paket pada sistem berbasis RPM seperti Fedora dan CentOS yang berfungsi untuk mengelola repositori, menyelesaikan dependensi, serta memperbarui paket secara efisien. ZYPPER, yang digunakan pada openSUSE, memiliki fungsi serupa dengan DNF dan APT, memungkinkan pengguna untuk menginstal, memperbarui, dan menghapus paket, serta menambahkan repositori baru. Sementara itu, APT (Advanced Packaging Tool) adalah sistem manajemen paket utama pada distribusi berbasis Debian, seperti Ubuntu, yang menangani instalasi dan pembaruan paket secara otomatis dengan menyelesaikan dependensi. Dengan demikian, setiap sistem manajemen paket memiliki fungsinya masing-masing sesuai dengan jenis distribusi Linux yang digunakan.

System Monitoring
Tujuan Pembelajaran  
Pada akhir bab ini, Anda diharapkan mampu:  
1. Memahami konsep inventarisasi serta mengenali berbagai alat pemantauan sistem yang tersedia.  
2. Mengetahui lokasi penyimpanan file log sistem serta dapat menganalisis file log yang paling penting.  
3. Menggunakan pseudo-filesystem `/proc` dan `/sys` untuk mengakses informasi sistem secara dinamis.  
4. Menggunakan perintah sar untuk mengumpulkan data aktivitas dan kinerja sistem serta membuat laporan yang mudah dibaca oleh manusia.

Monitoring Tools

Dalam kursus ini, kita akan fokus pada alat pemantauan sistem berbasis command line, meskipun ada alat grafis seperti gnome-system-monitor dan ksysguard.  

Sebagian besar distribusi Linux sudah memiliki alat pemantauan kinerja dan profiling, yang banyak di antaranya menggunakan pseudo-filesystem `/proc` dan `/sys`. Kedua sistem ini menyimpan informasi sistem dan memungkinkan perubahan perilaku sistem dengan akses root user.  

Pseudo-filesystem ini sepenuhnya berada di memori, sehingga tidak akan ditemukan dalam partisi disk saat sistem tidak berjalan. Informasinya hanya diperbarui saat diakses, tanpa polling berkala.

 Melihat Status Proses dengan   

Perintah ps digunakan untuk menampilkan informasi tentang proses yang sedang berjalan di sistem Linux. Informasi ini berasal dari direktori  /proc, yang menyimpan data terkait proses.  

Contoh Penggunaan ps:  
- `ps aux` → Menampilkan semua proses beserta detailnya.  
- `ps -elf` → Menampilkan proses dalam format yang lebih lengkap.  
- `ps -eL` → Menampilkan semua proses termasuk thread yang berjalan.  
- `ps -C "bash"` → Menampilkan proses yang menjalankan perintah tertentu, seperti bash.  

 Jenis Opsi dalam ps:  
- UNIX options → Dimulai dengan tanda "-" dan dapat digabungkan.  
- BSD options → Tidak menggunakan tanda "-", tetapi dapat dikombinasikan.  
- GNU long options → Dimulai dengan "--" dan memiliki nama yang lebih panjang.  

Karena banyaknya opsi yang tersedia, admin sistem biasanya hanya menggunakan kombinasi yang paling umum digunakan.  

 Menyesuaikan Output ps  
Opsi `-o` memungkinkan pengguna menampilkan informasi spesifik, seperti:  
- pid → ID proses  
- uid → ID pengguna  
- cmd → Perintah yang dijalankan  
- cputime → Waktu penggunaan CPU  
- pmem → Persentase penggunaan memori  

Untuk daftar opsi lebih lengkap, pengguna dapat melihat halaman manual dengan menjalankan perintah man ps.

top

Perintah top digunakan untuk menampilkan daftar proses yang sedang berjalan, dengan urutan berdasarkan penggunaan CPU tertinggi secara default.

Fitur Utama top:
Menampilkan proses yang aktif secara real-time.
Memperbarui data secara otomatis setiap 5 detik (interval ini bisa diubah).
Dapat dihentikan dengan menekan Ctrl + C.
Interaksi dengan top:
Tekan "k" → Menghentikan proses dengan memasukkan PID dan nomor sinyal.
Tekan "h" → Menampilkan daftar tombol pintasan yang tersedia.
Perintah top memiliki berbagai opsi yang dapat dikustomisasi sesuai dengan kebutuhan pengguna.

htop: Monitoring dan Pengelolaan Proses Interaktif  

htop  adalah alat untuk memantau dan mengelola proses sistem secara interaktif, mirip dengan
top, tetapi lebih fleksibel dan memiliki tampilan yang lebih intuitif.  

Keunggulan htop:  
- Menampilkan seluruh proses, bukan hanya yang menggunakan sumber daya terbesar.  
- Menampilkan proses dalam bentuk pohon untuk memudahkan melihat hubungan antara proses induk dan anak.  
- Menggunakan warna untuk memperjelas statistik penggunaan sumber daya.  

Cara Instalasi htop:  
- Ubuntu/Debian → sudo apt-get install htop  
- Fedora → sudo dnf install htop  
- CentOS:  
  bash
  sudo yum install epel-release  
  sudo yum install htop  
  ```  

Fitur Utama htop:  
- Uptime → Lama waktu sistem berjalan.  
- Load Average → Rata-rata beban sistem dalam periode waktu tertentu.  
- PID (Process ID) → ID unik setiap proses.  
- Process Tree → Menampilkan hierarki proses induk dan anak.  
- User → Pemilik proses.  
- State (S) → Status proses (Running, Sleep, Zombie, dll.).  
- Process Time → Waktu CPU yang digunakan oleh proses.  
- Niceness & Priority → Prioritas eksekusi proses (-20 tertinggi, 19 terendah).  
- Memory Usage → Penggunaan memori dengan indikator warna:  
  - Hijau → Memori yang sedang digunakan.  
  - Biru → Buffer.  
  - Oranye → Cache.

Lebih Lanjut tentang /proc  

/proc adalah filesystem virtual yang memberikan akses ke informasi sistem dan kernel. Direktori ini menyimpan data mengenai proses yang sedang berjalan.  

Struktur /proc:  
- Setiap proses yang aktif memiliki subdirektori dengan nama sesuai PID (Process ID).  
- /proc/self merujuk pada proses yang sedang dieksekusi oleh terminal saat ini.  
- Beberapa file di dalam /proc dapat dimodifikasi untuk mengubah pengaturan sistem.  

Pemantauan Memori  

Seiring perkembangan sistem, kebutuhan akan memori meningkat, meskipun harga RAM semakin murah dan kinerjanya membaik. Namun, sering kali kinerja sistem terganggu akibat keterbatasan memori, menyebabkan CPU dan I/O harus menunggu pemrosesan data.  

Memantau dan mengoptimalkan memori bisa menjadi tantangan karena keterkaitan antara memori dan I/O perubahan pada satu aspek dapat memengaruhi kinerja yang lain.  

Untuk mengecek penggunaan memori, gunakan perintah:  

free -a

Perintah ini menampilkan informasi mengenai total, penggunaan, dan sisa memori, baik RAM maupun swap.



/proc/meminfo

Pseudofile /proc/meminfo berisi banyak informasi tentang bagaimana memori digunakan



vmstat: Pemantauan Sistem di Linux

vmstat adalah alat serbaguna yang digunakan untuk memantau memori, paging, I/O, aktivitas prosesor, dan proses di sistem Linux.

Cara Menggunakan vmstat
Format umum:

vmstat [opsi] [interval] [jumlah]

Interval → Waktu jeda (dalam detik) antara setiap laporan.
Jumlah → Berapa kali laporan diulang. Jika tidak ditentukan, laporan akan terus berjalan hingga dihentikan dengan Ctrl + C.
Contoh Penggunaan

vmstat 2 4

Perintah ini akan menampilkan statistik setiap 2 detik, sebanyak 4 kali.


Sistem Log di Linux 

Log sistem memiliki peran penting dalam pemantauan dan troubleshooting di Linux. Berbagai file log disimpan di /var/log, meskipun lokasi spesifiknya dapat bervariasi tergantung pada distribusi yang digunakan.  

Pengelolaan Log  
- syslogd atau rsyslogd digunakan untuk menangani pencatatan log.  
- Sistem berbasis systemd dapat menggunakan journalctl untuk mengelola log.  

Melihat Log Secara Langsung  
- Pada sistem berbasis RHEL, gunakan:  
  
  sudo tail -f /var/log/messages
    
- Untuk Ubuntu, gunakan:  
  
  sudo tail -f /var/log/syslog
    
- Untuk melihat pesan kernel secara real-time:  
  
  dmesg -w
    

Akses Log melalui Antarmuka Grafis  
Jika menggunakan GNOME, log dapat dilihat melalui menu System Log atau Log File Viewer.  

Pengelolaan Ukuran Log  
Agar ukuran file log tidak terus membesar, sistem menggunakan logrotate, yang secara otomatis mengarsipkan dan mengelola log lama berdasarkan konfigurasi di /etc/logrotate.conf.

I/O Monitoring

 I/O Monitoring and risk bottlenecks 

Masalah kinerja disk sering kali dipengaruhi oleh faktor lain, seperti keterbatasan memori atau jaringan, sehingga sulit menentukan penyebab utamanya.

Sebuah sistem dikatakan I/O-bound jika CPU sering menganggur karena menunggu proses I/O selesai atau jaringan mengalami keterlambatan akibat buffer yang penuh. Namun, dalam beberapa kasus, masalah yang tampak seperti kekurangan memori sebenarnya disebabkan oleh I/O yang lambat.

Untuk mengidentifikasi dan mengatasi hambatan pada disk, diperlukan pemantauan real-time serta pelacakan yang akurat. Namun, jika masalah jarang terjadi, mendeteksinya bisa menjadi tantangan. Karena banyak faktor yang berpengaruh, penyetelan I/O menjadi proses yang kompleks.

Iotop

iostat adalah alat yang digunakan untuk memantau aktivitas perangkat I/O pada sistem. Dengan perintah ini, pengguna dapat melihat statistik seperti transaksi I/O per detik (tps), jumlah blok yang dibaca dan ditulis, serta informasi lainnya berdasarkan partisi disk.

Opsi Penting dalam iostat:
-k → Menampilkan hasil dalam KB.
-m → Menampilkan hasil dalam MB.
-N → Menampilkan data berdasarkan nama perangkat.
-x → Memberikan laporan yang lebih rinci.
Jika persentase penggunaan mendekati 100%, ini menandakan bahwa sistem mengalami beban tinggi atau kejenuhan I/O.

Linux Filesystems and The VPS

Filesystem Basics

Sistem berkas (filesystem) memungkinkan program aplikasi mengakses dan menyimpan data tanpa perlu berinteraksi langsung dengan lokasi fisik penyimpanan.  

Konsep Dasar Sistem Berkas 

- Abstraksi: Nama berkas berfungsi sebagai abstraksi yang menyembunyikan detail operasi I/O fisik. Menulis langsung ke disk tanpa sistem berkas berisiko tinggi dan biasanya hanya dilakukan oleh perangkat lunak sistem tingkat rendah.  
- Struktur Hirarki: Sistem berkas pada sistem UNIX-like berbentuk pohon, di mana direktori dapat berisi berkas maupun subdirektori lainnya. Semua elemen dalam struktur ini berada di bawah direktori akar.  
- Filesystem Lokal: Umumnya berada dalam partisi disk, baik fisik maupun logis (melalui Logical Volume Manager/LVM). Berbagai filesystem dapat disusun dalam satu struktur pohon.  
- Filesystem Jaringan: Beberapa sistem berkas berbasis jaringan, di mana lokasi penyimpanan fisiknya tersembunyi dan dapat diakses melalui jaringan.  

Linux menggunakan Virtual Filesystem Layer (VFS) sebagai perantara antara sistem operasi dan berbagai jenis filesystem.  

Inodes  

Inode merupakan struktur data dalam sistem berkas Linux yang menyimpan atribut dan lokasi berkas. Setiap berkas memiliki inode yang berisi informasi berikut:  

Izin akses (permissions)  
Kepemilikan (pemilik dan grup)  
Ukuran berkas  
Timestamps, termasuk waktu akses, modifikasi, dan perubahan dalam satuan nanodetik  
Waktu akses terakhir  
Waktu modifikasi terakhir  
Waktu perubahan status berkas  

Selain itu, inode juga digunakan untuk melacak lokasi penyimpanan berkas serta aktivitas I/O yang terkait dengan berkas tersebut.

hard and soft links

Ada dua metode untuk menghubungkan nama berkas dengan inode, yaitu hard link dan soft link:  

- Hard Link: Merujuk langsung ke inode suatu berkas. Semua hard link harus berada dalam filesystem yang sama. Karena berbagi inode yang sama, perubahan pada isi berkas akan berdampak di semua lokasi yang terhubung melalui hard link.  
- Soft (Symbolic) Link: Mengarah ke nama berkas yang terhubung dengan inode. Soft link dapat dibuat pada filesystem yang berbeda, tetapi jika target berkasnya tidak tersedia atau tidak terpasang, link ini bisa menjadi "dangling" atau terputus.  

Setiap hubungan antara konten berkas dan inode disebut link. Link tambahan dapat dibuat menggunakan perintah ln.  

Karena beberapa entri direktori dapat menunjuk ke inode yang sama (melalui hard link), satu berkas dapat memiliki banyak nama, tetapi tetap memiliki satu inode. Saat berkas diakses, kernel akan mencari inode yang sesuai berdasarkan nama berkas, lalu memuatnya ke dalam memori untuk menangani permintaan lebih lanjut.

Available Filesystems

Linux mendukung lebih banyak jenis sistem berkas dibandingkan sistem operasi lainnya, yang berkontribusi pada popularitasnya. Sebagian besar sistem berkas memungkinkan akses baca dan tulis, sementara beberapa hanya mendukung akses baca. Beberapa sistem berkas yang umum digunakan meliputi ext4, XFS, Btrfs, SquashFS, NFS, dan VFAT. Daftar lengkap sistem berkas yang didukung dapat diperiksa di /proc/filesystems.

Filesystem Varieties

Linux mendukung berbagai jenis sistem berkas, dengan sebagian besar menyediakan akses baca dan tulis penuh, antara lain:

  • ext4: Sistem berkas default Linux, sebagai penerus ext2 dan ext3.
  • XFS: Sistem berkas berkinerja tinggi yang awalnya dikembangkan oleh SGI.
  • JFS: Sistem berkas efisien yang pertama kali dibuat oleh IBM.
  • Sistem berkas asli Windows: FAT12, FAT16, FAT32, VFAT, dan NTFS.
  • Pseudo-filesystem: Sistem berkas yang hanya berada di memori, seperti proc, sysfs, devfs, dan debugfs.
  • Sistem berkas jaringan: NFS, Coda, dan AFS.

Untuk melihat daftar sistem berkas yang didukung oleh kernel Linux yang sedang berjalan, gunakan perintah:

cat /proc/filesystems

Sistem berkas dengan label nodev merupakan jenis khusus yang tidak disimpan pada media penyimpanan fisik. Sementara itu, beberapa sistem berkas lainnya dapat dimuat sebagai modul ketika sistem mencoba mengakses partisi yang menggunakannya.

Journaling Filesystems

Linux mendukung berbagai jenis sistem berkas, dengan sebagian besar memungkinkan akses baca dan tulis penuh, di antaranya:

  • ext4: Sistem berkas utama di Linux, penerus ext2 dan ext3.
  • XFS: Sistem berkas berkinerja tinggi yang dikembangkan oleh SGI.
  • JFS: Sistem berkas efisien yang awalnya dibuat oleh IBM.
  • Sistem berkas Windows: Termasuk FAT12, FAT16, FAT32, VFAT, dan NTFS.
  • Pseudo-filesystem: Sistem berkas yang hanya terdapat di memori, seperti proc, sysfs, devfs, dan debugfs.
  • Sistem berkas jaringan: Contohnya NFS, Coda, dan AFS.

Untuk mengetahui sistem berkas yang didukung oleh kernel Linux saat ini, gunakan perintah:

cat /proc/filesystems

Sistem berkas yang ditandai nodev merupakan jenis khusus yang tidak tersimpan dalam media penyimpanan fisik. Sementara itu, beberapa sistem berkas lainnya dapat dimuat sebagai modul ketika sistem mendeteksi partisi yang menggunakannya.

Special Filesystems

Linux memiliki sistem berkas khusus yang dirancang untuk tugas tertentu, seperti mengakses struktur data kernel, mengontrol perilaku kernel, atau menjalankan fungsi spesifik. Beberapa di antaranya memiliki titik mount, misalnya proc di /proc dan sys di /sys, sementara yang lain, seperti sockfs dan pipefs, tidak memiliki titik mount. Akibatnya, aplikasi pengguna tidak berinteraksi langsung dengan sistem berkas ini, melainkan kernel yang menggunakannya melalui Virtual Filesystem (VFS). Sistem berkas khusus ini sebenarnya bukan sistem berkas dalam arti konvensional, melainkan subsistem kernel yang memanfaatkan struktur sistem berkas untuk mengenali data dan menjalankan fungsinya.


Ext4 Superblock and Block Groups

Filesystem Ext4

  • Mendukung volume hingga 1 EB dan ukuran berkas maksimal 16 TB.
  • Menggunakan extents sebagai pengganti metode pemetaan blok tradisional.
  • Kompatibel dengan ext3 dan ext2.
  • Mampu melakukan pre-allocation ruang disk untuk memastikan alokasi data secara berurutan.
  • Menerapkan teknik allocate-on-flush, yaitu menunda alokasi blok hingga data benar-benar ditulis ke disk.
  • Menggunakan checksum pada jurnal untuk meningkatkan keandalan dan kinerja.
  • Mendukung timestamp dengan presisi nanodetik.

Superblock dan Block Groups

  • Superblock menyimpan informasi penting, seperti jumlah mount, ukuran blok, dan jumlah blok yang masih tersedia.
  • Terletak di blok 0 dari disk.
  • Ext4 terbagi menjadi beberapa block group untuk mengoptimalkan pencarian blok.
  • Ukuran blok standar adalah 4 KB, sementara block group memiliki ukuran sekitar 128 MB.

Struktur Filesystem Ext3 dan Ext4

  • Block group 0 diawali dengan 1024 byte kosong, diikuti oleh superblock, group descriptors, dan tabel descriptor grup (GDT).
  • Superblock dan group descriptors disalin ke setiap block group, tetapi beberapa tidak menyimpan salinan untuk meningkatkan efisiensi.
  • Redundansi ini membuat Ext4 lebih tahan terhadap kerusakan, asalkan pemeriksaan filesystem dilakukan secara berkala.

Perintah yang Berguna

  • dumpe2fs → Menampilkan informasi filesystem, termasuk kapasitas, batasan, dan statusnya.
  • tune2fs → Mengubah parameter filesystem, seperti batas jumlah mount sebelum pemeriksaan atau interval waktu antar pemeriksaan.
XFS

Filesystem XFS

Dikembangkan oleh Silicon Graphics Inc. (SGI) dan awalnya digunakan pada sistem operasi IRIX, sebelum akhirnya diadaptasi ke Linux. XFS dirancang untuk menangani data dalam jumlah besar dan mendukung proses I/O paralel secara efisien.

Fitur Utama XFS

  • Mendukung ukuran filesystem hingga 16 EB dan ukuran berkas hingga 8 EB.
  • Performa tinggi, termasuk dukungan untuk DMA (Direct Memory Access), memastikan operasi I/O yang stabil.
  • Dapat menyesuaikan stripe size agar optimal untuk RAID atau LVM.
  • Memiliki fitur journal quota, yang menyimpan informasi kuota untuk mempercepat pemulihan saat filesystem tidak dimatikan dengan benar.
  • Mendukung extended attributes (xattrs) untuk menyimpan metadata tambahan.

Pemeliharaan XFS

Sebagian besar tugas pemeliharaan dapat dilakukan secara online, termasuk:

  • Defragmentasi
  • Perluasan ukuran filesystem (hanya untuk memperbesar, tidak bisa mengecilkan)
  • Dumping dan restoring data

Backup dan Restore:
Menggunakan xfsdump dan xfsrestore, yang mendukung proses multi-thread, serta dapat dijeda dan dilanjutkan kembali.

Quota dan Snapshot

  • Quota dapat diterapkan pada filesystem atau per direktori menggunakan perintah xfs_quota.
  • Snapshot tidak didukung secara langsung, tetapi dapat dilakukan dengan menghentikan sementara aktivitas filesystem menggunakan xfs_freeze, lalu menggunakan alat lain seperti LVM untuk membuat snapshot.
Filesystem Features

mkfs (Make Filesystem)

Setiap jenis sistem berkas memiliki utilitas khusus untuk memformat atau membuat filesystem pada suatu partisi, yang secara umum disebut mkfs. Perintah ini berfungsi sebagai antarmuka bagi program format spesifik setiap sistem berkas, masing-masing dengan opsi yang berbeda.

Format umum perintah mkfs:

mkfs [-t fstype] [options] [device-file]

Di mana [device-file] biasanya berupa nama perangkat, seperti /dev/sda3 atau /dev/vg/lvm1.

Contoh dua perintah berikut memiliki fungsi yang sama:

sudo mkfs -t ext4 /dev/sda10

atau

sudo mkfs.ext4 /dev/sda10

Setiap sistem berkas memiliki opsi format tersendiri serta program mkfs masing-masing. Untuk informasi lebih lanjut, gunakan halaman manual dari utilitas mkfs yang sesuai.

fsck (Filesystem Check)

fsck adalah utilitas yang digunakan untuk memeriksa dan memperbaiki kesalahan pada sistem berkas.

Format umum perintah fsck:

fsck [-t fstype] [options] [device-file]

Beberapa opsi penting:

  • -r → Memperbaiki kesalahan secara manual.
  • -a → Memperbaiki kesalahan secara otomatis.
  • Sistem berkas dengan jurnal memungkinkan pemeriksaan lebih cepat karena hanya transaksi terbaru yang perlu diverifikasi.

Contoh perintah yang memiliki fungsi serupa:

sudo fsck -t ext4 /dev/sda10

atau

sudo fsck.ext4 /dev/sda10

Untuk memeriksa sistem berkas yang sedang digunakan, jalankan:

sudo touch /forcefsck
sudo reboot

Perintah ini juga akan memeriksa filesystem root setelah sistem di-restart.

Mounting Filesystems

Di Linux, semua file disusun dalam struktur hierarki pohon dengan direktori root (/) sebagai titik tertinggi. Berbagai partisi dapat digabungkan ke dalam satu pohon filesystem, meskipun berasal dari perangkat fisik atau jaringan yang berbeda.

Perintah mount digunakan untuk menghubungkan filesystem ke dalam pohon direktori, sedangkan umount digunakan untuk melepaskannya. Direktori tempat filesystem dipasang disebut mount point dan harus sudah ada sebelumnya. Jika direktori tersebut sudah berisi file, file-file tersebut akan tersembunyi selama filesystem terpasang dan akan kembali terlihat setelah dilepaskan.

Hanya pengguna dengan hak superuser yang dapat melakukan mount dan umount.

Contoh penggunaan:

$ mount -t ext4 /dev/sdb4 /home

Perintah ini memasang filesystem ext4 dari partisi /dev/sdb4 ke direktori /home. Selama proses ini, semua file yang sebelumnya ada di /home akan tersembunyi hingga filesystem dilepas.

Untuk melihat daftar filesystem yang sedang terpasang, gunakan perintah:

$ mount

mount  

bash mount [opsi] <sumber> <direktori> Ada beberapa cara untuk menentukan sumber filesystem yang akan dipasang: 1. Menggunakan perangkat langsung: bash $ sudo mount /dev/sda2 /home 2. Menggunakan label: bash $ sudo mount LABEL=home /home 3. Menggunakan UUID: bash $ sudo mount UUID=26d58ee2-9d20-4dc7-b6ab-aa87c3cfb69a /home UUID lebih direkomendasikan karena bersifat unik, sedangkan nama perangkat dapat berubah. Beberapa opsi yang sering digunakan dalam perintah `mount`: - `-a` → Memasang semua filesystem yang terdaftar di `/etc/fstab`. - `remount,ro` → Memasang ulang filesystem dalam mode read-only. Contoh penggunaan opsi read-only: bash $ sudo mount -o remount,ro /myfs Untuk melihat daftar opsi lengkap yang tersedia, gunakan perintah: bash $ mount --help unmount

Perintah `umount` digunakan untuk melepas filesystem yang sudah dipasang. Format umumnya adalah: bash umount [device-file | mount-point] Contoh penggunaan: - Melepas filesystem yang terpasang di `/home`: bash $ umount /home - Melepas perangkat `/dev/sda3`: bash $ umount /dev/sda3 Hal-hal yang perlu diperhatikan: - Perintah yang benar adalah `umount`, bukan `unmount`. - Salah satu kesalahan umum adalah mencoba melepas filesystem yang masih digunakan oleh aplikasi atau proses lain. - Untuk mengatasi masalah ini, tutup terminal yang sedang mengakses filesystem tersebut atau hentikan proses yang masih menggunakannya dengan perintah `fuser` atau `lsof`. Jika ingin mengetahui proses atau file yang menghalangi unmount, gunakan: bash $ fuser -m <mount-point> $ lsof +D <mount-point>

Network Shares (NFS) Untuk mengakses filesystem melalui jaringan, salah satu metode yang umum digunakan adalah NFS (Network File System). Teknologi ini pertama kali dikembangkan oleh
Sun Microsystems pada tahun 1989, dan sejak tahun 2000, versi terbarunya, NFSv4, terus mengalami pembaruan. Selain NFS, terdapat juga sistem file jaringan lainnya
seperti AFS (Andrew File System) dan SMB (Server Message Block), yang juga dikenal sebagai CIFS (Common Internet File System). Karena filesystem jaringan bergantung pada koneksi dan server, ada kemungkinan tidak selalu tersedia. Oleh karena itu, sistem perlu dikonfigurasi agar tidak mengalami keterlambatan saat menunggu akses.
Beberapa opsi dalam perintah `mount` dapat membantu mengatasi kendala ini. ### Contoh penggunaan `mount` untuk NFS: bash $ sudo mount -t nfs myserver.com:/shdir /mnt/shdir Menambahkan mount otomatis ke `/etc/fstab`: bash myserver.com:/shdir /mnt/shdir nfs rsize=8192,wsize=8192,timeo=14,intr 0 0 Opsi yang dapat digunakan: - `netdev` dan `noauto` → Mencegah filesystem NFS dipasang sebelum jaringan tersedia. - `autofs` atau `automount` → Dapat digunakan untuk memasang filesystem secara otomatis saat dibutuhkan. Untuk informasi lebih lanjut, gunakan perintah: bash $ man nfs $ man mount

Mounting at Boot and /etc/fstab Saat proses inisialisasi sistem, perintah `mount -a` dijalankan untuk memasang semua filesystem yang terdaftar dalam `/etc/fstab`. File `/etc/fstab` digunakan untuk mendefinisikan perangkat penyimpanan dan filesystem yang akan dipasang saat sistem startup.
Di dalamnya terdapat informasi mengenai filesystem yang tersedia, lokasi pemasangannya, serta izin dan opsi yang digunakan.
File ini mencakup berbagai jenis filesystem, baik yang bersifat lokal maupun yang diakses melalui jaringan, seperti NFS dan Samba. Struktur `/etc/fstab` terdiri dari beberapa kolom yang dipisahkan oleh spasi, yaitu: 1. Device file – Lokasi perangkat penyimpanan (misalnya `/dev/sda1` atau UUID). 2. Mount point – Direktori tempat filesystem akan dipasang. 3. Filesystem type – Jenis filesystem, seperti ext4, swap, atau NTFS. 4. Option – Opsi pemasangan, misalnya defaults. 5. Dump – Nilai 0 atau 1 untuk menentukan apakah filesystem perlu dibackup (biasanya diabaikan). 6. Pass – Urutan pemeriksaan filesystem saat booting (0 = tidak diperiksa, 1 = root filesystem, 2 = filesystem lainnya). Contoh entri dalam `/etc/fstab`: bash UUID=c296ad3d-8fea-483a-a47a-d7456cfbbe27 /boot/efi ext4 defaults 0 0 Penjelasan: - UUID adalah pengidentifikasi unik perangkat. - /boot/efi merupakan lokasi pemasangan filesystem. - ext4 menunjukkan jenis filesystem yang digunakan. - defaults adalah opsi pemasangan. - 0 pada kolom dump berarti tidak ada backup. - 0 pada kolom pass menandakan bahwa filesystem tidak akan diperiksa saat booting. Perintah `mount` dan `umount` dapat menggunakan informasi dalam `/etc/fstab` untuk memasang atau melepas filesystem sesuai kebutuhan. df: Filesystem Usage Perintah `df` (disk free) digunakan untuk memeriksa penggunaan ruang pada filesystem. Secara default, menjalankan `df` akan menampilkan informasi dalam satuan kilobyte (KB). Untuk tampilan yang lebih mudah dibaca, seperti dalam megabyte (MB) atau gigabyte (GB), gunakan opsi `-h` dengan perintah: bash df -h Jika ingin mengetahui jenis filesystem yang digunakan, tambahkan opsi `-T` : bash df -T Sementara itu, untuk melihat informasi mengenai inode yang tersedia dan digunakan pada setiap filesystem, gunakan perintah: bash df -i du: Disk Usage Perintah `du` (disk usage) digunakan untuk mengecek kapasitas dan penggunaan ruang pada disk. Untuk melihat penggunaan disk di direktori saat ini, cukup jalankan: bash du Jika ingin menampilkan semua file, bukan hanya direktori, gunakan opsi `-a`: bash du -a Untuk format tampilan yang lebih mudah dibaca (dalam MB atau GB), gunakan opsi `-h`: bash du -h Jika ingin mengetahui penggunaan disk di direktori tertentu, gunakan perintah berikut dengan mengganti `somedir` dengan nama direktori yang diinginkan: bash du -h somedir Sementara itu, untuk melihat penggunaan disk pada setiap direktori dalam folder saat ini dan mengurutkannya berdasarkan ukuran, gunakan perintah berikut: bash find . -maxdepth 1 -type d -exec du -shx {} \; | sort -hr Using swap Linux menggunakan sistem memori virtual, memungkinkan sistem operasi beroperasi seolah-olah memiliki lebih banyak RAM daripada kapasitas sebenarnya.
Saat diperlukan, bagian memori yang jarang digunakan oleh program akan dipindahkan ke disk dalam bentuk swap. Swap dapat berupa partisi khusus atau file swap, dan Linux mendukung penggunaan beberapa area swap dengan tingkat prioritas berbeda. Swap dengan prioritas lebih tinggi akan digunakan terlebih dahulu. Ukuran swap yang disarankan biasanya setara dengan total RAM yang tersedia. Untuk mengelola swap, Linux menyediakan beberapa perintah, seperti: - `mkswap` – Untuk memformat area swap. - `swapon` – Untuk mengaktifkan swap. - `swapoff` – Untuk menonaktifkan swap. Berbeda dengan beberapa sistem operasi lain, Linux tidak memindahkan memori yang digunakan oleh kernel ke swap. Logical Volume Management (LVM) LVM (Logical Volume Management) memungkinkan satu partisi virtual dibagi menjadi beberapa bagian yang dapat tersebar di berbagai disk atau partisi. Dengan LVM, ukuran partisi logis dan filesystem dapat diubah dengan mudah, serta ruang penyimpanan dapat diperluas atau dikonfigurasi ulang tanpa kesulitan. Dalam LVM, beberapa partisi fisik digabungkan menjadi satu volume group, yang kemudian dibagi lagi menjadi logical volumes. Logical volumes ini berfungsi layaknya partisi fisik biasa. Meskipun LVM menambahkan lapisan tambahan yang sedikit mempengaruhi performa, keunggulannya terletak pada fleksibilitasnya. LVM memungkinkan pengguna memperbesar atau mengecilkan volume sesuai kebutuhan dan dapat dikombinasikan dengan RAID untuk meningkatkan ketahanan serta skalabilitas sistem penyimpanan. Volumes and Volume Groups Dalam sistem LVM (Logical Volume Management), partisi dikonversi menjadi physical volumes, yang kemudian digabungkan dalam volume groups. Sebuah sistem dapat memiliki lebih dari satu volume group. Di dalam volume group, ruang penyimpanan dibagi menjadi unit kecil yang disebut extents, dengan ukuran default 4 MB, namun ukuran ini dapat disesuaikan sesuai kebutuhan. Logical volumes dialokasikan dari volume group dan dapat ditentukan berdasarkan ukuran atau jumlah extents. Filesystem dibuat di atas logical volumes dan dapat diberi nama sesuai keinginan. Untuk mengelola volume groups, terdapat beberapa perintah yang diawali dengan "vg", seperti: - `vgcreate` – Membuat volume group. - `vgextend` – Menambahkan ruang ke volume group. - `vgreduce` – Mengurangi volume group. Sementara itu, untuk mengelola physical volumes, digunakan perintah yang diawali dengan "pv", seperti: - `pvcreate` – Mengonversi partisi menjadi physical volume. - `pvdisplay` – Menampilkan daftar physical volumes yang digunakan. - `pvmove` – Memindahkan data dari satu physical volume ke volume lain. - `pvremove` – Menghapus partisi dari daftar physical volumes.

Logical Volumes Utilities

Terdapat berbagai utilitas untuk mengelola logical volumes, yang semuanya diawali dengan "lv". Untuk melihat daftar utilitas yang paling sering digunakan, jalankan perintah berikut: 
bash

ls -lF /sbin/lv

Utilitas ini disimpan di direktori `/sbin` alih-alih `/usr/sbin`, karena dapat dibutuhkan selama proses booting atau saat melakukan perbaikan serta pemulihan sistem.  

Sebagian besar utilitas tersebut sebenarnya adalah link simbolik ke `lvm`, sebuah program multifungsi yang menangani berbagai tugas LVM dan menyesuaikan fungsinya berdasarkan perintah yang dijalankan. Hal ini juga berlaku untuk sebagian besar utilitas pv dan vg, yang dapat dengan mudah diverifikasi.

Creating Logical Volumes

Perintah `lvcreate` digunakan untuk membuat logical volume dalam sebuah volume group. Ukuran logical volume dapat ditentukan dalam satuan byte atau berdasarkan jumlah extents, di mana ukuran extents secara default adalah 4 MB. Logical volume juga dapat diberi nama sesuai keinginan.  

Untuk melihat informasi tentang logical volumes yang tersedia, gunakan perintah `lvdisplay`.  

Sama seperti partisi biasa, logical volumes harus diformat sebelum digunakan. Proses pemformatan dilakukan menggunakan perintah `mkfs`.  

 Langkah-langkah Membuat dan Menggunakan Logical Volume Baru  

1. Buat partisi pada hard disk (gunakan tipe 8e saat menggunakan fdisk).  

2. Konversi partisi menjadi physical volumes.  

3. Buat volume group.  

4. Alokasikan logical volumes dari volume group tersebut.  

5. Format logical volumes agar siap digunakan.  

6. Mount logical volumes dan perbarui `/etc/fstab` jika ingin mount bersifat permanen.  

Contoh Perintah  

Misalnya, terdapat dua partisi /dev/sdb1 dan /dev/sdc1 dengan tipe 8e, maka langkah-langkahnya adalah:  

bash

sudo pvcreate /dev/sdb1

sudo pvcreate /dev/sdc1

sudo vgcreate -s 16M vg /dev/sdb1

sudo vgextend vg /dev/sdc1

sudo lvcreate -L 50G -n mylvm vg

sudo mkfs -t ext4 /dev/vg/mylvm

sudo mkdir /mylvm

sudo mount /dev/vg/mylvm /mylvm

Agar mounting tetap berlaku setelah reboot, tambahkan baris berikut ke dalam `/etc/fstab`:  

plaintext

/dev/vg/mylvm /mylvm ext4 defaults 1 2

Displaying Logical Volumes

Untuk melihat informasi mengenai LVM (Logical Volume Management), terdapat beberapa perintah yang dapat digunakan:  

- `pvdisplay` – Menampilkan informasi tentang physical volumes. Jika tidak menyebutkan nama physical volume, maka akan menampilkan semua yang tersedia.  

  - Contoh:  

    bash

    pvdisplay   Menampilkan semua physical volumes

    pvdisplay /dev/sda5  Menampilkan informasi spesifik untuk /dev/sda5

- `vgdisplay` – Menampilkan detail tentang volume groups. Jika tidak menyebutkan nama volume group, maka akan menampilkan semua volume groups yang ada.  

  - Contoh:  

    bash

    vgdisplay   Menampilkan semua volume groups

    vgdisplay vg0   Menampilkan informasi tentang volume group "vg0"

- `lvdisplay` – Menampilkan informasi mengenai logical volumes. Jika nama logical volume tidak disebutkan, perintah ini akan menampilkan semua logical volumes yang tersedia.  

  - Contoh:  bash

    lvdisplay        Menampilkan semua logical volumes

    lvdisplay /dev/vg0/lvm1    Menampilkan informasi tentang logical volume tertentu

  Resizing Logical Volumes

Salah satu keunggulan utama LVM (Logical Volume Management) adalah kemudahan serta kecepatan dalam menyesuaikan ukuran logical volume,

terutama jika dibandingkan dengan mengubah ukuran partisi fisik yang sudah memiliki filesystem. Saat ukuran logical volume diubah, extents dapat ditambahkan atau dikurangi tanpa harus berdekatan secara fisik dalam volume group. Jika logical volume berisi filesystem, ada perbedaan antara mengubah ukuran logical volume dan mengubah ukuran filesystem itu sendiri. - Untuk memperbesar logical volume yang memiliki filesystem, logical volume harus diperbesar terlebih dahulu, lalu diikuti dengan ekspansi filesystem. - Untuk mengecilkan logical volume, filesystem harus dikurangi ukurannya terlebih dahulu sebelum logical volume dapat dikecilkan. Menggunakan lvresize Proses perubahan ukuran dapat dilakukan dengan lvresize. - Untuk memperbesar logical volume menjadi 20 GB sekaligus memperluas filesystem secara otomatis: bash sudo lvresize -r -L 20G /dev/VG/mylvm - Untuk menambahkan 100 MB ke logical volume dengan filesystem ext4: bash sudo lvresize -r -L +100M /dev/vg/mylvm Saat memperbesar logical volume, filesystem tidak perlu di-unmount. Namun, jika mengecilkan logical volume, filesystem harus di-unmount terlebih dahulu. Selain lvresize, perintah lain seperti lvextend dan lvreduce dapat digunakan bersama resize2fs untuk menyesuaikan ukuran filesystem. Kernel Services and Configuration Kernel Overview Kernel adalah inti dari sistem operasi Linux yang berperan sebagai perantara antara perangkat keras dan perangkat lunak. Meskipun Linux sering disebut sebagai sistem operasi, sebenarnya yang dimaksud adalah kernel, karena sistem operasi juga mencakup pustaka (libraries) dan aplikasi yang berinteraksi dengan kernel. Kernel memiliki tugas utama dalam mengelola sumber daya sistem, seperti memori dan CPU, serta mendistribusikannya ke berbagai aplikasi dan layanan yang berjalan. Selain itu, kernel juga menangani perangkat keras melalui driver perangkat, memungkinkan sistem operasi menggunakan perangkat yang terhubung. Sebuah sistem yang hanya memiliki kernel saja memiliki fungsionalitas yang terbatas dan biasanya digunakan dalam perangkat embedded yang memiliki tugas spesifik.

Tanggung Jawab Utama Kernel 1. Inisialisasi dan Booting Sistem - Kernel bertugas memulai sistem dan memastikan semua perangkat keras siap digunakan saat komputer dinyalakan. 2. Penjadwalan Proses - Kernel mengelola berbagai proses yang berjalan dengan membagi waktu pemrosesan CPU secara adil. 3. Manajemen Memori - Kernel mengalokasikan memori untuk aplikasi dan memastikan setiap proses mendapatkan ruang tanpa saling mengganggu. 4. Mengendalikan Akses ke Perangkat Keras - Kernel mengatur akses ke CPU, memori, dan perangkat lainnya untuk memastikan kinerja optimal. 5. Manajemen Input/Output (I/O) - Kernel menangani komunikasi antara aplikasi dengan perangkat penyimpanan seperti hard disk atau SSD. 6. Implementasi Sistem Berkas (Filesystem) - Kernel mengelola penyimpanan dan pengelolaan data dalam bentuk file, baik di komputer lokal maupun jaringan. 7. Keamanan dan Kontrol Akses - Kernel memastikan keamanan sistem dengan mengatur izin akses terhadap file dan sumber daya lain. 8. Pengelolaan Jaringan - Kernel menangani koneksi jaringan agar perangkat dapat terhubung ke internet atau jaringan lokal. Secara keseluruhan, kernel adalah komponen kunci yang menghubungkan perangkat keras dan perangkat lunak, serta memastikan sistem berjalan dengan efisien dan aman. Kernel Command Line Saat proses booting, sistem menerima berbagai parameter melalui kernel command line. Parameter-parameter ini biasanya didefinisikan dalam baris linux atau linux16 yang terdapat di dalam file konfigurasi GRUB. Contoh baris kernel command line yang umum ditemukan di sistem Linux: Contoh 1: linux /boot/vmlinuz-4.19.0 root=UUID=7ef4e747-afae-90b4-9be8be8d0258 ro quiet crashkernel=384M-:128M Contoh 2: linuxefi /boot/vmlinuz-5.2.9 root=UUID=77461ee7-c34a-4c5f-b0bc-29f4feecc743 ro crashkernel=auto rhgb quiet Baris konfigurasi ini dapat ditemukan dalam file grub.cfg, yang biasanya terletak di /boot/grub atau di lokasi lain seperti /boot/efi/EFI/centos/grub.cfg. Setiap bagian setelah file vmlinuz merupakan opsi atau parameter kernel. Jika suatu parameter tidak dikenali oleh kernel, maka parameter tersebut akan diteruskan ke init (proses pertama dengan PID = 1) yang berjalan di sistem. Untuk mengetahui parameter kernel yang digunakan saat sistem boot, gunakan perintah berikut di terminal: $ cat /proc/cmdline Contoh hasil output: BOOT_IMAGE=(hd0,msdos1)/boot/vmlinuz-5.11.0 root=UUID=7a8244d5-f289-4067-8ad6-9090080b7e35 ro resume=UUID=d602c4e1-ef8a-4945-8e3b-e98fcc8bfba2 rhgb quiet Dalam output ini, beberapa parameter yang digunakan antara lain: - Kernel yang digunakan: `/boot/vmlinuz-5.11.0` - Partisi root: `root=UUID=7a8244d5-f289-4067-8ad6-9090080b7e35` - Opsi tambahan: - `rhgb` (Red Hat Graphical Boot) untuk tampilan grafis saat boot - `quiet` untuk mengurangi output pesan selama proses boot Parameter-parameter ini berperan dalam menentukan bagaimana sistem Linux akan dimuat dan dikonfigurasi saat booting. Parameter Booting Kernel

Kernel Boot Parameters adalah opsi konfigurasi yang diberikan kepada **kernel** saat sistem dinyalakan untuk mengatur cara kerja kernel dan sistem secara keseluruhan. Format Penulisan:
- Parameter ditambahkan di akhir baris kernel dan dipisahkan dengan spasi.
- Format umum: `parameter=value` (contoh: `root=/dev/sda6`).
- Contoh penggunaan dalam konfigurasi kernel: linux16 /boot/vmlinuz-3.19.1.0 root=UUID=178d0092-4154-4688-af24-cda272265e08 ro crashkernel=auto quiet LANG=en_US.UTF-8

Beberapa Parameter Umum dan Fungsinya:
- root → Menentukan lokasi filesystem root (contoh: `root=/dev/sda6`).
- ro → Mengatur filesystem root agar hanya bisa dibaca (`read-only`).
- vconsole.keymap → Menentukan tata letak keyboard untuk konsol (contoh: `vconsole.keymap=us`).
- crashkernel → Menyisihkan sejumlah memori untuk menangani crash dump (contoh: `crashkernel=256M`).
- quiet → Menonaktifkan tampilan pesan log saat booting.
- LANG → Menentukan bahasa sistem yang digunakan (contoh: `LANG=en_US.UTF-8`).
Dengan menggunakan kernel boot parameters, pengguna dapat menyesuaikan konfigurasi sistem saat booting, seperti menentukan lokasi filesystem root, bahasa sistem, serta tampilan dan logging selama proses booting. User Account Management User Accounts Sistem Linux mendukung lingkungan multi-pengguna, memungkinkan setiap pengguna dan proses memiliki ruang kerja masing-masing secara bersamaan. Manfaat Akun Pengguna: - Memberikan area kerja pribadi bagi setiap pengguna. - Membuat akun dengan tujuan spesifik sesuai kebutuhan sistem. - Mengatur tingkat hak akses untuk membedakan izin pengguna. Jenis Akun Pengguna: 1. Akun Root → Akun dengan izin penuh untuk mengelola sistem. Karena memiliki kontrol penuh, akun ini hanya digunakan jika benar-benar diperlukan demi keamanan. 2. Akun Pengguna Biasa → Digunakan oleh individu untuk menjalankan tugas sehari-hari dengan akses yang terbatas. 3. Akun Khusus (Daemon Account) → Akun yang dibuat untuk menjalankan proses tertentu dengan hak akses terbatas, berbeda dari akun root. Dengan adanya sistem akun ini, Linux dapat mengelola pengguna dan proses secara lebih aman serta efisien.

Attributes of a User Account

Setiap pengguna dalam sistem Linux memiliki entri di file `/etc/passwd`, yang berisi informasi dasar tentang akun mereka. Berikut adalah contoh formatnya: beav:x:1000:1000:Theodore Cleaver:/home/beav:/bin/bash warden:x:1001:1001:Ward Cleaver:/home/warden:/bin/bash dobie:x:1002:1002:Dobie Gillis:/home/dobie:/bin/bash Komponen dalam `/etc/passwd`: 1. Nama Pengguna (Username) → Identitas unik setiap pengguna dalam sistem. 2. Kata Sandi (Password Placeholder) → Biasanya berisi `x`, yang berarti kata sandi disimpan di lokasi terpisah untuk keamanan. 3. User ID (UID) → Nomor unik yang diberikan kepada pengguna untuk mengidentifikasi dan mengontrol hak aksesnya. 4. Group ID (GID) → Menunjukkan grup utama pengguna, yang berperan dalam pengaturan izin akses. 5. Informasi GECOS → Berisi detail tambahan seperti nama lengkap atau kontak pengguna (opsional). 6. Home Directory → Direktori pribadi pengguna sebagai ruang kerja utama, umumnya berada di `/home/username`. 7. Login Shell → Program shell yang digunakan saat pengguna masuk ke sistem, seperti `/bin/bash` atau `/bin/zsh`. Informasi ini membantu sistem dalam mengatur pengguna, mengelola hak akses, serta menyediakan lingkungan kerja yang sesuai untuk setiap akun.

Creating User Accounts with useradd

Perintah `useradd` digunakan untuk membuat akun pengguna baru di sistem Linux. Misalnya, menjalankan: bash $ sudo useradd dexter akan membuat akun bernama dexter dengan pengaturan default seperti UID, GID, direktori rumah, dan shell login. Proses yang Terjadi Saat `useradd` Dijalankan: 1. Menetapkan UID → Sistem akan memberikan User ID (UID) yang tersedia berikutnya, sesuai dengan UID_MIN yang ditentukan di `/etc/login.defs`. 2. Membuat Grup Pengguna → Grup dengan nama dexter akan dibuat dengan GID yang sama dengan UID pengguna. Grup ini menjadi grup utama dexter. 3. Membuat Direktori Rumah → Direktori /home/dexter dibuat dan dimiliki oleh pengguna dexter. 4. Menetapkan Shell Login → Default shell yang digunakan adalah /bin/bash. 5. Menyalin Isi `/etc/skel` → File dari /etc/skel akan disalin ke direktori /home/dexter, termasuk file konfigurasi awal untuk shell dan sistem X Window. 6. Pengaturan Password → Pada file /etc/shadow, entri password akan diisi dengan `!!` atau `!`, yang berarti administrator harus menetapkan kata sandi sebelum akun dapat digunakan. Penggunaan Opsi Tambahan Perintah dapat dikustomisasi dengan opsi tambahan, misalnya: ```bash $ sudo useradd -s /bin/csh -m -k /etc/skel -c "Bullwinkle J Moose" bmoose ``` Penjelasan opsi: - `-s /bin/csh` → Menetapkan shell login menjadi /bin/csh. - `-m` → Membuat direktori rumah pengguna jika belum ada. - `-k /etc/skel` → Menentukan direktori template untuk file awal pengguna. - `-c "Bullwinkle J Moose"` → Menambahkan komentar berupa nama lengkap pengguna. Dengan `useradd`, administrator dapat membuat akun baru dengan cepat dan menyesuaikan pengaturannya sesuai kebutuhan. Modifying and Deleting User Accounts Menghapus Akun Pengguna dengan `userdel` Untuk menghapus akun pengguna di Linux, gunakan perintah: bash $ sudo userdel morgan Perintah ini akan menghapus referensi akun morgan dari file /etc/passwd, /etc/shadow, dan /etc/group.
Namun, direktori rumah pengguna (misalnya, `/home/morgan`) tidak akan dihapus secara otomatis, sehingga data tetap tersedia jika akun perlu dipulihkan di kemudian hari. Jika ingin menghapus akun beserta direktori rumahnya, gunakan opsi `-r`: bash $ sudo userdel -r morgan Dengan opsi ini, akun serta direktori rumah pengguna akan dihapus, tetapi file lain yang dimiliki pengguna tetap ada di sistem. Mengubah Atribut Akun dengan `usermod` Perintah `usermod` digunakan untuk memodifikasi atribut akun pengguna, seperti keanggotaan grup, direktori rumah, nama login, kata sandi, shell default, dan UID. Sebagai contoh, untuk mengunci akun pengguna agar tidak bisa login: bash $ sudo usermod -L dexter Opsi `-L` (lock) akan mengunci akun, sehingga pengguna tidak dapat masuk ke sistem. Setiap perubahan yang dilakukan dengan `usermod` akan secara otomatis memperbarui file yang diperlukan di /etc, memastikan bahwa konfigurasi akun pengguna tetap sinkron di sistem. Locket Accounts Akun Sistem yang Terkunci di Linux Linux memiliki beberapa akun sistem yang dikunci, seperti bin, daemon, atau sys.
Akun-akun ini digunakan untuk menjalankan proses tertentu tetapi tidak dapat digunakan untuk login karena tidak memiliki kata sandi yang valid. Sebagai contoh, di dalam file /etc/passwd, terdapat entri seperti berikut: bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin Akun ini menggunakan shell /sbin/nologin, yang akan menampilkan pesan berikut saat seseorang mencoba login dengan akun tersebut: This account is currently not available. Akun-akun ini dibuat untuk menjalankan layanan atau aplikasi tertentu tanpa memberikan akses login langsung ke pengguna. Melihat Akun dengan Shell `nologin` Untuk mengetahui akun mana saja yang menggunakan /sbin/nologin, periksa file /etc/passwd. Mengunci Akun Pengguna Jika ingin mengunci akun pengguna agar tidak bisa login, gunakan perintah: bash $ sudo usermod -L dexter Meskipun akun masih ada, pengguna tidak dapat masuk ke sistem. Untuk membuka kunci akun, gunakan opsi `-U`: bash $ sudo usermod -U dexter Mengunci Akun dengan `chage` Cara lain untuk mengunci akun adalah dengan mengatur tanggal kedaluwarsa menggunakan perintah `chage`: bash $ sudo chage -E 2014-09-11 morgan Dengan menetapkan tanggal di masa lalu, akun secara efektif dikunci. Biasanya, metode ini digunakan jika pengguna keluar dari organisasi atau sedang cuti panjang. User IDs and /etc/passwd

Di Linux, setiap akun pengguna direpresentasikan dalam satu baris di file /etc/passwd, yang berisi informasi penting seperti nama pengguna, kata sandi (atau "x" jika disimpan di /etc/shadow), UID (User ID), GID (Group ID), komentar (biasanya nama lengkap pengguna), direktori home, dan shell login. Umumnya, UID di bawah 1000 digunakan untuk akun sistem, sementara akun pengguna biasa dimulai dari UID 1000, sesuai dengan aturan dalam file /etc/login.defs. Setiap pengguna juga memiliki GID utama, yang biasanya sama dengan UID-nya. Sebaiknya hindari mengedit langsung file /etc/passwd, /etc/group, atau /etc/shadow, dan gunakan perintah seperti `usermod` untuk mengelola akun dengan aman. Why Use /etc/shadow? File /etc/shadow digunakan untuk meningkatkan keamanan kata sandi di sistem Linux dengan memungkinkan setiap pengguna memiliki aturan kedaluwarsa kata sandi yang berbeda. Secara default, /etc/passwd dapat dibaca oleh semua pengguna (izin 644), karena diperlukan oleh berbagai program sistem.
Namun, jika kata sandi yang telah di-hash disimpan di sana, siapa pun bisa menyalinnya dan mencoba mendekripsinya menggunakan alat seperti John the Ripper atau Crack, yang dapat membahayakan keamanan sistem. Sebagai langkah perlindungan, /etc/shadow menyimpan kata sandi yang sudah di-hash dengan izin 400, sehingga hanya root yang dapat mengaksesnya. Hal ini membuat pencurian kata sandi menjadi lebih sulit.
Oleh karena itu, penggunaan /etc/shadow sangat dianjurkan untuk menjaga keamanan sistem.

More on /etc/shadow File /etc/shadow menyimpan informasi password untuk setiap pengguna di sistem Linux. Setiap pengguna memiliki satu baris data dengan format sebagai berikut: username:password:lastchange:mindays:maxdays:warn:grace:expire:reserved Penjelasan tiap bagian: username → Nama pengguna (harus sama dengan yang ada di /etc/passwd). password → Password yang sudah di-hash menggunakan SHA-512. lastchange → Jumlah hari sejak 1 Januari 1970 ketika password terakhir diubah. mindays → Minimal hari sebelum password bisa diubah lagi. maxdays → Maksimal hari sebelum password harus diganti. warn → Berapa hari sebelum kedaluwarsa pengguna diberi peringatan. grace → Berapa hari setelah kedaluwarsa sebelum akun dinonaktifkan. expire → Tanggal akun dinonaktifkan. reserved → Untuk keperluan di masa depan. Password di-hash dengan format $6$ (SHA-512), diikuti 8 karakter salt, lalu 88 karakter hash password. Semua tanggal dihitung sejak 1 Januari 1970 (epoch time). Manajemen Password di Linux Pengguna dapat mengganti kata sandi mereka menggunakan perintah passwd. Pengguna biasa hanya dapat mengubah kata sandi mereka sendiri, sedangkan root memiliki izin untuk mengubah kata sandi siapa pun di sistem. Jika pengguna biasa ingin mengganti kata sandinya, prosesnya adalah sebagai berikut: bash $ passwd Changing password for clyde (current) UNIX password: <masukkan kata sandi lama> New UNIX password: <masukkan kata sandi baru> Retype new UNIX password: <konfirmasi kata sandi baru> passwd: all authentication tokens updated successfully Sementara itu, root dapat mengubah kata sandi pengguna lain tanpa perlu memasukkan kata sandi lama: ```bash $ sudo passwd kevin New UNIX password: <masukkan kata sandi baru> Retype new UNIX password: <konfirmasi kata sandi baru> passwd: all authentication tokens updated successfully ``` Catatan: - Sistem menggunakan pam_cracklib.so untuk memastikan bahwa kata sandi yang dipilih cukup kuat. - Pengguna biasa tidak diperbolehkan menggunakan kata sandi yang terlalu lemah, misalnya yang terlalu pendek atau mudah ditebak. - Root tetap dapat menetapkan kata sandi yang lemah jika diperlukan. Pengelolaan Masa Berlaku Password dengan chage Mengganti kata sandi secara berkala dapat membantu mencegah penyalahgunaan jika terjadi kebocoran. Namun, kebijakan ini bisa membuat pengguna merasa tidak nyaman dan cenderung mencatat kata sandi mereka, yang justru meningkatkan risiko keamanan. Perintah chage digunakan untuk mengelola masa berlaku kata sandi dengan format berikut: bash chage [-m min_hari] [-M max_hari] [-d terakhir_diubah] [-I tidak_aktif] [-E kadaluarsa] [-W peringatan] user Contoh penggunaan: - Melihat informasi masa berlaku kata sandi: bash $ sudo chage -l stephane - Mengatur kata sandi minimal 14 hari & maksimal 30 hari: bash $ sudo chage -m 14 -M 30 kevlin - Menonaktifkan akun setelah 1 April 2012: bash $ sudo chage -E 2012-04-01 isabelle - Memaksa pengguna mengganti kata sandi saat login berikutnya: bash $ sudo chage -d 0 USERNAME Hanya root yang dapat menggunakan perintah chage, kecuali opsi -1, yang dapat digunakan oleh semua pengguna untuk melihat kapan kata sandi mereka akan kedaluwarsa.

Restricted Shell (rbash) di Linux

Restricted Shell adalah mode terbatas dari bash yang membatasi beberapa tindakan pengguna. Mode ini dapat diaktifkan dengan menjalankan perintah berikut: bash $ bash -r Batasan dalam Restricted Shell: - Tidak dapat berpindah direktori menggunakan cd. - Tidak bisa mengubah variabel lingkungan seperti SHELL, ENV, atau PATH. - Tidak dapat menjalankan perintah dengan path lengkap (misalnya `/bin/ls`). - Tidak dapat melakukan pengalihan input/output. Mengaktifkan rbash: 1. Buat symlink ke `/bin/bash` dengan nama `/bin/rbash`. 2. Ubah shell pengguna di file `/etc/passwd` menjadi `/bin/rbash`. Peringatan: - rbash tidak sepenuhnya aman, karena pembatasannya mudah dilewati. - Metode keamanan modern seperti SELinux lebih efektif dalam membatasi akses pengguna. - Menggunakan restricted shell bisa memberi rasa aman semu karena ada banyak cara untuk mengakali batasannya. Akun Terbatas di Linux Akun terbatas digunakan untuk memberikan akses dengan pembatasan tertentu, seperti: - Menggunakan restricted shell (rbash). - Membatasi program dan aplikasi yang dapat dijalankan. - Mengontrol penggunaan sumber daya sistem. - Membatasi akses berdasarkan waktu dan lokasi. Pengaturan Akun Terbatas: - Saat restricted shell dijalankan, ia tetap membaca file .bash_profile di direktori home pengguna. - Pengguna tidak boleh memiliki izin untuk menulis atau mengeksekusi file di direktori home-nya. - Jangan menambahkan direktori sistem ke dalam variabel PATH, karena dapat memungkinkan akses ke shell tanpa batasan. Cara Mengaktifkan rbash: Buat symbolic link atau salinan dari bash dengan perintah berikut: bash $ cd /bin ; sudo ln -s bash rbash $ cd /bin ; sudo ln bash rbash $ cd /bin ; sudo cp bash rbash Kemudian, atur /bin/rbash sebagai shell pengguna di file /etc/passwd. Meskipun dikenal sebagai limited account, perlu diingat bahwa rbash masih memiliki celah keamanan yang dapat dieksploitasi.
Oleh karena itu, disarankan untuk menggunakan metode keamanan lain seperti SELinux untuk perlindungan yang lebih baik.

Akun Root Akun root sebaiknya hanya digunakan untuk tugas administrasi yang benar-benar penting, karena kesalahan saat menggunakannya dapat berdampak besar pada keamanan dan stabilitas sistem. Secara default, login root melalui jaringan biasanya dinonaktifkan demi keamanan. Namun, jika diperlukan, akses ini bisa diaktifkan melalui SSH dengan mengonfigurasi /etc/ssh/sshd_config serta menggunakan PAM melalui modul pam_securetty.so dan file /etc/securetty, yang membatasi login hanya dari perangkat tertentu. Disarankan untuk mengakses root menggunakan su atau sudo agar aktivitasnya dapat diaudit. Beberapa distribusi Linux, seperti Ubuntu, bahkan secara default melarang login langsung sebagai root. Selain itu, PAM dapat digunakan untuk membatasi pengguna yang diizinkan menggunakan su ke root. Untuk meningkatkan keamanan, sebaiknya konfigurasi auditd diaktifkan agar mencatat semua perintah yang dijalankan oleh root. SSH SSH (Secure Shell) digunakan untuk mengakses komputer jarak jauh atau mentransfer file dengan aman melalui jaringan.
Dengan SSH, pengguna dapat masuk ke sistem lain dan menjalankan perintah tanpa khawatir data disadap. Contoh Perintah SSH: - Login ke komputer jarak jauh: bash ssh user@remote_computer.com - Menjalankan perintah di sistem remote: bash ssh user@remote_computer.com apt-get update - Transfer file antar komputer: bash scp file.txt user@remote_computer.com:/tmp/ Autentikasi Berbasis Kunci SSH Metode ini memungkinkan pengguna login tanpa perlu memasukkan password,
menggunakan pasangan kunci privat dan kunci publik. Kunci privat harus dijaga keamanannya, sementara kunci publik disimpan di server tujuan. Membuat Kunci SSH: Gunakan perintah berikut untuk membuat pasangan kunci: bash ssh-keygen Kunci akan disimpan di direktori `~/.ssh/`. Untuk keamanan tambahan, tambahkan passphrase agar kunci privat tidak dapat digunakan sembarangan. Menyalin Kunci Publik ke Server: Agar bisa login tanpa password, gunakan perintah: bash ssh-copy-id user@remotehost Setelah proses ini selesai, pengguna dapat masuk ke server hanya dengan: bash ssh user@remotehost tanpa harus mengetikkan kata sandi setiap kali login. Grup Grup di Linux Grup di Linux adalah kumpulan pengguna yang memiliki akses bersama terhadap file, direktori, dan sumber daya tertentu. Ini berguna untuk kolaborasi tim serta membatasi akses bagi pengguna lain. Struktur Grup di Linux Informasi grup disimpan di file `/etc/group` dengan format berikut: nama_grup:password:GID:user1,user2,... ` - nama_grup → Nama unik grup. - password → Biasanya kosong atau dikelola melalui `/etc/gshadow`. - GID → Nomor identifikasi grup yang unik. - user1,user2, → Daftar anggota grup. Mengelola Grup di Linux Hanya pengguna root yang dapat mengelola grup menggunakan perintah berikut: - Membuat grup baru: bash sudo groupadd nama_grup - Mengubah GID grup: bash sudo groupmod -g GID_baru nama_grup - Menghapus grup: bash sudo groupdel nama_grup - Menambahkan pengguna ke grup: bash sudo usermod -G grup1,grup2 user Peringatan: Perintah `usermod -G` akan mengganti daftar grup pengguna. Untuk menambah grup tanpa menghapus keanggotaan sebelumnya, gunakan opsi `-aG`: bash sudo usermod -aG grup_tambahan user.

User Private Groups User Private Groups (UPG) di Linux User Private Groups (UPG) adalah sistem di mana setiap pengguna secara otomatis memiliki grup utama dengan nama yang sama dan Group ID (GID) yang sama dengan User ID (UID). Karakteristik UPG: - Setiap pengguna secara default memiliki grup tersendiri. - Grup ini tidak sepenuhnya "privat" karena pengguna lain masih bisa ditambahkan sebagai anggota melalui file `/etc/group`. - Umask disetel ke `002`, yang berpengaruh pada izin file dan folder yang dibuat: - File baru memiliki izin `664` (rw-rw-r--). - Folder baru memiliki izin `775` (rwxrwxr-x). Pengaturan ini mempermudah kerja tim, karena pengguna dalam grup yang sama dapat mengedit file bersama tanpa perlu mengubah izin secara manual.

Keanggotaan Grup di Linux Di Linux, setiap pengguna memiliki satu grup utama yang tercatat di /etc/passwd dan /etc/group. Grup utama ini digunakan saat pengguna membuat file atau direktori. Selain itu, pengguna juga bisa tergabung dalam hingga 15 grup sekunder yang memberikan akses tambahan. Untuk melihat daftar grup yang dimiliki pengguna, gunakan perintah berikut: bash $ groups [user1 user2 ...] $ id -Gn [user1 user2 ...] Hasil output dapat bervariasi tergantung pada distribusi Linux yang digunakan: CentOS: ```bash $ groups Output: student ``` Ubuntu: ```bash $ groups Output: student adm cdrom sudo dip plugdev lpadmin sambashare libvirt ``` Output ini menunjukkan grup utama serta grup sekunder yang diikuti oleh pengguna.

File Permissions and Partnership Owner, Group and World Saat menjalankan perintah ls -l, seperti contoh: $ ls -l a_file -rw-rw-r-- 1 coop aproject 1601 Mar 9 15:04 a_file Setelah karakter pertama yang menunjukkan jenis file, ada sembilan karakter yang menunjukkan hak akses file. Karakter-karakter ini dibagi menjadi tiga bagian: Pemilik (Owner): Pengguna yang memiliki file (disebut juga user). Grup (Group): Grup pengguna yang memiliki akses ke file. Lainnya (World): Pengguna lain di luar grup. Pada contoh di atas, pemilik file adalah coop dan grup yang memiliki akses adalah aproject. Hak Akses File Saat menjalankan perintah `ls -l`, seperti berikut: bash $ ls -l /usr/bin/vi -rwxr-xr-x. 1 root root 910200 Jan 30 2014 /usr/bin/vi Karakter kedua hingga kesepuluh menunjukkan izin akses file yang terbagi dalam tiga bagian: - r: izin membaca (read) - w: izin menulis (write) - x: izin menjalankan (execute) Jika suatu izin tidak diberikan, akan ditampilkan dengan tanda `-`. Proses pengecekan hak akses dilakukan secara berurutan: 1. Jika pengguna adalah pemilik file, maka hak akses pemilik yang digunakan. 2. Jika pengguna termasuk dalam grup pemilik file, hak akses grup yang diterapkan. 3. Jika kedua kondisi di atas tidak terpenuhi, maka hak akses lainnya (other) yang digunakan. Selain itu, ada izin khusus seperti setuid/setgid, yang memungkinkan suatu file dieksekusi dengan hak akses pemilik atau grupnya. Chmod (Mengubah Hak Akses File) Untuk mengubah izin akses file di Linux, gunakan perintah `chmod`. Anda hanya dapat mengubah izin file yang Anda miliki, kecuali jika Anda adalah superuser (root). Contoh penggunaan `chmod`: Misalnya, untuk menambahkan izin eksekusi bagi pemilik (user) dan pengguna lain (other), serta menghapus izin tulis bagi grup: bash $ ls -l a_file -rw-rw-r-- 1 coop coop 1601 Mar 9 15:04 a_file $ chmod uo+x,g-w a_file $ ls -l a_file -rwxr--r-x 1 coop coop 1601 Mar 9 15:04 a_file Penjelasan: - u = user (pemilik) - o = other (pengguna lain) - g = group (grup) Hak akses bisa ditentukan dengan dua cara: 1. Format Oktal: Misalnya `0755` untuk menetapkan izin dengan angka. 2. Format Simbolik: Seperti `u+rwx`, `g+rx`, `o-rw`. Digit Oktal (Octal Digits) Untuk mempermudah pengelolaan izin akses file, kita sering menggunakan angka oktal. Setiap digit dalam format ini merepresentasikan hak akses untuk pemilik (owner), grup (group), dan lainnya (world) dalam satu langkah. ### Nilai Oktal Hak Akses: - 4 = baca (read) - 2 = tulis (write) - 1 = eksekusi (execute) ### Contoh Kombinasi: - 7 = 4 (read) + 2 (write) + 1 (execute) → rwx - 6 = 4 (read) + 2 (write) → rw - 5 = 4 (read) + 1 (execute) → r-x Saat menggunakan perintah `chmod`, Anda menentukan tiga angka yang masing-masing mewakili izin untuk pemilik, grup, dan lainnya. Contoh Perintah: bash chmod 755 a_file Perintah ini memberikan hak akses: - Pemilik (7) → rwx (baca, tulis, eksekusi) - Grup (5) → r-x (baca, eksekusi) - Lainnya (5) → r-x (baca, eksekusi) Chown dan Chgrp Perintah `chown` digunakan untuk mengubah kepemilikan file dan hanya dapat dijalankan oleh superuser. Sementara itu, `chgrp` berfungsi untuk mengubah grup pemilik file, tetapi hanya ke grup yang sudah diikuti oleh pengguna. ### Contoh Penggunaan: - Mengubah pemilik file: bash sudo chown wally somefile - Mengubah grup pemilik file: bash sudo chgrp cleavers somefile - Mengubah pemilik dan grup secara bersamaan: bash sudo chown wally:cleavers somefile - Mengubah kepemilikan secara rekursif (termasuk semua file dan folder di dalamnya): bash sudo chown -R wally:cleavers ./ mask Umask adalah pengaturan yang menentukan hak akses file atau direktori yang akan dikurangi saat dibuat. Secara default, file baru memiliki izin 0666 (baca dan tulis untuk semua pengguna), sedangkan direktori memiliki izin 0777 (baca, tulis, dan eksekusi untuk semua). Nilai umask berfungsi untuk membatasi izin default tersebut demi keamanan. Contoh: - Jika umask = 0002, maka: - File baru akan memiliki izin 0664 (rw-rw-r--). - Direktori baru akan memiliki izin 0775 (rwxrwxr-x). Cara melihat nilai umask saat ini: bash $ umask 0002 Cara mengubah nilai umask: bash $ umask 0022

Filesystem ACLs (Access Control Lists) ACL (Access Control Lists) memungkinkan kontrol akses yang lebih fleksibel dibandingkan sistem izin standar berbasis pengguna, grup, dan dunia.
Dengan ACL, hak akses dapat diberikan secara spesifik kepada pengguna atau grup tertentu tanpa harus mengubah izin umum menjadi 777. Beberapa sistem file di Linux mendukung ACL, yang bisa diaktifkan saat mount dengan opsi -acl. Ini memungkinkan pengelolaan izin yang lebih rinci dan terperinci. Perintah untuk Mengelola ACL: - Melihat ACL pada file atau direktori: bash $ getfacl /home/stephane/file1 - Mengubah atau menghapus ACL: - Menambahkan hak akses untuk pengguna tertentu: bash $ setfacl -m u:isabelle:rx /home/stephane/file1 - Menghapus hak akses pengguna: bash $ setfacl -x u:isabelle /home/stephane/file1 - Menetapkan ACL default untuk direktori: bash $ setfacl -m d:u:isabelle:rx somedir Dengan konfigurasi ini, file baru yang dibuat dalam direktori tersebut akan mewarisi ACL default. Network Addresses Alamat IP Alamat IP Alamat IP berfungsi sebagai identitas perangkat dalam jaringan internet dan didaftarkan melalui Penyedia Layanan Internet (ISP). Jenis Alamat IP IPv4 - Menggunakan format 32-bit yang terdiri dari 4 kelompok oktet, masing-masing berisi 8 bit. - Contoh: 148.114.252.10 IPv6 - Memiliki format 128-bit yang terdiri dari 8 kelompok oktet 16-bit. - Contoh: 2003:0db5:6123:0000:1f4f:0000:5529:fe23 Meskipun IPv6 dikembangkan untuk menggantikan IPv4, saat ini IPv4 masih lebih banyak digunakan.

Jenis Alamat IPv4 Unicast Alamat yang terkait dengan perangkat tertentu. Contoh: 140.211.169.4. Network Alamat yang digunakan untuk menunjukkan jaringan, dengan bagian host diatur ke semua nol biner. Contoh: 192.168.1.0. Broadcast Alamat yang digunakan untuk mengirim pesan ke semua perangkat dalam suatu jaringan. Contoh: 172.16.255.255 atau 192.168.1.255. Multicast Alamat yang digunakan untuk mengirim pesan ke perangkat tertentu yang dikonfigurasi untuk menerima alamat tersebut. Contoh: 224.0.0.2. Alamat yang Dipesan (Reserved Addresses) Alamat IP yang Dipesan Beberapa alamat IP memiliki fungsi khusus dalam jaringan, antara lain: Loopback (127.x.x.x) - Digunakan untuk mengakses sistem lokal. - Umumnya menggunakan 127.0.0.1 sebagai alamat standar. Alamat 0.0.0.0 - Digunakan oleh perangkat yang belum mendapatkan alamat IP, seperti dalam proses DHCP dan BOOTP. Alamat Broadcast (255.255.255.255) - Digunakan untuk komunikasi internal dalam jaringan. - Tidak bisa digunakan sebagai alamat perangkat individu. Alamat IP Khusus untuk Jaringan Pribadi Beberapa rentang alamat IP dikhususkan untuk jaringan internal dan tidak dapat digunakan di internet publik: - 10.0.0.0 – 10.255.255.255 - 172.16.0.0 – 172.31.255.255 - 192.168.0.0 – 192.168.255.255 Alamat ini umumnya digunakan untuk jaringan lokal di rumah, kantor, atau lingkungan perusahaan. Jenis Alamat IPv6 Tipe Alamat dalam Jaringan Unicast - Paket dikirim langsung ke satu perangkat atau antarmuka tertentu. - Terdiri dari dua jenis: - Link-local: Secara otomatis dikonfigurasi untuk setiap antarmuka, tetapi tidak dapat dirutekan. - Global: Ditetapkan secara manual atau dinamis dan dapat dirutekan melalui jaringan. Multicast - Paket dikirim ke beberapa perangkat sekaligus, memungkinkan komunikasi satu-ke-banyak dalam jaringan. Anycast - Paket dikirim ke perangkat terdekat dalam kelompok berdasarkan rute terpendek. IPv4-Mapped - Digunakan untuk mengadaptasi alamat IPv4 dalam sistem IPv6. - Contoh format: `::FFFF:a.b.c.d/96`. Alamat Khusus IPv6 - IPv6 memiliki alamat loopback yang ditetapkan untuk interface lo, yaitu `::1/128`. Kelas Alamat IPv4 Kelas A 8 bit untuk bagian jaringan, 24 bit untuk bagian host. Digunakan untuk jaringan besar. Kelas B 16 bit untuk bagian jaringan, 16 bit untuk bagian host. Digunakan untuk jaringan menengah. Kelas C 24 bit untuk bagian jaringan, 8 bit untuk bagian host. Digunakan untuk jaringan kecil. Kelas D Digunakan untuk multicast (mengirim data ke banyak tujuan). Kelas E Tidak digunakan saat ini. Netmask Netmask dan Fungsinya Netmask digunakan untuk menentukan bagian dari alamat IP yang mewakili jaringan serta bagian yang digunakan untuk host. Selain itu, netmask membantu dalam menghitung alamat jaringan dan alamat broadcast. Perhitungan Alamat Jaringan Alamat jaringan diperoleh dengan melakukan operasi logika AND antara alamat IP dan netmask. - Alamat IP: 172.16.2.17 - Netmask: 255.255.0.0 - Alamat Jaringan (hasil operasi AND): 172.16.0.0 Semua perangkat dalam jaringan yang memiliki alamat jaringan yang sama dapat berkomunikasi langsung satu sama lain tanpa perlu perantara tambahan. Setting Hostname Hostname di Linux Hostname adalah nama unik yang digunakan untuk mengidentifikasi perangkat dalam jaringan. Jika dikombinasikan dengan nama domain, ia membentuk Fully Qualified Domain Name (FQDN), misalnya: `antje.linuxfoundation.org`. Melihat Hostname Saat Ini Gunakan perintah berikut untuk mengecek hostname perangkat: bash $ hostname Mengubah Hostname Perubahan hostname memerlukan hak akses root. Untuk mengubahnya sementara, gunakan: bash $ sudo hostname <nama_baru> Namun, agar hostname tetap sama setelah sistem direstart, gunakan perintah berikut: bash $ sudo hostnamectl set-hostname <nama_baru> Di sistem modern, hostnamectl lebih direkomendasikan karena menggantikan metode lama yang mengubah file konfigurasi secara manual. Melihat Informasi Lengkap Hostname Untuk mendapatkan detail hostname dan konfigurasi terkait, jalankan: bash $ hostnamectl Network Device and Configuration

Perangkat jaringan, seperti Ethernet dan koneksi nirkabel, memerlukan konfigurasi yang cermat, terutama dalam lingkungan dengan banyak perangkat serupa.

Konsistensi dalam penamaan perangkat sangat penting untuk mempermudah administrasi. Oleh karena itu, sistem penamaan perangkat yang lebih terprediksi telah diperkenalkan baru-baru ini.

Berbagai alat tersedia untuk mengelola perangkat jaringan, mengatur konfigurasi, dan mengelola rute jaringan. Seorang administrator sistem perlu memahami cara menggunakan alat-alat ini dengan baik.

Beberapa hal yang perlu dikuasai meliputi:

  • Mengidentifikasi perangkat jaringan yang digunakan dalam sistem.
  • Menggunakan perintah ip untuk menampilkan dan mengelola perangkat jaringan.
  • Menggunakan ifconfig, meskipun ini merupakan metode lama dalam konfigurasi jaringan.
  • Memahami sistem penamaan perangkat jaringan yang lebih konsisten untuk memastikan kestabilan konfigurasi.
  • Menggunakan Network Manager untuk mengonfigurasi perangkat jaringan dengan pendekatan yang lebih fleksibel, independen dari distribusi Linux yang digunakan.
  • Mengatur rute jaringan, baik rute default maupun rute statis.
  • Mengonfigurasi resolusi nama domain untuk memastikan komunikasi jaringan yang optimal.
  • Menggunakan alat diagnostik jaringan untuk memecahkan masalah konektivitas.

Dengan memahami konsep-konsep ini, pengelolaan perangkat jaringan akan menjadi lebih efisien dan terstruktur.

Network Device Penamaan Perangkat Jaringan di Linux Berbeda dengan perangkat blok atau karakter, perangkat jaringan tidak memiliki file perangkat khusus. Sebagai gantinya, perangkat ini dikenali melalui nama tertentu, seperti: - eth0, eth1 → untuk perangkat Ethernet - wlan0, wlan1 → untuk perangkat nirkabel - br0, br1 → untuk antarmuka bridge - vmnet0, vmnet1 → untuk perangkat virtual Biasanya, nama perangkat terdiri dari jenis perangkat diikuti oleh angka. Namun, sistem penamaan tradisional yang berdasarkan urutan perangkat dapat menimbulkan kebingungan.
Misalnya, perangkat Ethernet pertama mungkin diberi nama eth0 dan yang kedua eth1, tetapi jika urutan perangkat berubah, nama tersebut juga bisa berubah. Untuk mengatasi masalah ini, sistem dapat menghubungkan alamat MAC perangkat dengan nama tetap melalui file konfigurasi.
Meskipun metode ini efektif, pengaturan manual diperlukan, dan dapat bermasalah jika alamat MAC berubah, seperti pada perangkat virtual atau sistem tertanam.

ip Perintah `ip` adalah alat baris perintah yang digunakan untuk mengonfigurasi, mengelola, dan memeriksa parameter antarmuka jaringan, perangkat, serta routing. Perintah ini lebih direkomendasikan dibandingkan `ifconfig` karena lebih fleksibel dan efisien, menggunakan netlink sockets daripada panggilan sistem ioctl. Dengan perintah `ip`, Anda dapat melakukan berbagai tugas seperti: - Menampilkan dan mengontrol perangkat jaringan - Mengelola routing - Mengatur routing berbasis kebijakan - Mengonfigurasi tunneling Sintaks Dasar `ip` bash ip [OPTIONS] OBJECT {COMMAND | help} ip [ -force ] -batch filename `OBJECT` menentukan jenis tindakan yang akan dilakukan, sedangkan perintah yang tersedia bergantung pada OBJECT yang dipilih. ifconfig `ifconfig` adalah alat administratif di sistem operasi berbasis UNIX yang digunakan untuk mengonfigurasi, mengontrol, dan melihat parameter antarmuka jaringan, baik melalui baris perintah maupun skrip konfigurasi.
Namun, perintah ini kini telah digantikan oleh `ip`, dan beberapa distribusi Linux tidak lagi menyediakannya secara default. Contoh Penggunaan `ifconfig` - Menampilkan semua antarmuka jaringan: bash ifconfig - Melihat informasi antarmuka tertentu (misalnya `ens3`): bash ifconfig ens3 - Menetapkan alamat IP pada antarmuka `eth0`: bash sudo ifconfig eth0 10.5.5.10 - Mengatur netmask 24-bit pada `eth0`: bash sudo ifconfig eth0 netmask 255.255.255.0 - Mengaktifkan antarmuka `ens3`: bash sudo ifconfig ens3 up - Menonaktifkan antarmuka `ens3`: bash sudo ifconfig ens3 down - Mengatur MTU (Maximum Transfer Unit) menjadi 1480 byte pada `ens3`: bash sudo ifconfig ens3 mtu 1480 Predictable Network Interface Device Names Predictable Network Interface Device Names (PNIDN)
adalah sistem penamaan perangkat jaringan yang lebih terstruktur dan dapat diprediksi, yang digunakan bersama dengan udev dan systemd.
Ada 5 tipe nama yang digunakan: Berdasarkan nomor indeks yang diberikan oleh Firmware atau BIOS untuk perangkat onboard. Contoh: eno1. Berdasarkan nomor slot PCI Express untuk perangkat hotplug. Contoh: ens1. Berdasarkan lokasi fisik atau geografis koneksi perangkat. Contoh: enp2s0. Berdasarkan alamat MAC perangkat. Contoh: enx7837d1ea46da. Menggunakan metode lama. Contoh: eth0. Contoh: Pada mesin dengan antarmuka jaringan onboard, nama perangkatnya bisa jadi ens3. Nama perangkat ini terkait dengan lokasi fisik perangkat di sistem PCI. Untuk perangkat nirkabel, yang dulu namanya hanya wlan0, sekarang bisa menjadi wlp3s0 sesuai dengan pola ini. Sistem ini dapat dimatikan untuk kembali menggunakan nama perangkat lama, namun pada penjelasan ini, kita lebih sering menggunakan nama lama untuk kemudahan dan kesederhanaan. Alat Konfigurasi Jaringan dan File Konfigurasi NIC Setiap distribusi Linux memiliki struktur file dan direktori konfigurasi jaringan yang sedikit berbeda, tergantung pada versi yang digunakan. Berikut adalah beberapa lokasi file konfigurasi yang umum: File Konfigurasi Jaringan di Berbagai Distribusi - Red Hat: - `/etc/sysconfig/network` - `/etc/sysconfig/network-scripts/ifcfg-ethX` - `/etc/sysconfig/network-scripts/route-ethX` - Debian: - `/etc/network/interfaces` - SUSE: - `/etc/sysconfig/network` Pada sistem yang menggunakan systemd, disarankan untuk menggunakan Network Manager, karena beberapa file konfigurasi ini mungkin sudah tidak digunakan atau ukurannya lebih kecil pada distribusi Linux terbaru. Network Manager Di masa lalu, konfigurasi jaringan lebih sederhana karena sebagian besar koneksi menggunakan kabel (Ethernet) dan jarang berubah. Namun, dengan berkembangnya perangkat nirkabel dan teknologi hotplug, pengelolaan jaringan menjadi lebih dinamis dan kompleks. Network Manager memungkinkan pengelolaan koneksi jaringan dengan lebih fleksibel dan otomatis. Meskipun masih bergantung pada file konfigurasi, penggunaan alat dari Network Manager lebih disarankan untuk melakukan perubahan dan pembaruan pengaturan jaringan. Antarmuka Network Manager 1. `nmtui` (Network Manager Text User Interface) - Antarmuka berbasis teks yang memudahkan pengguna dalam mengedit koneksi, mengaktifkan perangkat, dan mengatur hostname. 2. `nmcli` (Network Manager Command Line Interface) - Antarmuka baris perintah yang memungkinkan eksekusi perintah secara langsung atau dalam mode interaktif. `nmtui` lebih ramah bagi pengguna untuk perubahan sederhana, sedangkan `nmcli` lebih cocok untuk skrip atau pengguna yang terbiasa dengan terminal. Keduanya bersifat lebih universal dan mengatasi perbedaan konfigurasi jaringan antar distribusi Linux. Routing Routing adalah proses pemilihan jalur terbaik untuk mengirimkan lalu lintas jaringan. Informasi tentang jalur ini disimpan dalam routing table, yang berisi daftar rute ke jaringan lain. Melihat Routing Table Gunakan perintah berikut untuk menampilkan tabel routing: bash $ route -n $ ip route Default Route Default route digunakan ketika tidak ada rute lain yang sesuai dalam routing table. Default route bisa diperoleh secara otomatis melalui DHCP atau dikonfigurasi secara manual. Mengonfigurasi Default Route dengan `nmcli` bash $ sudo nmcli con mod virbr0 ipv4.routes 178.128.112.0/24 +ipv4.gateway 10.104.0.0 $ sudo nmcli con up virbr0 Selain menggunakan perintah di atas, Anda juga bisa mengubah file konfigurasi jaringan: - Red Hat: `/etc/sysconfig/network` - Debian: `/etc/network/interfaces` Static Routes Static route digunakan untuk mengontrol arah lalu lintas jaringan secara manual, terutama jika ada beberapa router dalam jaringan. Menambahkan Static Route Secara Manual bash $ sudo ip route add 10.5.0.0/16 via 192.168.1.100 - Pada sistem Red Hat, konfigurasi static route bisa ditambahkan di file: `/etc/sysconfig/network-scripts/route-ethX` - Pada sistem Debian, pengaturan static route dapat dimasukkan ke dalam file: `/etc/network/interfaces` Name Resolution Name resolution adalah proses mengubah nama host menjadi alamat IP. Misalnya, saat browser atau email client mengakses training.linuxfoundation.org, sistem akan mengonversi nama tersebut menjadi alamat IP untuk bisa terhubung ke server. Ada dua cara untuk melakukan name resolution: Static Name Resolution (menggunakan /etc/hosts). Dynamic Name Resolution (menggunakan server DNS). Untuk mencari alamat IP dari sebuah hostname, bisa menggunakan perintah berikut: dig: Menampilkan informasi lebih detail. host: Lebih ringkas. nslookup: Lebih lama dan terkadang sudah dianggap usang. Menggunakan /etc/hosts File /etc/hosts menyimpan data lokal tentang hostnames dan alamat IP yang terkait. File ini biasanya digunakan untuk jaringan lokal kecil dan memetakan alamat IP dengan hostname. Contoh isi file /etc/hosts: 127.0.0.1 localhost 192.168.1.1 myserver.local File terkait lainnya adalah /etc/hosts.deny dan /etc/hosts.allow, yang mengatur akses ke sistem berdasarkan nama host. DNS (Domain Name System) Jika name resolution tidak dapat dilakukan melalui /etc/hosts, maka sistem akan menghubungi server DNS. DNS adalah layanan dinamis yang terdiri dari server-server yang saling berkoordinasi untuk mencari nama. Pengaturan DNS ada di /etc/resolv.conf, yang berisi daftar server DNS yang akan digunakan, seperti: nameserver 8.8.8.8 nameserver 127.0.0.53 Pada sistem modern, file /etc/hosts.resolv sering kali dihasilkan secara otomatis oleh NetworkManager. Diagnostik Jaringan Setiap administrator sistem perlu memahami utilitas dasar untuk mendiagnosis jaringan. Berikut beberapa perintah yang umum digunakan: Contoh Perintah Diagnostik Jaringan - Mengirimkan paket uji ke host dan melihat respons: bash ping -c3 adinusa.id Perintah ini mengirimkan 3 paket ke adinusa.id dan melaporkan waktu respons serta kemungkinan kehilangan paket. - Menampilkan jalur jaringan menuju host tujuan: bash traceroute google.com Perintah ini menunjukkan rute yang diambil oleh paket menuju google.com, termasuk waktu yang diperlukan di setiap titik. - Memonitor rute jaringan secara real-time: bash mtr adinusa.id `mtr` adalah kombinasi antara `ping` dan `traceroute`, yang menampilkan data jalur dan latensi dalam format yang diperbarui secara berkala. Penjelasan Utilitas Jaringan - `ping` → Menguji koneksi dengan mengirimkan paket ke host tertentu untuk memeriksa apakah jaringan aktif dan dapat dijangkau. - `traceroute` → Menunjukkan jalur paket data ke host tujuan, termasuk waktu tempuh di setiap titik perantara. - `mtr` → Kombinasi antara `ping` dan `traceroute`, memberikan informasi jalur dengan pembaruan real-time. - `dig` → Menguji dan mendapatkan informasi DNS dari suatu domain atau host. Firewalls Apa Itu Firewall? Firewall adalah sistem keamanan jaringan yang bertugas mengawasi dan mengontrol lalu lintas data yang masuk maupun keluar berdasarkan aturan yang telah ditentukan.
Sistem ini berfungsi sebagai penghalang untuk melindungi jaringan, dengan mempertimbangkan faktor kepercayaan dan struktur jaringan. Firewall dapat berupa perangkat keras maupun perangkat lunak dan sering kali terintegrasi dalam router atau komputer. Beberapa firewall juga memiliki fitur tambahan seperti fungsi routing. Penyaringan Paket Sebagian besar firewall menggunakan metode penyaringan paket, di mana informasi dikirim dalam bentuk paket yang terdiri dari: - Header: Berisi alamat asal, tujuan, jenis paket, dan metadata lainnya. - Payload: Bagian yang mengandung data utama. - Footer: Menyediakan informasi tambahan terkait paket tersebut. Firewall menganalisis bagian header dan footer paket untuk menentukan tindakan yang sesuai, seperti mengizinkan, menolak, mengarahkan ulang, atau memeriksa lebih lanjut demi alasan keamanan. Evolusi Firewall 1. Firewall Generasi Pertama → Hanya memeriksa isi paket tanpa melihat status koneksi. 2. Firewall Generasi Kedua (Stateful) → Dapat mengenali status koneksi dan membedakan antara paket baru dan paket yang termasuk dalam sesi koneksi yang sudah ada. 3. Firewall Generasi Ketiga (Layer Aplikasi) → Memahami aplikasi dan protokol yang digunakan, serta mampu memblokir lalu lintas yang tidak sesuai dengan pola komunikasi normal. Konfigurasi Firewall Firewall dapat dikelola menggunakan berbagai alat, baik dalam bentuk baris perintah maupun antarmuka grafis: - Baris Perintah: Menggunakan alat seperti `iptables` atau `firewalld`, memberikan fleksibilitas lebih tinggi dan kompatibilitas antar distribusi Linux. - Antarmuka Grafis: Misalnya `system-config-firewall`, yang lebih mudah digunakan tetapi mungkin memiliki keterbatasan dibandingkan konfigurasi berbasis terminal. firewalld dan firewall-cmd firewalld adalah pengelola firewall yang bersifat dinamis dan menggunakan konsep zona jaringan/firewall dengan tingkat kepercayaan yang berbeda untuk mengatur antarmuka jaringan atau koneksi.
Firewall ini mendukung IPv4 dan IPv6 serta memungkinkan perubahan konfigurasi secara sementara maupun permanen. Selain itu, firewalld menyediakan antarmuka bagi layanan atau aplikasi untuk menambahkan aturan firewall secara otomatis. Konfigurasi firewalld File konfigurasi firewalld disimpan di: - `/etc/firewalld` → Digunakan oleh administrator sistem dan memiliki prioritas lebih tinggi. - `/usr/lib/firewalld` → Berisi konfigurasi bawaan yang dapat digantikan oleh file di `/etc/firewalld`. Menggunakan firewall-cmd firewalld dikonfigurasi melalui firewall-cmd, sebuah alat berbasis baris perintah. Untuk melihat daftar opsi yang tersedia, jalankan perintah berikut: bash $ firewall-cmd --help Perintah ini akan menampilkan berbagai opsi seperti memeriksa status firewall, memuat ulang konfigurasi, atau mengubah aturan firewall secara permanen maupun sementara. Catatan: firewalld merupakan pengganti iptables. Oleh karena itu, kedua layanan ini tidak boleh dijalankan bersamaan dalam satu sistem. Status Layanan firewalld firewalld adalah layanan yang harus berjalan agar firewall dapat dikonfigurasi dan digunakan. Berikut beberapa perintah untuk mengelola layanan ini: Mengaktifkan atau Menonaktifkan firewalld Untuk memastikan firewalld aktif setiap kali sistem dinyalakan atau menonaktifkannya secara permanen: bash $ sudo systemctl enable firewalld # Mengaktifkan firewalld $ sudo systemctl disable firewalld # Menonaktifkan firewalld ### Memulai atau Menghentikan firewalld Untuk memulai atau menghentikan layanan secara manual: bash $ sudo systemctl start firewalld Menjalankan firewalld $ sudo systemctl stop firewalld Menghentikan firewalld Melihat Status firewalld Untuk memeriksa apakah firewalld sedang berjalan: bash $ sudo systemctl status firewalld $ sudo firewall-cmd --state Mengaktifkan IP Forwarding Jika ada lebih dari satu antarmuka jaringan di IPv4, Anda perlu mengaktifkan IP forwarding. Mengaktifkan sementara: bash $ sudo sysctl net.ipv4.ip_forward=1 $ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward Mengaktifkan secara permanen: Tambahkan baris berikut ke file `/etc/sysctl.conf`: net.ipv4.ip_forward=1 Lalu jalankan perintah berikut untuk menerapkan perubahan tanpa reboot: bash $ sudo sysctl -p Zona pada firewalld firewalld menggunakan konsep zona untuk mengatur tingkat kepercayaan dan aturan terhadap lalu lintas jaringan masuk dan keluar. Setiap antarmuka jaringan terkait dengan zona tertentu, yang biasanya dikonfigurasi oleh NetworkManager, tetapi dapat diubah menggunakan firewall-cmd atau antarmuka grafis firewall-config. Jenis Zona dalam firewalld - drop: Semua paket masuk dibuang tanpa respons. - block: Semua koneksi masuk ditolak; hanya koneksi dari dalam sistem yang diizinkan. - public: Perangkat di jaringan tidak dipercaya, hanya koneksi tertentu yang diizinkan. - external: Digunakan pada router, dengan aturan yang mirip zona public. - dmz (Demilitarized Zone): Digunakan untuk membatasi akses ke layanan tertentu. - work: Mempercayai perangkat yang terhubung tetapi tetap membatasi koneksi yang diperbolehkan. - home: Mempercayai sebagian besar perangkat tetapi tetap menyaring koneksi. - internal: Mirip dengan zona work, dengan perlindungan tambahan. - trusted: Semua koneksi diperbolehkan tanpa batasan. Pengelolaan Zona dengan firewall-cmd Menampilkan zona yang sedang digunakan: bash $ sudo firewall-cmd --get-default-zone # Melihat zona default $ sudo firewall-cmd --get-active-zones # Menampilkan zona aktif $ sudo firewall-cmd --get-zones # Menampilkan semua zona yang tersedia Mengubah zona default: bash $ sudo firewall-cmd --set-default-zone=trusted Menentukan zona untuk antarmuka jaringan: bash $ sudo firewall-cmd --zone=internal --change-interface=eno1 Melihat zona terkait dengan antarmuka tertentu: bash $ sudo firewall-cmd --get-zone-of-interface=eno1 Menampilkan detail konfigurasi zona: bash $ sudo firewall-cmd --zone=public --list-all Untuk informasi lebih lanjut, gunakan perintah berikut: bash $ man firewall-cmd Manajemen Sumber (Source Management) Pada firewalld, sebuah zona bisa diikat tidak hanya ke antarmuka jaringan, tetapi juga ke alamat jaringan tertentu. Paket akan dikaitkan dengan sebuah zona jika: Paket datang dari alamat sumber yang sudah terikat dengan zona tersebut, atau Paket datang dari antarmuka yang terikat dengan zona tersebut. Paket yang tidak memenuhi kriteria di atas akan diarahkan ke zona default (biasanya public). Contoh cara menetapkan sumber ke zona secara permanen: $ sudo firewall-cmd --permanent --zone=trusted --add-source=192.168.100.22/24 Perintah ini akan menambahkan IP 192.168.100.x ke zona trusted. Untuk menghapus atau mengubah sumber dari zona, gunakan opsi --remove-source atau --change-source. Untuk melihat daftar sumber yang terikat dengan sebuah zona: $ sudo firewall-cmd --permanent --zone=trusted --list-sources Jika tidak menggunakan opsi --permanent, perintah ini hanya menunjukkan perilaku saat ini (runtime). Manajemen Port Manajemen port dalam firewalld serupa dengan pengelolaan layanan. Menambahkan Port ke Zona Untuk menambahkan port ke zona tertentu, gunakan perintah berikut: bash $ sudo firewall-cmd --zone=home --add-port=21/tcp Melihat Daftar Port dalam Zona Gunakan perintah berikut untuk menampilkan port yang sudah dikonfigurasi dalam suatu zona: bash $ sudo firewall-cmd --zone=home --list-ports Memeriksa Penggunaan Port Untuk mengetahui layanan yang menggunakan port tertentu, misalnya port 21 yang biasanya digunakan untuk FTP, gunakan perintah berikut: bash $ grep " 21/tcp" /etc/services Perintah ini akan menampilkan informasi tentang layanan yang terkait dengan port tersebut. System Startup and Group Urutan Booting Proses booting dimulai dengan BIOS/UEFI yang mencari dan menjalankan program boot (boot loader). Program ini kemudian memuat kernel sistem operasi. Langkah-langkahnya: BIOS/UEFI memulai POST (Power On Self Test) untuk memeriksa perangkat keras, lalu mencari program boot di lokasi tertentu, biasanya di MBR (Master Boot Record) atau menggunakan UEFI. Boot loader (misalnya GRUB) memuat kernel ke memori dan menjalankannya. Kernel melakukan pengecekan perangkat keras dan kemudian memulai proses init (pid=1), yang mengelola inisialisasi sistem. Init menjalankan skrip startup, tergantung apakah menggunakan SysVinit, Upstart, atau systemd. Komputer modern semakin banyak yang menggunakan UEFI sebagai pengganti BIOS. BIOS Pada arsitektur x86, BIOS (Basic Input/Output System) berfungsi sebagai antarmuka dasar untuk mengakses perangkat seperti keyboard, layar, drive disk, dan komunikasi serial.
BIOS tersimpan dalam chip ROM, sehingga tetap utuh meskipun terjadi kegagalan pada disk. Selama proses booting, BIOS bertugas memuat boot loader, yang kemudian melanjutkan proses untuk menjalankan sistem operasi. Boot Loaders GRUB adalah boot loader yang sering digunakan pada distribusi Linux modern. GRUB memungkinkan booting berbagai sistem operasi serta mendukung antarmuka grafis dan teks. efibootmgr bukanlah boot loader, melainkan manajer boot yang digunakan bersama GRUB pada sistem multi-boot EFI. LILO merupakan boot loader lama yang kini sudah tidak digunakan lagi. Sementara itu, Das U-Boot banyak dipakai pada sistem embedded, tetapi tidak dibahas dalam kursus ini. Shutting Down and Rebooting Perintah shutdown digunakan untuk mematikan sistem dengan aman, memberi pemberitahuan kepada pengguna, serta memastikan sistem berhenti tanpa merusak data. Berikut beberapa contoh penggunaan perintah shutdown: - Matikan dalam 1 menit dengan pesan peringatan: bash shutdown -h +1 "Power Failure imminent" - Matikan sistem segera: bash shutdown -h now - Restart sistem segera: bash shutdown -r now - Matikan sistem langsung: bash shutdown now Secara default, jika perintah shutdown dijalankan tanpa opsi tambahan, sistem akan dimatikan.
Namun, pada beberapa distribusi seperti Ubuntu, perintah ini mungkin membawa sistem ke mode single-user daripada langsung mematikan. Selain shutdown, masih ada perintah lain seperti reboot, halt, dan poweroff, yang meskipun lebih lama, tetap sering digunakan. Catatan: Sebelum melakukan reboot atau shutdown pada server, pastikan ada alasan yang jelas, karena tidak semua masalah dapat diselesaikan dengan restart. Apa itu GRUB? GRUB (GRand Unified Bootloader) adalah bootloader yang digunakan oleh hampir semua sistem Linux berbasis x86, kecuali pada sistem embedded. Beberapa fitur utama GRUB: - Memungkinkan pengguna memilih sistem operasi lain saat booting. - Bisa memilih kernel atau ramdisk yang berbeda untuk suatu sistem operasi. - Boot parameters dapat diubah langsung saat booting tanpa harus mengedit file konfigurasi sebelumnya. Versi terbaru, GRUB 2, telah menggantikan versi sebelumnya (GRUB 1) di sebagian besar distribusi Linux, kecuali pada sistem berbasis RHEL 6. Versi GRUB Pada GRUB, baik versi 1 maupun versi 2, konsep dasarnya tetap sama. Saat sistem melakukan booting, GRUB membaca file konfigurasi utama, yaitu grub.cfg, yang biasanya terletak di /boot/grub/, /boot/grub2/, atau /boot/efi/EFI/redhat/. File grub.cfg dihasilkan secara otomatis menggunakan perintah seperti update-grub (atau grub2-mkconfig), berdasarkan konfigurasi yang terdapat di direktori /etc/grub.d dan file /etc/default/grub. Disarankan untuk tidak mengedit grub.cfg secara manual, tetapi jika dilakukan, biasanya perubahan akan tetap tersimpan. Pilihan Interaktif dengan GRUB saat Boot Saat proses booting, setelah POST dan BIOS, GRUB akan menampilkan menu berisi daftar sistem operasi atau distribusi Linux yang tersedia. Anda dapat memilih opsi menggunakan tombol panah atas dan bawah, atau membiarkan sistem secara otomatis memilih opsi default setelah waktu tertentu. GRUB juga memungkinkan perubahan sementara. Dengan menekan tombol 'e' setelah memilih entri, Anda dapat masuk ke mode pengeditan dan melakukan modifikasi pada baris perintah kernel. Misalnya, menambahkan kata "single" untuk masuk ke mode pengguna tunggal. Setelah selesai, tekan tombol yang sesuai untuk melanjutkan proses booting. Perubahan yang dilakukan di sini tidak permanen dan akan hilang setelah sistem di-reboot. Jika ingin membuat perubahan permanen, Anda perlu mengedit file konfigurasi GRUB secara langsung. Selain itu, Anda juga dapat masuk ke shell interaktif GRUB untuk menjalankan perintah lain atau memperbaiki konfigurasi jika terjadi masalah serius. System Init: Systemd, Systemv and Upstart Proses init (/sbin/init) adalah proses pertama yang dijalankan setelah booting dan terus berjalan hingga sistem dimatikan.
Init mengatur tahap akhir proses boot, mengkonfigurasi lingkungan, dan memulai proses yang diperlukan untuk login ke sistem. Selain itu, init juga bekerja dengan kernel untuk membersihkan proses yang sudah selesai. Dulu, hampir semua distribusi Linux menggunakan SysVinit, yang dibuat untuk sistem multi-user dan komputer tunggal pada zaman dulu, dengan fokus pada startup yang lebih lambat dan shutdown/reboot yang jarang terjadi.
Saat ini, sistem Linux modern lebih sering menggunakan systemd, yang memungkinkan pengolahan paralel dan waktu boot yang lebih cepat. Alternatif Startup Untuk mengatasi keterbatasan SysVinit, dikembangkan dua metode utama untuk mengelola proses startup sistem, yaitu Upstart dan systemd. - Upstart: Dikembangkan oleh Ubuntu pada tahun 2006 dan digunakan di Fedora 9 (2008), RHEL 6, serta beberapa perangkat embedded dan mobile. - systemd: Fedora menjadi distribusi pertama yang mengadopsinya pada tahun 2011, diikuti oleh RHEL dan SUSE. Pada Ubuntu 16.04, Upstart digantikan oleh systemd. Saat ini, semua distribusi Linux utama telah beralih ke systemd. Migrasi ke systemd cukup kompleks dan dapat menyebabkan bug atau hilangnya beberapa fitur.
Oleh karena itu, lapisan kompatibilitas untuk perangkat lunak lama masih dipertahankan. Saat ini, fokus utama adalah systemd, sedangkan SysVinit dan Upstart sudah jarang digunakan dan tidak akan dibahas lebih lanjut. Fitur systemd systemd adalah manajer sistem dan sesi yang digunakan di hampir semua distribusi Linux utama. Beberapa fitur utamanya meliputi: - Proses booting yang lebih cepat dibandingkan sistem init sebelumnya. - Kemampuan paralelisasi yang lebih baik. - Menggunakan socket activation dan D-Bus untuk memulai layanan. - Menggantikan skrip shell dengan program bawaan. - Memulai daemon sesuai permintaan (on-demand). - Melacak proses dengan menggunakan cgroups. - Mengelola mount point dan automount. - Menggunakan logika kontrol layanan berbasis dependensi transaksi. - Dapat menggantikan SysVinit dan tetap kompatibel dengan skrip SysVinit. Selain itu, systemd mendukung konsep runlevel melalui runlevel targets dan menggunakan file . service sebagai pengganti skrip bash untuk mengelola layanan.
Semua daemon dikelola dalam cgroups Linux untuk meningkatkan efisiensi dan kontrol sistem. Berkas Konfigurasi systemd systemd menggunakan berkas konfigurasi yang distandarisasi, tetapi tetap mendukung berkas konfigurasi lama yang bergantung pada masing-masing distribusi sebagai cadangan. Contoh berkas konfigurasi baru adalah /etc/hostname, yang menggantikan berkas lama seperti: - /etc/sysconfig/network di Red Hat - /etc/HOSTNAME di SUSE - /etc/hostname di Debian Berkas konfigurasi lainnya meliputi: - /etc/vconsole.conf → untuk mengatur pemetaan keyboard dan font pada konsol. - /etc/sysctl.d/.conf → direktori yang berisi parameter sysctl kernel. - /etc/os-release → menyimpan informasi mengenai ID distribusi. Meskipun systemd menggunakan konfigurasi baru, ia tetap mendukung perintah lama dari SysVinit serta konsep runlevel melalui runlevel targets, memastikan kompatibilitas dengan sistem lama0. systemctl systemctl adalah alat utama untuk mengelola layanan (services) dalam systemd. Berikut adalah sintaks dasar penggunaannya: bash $ systemctl [opsi] perintah [nama] Beberapa contoh penggunaan systemctl: - Menampilkan status systemd: bash $ systemctl - Menampilkan semua layanan yang tersedia: bash $ systemctl list-units -t service --all - Menampilkan layanan yang sedang aktif: bash $ systemctl list-units -t service - Memulai atau menghentikan layanan: bash $ sudo systemctl start foo.service $ sudo systemctl stop foo.service - Mengaktifkan atau menonaktifkan layanan agar berjalan saat booting: bash $ sudo systemctl enable sshd.service $ sudo systemctl disable sshd.service Perintah enable dan disable tidak langsung memulai atau menghentikan layanan, tetapi hanya mengatur apakah layanan tersebut akan dijalankan secara otomatis saat sistem dinyalakan.
Beberapa perintah dapat dijalankan oleh pengguna biasa, sementara yang lain memerlukan hak akses root atau sudo. Basic Troubleshooting Tingkat Pemecahan Masalah (Troubleshooting) Tingkat Keahlian: - Pemula: Mudah dipelajari dan cocok bagi mereka yang baru memulai. - Berpengalaman: Diperoleh setelah bertahun-tahun latihan dan pengalaman. - Ahli (Wizard): Meskipun terlihat seperti bakat alami, keterampilan ini sebenarnya bisa dipelajari. Setiap organisasi sebaiknya memiliki setidaknya satu ahli sebagai sumber rujukan yang andal. Pemecahan Masalah: Bahkan sistem yang dikelola dengan baik pun dapat mengalami kendala. Proses pemecahan masalah membantu mengidentifikasi apakah penyebabnya berasal dari perangkat lunak atau perangkat keras, serta apakah masalah bersifat lokal atau terkait dengan jaringan internal maupun Internet. Pemecahan masalah yang efektif memerlukan penilaian dan pengalaman. Walaupun sering dianggap sebagai keterampilan intuitif, mengikuti metode yang sistematis dapat membantu menemukan akar masalah secara konsisten Teknik Pemecahan Masalah Dasar. Pemecahan masalah melibatkan serangkaian langkah yang diulang hingga solusi ditemukan. Langkah-langkah dasar yang dapat dilakukan meliputi: - Identifikasi masalah: Pahami dan tentukan penyebabnya. - Reproduksi masalah: Coba ulangi masalah untuk memahami pola atau penyebabnya. - Mulai dari langkah sederhana: Coba solusi yang paling mudah terlebih dahulu. - Eliminasi penyebab secara bertahap: Singkirkan kemungkinan penyebab satu per satu. - Lakukan perubahan satu per satu: Jika perubahan tidak berhasil, kembalikan ke kondisi awal. - Periksa log sistem: Cek file log seperti `/var/log/messages` dan `/var/log/secure` untuk mendapatkan informasi tambahan. Penting untuk mengikuti prosedur yang telah distandarisasi dan menghindari keputusan berdasarkan intuisi tanpa dasar yang jelas. Jika intuisi digunakan, pastikan didukung oleh data yang cukup untuk menilai apakah langkah tersebut efektif. Intuisi yang bermanfaat berasal dari pengalaman, bukan sekadar dugaan. Hal-hal yang Perlu Diperiksa: Jaringan Masalah jaringan dapat disebabkan oleh faktor perangkat lunak maupun perangkat keras. Beberapa masalah mungkin sederhana, seperti driver yang belum terpasang atau kabel jaringan yang belum terhubung. Jika jaringan berjalan tetapi performanya buruk, biasanya ini lebih berkaitan dengan optimasi pengaturan daripada pemecahan masalah. Hal-hal yang perlu diperiksa saat terjadi gangguan jaringan: - Konfigurasi IP: Gunakan perintah `ifconfig` atau `ip` untuk memastikan antarmuka jaringan aktif dan dikonfigurasi dengan benar. - Driver Jaringan: Jika antarmuka tidak dapat diaktifkan, periksa apakah driver telah terpasang dengan `lsmod` atau dengan melihat file di `/proc` dan `/sys`. - Konektivitas: Gunakan `ping` untuk menguji apakah jaringan dapat dijangkau, melihat waktu respons, serta mendeteksi kehilangan paket. Gunakan `traceroute` untuk melacak jalur paket atau `mtr` untuk pemantauan berkelanjutan. - Gerbang Default dan Konfigurasi Routing: Jalankan `route -n` untuk mengecek apakah tabel routing telah dikonfigurasi dengan benar. - Penyelesaian Nama Host: Gunakan `dig` atau `host` pada URL untuk memastikan layanan DNS berfungsi sebagaimana mestinya.

Gagal Booting: Penyebab dan Solusi Jika sistem gagal melakukan booting dengan benar, memahami setiap tahap proses boot dapat membantu mengidentifikasi sumber masalah. Masalah Booting dan Solusinya 1. Layar Boot Loader Tidak Muncul - Penyebab: - Konfigurasi GRUB bermasalah. - Sektor boot mengalami kerusakan. - Solusi: - Coba instal ulang boot loader untuk memperbaikinya. 2. Kernel Gagal Dimuat - Penyebab: - Kernel rusak atau tidak kompatibel. - Konfigurasi GRUB tidak benar. - Parameter boot tidak sesuai. - Solusi: - Masuk ke menu GRUB interaktif. - Gunakan parameter minimal saat booting. - Boot dari rescue image untuk perbaikan. 3. Kernel Dimuat, tetapi Root Filesystem Gagal Mount - Penyebab: - Konfigurasi GRUB tidak sesuai. - File /etc/fstab salah atau tidak cocok dengan sistem. - Kernel tidak mendukung sistem file root. - Solusi: - Periksa dan perbaiki konfigurasi GRUB serta /etc/fstab. - Pastikan kernel memiliki dukungan untuk sistem file root. 4. Gagal di Proses Init - Penyebab: - File sistem mengalami kerusakan. - Skrip startup mengalami error. - Kernel yang baru digunakan bermasalah. - Solusi: - Boot ke runlevel yang lebih rendah, seperti mode single-user atau mode teks tanpa GUI untuk memperbaiki masalah.

Komentar

Postingan populer dari blog ini

Rangkuman ToT: Pembuatan Platform Digital dengan Microsite

Webinar Healthcare Data Privacy Web Series IV

Webinar Belajar Kepenulisan Buku Siap Tembus Penerbit!