Langsung ke konten

Arsip

Linux

180 artikel
Linux 19 Sep 2026 5 min read

PID File Descriptor Memberi Linux Referensi Stabil untuk Siklus Hidup Proses

PID numerik dapat menunjuk satu proses saat ini dan proses lain pada waktu berikutnya. PID file descriptor di Linux mengubah batas tersebut: pidfd adalah file descriptor yang merujuk sebuah task, sehingga operasi proses dapat tetap terikat pada objek kernel yang dituju tanpa mengulang pencarian berdasarkan PID numerik. Perbedaan ini relevan bagi supervisor, service manager, container runtime, dan perangkat lunak lain yang mengamati siklus hidup proses. PID berguna sebagai nama, tetapi bukan capability yang tahan terhadap penggunaan ulang. Pidfd dapat dipertahankan selama jeda antara identifikasi proses dan operasi terhadap proses tersebut.

Keamanan Siber 19 Sep 2026 6 min read

Permission Event fanotify Menempatkan Akses File di Balik Keputusan User Space

Sebuah proses dapat lolos dari pemeriksaan permission filesystem biasa tetapi tetap menunggu sebelum operasi filenya selesai. Permission event fanotify Linux memungkinkan monitoring group mencegat operasi terpilih dan mewajibkan listener user space mengembalikan respons izinkan atau tolak. Mekanisme ini menyisipkan titik keputusan sinkron ke jalur akses, bukan sekadar melaporkan aktivitas setelah operasi terjadi. Perbedaan tersebut membuat fanotify relevan bagi produk keamanan yang memerlukan inspeksi konten atau evaluasi policy di dekat waktu akses file. Mekanisme ini juga menciptakan dependensi yang tidak dimiliki sistem notifikasi biasa: kernel dapat menahan proses lain pada permission event sementara user space menentukan hasilnya.

Teknologi 19 Sep 2026 6 min read

PCIe Posted Write Memisahkan Penyelesaian CPU dari Visibilitas Perangkat

PCIe Posted Write Memisahkan Penyelesaian CPU dari Visibilitas Perangkat Sebuah MMIO store dapat selesai dari sudut pandang CPU ketika write terkait masih bergerak melalui jalur I/O. PCI dan PCIe memory write umumnya bersifat posted: requester tidak menunggu completion response untuk setiap write. Bridge dan logika interconnect dapat menerima transaction lalu membiarkan CPU melanjutkan eksekusi sebelum endpoint mengonsumsinya. Perilaku ini berguna untuk throughput, tetapi menciptakan boundary yang tidak dapat diperlakukan driver seperti memori cache biasa. Program order pada CPU, ordering yang diberikan accessor MMIO, dan bukti bahwa perangkat telah menerima write merupakan properti yang saling berkaitan, tetapi tidak dapat saling menggantikan.

Linux 19 Sep 2026 6 min read

PAGEMAP_SCAN Mengelompokkan State Page Table Menjadi Rentang Alamat

Rentang alamat virtual yang besar dapat memiliki hanya sedikit transisi state page. Membaca satu entri pagemap untuk setiap virtual page memang memperlihatkan state pada granularitas page, tetapi user space harus memeriksa rangkaian entri yang panjang. Linux PAGEMAP_SCAN memindahkan filtering ke kernel dan melaporkan span yang cocok sebagai record struct page_region. Interface ini berupa ioctl() pada /proc/PID/pagemap. Request berisi interval alamat, predicate kategori, return mask, dan output vector. Kernel berjalan melalui page table lalu menghasilkan region berurutan yang properti page terpilihnya memenuhi request. Bentuk inspeksi page table berubah dari stream nilai per-page menjadi query rentang yang sudah difilter.

Linux 19 Sep 2026 6 min read

openat2 Membatasi Resolusi Path pada Boundary Kernel

Sebuah pathname yang dimulai di dalam directory tepercaya dapat berakhir pada objek di luar directory tersebut sebelum open() selesai. Parent component, symbolic link, magic link, mount point, dan perubahan namespace secara concurrent semuanya ikut menentukan pathname lookup Linux. Memeriksa string sebelum membukanya karena itu tidak menetapkan lokasi akhir resolusi yang dilakukan kernel. Linux openat2() menempatkan pembatasan di dalam operasi lookup itu sendiri. Pemanggil memberikan directory file descriptor, open flag biasa, dan kebijakan resolve melalui struct open_how. Kernel kemudian menerapkan batas tersebut saat menelusuri setiap path component yang relevan. Security boundary berpindah dari validasi awal atas teks pathname ke operasi yang benar-benar melakukan resolusi.

