linux adminitrasi sistem
Linux Standard Directory Tree
- 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.
- vmlinuz: Kernel Linux yang terkompresi
- initramfs: Sistem berkas RAM awal yang dipasang sebelum sistem berkas root yang sebenarnya tersedia.
- config: Digunakan untuk mengonfigurasi kompilasi kernel.
- System.map: Tabel simbol kernel, digunakan untuk debugging.
- NFS
- Samba
- CIFS
- AFS.
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.
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:
- Hosting web: Menyimpan file situs web di dalam
/srv/www/example.com/. - Server FTP: Menyimpan file yang diunggah pengguna di dalam
/srv/ftp/uploads/. - Kontrol versi: Menyimpan repositori proyek di dalam
/srv/git/project.git/.
- Mengapa Menggunakan
/srvDaripada Direktori Lain?
- Lebih terstruktur dibandingkan dengan menyimpan file layanan di dalam
/var/www/,/var/ftp/, dll. - Memisahkan data layanan dari log sistem dan konfigurasi yang biasanya ada di
/var. - Membantu administrator dan pengguna dalam mengidentifikasi data yang terkait dengan layanan dengan lebih cepat.
/tmp Directory- Fungsi: Direktori sementara yang dapat diakses oleh semua pengguna dan aplikasi.
- Ketidakstabilan: File di
/tmptidak 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
/tmpsaat reboot. - Distribusi modern (seperti Fedora) menggunakan
/tmpsebagai 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
/tmpuntuk file besar meskipun seharusnya tidak, karena pengguna sering tidak tahu cara mengonfigurasinya.
What Is a Program?
What Is a Process?
Process Attributes
Process Resource Isolation
Controlling Processes with ulimit
-S) → Nilai yang dapat diubah oleh pengguna, tetapi tidak bisa melebihi hard limit.Creating Processes
Creating Processes in a Command Shell
- 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.
- 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 (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.
- Running (Berjalan)
- Proses sedang dieksekusi pada CPU atau berada dalam run queue, menunggu jatah waktu eksekusi.
- Scheduler akan menentukan kapan proses ini dijalankan atau dipindahkan ke CPU lain jika ada yang kosong.
- Sleeping (Menunggu I/O)
- Proses menunggu permintaan I/O (misal membaca file atau menunggu jaringan).
- Setelah I/O selesai, kernel membangunkan proses dan memasukkannya kembali ke run queue.
- Stopped (Dihentikan Sementara)
- Proses dihentikan sementara (misal saat debugging atau pengguna menekan Ctrl+Z).
- Bisa dilanjutkan kembali dengan fg (foreground) atau bg (background).
- Zombie (Defunct Process)
- Proses yang telah berhenti tetapi belum di-reap oleh parent process.
- Hanya menyimpan exit status dan masih ada di process table.
- Jika parent mati, init (PID 1) atau kthreadd (PID 2) akan mengadopsinya.
- User Mode (Ring 3 - Mode Pengguna)
- Proses berjalan dalam lingkungan terbatas, tidak dapat mengakses langsung perangkat keras.
- 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)
- CPU memiliki akses penuh ke perangkat keras (memori, disk, jaringan, dll.).
- Proses user tidak bisa langsung menjalankan instruksi dalam kernel mode.
- Masuk ke kernel mode hanya melalui system call, misalnya saat:Membaca/menulis file,Membuat proses baru (fork) dan Mengakses perangkat keras.
- 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.
- 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).
- 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
- -20 (prioritas tertinggi)
- +19 (prioritas terendah)
What Are Signals?
Learning Objectives
Software Packaging Concepts
- 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.
top, tetapi lebih fleksibel dan memiliki tampilan yang lebih intuitif.
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.
Filesystem Basics
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.
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.
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.
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
Posting Komentar