Setiap file dan direktori di Linux memiliki pemilik serta aturan izin akses yang menentukan siapa yang boleh membaca, mengubah, atau menjalankannya. Inilah salah satu pilar keamanan Linux yang membedakannya dari banyak sistem lain. Setelah memahami pengguna, grup, dan sudo pada dua bab sebelumnya, kini kita akan mempelajari cara membaca output ls -l, mengubah kepemilikan dengan chown dan chgrp, mengatur izin akses dengan chmod, memahami nilai default lewat umask, serta mengenal izin khusus seperti SUID, SGID, dan sticky bit.
Perlu diketahui, sejak Ubuntu 26.04 LTS, perintah-perintah inti yang dipakai di bab ini seperti ls, chmod, chown, dan chgrp sebenarnya dijalankan oleh implementasi baru bernama uutils coreutils, yaitu tulisan ulang GNU coreutils dalam bahasa Rust yang dipasang sebagai bawaan demi keamanan memori yang lebih baik. Implementasi ini dirancang agar sepenuhnya sekelas pengganti (drop-in replacement) dari versi GNU aslinya, sehingga seluruh perintah dan contoh output pada bab ini tetap berlaku tanpa perubahan di Ubuntu 26.04 LTS. Fedora Workstation 44 pada rilis ini masih memakai GNU coreutils seperti biasa.
23.1 Membaca Output ls -l
Cara termudah untuk melihat izin akses sebuah file adalah menjalankan ls -l. Perhatikan contoh berikut.
ls -l catatan.txt
-rw-r--r-- 1 budi budi 1024 Jul 20 09:00 catatan.txtKolom paling kiri, -rw-r--r--, adalah inti dari seluruh bab ini. Kolom tersebut terdiri atas sepuluh karakter yang dapat dipecah menjadi beberapa bagian.
23.1.1 Tipe File
Karakter pertama menunjukkan tipe file.
| Karakter | Tipe File |
|---|---|
- | File biasa |
d | Direktori |
l | Symbolic link |
b | Block device |
c | Character device |
s | Socket |
p | Named pipe (FIFO) |
Khusus untuk symbolic link, kita akan selalu melihat izin akses lrwxrwxrwx pada ls -l, apa pun izin yang sebenarnya kita tetapkan padanya. Ini bukan kesalahan: kernel Linux memang mengabaikan izin akses pada symlink itu sendiri, dan yang benar-benar berlaku adalah izin akses milik file atau direktori yang ditunjuknya (target).
23.1.2 Permission Bits: rwxrwxrwx
Kita dapat membagi sembilan karakter berikutnya menjadi tiga kelompok yang masing-masing terdiri atas tiga karakter, yaitu untuk owner (pemilik), group (grup), dan others (pengguna lain).
| Karakter | Arti | Pada file | Pada direktori |
|---|---|---|---|
r | Read | Membaca isi file | Melihat daftar isi direktori |
w | Write | Mengubah isi file | Menambah atau menghapus isi direktori |
x | Execute | Menjalankan file | Masuk ke dalam direktori |
Oleh karena itu, -rw-r--r-- berarti pemiliknya dapat membaca dan menulis file biasa ini, sementara anggota grup dan pengguna lain hanya bisa membacanya. Pola ini adalah pola paling umum untuk file pribadi.
23.2 Mengubah Kepemilikan
Kepemilikan file meliputi pemilik (owner) dan grup. Kita memakai dua perintah berikut untuk mengubahnya.
23.2.1 chown: Mengubah Owner
Perintah chown (change owner) mengubah pemilik file, dan sekaligus dapat mengubah grupnya.
sudo chown budi catatan.txt
sudo chown budi:developer catatan.txt
sudo chown -R budi /home/budiOpsi -R berguna untuk mengubah kepemilikan secara rekursif pada seluruh isi direktori. Mengubah pemilik umumnya memerlukan sudo karena hanya root yang dapat melakukannya. Di lapangan, sysadmin selalu memastikan path tujuan sudah benar sebelum menjalankan chown -R atau chmod -R pada direktori besar, sebab kesalahan target bisa mengubah kepemilikan atau izin ribuan file sekaligus dan sulit dipulihkan tanpa backup.
23.2.2 chgrp: Mengubah Group
Perintah chgrp (change group) mengubah grup pemilik file. Pengguna biasa dapat menggunakan perintah ini selama ia menjadi anggota grup tujuan.
chgrp developer catatan.txt23.3 Mengubah Permission
Perintah chmod (change mode) mengubah izin akses file atau direktori. Ada dua cara penulisan, yaitu metode numerik (octal) dan metode simbolik.
23.3.1 Metode Numerik (Octal)
Pada metode ini, setiap izin memiliki nilai angka tertentu yang kita jumlahkan untuk membentuk kode permission.
| Izin | Nilai |
|---|---|
r (read) | 4 |
w (write) | 2 |
x (execute) | 1 |
| Tidak ada izin | 0 |
Tiga digit angka mewakili owner, group, dan others secara berurutan. Contoh paling umum adalah 755 dan 644.
chmod 755 skrip.sh
chmod 644 catatan.txt
chmod -R 755 /path/direktoriNilai 755 berarti owner mendapat izin baca, tulis, dan eksekusi (4+2+1), sedangkan group dan others hanya mendapat baca dan eksekusi (4+1). Nilai 644 berarti owner mendapat baca dan tulis, sedangkan group dan others hanya membaca. Sama seperti chown, opsi -R pada chmod berguna untuk mengubah izin akses secara rekursif ke seluruh isi direktori.
23.3.2 Metode Simbolik
Metode simbolik lebih mudah dipahami karena kita menyebutkan pihak dan izin yang ingin diubah secara langsung.
| Simbol | Arti |
|---|---|
u | Owner (user) |
g | Group |
o | Others |
a | Semua (all) |
+ | Menambah izin |
- | Menghapus izin |
= | Menetapkan izin |
chmod u+x skrip.sh
chmod go-w catatan.txt
chmod a+r dokumen.txtPerintah pertama menambahkan izin eksekusi bagi owner, perintah kedua menghapus izin tulis bagi group dan others, sedangkan perintah ketiga menambahkan izin baca bagi semua pihak.
23.4 Permission Default: umask
Ketika kita membuat file atau direktori baru, sistem menetapkan izin default secara otomatis. umask yang mengatur nilai default ini, yaitu nilai yang mengurangi izin dasar. Jalankan umask untuk melihat nilainya.
umaskNilai umask yang umum adalah 022. Artinya, izin dasar untuk file (666) dikurangi 022 menjadi 644, sedangkan izin dasar direktori (777) dikurangi 022 menjadi 755. Secara teknis, operasi yang sesungguhnya terjadi bukan pengurangan biasa, melainkan operasi bitwise yang menghapus bit izin sesuai penanda umask; hanya saja untuk nilai umask yang umum seperti 022, hasilnya sama persis dengan pengurangan sederhana di atas. Kita dapat mengubah nilai ini untuk sementara dengan menjalankan umask 077, atau secara permanen dengan menaruhnya di file konfigurasi shell seperti ~/.bashrc. Di lapangan, sysadmin kerap menetapkan umask 077 pada server yang menyimpan data sensitif, sehingga file baru yang dibuat siapa pun di server tersebut tidak bisa dibaca pengguna lain secara default.
23.5 Special Permission
Selain tiga kelompok izin dasar, terdapat tiga izin khusus yang memiliki kegunaan tersendiri.
23.5.1 SUID (Set User ID)
SUID (Set User ID) diterapkan pada file eksekusi dan membuat program berjalan dengan izin pemilik file, bukan izin pengguna yang menjalankannya. Contoh klasiknya adalah perintah passwd, yang membutuhkan akses ke file /etc/shadow. Berkat SUID, pengguna biasa dapat mengganti password miliknya sendiri tanpa diberi akses langsung ke file tersebut. SUID memakai nilai 4, yang kita tulis di depan nilai izin lainnya, misalnya 4755.
chmod u+s program
chmod 4755 programDi lapangan, sysadmin perlu berhati-hati memberi SUID pada script atau binary buatan sendiri, sebab jika file tersebut memiliki celah keamanan, attacker bisa memanfaatkannya untuk memperoleh hak akses root.
23.5.2 SGID (Set Group ID)
SGID (Set Group ID) memiliki dua peran. Pada file eksekusi, SGID membuat program berjalan dengan izin grup pemilik file. Pada direktori, SGID membuat file baru yang dibuat di dalamnya otomatis mewarisi grup direktori tersebut. SGID memakai nilai 2, misalnya 2755.
chmod g+s /path/direktori
chmod 2755 /path/direktoriDi lapangan, SGID pada direktori sangat berguna untuk folder proyek yang dipakai bersama satu tim, sebab setiap file baru yang dibuat anggota tim otomatis ikut grup direktori tersebut tanpa perlu chgrp manual satu per satu.
23.5.3 Sticky Bit
Sticky bit diterapkan pada direktori yang dipakai bersama, seperti /tmp. Berkat sticky bit, setiap pengguna dapat menaruh file di direktori tersebut, tetapi hanya pemilik file (atau root) yang boleh menghapus atau mengganti namanya. Sticky bit memakai nilai 1, sehingga direktori /tmp memiliki izin 1777.
chmod +t /path/direktori
chmod 1777 /path/direktori23.6 Verifikasi dan Troubleshooting
Setelah mengubah kepemilikan atau permission, langkah paling sederhana untuk memastikan perubahan berhasil adalah menjalankan kembali ls -l pada file atau direktori yang bersangkutan.
chmod 750 skrip.sh
ls -l skrip.sh
-rwxr-x--- 1 budi budi 512 Jul 20 09:00 skrip.shBandingkan kolom permission dan kepemilikan pada output dengan yang ingin kita capai. Untuk melihat detail permission dalam format oktal sekaligus simbolik dalam satu perintah, gunakan stat.
stat skrip.shBeberapa masalah berikut sering ditemui saat bekerja dengan permission dan kepemilikan file.
- Permission denied saat masuk direktori. Pesan ini biasanya muncul karena direktori tidak memiliki izin eksekusi (
x), bukan karena kurang izin baca (r). Seperti dijelaskan di awal bab ini, pada direktorixberarti izin untuk masuk, sehingga direktori tanpaxtetap tidak bisa dijelajahi meski memiliki izinr. chmod 777sebagai jalan pintas. Di lapangan, banyak pemula tergoda menjalankanchmod 777begitu menemui error permission, tanpa mencari tahu akar masalahnya. Kebiasaan ini membuka izin baca, tulis, dan eksekusi bagi siapa pun, termasuk pengguna lain di sistem yang sama, sehingga sebaiknya dihindari terutama pada server atau sistem multi-pengguna. Cari tahu dulu pihak mana (owner, group, atau others) yang sebenarnya kurang izin, lalu berikan izin seminimal mungkin sesuai prinsip least privilege.- Operation not permitted saat
chown. Pesan ini muncul jika kita menjalankanchowntanpasudo. Hanya root yang boleh memindahkan kepemilikan file ke pengguna lain, sekalipun kita adalah pemilik file tersebut.
Izin akses dan kepemilikan file adalah fondasi keamanan Linux yang akan terus kita pakai, baik sebagai pengguna desktop maupun nantinya saat mengelola server. Setelah memahami ls -l, chown, chgrp, chmod, umask, serta izin khusus SUID, SGID, dan sticky bit, kita telah menguasai salah satu konsep paling mendasar dalam administrasi sistem Linux. Bab berikutnya akan membawa kita ke topik yang sama pentingnya, yaitu bagaimana kita mengelola perangkat lunak lewat package manager.