Linux 19 Sep 2026 4 min read

openat2 Membatasi Resolusi Path Linux pada Operasi Open

Sebuah pathname dapat berubah makna ketika proses sedang me-resolve-nya. Rename direktori, symbolic link, mount point, dan komponen .. dapat mengarahkan lookup keluar dari direktori yang dimaksud program sebagai batas. Linux openat2() menempelkan kebijakan resolusi langsung pada proses lookup. struct open_how memiliki bit mask resolve, sehingga kernel dapat menolak path ketika resolusinya melanggar batas yang dipilih caller, bukan hanya mengandalkan pemeriksaan yang dilakukan sebelum open(). Directory file descriptor menetapkan titik awal Seperti openat(), openat2() dapat me-resolve pathname relatif dari directory file descriptor:

Rekayasa Perangkat Lunak 19 Sep 2026 7 min read

Open File Description Lock Mengikat Byte Range ke Instance File

Sebuah byte-range lock dapat melindungi inode yang sama tetapi memiliki semantik lifetime yang sangat berbeda bergantung pada objek pemilik lock. Record lock fcntl() tradisional terkait dengan proses. Open file description lock justru menempel pada open file description kernel yang dirujuk oleh descriptor. Pergeseran ini mengubah operasi close mana yang melepas lock, state yang bertahan setelah fork(), serta kemampuan dua thread dalam satu proses untuk saling berkompetisi pada region file yang sama.

Linux 19 Sep 2026 5 min read

Notifikasi Pengguna seccomp Memindahkan System Call Terpilih ke Supervisor

Notifikasi Pengguna seccomp Memindahkan System Call Terpilih ke Supervisor Filter seccomp tidak terbatas pada mengizinkan system call atau menolaknya di kernel. Saat filter mengembalikan SECCOMP_RET_USER_NOTIF, Linux dapat menahan thread pemanggil lalu mengirim deskripsi system call yang sedang dicoba ke supervisor di user space. Mekanisme ini membentuk batas interposisi untuk call tertentu. Salah satu pemakaiannya adalah saat proses dengan privilege lebih rendah memerlukan operasi yang dimediasi proses lain, misalnya container manager yang menangani call yang tidak dapat dijalankan langsung oleh container. Batas ini sengaja lebih sempit daripada mesin kebijakan keamanan umum: state notifikasi dapat berpacu dengan memori target yang masih dapat berubah, dan dokumentasi kernel memperingatkan agar inspeksi supervisor tidak dijadikan primitive otorisasi.

Keamanan Siber 19 Sep 2026 4 min read

no_new_privs Memblokir Penambahan Privilege Saat Eksekusi

Sebuah service dapat perlu mengeksekusi program helper setelah menerima input yang tidak tepercaya. Jika salah satu program tersebut memiliki set-user-ID, set-group-ID, atau file capabilities, execve() biasa dapat melintasi batas privilege meskipun proses pemanggil tidak bermaksud memperoleh otoritas tambahan. Linux no_new_privs mengubah transisi tersebut: setelah atribut ini ditetapkan pada sebuah thread, pemanggilan execve() berikutnya tidak dapat memberikan privilege yang tidak dimiliki pemanggil pada saat eksekusi. Properti ini sengaja memiliki cakupan sempit. Ia membatasi penambahan privilege melalui eksekusi program; ia tidak menghapus otoritas yang sudah dimiliki proses. Perbedaan tersebut membuat no_new_privs berguna sebagai batas eksekusi satu arah, tetapi tidak cukup sebagai sandbox lengkap.

Teknologi 19 Sep 2026 5 min read

Moderasi Interrupt NIC Menukar Laju Wakeup dengan Latensi Paket

