LINUX COMMAND
CHEAT SHEET INTERAKTIF + LATIHAN KUIS UNTUK SISWA TKJ
CHEAT SHEET
CARI PERINTAH, KLIK BARIS UNTUK DETAIL, BINTANG UNTUK FAVORIT, COPY UNTUK MENYALIN CONTOH
TEKAN / UNTUK FOKUS CARI - ESC UNTUK BERSIHKAN - FAVORIT TERSIMPAN OTOMATIS DI PERANGKAT INI.
LATIHAN KUIS
10 SOAL ACAK - PILIH PERINTAH YANG SESUAI DESKRIPSI. BISA JUGA PAKAI TOMBOL 1-4.
MATERI LINUX
8 MODUL - DARI FILOSOFI SAMPAI SSH. MATERI POKOK UJIAN KOMPETENSI KEAHLIAN TKJ. KLIK UNTUK MEMBUKA.
Linux = kernel (inti pengelola hardware) + shell (penerjemah perintah) + utilitas GNU + distro (paketan siap pakai). Dua keluarga besar yang wajib kamu kenal: Debian/Ubuntu (apt) dan RHEL/CentOS/Rocky (dnf). Perbedaan terbesar ada di manajer paket, bukan perintah dasarnya.
Prinsip paling terkenal: "everything is a file". Perangkat adalah file (/dev), info proses adalah file (/proc), bahkan koneksi jaringan bisa dibaca sebagai file. Konsekuensinya: satu set tools (cat, grep, redirection) bisa dipakai untuk hampir semua hal.
Case-sensitive. File.txt, file.txt, dan FILE.TXT adalah tiga file berbeda. Sebagian besar perintah dan file sistem ditulis huruf kecil.
Path absolut vs relatif: absolut selalu dimulai dari / (/etc/hosts), relatif dari posisi sekarang (./laporan, ../data). Tanda penting: ~ = home, . = direktori ini, .. = satu level di atas, - = direktori sebelumnya.
Filesystem Hierarchy Standard (FHS) - peta direktori yang diujikan dan dipakai di dunia kerja:
| DIREKTORI | ISI |
|---|---|
| / | Akar seluruh filesystem |
| /etc | File konfigurasi sistem (hosts, ssh, netplan) |
| /home | Folder pribadi user biasa |
| /root | Home milik root (terpisah dari /home) |
| /var | Data variabel: log (/var/log), web (/var/www), mail |
| /tmp | Sementara - biasanya dibersihkan saat reboot |
| /usr | Program & library untuk semua user |
| /bin, /sbin | Binary esensial (perintah inti & admin) |
| /opt | Aplikasi pihak ketiga yang mandiri |
| /dev | File perangkat (sda, tty, null) |
| /proc, /sys | Virtual - jendela ke kernel & hardware |
| /mnt, /media | Titik mount drive eksternal/USB |
| /boot | Kernel & bootloader GRUB |
Hukum praktik: backup dulu sebelum mengedit /etc, dan jangan pernah berlatih eksperimen langsung di server produksi - pakai VM.
Setiap file punya pemilik (owner), grup, dan izin untuk tiga kelompok: owner, group, others. Izinnya tiga jenis: r = baca (4), w = tulis (2), x = eksekusi/masuk (1).
Anatomi ls -l: -rwxr-xr-- 1 tkj01 netadmin 4096 ... namafile. Karakter pertama tipe: - file, d direktori, l link. Sembilan berikutnya = izin owner-group-others.
Untuk direktori artinya berbeda: r = boleh melihat daftar isi, w = boleh membuat/menghapus file di dalamnya, x = boleh masuk (cd). Folder tanpa x tidak bisa dimasuki walpaun r aktif.
| OCTAL | BINARY | IZIN | PEMAKAIAN UMUM |
|---|---|---|---|
| 7 | 111 | rwx | Owner script / folder pribadi |
| 6 | 110 | rw- | File konfigurasi |
| 5 | 101 | r-x | Folder yang boleh dibaca+dimasuki |
| 4 | 100 | r-- | File hanya baca |
| 0 | 000 | --- | Tanpa izin |
Kombinasi wajib hafal: 755 untuk folder/script web (owner penuh, lainnya baca+eksekusi), 644 untuk file konfigurasi, 700 folder pribadi, 600 untuk private key SSH.
Mode simbolik lebih tepat sasaran: chmod u+x file (beri eksekusi ke owner), g-w (hapus tulis dari grup), o=r, a+r (semua). chown user:group file mengganti kepemilikan, -R untuk rekursif.
umask menentukan izin default file baru: file mulai 666, folder 777, lalu dikurangi umask. umask 022 -> file 644, folder 755.
Bit spesial (sering keluar soal): SUID (4000) - program berjalan sebagai pemiliknya, contoh passwd agar user biasa bisa mengubah /etc/shadow; SGID (2000) - file baru di folder mewarisi grup folder (kerja tim); Sticky bit (1000, t) - di /tmp: hanya pemilik file yang boleh menghapusnya.
Prinsip keamanan: least privilege - beri izin sekecil mungkin. 777 bukan solusi "biar jalan", itu lubang keamanan.
Setiap user punya UID: 0 = root (dewa), 1-999 = akun sistem/layanan, 1000 ke atas = manusia. Cek dengan id.
File penting: /etc/passwd menyimpan 7 kolom: nama:x:UID:GID:gecos:home:shell - huruf x berarti password asli (hash) ada di /etc/shadow yang hanya bisa dibaca root. /etc/group menyimpan keanggotaan grup.
Alur membuat user yang benar (Debian/Ubuntu): adduser siswa01 (interaktif) atau useradd -m -s /bin/bash tkj01 lalu passwd tkj01. Flag -m membuat folder home, -s menentukan shell.
Memberi hak admin: masukkan ke grup sudo (Ubuntu) atau wheel (RHEL): sudo usermod -aG sudo tkj01. Ingat: -aG = append ke grup; tanpa -a, daftar grup sekunder user akan TERTIMPA semua.
sudo vs su: sudo menjalankan SATU perintah sebagai root dengan identitas & log user asli (tercatat di /var/log/auth.log); su - mengganti seluruh sesi menjadi root. Praktik terbaik: kerja sebagai user biasa, sudo untuk yang perlu. Edit aturan sudo hanya lewat visudo (validasi sintaks otomatis), jangan edit /etc/sudoers langsung.
Manajemen lanjutan: userdel -r hapus user + home; passwd -l / -u kunci/buka akun; chage -l user lihat kebijakan usia password; w dan last untuk audit siapa login kapan.
Kebijakan lab yang sehat: satu akun per orang (semua aksi bisa diaudit), password kuat + masa berlaku, grup untuk berbagi akses folder proyek.
Program yang sedang berjalan = proses, punya PID unik dan PPID (proses induk). Induk semua proses adalah PID 1: systemd. Setelah proses mati, parent harus "memungut" statusnya; kalau tidak, sisanya menjadi zombie (Z) - bukan pemakan CPU, tapi tanda ada program yang tidak rapi.
ps aux kolom penting: %CPU, %MEM, STAT. STAT: R=berjalan, S=tidur menunggu, D=diam total (biasanya antre I/O disk - indikasi storage lambat), Z=zombie, T=di-suspend.
Monitor: top / htop (sort P=CPU, M=RAM), free -h (baca kolom available, bukan free - cache bisa dilepas kapan saja), uptime (load average 1/5/15 menit; sehat jika load di bawah jumlah core CPU).
Sinyal - cara Linux berkomunikasi dengan proses:
| SINYAL | NOMOR | ARTI |
|---|---|---|
| SIGHUP | 1 | Muat ulang konfigurasi |
| SIGINT | 2 | Ctrl+C dari keyboard |
| SIGTERM | 15 | Mohon berhenti (default kill) - proses sempat rapikan diri |
| SIGKILL | 9 | Paksa mati seketika - tanpa kesempatan membersihkan |
Urutan yang benar: kill PID (15), tunggu beberapa detik, baru kill -9 PID jika membandel. Pemakaian -9 langsung berisiko file/rusak karena proses tidak sempat flush data.
systemd mengelola layanan sebagai unit (.service, .socket, .timer): systemctl start|stop|restart|reload|status|enable|disable nginx. Beda tipis tapi sering ditanya: restart memutus layanan sejenak; reload membaca ulang konfigurasi tanpa memutus koneksi (jika didukung); enable membuat layanan otomatis jalan saat boot (membuat symlink), tidak langsung menjalankannya.
Target boot modern (pengganti runlevel): multi-user.target = mode teks, graphical.target = GUI, rescue.target = perbaikan darurat. Log semua layanan: journalctl -u nginx -f, journalctl -p err --since today.
Perangkat lama sudah deprecated: ifconfig diganti ip a, route diganti ip r, netstat diganti ss. Nama interface modern bersifat predictable: enp0s3 (ethernet), wlp2s0 (wifi) - bukan lagi selalu eth0.
Perintah inti: ip a (IP & state), ip r (gateway ada di baris "default via"), ip link (link up/down), sudo ip link set eth0 up. ss -tulpn menampilkan port yang terbuka + proses pemiliknya - dasar audit keamanan.
Konfigurasi statis (Ubuntu) via netplan - file di /etc/netplan/*.yaml:
network: { ethernets: { enp0s3: { addresses: [192.168.10.10/24], routes: [{to: default, via: 192.168.10.1}], nameservers: {addresses: [1.1.1.1, 8.8.8.8]} }, dhcp4: false } } lalu sudo netplan apply. Di Debian klasik: /etc/network/interfaces.
DNS: /etc/resolv.conf (atau systemd-resolved), override lokal lewat /etc/hosts - sering dipakai di lab untuk simulasi domain.
Alur troubleshooting 5 langkah (mengisolasi lapisan masalah): 1) ip a - IP & link benar? 2) ping gateway - LAN jalan? 3) ping 8.8.8.8 - internet jalan? 4) dig domain - DNS jalan? 5) curl -I situs - aplikasi/web jalan? Berhenti di langkah yang gagal = lokasi masalah.
Port penting (wajib hafalan ujian): 20/21 FTP, 22 SSH/SFTP, 23 Telnet (hindari - plaintext), 25 SMTP, 53 DNS, 67/68 DHCP, 80 HTTP, 110 POP3, 143 IMAP, 443 HTTPS, 445 SMB, 3389 RDP.
Firewall: ufw (sederhana): ufw allow 22/tcp, ufw enable, ufw status verbose. Level bawah modern: nftables (pengganti iptables). Aturan emas: allow port akses remote SEBELUM enable, agar tidak mengunci diri sendiri.
Software Linux diambil dari repositori (gudang paket terverifikasi GPG) yang didaftarkan di /etc/apt/sources.list. Keuntungan: versi teruji, dependensi otomatis, update satu perintah.
Tiga perintah apt yang paling sering tertukar: apt update = segarkan INDEX/daftar paket (tidak mengubah sistem); apt upgrade = naikkan versi semua paket terpasang; apt full-upgrade = sama + boleh menghapus paket bila diperlukan. Pasangan wajib: update dulu, baru upgrade/install. apt autoremove membersihkan dependensi yatim.
dpkg = mesin bawah apt untuk file .deb lokal: dpkg -i paket.deb. Kelemahannya dependensi tidak diatasi otomatis - bila error, lanjutkan dengan sudo apt --fix-broken install. Audit: dpkg -l | grep nginx.
Keluarga Red Hat memakai dnf (dulu yum): dnf install|remove|search|info. Alur konsepnya identik dengan apt.
Arsip & kompresi dengan tar - mnemonik: c=create, x=extract, z=gzip, f=file, v=verbose:
- Buat arsip:
tar -czf backup.tar.gz folder/ - Ekstrak:
tar -xzf backup.tar.gz - Lihat isi tanpa ekstrak:
tar -tzf backup.tar.gz
Single file: gzip file / gunzip file.gz; lintas platform: zip/unzip.
Disiplin teknisi: sebelum upgrade besar -> backup konfigurasi (tar -czf etc-backup.tar.gz /etc) dan uji di VM/snapshot; setelah upgrade -> verifikasi layanan: systemctl status + cek log.
Setiap proses punya tiga aliran data: 0 stdin (input), 1 stdout (output normal), 2 stderr (error). Seluruh kekuatan shell berasal dari menyambung aliran-aliran ini.
cmd > file- stdout ke file (TIMPA)cmd >> file- stdout ke file (TAMBAH di akhir)cmd 2> err.log- stderr ke file;2>/dev/nullbuang errorcmd &> all.log- stdout+stderr sekaliguscmd1 | cmd2- pipe: stdout cmd1 menjadi stdin cmd2cmd1 && cmd2- jalankan cmd2 HANYA jika cmd1 sukses;||hanya jika gagal;;berurutan apa pun hasilnya
Pipeline analisis yang wajib dikuasai - pola grep | awk | sort | uniq | head:
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -5 -> 5 IP paling sibuk mengakses server.
grep -i "failed" /var/log/auth.log | wc -l -> jumlah upaya login gagal (indikasi brute force).
ps aux | sort -k3 -rn | head -5 -> 5 proses pemakan CPU teratas.
History & recall: panah atas, !! (ulangi terakhir), !123 (ulangi nomor 123), Ctrl+R (pencarian balik interaktif - paling sering dipakai profesional).
Shortcut keyboard: Ctrl+C (batalkan), Ctrl+Z (suspend, lanjutkan dengan bg/fg), Ctrl+D (EOF/logout), Ctrl+L (clear), Ctrl+A / Ctrl+E (awal/akhir baris), Ctrl+W (hapus satu kata), Ctrl+U/K (potong kiri/kanan kursor).
Alias permanen di ~/.bashrc: alias ll='ls -lah', lalu source ~/.bashrc tanpa perlu logout.
SSH = shell terenkripsi untuk mengendalikan mesin lain lewat jaringan, default port 22. Ia menggantikan telnet yang mengirim segalanya (termasuk password) dalam teks polos. Login pertama akan menampilkan fingerprint server - ini mekanisme anti man-in-the-middle.
Login: ssh user@host, ssh -p 2222 admin@10.0.0.5 bila port diganti.
Autentikasi kunci (standar profesional):
- Buat pasangan kunci:
ssh-keygen -t ed25519-> id_ed25519 (PRIVAT, jangan pernah keluar dari mesinmu, chmod 600) + id_ed25519.pub (boleh disebar) - Pasang ke server:
ssh-copy-id admin@10.0.0.5-> sejak itu login tanpa password - Kunci bisa diberi passphrase sendiri = dua lapis proteksi
~/.ssh/config mempercepat hidup:
Host srv1 / HostName 10.0.0.5 / User admin / Port 2222 -> selanjutnya cukup ssh srv1.
Transfer file: scp file admin@host:/path/ (folder: -r), dan rsync -avz untuk backup - hanya mengirim perbedaan data (delta) dan bisa dilanjutkan bila terputus.
Hardening sshd (edit /etc/ssh/sshd_config): PermitRootLogin no, PasswordAuthentication no (paksa kunci), opsi ubah Port, batasi AllowUsers. Restart: systemctl restart sshd. Prosedur aman: buka sesi kedua untuk menguji sebelum menutup sesi lama, dan pastikan firewall mengizinkan port baru dulu.
Perkuat dengan fail2ban (autoblokir IP brute force) dan pantau upaya masuk: journalctl -u ssh atau grep "Failed" di auth.log. Bonus: tunneling - ssh -L 8080:localhost:80 user@host membuka web internal server lewat localhost:8080-mu.
TIPS TERMINAL
10 TIPS BERJENJANG: BASIC -> INTER -> PRO. URUTAN MENGIKUTI ALUR BELAJAR TEKNISI.
FAQ LINUX
9 PERTANYAAN YANG PALING SERING MUNCUL DI KELAS & LAB TKJ.
apt update hanya menyegarkan INDEX (daftar paket terbaru dari repositori) - sistem tidak berubah. apt upgrade yang benar-benar mengunduh dan memasang versi baru paket yang terpasang. Karena itu upgrade tanpa update dulu bisa memakai daftar basi. Urutan benar: update -> (opsional lihat apt list --upgradable) -> upgrade.
Tiga penyebab paling umum: 1) bit eksekusi tidak aktif untuk script -> chmod +x file; 2) FOLDER induknya tidak punya izin x untukmu (ingat: di direktori, x = boleh masuk); 3) file aslinya dimiliki user lain (misal dibuat via sudo) -> cek dengan ls -l, perbaiki dengan chown, atau jalankan sesuai kebutuhan dengan sudo. Baca pesan errornya: "Permission denied" bukan berarti file rusak.
su - mengganti SELURUH sesi menjadi user lain (biasanya root) - setelah itu semua perintah berjalan sebagai root dan jejak audit hilang identitasnya. sudo menjalankan SATU perintah dengan hak tinggi lalu kembali ke user asli, dan setiap pemakaian tercatat di /var/log/auth.log. Praktik profesional: kerja sebagai user biasa, sudo seperlunya. sudo juga bisa dibatasi per perintah lewat aturan visudo.
Anggap tidak. Linux tidak punya recycle bin; rm benar-benar melepas blok data. Tools recovery (extundelete/testdisk) keberhasilannya kecil dan makin kecil setiap detik karena data bisa tertimpa. Pencegahan jauh lebih mudah: cek pwd sebelum rm, hindari sudo rm -rf, biasakan backup (tar/rsync), dan untuk eksperimen pakai VM + snapshot. Sebagian admin menambah alias rm='rm -i' sebagai rem.
Tiga kemungkinan: 1) typo (Linux case-sensitive dan tidak menebak); 2) paketnya belum terpasang -> cari dengan apt search lalu install (Ubuntu bahkan menyarankan paket yang tepat di pesan errornya); 3) binary-nya ada tapi direktorinya tidak ada di $PATH -> cek dengan which nama-perintah dan echo $PATH. Untuk script di folder sendiri, jalankan dengan ./script (dan pastikan chmod +x).
restart = hentikan lalu jalankan lagi (koneksi user terputus sejenak) - aman untuk semua kasus. reload = minta layanan membaca ulang konfigurasi TANPA memutus koneksi aktif - ideal untuk web server produksi, tapi tidak semua layanan mendukung. enable = sama sekali tidak menjalankan sekarang; hanya memastikan layanan otomatis menyala saat boot. Pola lengkap setelah edit config: reload (atau restart) -> systemctl status -> cek log.
Paket net-tools (ifconfig, netstat, route) sudah ditinggalkan dan tidak lagi terpasang default di distro modern. Penggantinya: ip a (alamat), ip r (routing), ip link (status interface), ss -tulpn (port & koneksi). Kalau memang butuh ifconfig (misal ikut modul lama), pasang: sudo apt install net-tools. Tapi biasakan alat baru - itu standar ujian dan dunia kerja sekarang.
Hanya sebagai langkah terakhir. kill -9 (SIGKILL) membunuh proses seketika TANPA memberi kesempatan menutup file, flush buffer, atau hapus file kunci - risikonya data rusak dan file lock tertinggal. Prosedur sopan: kill -15 (default) -> tunggu 5-10 detik -> cek ps -> baru kill -9 kalau masih hidup. Untuk layanan systemd, prioritas: systemctl restart; hanya jika unit macet total gunakan kill -9 pada PID-nya.
Racikan yang terbukti: 1) pasang Linux di VirtualBox/VMware - berani rusak karena ada snapshot; 2) targetkan proyek nyata bertahap: web server (nginx) -> share file (samba) -> server SSH hardening; 3) hafalkan 30 perintah inti lewat mode LATIHAN di tool ini, sisanya akan mengalir; 4) pelajari alur troubleshooting jaringan (M05) - itu nilai jual utama TKJ; 5) dokumentasikan setiap praktikum: perintah, hasil, kesimpulan. Konsistensi 10 menit/hari mengalahkan maraton.