Network adapter tidak harus mengirim interrupt ke CPU untuk setiap paket yang diterima atau transmisi yang selesai. Banyak NIC dapat menahan pengiriman interrupt sebentar lalu melaporkan beberapa completion sekaligus. Interrupt moderation ini mengurangi traffic interrupt dan overhead masuk ke CPU, tetapi juga dapat menunda saat software menyadari adanya pekerjaan yang sudah selesai. Mekanisme ini berada di antara DMA paket dan pemrosesan receive atau transmit oleh driver. Yang berubah adalah waktu notifikasi; format paket di wire, aturan ordering Ethernet, dan kewajiban driver untuk memproses descriptor yang selesai tetap terpisah dari kebijakan tersebut.

Teknologi 19 Sep 2026 4 min read

Memori Perangkat Write-Combining Dapat Menggabungkan Store CPU Sebelum I/O

Memori Perangkat Write-Combining Dapat Menggabungkan Store CPU Sebelum I/O Serangkaian store CPU ke memori perangkat tidak selalu berubah menjadi rangkaian transaksi bus yang identik. Pada mapping write-combining, prosesor dapat menampung store yang berdekatan lalu mengirimkannya sebagai transfer yang lebih besar. Perilaku ini cocok untuk framebuffer dan region perangkat lain yang dirancang menerima penulisan blok, tetapi asumsi tentang ordering dan bentuk transaksi menjadi lebih terbatas. Linux menyediakan kelas mapping ini melalui antarmuka seperti ioremap_wc(). Semantiknya berbeda dari mapping ioremap() default yang digunakan untuk control register biasa.

Linux 19 Sep 2026 4 min read

MADV_FREE Menandai Page Anonim untuk Reclaim Tertunda

MADV_FREE tidak langsung mengganti private anonymous page dengan nol. Operasi ini menandai page yang memenuhi syarat sebagai data yang boleh dibuang, lalu Linux dapat me-reclaim-nya kemudian. Sebelum reclaim benar-benar terjadi, byte lama masih dapat terlihat. Penulisan sebelum reclaim membatalkan status tersebut pada page yang ditulis. Karakteristik waktu ini membedakan MADV_FREE dari advice yang langsung mengubah keadaan range yang terlihat oleh proses. Kontraknya adalah reclamation tertunda: aplikasi menyatakan bahwa isi lama tidak lagi diperlukan, sedangkan kernel menentukan kapan memori fisik diambil kembali.

Rekayasa Perangkat Lunak 19 Sep 2026 6 min read

Linux pidfd Mengikat Operasi Proses ke Referensi Kernel yang Stabil

Process ID numerik menamai sebuah proses hanya selama PID tersebut masih dialokasikan kepadanya. Setelah proses keluar dan di-reap, Linux dapat menggunakan kembali angka itu untuk proses lain. Kode yang mengamati PID, melakukan pekerjaan lain, lalu bertindak memakai angka tersebut dapat melewati batas lifetime yang tidak dikodekan oleh integer itu sendiri. Linux pidfd menyediakan referensi berbentuk file descriptor ke sebuah proses sehingga operasi berikutnya dapat menargetkan objek proses yang direferensikan tanpa mengulang lookup PID numerik.

Rekayasa Perangkat Lunak 19 Sep 2026 6 min read

Linux membarrier Memindahkan Biaya Memory Ordering ke Thread Koordinator

Sebuah runtime concurrent dapat menjalankan ribuan operasi fast path untuk setiap transisi state langka yang membutuhkan koordinasi global. Menempatkan full memory barrier pada setiap fast path membuat seluruh operasi membayar biaya transisi yang jarang terjadi itu. Linux membarrier() mendukung susunan sebaliknya: thread koordinator masuk ke kernel dan memaksakan titik ordering yang terdefinisi pada sekumpulan thread target, sehingga biaya yang lebih besar berpindah ke sisi protokol yang jarang dijalankan. Mekanisme ini bukan pengganti umum untuk atomic, mutex, atau memory model bahasa pemrograman. Ini adalah antarmuka kernel Linux dengan jaminan yang berlaku pada akses memory dan thread target berdasarkan command tertentu. Penggunaan yang benar memerlukan protokol yang sudah menentukan akses mana yang terjadi sebelum dan sesudah titik koordinasi.

Linux 19 Sep 2026 5 min read

Konfigurasi Wi-Fi Ubuntu Server Tanpa Menebak Backend Netplan

Blok Wi-Fi Netplan dapat valid secara sintaks tetapi tetap salah untuk Ubuntu Server tertentu. Dua nilai yang tidak aman untuk sekadar disalin dari contoh adalah nama interface dan renderer. Konfigurasi yang memakai wlp2s0 mengasumsikan mesin memang memiliki interface dengan nama tersebut. Menetapkan renderer: networkd mengasumsikan instalasi memang ditujukan menggunakan systemd-networkd; untuk Wi-Fi, backend ini juga bergantung pada wpa_supplicant. Instalasi lain mungkin sudah dikelola oleh NetworkManager. Urutan yang andal karena itu adalah inspeksi lebih dahulu, baru konfigurasi.

Linux 19 Sep 2026 5 min read

Jalur Pencarian Unit File systemd dan Prioritas Override

File service systemd tidak wajib berada di /etc/systemd/system. System manager mencari unit file di beberapa direktori, dan lokasi file berpengaruh karena urutan pencarian menentukan definisi mana yang dipakai ketika nama unit yang sama tersedia di lebih dari satu tempat. Untuk service yang dikelola administrator, /etc/systemd/system biasanya menjadi lokasi yang tepat. Package distribusi umumnya memasang unit di /usr/lib/systemd/system, sedangkan /run/systemd/system digunakan untuk konfigurasi runtime yang hilang setelah reboot. Pemisahan ini memungkinkan konfigurasi lokal menimpa default dari vendor tanpa mengedit file milik package manager.

Linux 19 Sep 2026 5 min read

Idmapped Mount Memetakan Ulang Ownership Tanpa Menulis Ulang Inode

Inode yang sama dapat terlihat memiliki ownership berbeda melalui dua mount point tanpa chown() rekursif. Idmapped mount Linux menempelkan ID mapping pada sebuah mount, sehingga penyajian ownership dan pemeriksaan permission di VFS dapat menerjemahkan user ID serta group ID untuk view tersebut sementara ownership yang disimpan filesystem tetap sama. Properti ini memisahkan metadata inode persisten dari view identitas yang diekspos pada mount tertentu. Mekanisme tersebut berguna ketika satu pohon filesystem perlu dipakai container dengan user namespace yang memetakan ID secara berbeda dari host.

Linux 19 Sep 2026 4 min read

Hex Acak Bukan Hash: Membuat Nilai Acak Kriptografis di Linux

Perintah seperti openssl rand -hex 32 sering disebut sebagai cara membuat “hash acak.” Hasilnya memang terlihat seperti digest SHA-256: 64 karakter heksadesimal. Namun, tidak ada operasi hash di sana. OpenSSL menghasilkan 32 byte acak lalu meng-encode-nya sebagai heksadesimal. Perbedaannya penting. Fungsi hash mengubah input menjadi digest berukuran tetap. Cryptographically secure random number generator menghasilkan byte yang tidak dapat diprediksi. Jika kebutuhannya adalah token, session secret, kredensial API, nonce, atau nilai acak baru lainnya, bagian yang penting adalah byte acaknya. Melakukan hashing setelahnya biasanya tidak menambah ketidakpastian yang berguna.

Keamanan Siber 19 Sep 2026 7 min read

fs-verity Mengikat Pembacaan File Read-Only ke Digest Merkle Tree

Sebuah file dapat disimpan pada media yang tingkat kepercayaannya lebih rendah daripada proses yang mengonsumsinya. Menjadikan file tersebut read-only melalui permission bit biasa tidak membuktikan bahwa byte yang kemudian dikembalikan dari storage sama dengan byte yang sebelumnya disetujui. Linux fs-verity menangani batas integritas yang lebih sempit ini pada filesystem yang didukung dengan mengikat pembacaan file yang telah diaktifkan ke Merkle tree dan digest file yang stabil. Mekanisme ini memiliki dua peran keamanan yang berbeda. Kernel memverifikasi data file terhadap Merkle tree saat data dibaca. Kebijakan terpisah harus menetapkan bahwa digest fs-verity yang dihasilkan memang digest yang dimaksudkan untuk dipercaya oleh sistem. Menganggap kedua peran tersebut sebagai satu jaminan akan melebihkan properti yang diberikan fitur filesystem ini.

Linux 19 Sep 2026 5 min read

eventfd Mengubah Notifikasi Kernel Menjadi Counter yang Dapat Dipantau

Proses Linux dapat memberi sinyal bahwa ada pekerjaan melalui file descriptor tanpa memindahkan byte stream antara producer dan consumer. eventfd() membuat counter 64-bit yang dikelola kernel dan readiness-nya dapat diamati oleh poll(), select(), atau epoll. Operasi write menambah counter; operasi read mengonsumsi state yang telah terakumulasi sesuai mode descriptor. Bentuk ini membedakan eventfd dari pipe. Pipe mempertahankan urutan byte. Eventfd mempertahankan state counter. Saat aplikasi memerlukan sinyal wakeup beserta sedikit state terakumulasi, perbedaan ini menghilangkan buffering dan framing yang diperlukan oleh byte stream.

Rekayasa Perangkat Lunak 19 Sep 2026 5 min read

EPOLLET Menjadikan Readiness sebagai Kontrak Transisi State

Descriptor yang didaftarkan dengan EPOLLET dapat tetap readable setelah sebuah event dikirim tanpa muncul lagi pada epoll_wait() berikutnya. Kernel melaporkan transisi readiness; kernel tidak menjanjikan pengulangan notifikasi yang sama hanya karena masih ada data yang belum dibaca. Perbedaan ini menjadikan edge-triggered epoll sebagai kontrak transisi state antara kernel dan event loop. Konsekuensinya bersifat struktural. Handler tidak dapat memperlakukan satu event sebagai izin untuk satu read() lalu langsung kembali ke wait loop. Pada edge-triggered monitoring, handler harus memperhitungkan seluruh state I/O yang segera tersedia sebelum bergantung pada transisi berikutnya.

Rekayasa Perangkat Lunak 19 Sep 2026 5 min read

epoll Edge-Triggered Memerlukan Drain Readiness hingga EAGAIN

Dengan EPOLLET, event loop dapat menerima satu notifikasi, membaca hanya sebagian data yang tersedia, lalu menunggu tanpa batas meskipun masih ada byte yang belum dibaca di buffer socket. Descriptor tetap ready, tetapi tidak ada transisi readiness baru yang memicu edge berikutnya. Perilaku tersebut membuat epoll edge-triggered menjadi kontrak antara semantik notifikasi dan I/O nonblocking. Event menyatakan bahwa readiness berubah; event bukan janji bahwa kernel akan terus mengulang notifikasi yang sama sampai aplikasi menyelesaikan pekerjaannya.

Linux 19 Sep 2026 5 min read

close_range Menjadikan Pembersihan File Descriptor Satu Operasi Linux

Proses yang bersiap menjalankan program lain sering memiliki batas sederhana: descriptor 0, 1, dan 2 tetap tersedia, sedangkan semua descriptor yang lebih tinggi harus hilang. Memanggil close() berulang sampai batas angka yang diperkirakan atau mengiterasi /proc/self/fd mengubah batas tersebut menjadi pemindaian di userspace. Linux close_range() menyatakan interval itu secara langsung. Kernel menerapkan satu operasi pada setiap file descriptor terbuka dari first sampai last, termasuk kedua ujungnya. Melalui flag, interface yang sama dapat mengisolasi descriptor table bersama atau menandai interval sebagai close-on-exec alih-alih langsung menutupnya.

Linux 19 Sep 2026 4 min read

CLONE_INTO_CGROUP Menempatkan Child ke cgroup Target Saat Dibuat

CLONE_INTO_CGROUP Menempatkan Child ke cgroup Target Saat Dibuat Proses yang dibuat di satu cgroup lalu dipindahkan ke cgroup lain memiliki interval singkat tetapi nyata di cgroup awal. Selama interval itu, accounting, resource control, dan freezer state berasal dari penempatan awal, bukan dari tujuan. Linux menyediakan CLONE_INTO_CGROUP agar clone3() dapat menempatkan child langsung ke target cgroup v2 sebagai bagian dari pembuatan proses. Mekanisme ini mengubah batas penempatan. Alih-alih membuat task lalu memperbaiki membership cgroup sesudahnya, pemanggil menentukan tujuan sebelum child ada.