Home / Linux, Systems, and Infrastructure / Izin Linux: Memahami …

Izin Linux: Memahami Owner, Group, dan chmod tanpa Tebak-tebakan

Pesan Permission denied di Linux tidak selalu berarti berkasnya tidak boleh dibaca. Bisa jadi pengguna tidak memiliki izin menelusuri salah satu direktori dalam path, proses berjalan dengan user yang berbeda, atau aturan ACL membatasi akses yang tampak benar dari ls -l. Dengan memahami owner, group, dan tiga permission dasar, Anda dapat memperbaiki masalah akses tanpa menjadikan seluruh sistem terbuka.

Ringkasan

  • Linux memeriksa owner, group, atau other untuk setiap permintaan akses.
  • r, w, dan x memiliki arti berbeda pada berkas dan direktori.
  • chmod mengubah permission, sedangkan chown mengubah kepemilikan.
  • umask memengaruhi permission objek baru, bukan objek yang sudah ada.
  • namei, stat, dan getfacl membantu menemukan sumber Permission denied.
  • Hindari chmod -R 777 karena memperbaiki gejala dengan risiko keamanan besar.

Membaca Output ls -l

Mulailah dari output yang paling umum:

text
-rw-r----- 1 alice developers 1200 Sep 25 10:00 laporan.txt

Karakter pertama menunjukkan tipe objek. Tanda - berarti berkas biasa, sedangkan d berarti direktori. Sembilan karakter berikutnya terbagi menjadi tiga kelompok:

KelompokPosisiContohBerlaku untuk
Owner1-3rw-Pemilik inode
Group4-6r--Group file dan group tambahan proses
Other7-9---Semua proses yang tidak cocok dengan dua kelompok sebelumnya

Pada contoh tersebut, alice dapat membaca dan mengubah berkas. Anggota group developers hanya dapat membaca. Pengguna lain tidak memiliki permission dari bit tersebut. Kepemilikan ditampilkan setelah jumlah hard link: owner-nya alice, group-nya developers.

Linux tidak mencoba menggabungkan semua kelompok sekaligus. Ia memilih kelas yang sesuai. Jika effective user ID proses sama dengan owner, Linux menggunakan bit owner. Jika tidak, tetapi group efektif atau salah satu supplementary group cocok, Linux menggunakan bit group. Selain itu, Linux menggunakan bit other. Aturan ini dijelaskan dalam dokumentasi path resolution Linux.

Arti r, w, dan x

Pada berkas biasa, arti bit cukup intuitif:

BitBerkas biasaDirektori
rMembaca isiMelihat daftar nama entri, misalnya dengan ls
wMengubah atau menimpa isiMembuat, menghapus, atau mengganti nama entri
xMenjalankan berkas sebagai programMenelusuri atau masuk ke direktori

x pada direktori bukan berarti menjalankan direktori. Ia adalah izin search atau traversal. Pengguna yang memiliki x tetapi tidak r dapat membuka berkas yang namanya sudah diketahui, tetapi biasanya tidak dapat melihat daftar isi direktori. Sebaliknya, r tanpa x tidak cukup untuk mengakses metadata atau membuka entri di dalamnya.

Aturan ini menjelaskan mengapa permission sebuah file saja belum tentu cukup. Untuk membuka /srv/app/config/settings.yaml, proses juga perlu dapat menelusuri /srv, /srv/app, dan /srv/app/config. Satu komponen path tanpa x dapat menghasilkan Permission denied. Dokumentasi path_resolution(7) menjelaskan bahwa setiap komponen non-final membutuhkan search permission.

Mengubah Permission dengan chmod

Ada dua bentuk utama chmod: simbolik dan oktal. Bentuk simbolik lebih mudah dibaca ketika Anda hanya ingin menambah atau menghapus satu bit.

bash
chmod u+x script.sh
chmod g-w laporan.txt
chmod o-r rahasia.txt
chmod u=rw,go= laporan.txt

Huruf u berarti owner, g group, o other, dan a semua kelas. Operator + menambahkan, - menghapus, dan = menetapkan permission persis. Perintah terakhir memberi owner rw dan menghapus permission group serta other.

Bentuk oktal menggunakan nilai r=4, w=2, dan x=1. Nilai dalam satu kelompok dijumlahkan:

OktalSimbolikMakna umum
0---Tidak ada akses
4r--Baca
5r-xBaca dan traversal/eksekusi
6rw-Baca dan tulis
7rwxBaca, tulis, dan traversal/eksekusi

Contoh chmod 640 laporan.txt berarti owner rw-, group r--, dan other ---. Contoh chmod 750 aplikasi berarti owner dapat melakukan semuanya, group dapat membaca dan menelusuri, sedangkan pengguna lain tidak memiliki akses.

Jangan memakai chmod 777 sebagai perbaikan umum. Mode itu memberi semua orang izin baca, tulis, dan eksekusi. Pada direktori, izin tulis untuk banyak pengguna juga dapat memungkinkan penghapusan atau penggantian nama file milik pengguna lain. Pilih permission minimum yang memenuhi kebutuhan aplikasi.

Mengubah Owner dan Group dengan chown

chmod tidak mengubah siapa pemilik file. Untuk itu gunakan chown atau chgrp:

bash
sudo chown alice laporan.txt
sudo chgrp developers laporan.txt
sudo chown alice:developers laporan.txt

Mengubah owner biasanya membutuhkan hak administrator. Periksa hasilnya dengan ls -l atau stat sebelum dan sesudah perubahan. Opsi rekursif -R tersedia, tetapi harus dipakai dengan sangat hati-hati. Perintah berikut dapat mengubah banyak objek dan merusak layanan bila path salah:

bash
sudo chown -R alice:developers /srv/app

Sebelum mengubah pohon direktori, pastikan path benar, simpan konfigurasi penting, dan pahami bahwa file konfigurasi, socket, symbolic link, serta direktori mungkin membutuhkan owner berbeda. Untuk perubahan terbatas, sebutkan file atau subdirektori secara eksplisit.

Permission File dan Direktori yang Baru Dibuat

Program tidak membuat file dengan permission final secara sembarangan. Ia meminta mode awal, lalu kernel menerapkan umask proses. Jika program meminta mode 0666 dan umask adalah 022, hasilnya biasanya 0644:

text
0666 & ~0022 = 0644

Direktori biasanya meminta 0777, sehingga umask 022 menghasilkan 0755. Periksa nilai umask shell saat ini dengan:

bash
umask
umask -S

Uji sementara hanya memengaruhi shell saat ini dan proses turunannya:

bash
umask 027
touch contoh.txt
mkdir contoh-dir
stat -c '%A %a %n' contoh.txt contoh-dir

Man page umask(2) menjelaskan bahwa bit yang ada di umask dimatikan dari mode objek baru. Karena itu, mengubah umask tidak memperbaiki file lama. Gunakan chmod untuk objek yang sudah ada.

Nilai umask yang tepat bergantung pada kebutuhan. 022 membuat file dapat dibaca group dan other, sedangkan 027 menghapus akses other dan biasanya membuat objek group lebih terbatas. Jangan menyalin nilai dari server lain tanpa memahami bagaimana service membuat dan membagikan file.

Permission Khusus pada Direktori Bersama

Direktori kerja bersama sering membutuhkan lebih dari owner/group/other. Setgid pada direktori dapat membantu file baru mewarisi group direktori. Sticky bit, yang terlihat sebagai t pada posisi execute milik other, membatasi penghapusan atau penggantian nama entri dalam direktori yang dapat ditulis bersama. Model ini dipakai pada direktori publik seperti /tmp.

Untuk kebutuhan yang lebih rinci, Linux mendukung POSIX ACL. ACL dapat memberi akses kepada user atau group tertentu tanpa membuat semua pengguna masuk ke group utama file. Periksa ACL dengan:

bash
getfacl laporan.txt

Contoh pemberian akses baca kepada user tertentu:

bash
setfacl -m u:budi:r laporan.txt

Gunakan getfacl ketika ls -l terlihat benar tetapi akses tetap ditolak. Tanda + setelah string permission, misalnya -rw-r-----+, menunjukkan adanya ACL tambahan. Dokumentasi acl(5) menjelaskan entry user, group, mask, other, serta default ACL untuk objek baru.

Cara Mendiagnosis Permission denied

Jangan langsung menjalankan sudo chmod -R 777. Ikuti urutan diagnosis yang lebih sempit.

1. Kenali user dan group proses

bash
id
ps -o user,group,comm -p "$PID"

Service mungkin berjalan sebagai user khusus seperti www-data, bukan sebagai user login Anda. Permission yang bekerja di terminal belum tentu bekerja untuk service.

2. Periksa metadata file

bash
ls -l /srv/app/config/settings.yaml
stat /srv/app/config/settings.yaml
getfacl /srv/app/config/settings.yaml

Cari owner, group, mode, ACL tambahan, dan symbolic link. stat memberi detail numerik yang tidak selalu terlihat dari output ringkas ls.

3. Periksa setiap komponen path

bash
namei -l /srv/app/config/settings.yaml

Perintah ini menampilkan permission setiap bagian path. Jika /srv/app tidak memiliki x untuk user atau group proses, file dengan mode 644 tetap tidak dapat dibuka melalui path tersebut.

4. Perbaiki bagian paling sempit

Jika service memang harus membaca konfigurasi, pertimbangkan group khusus, owner yang tepat, ACL terbatas, atau mode file yang hanya memberi r kepada group. Setelah perubahan, uji sebagai user service bila memungkinkan. Jangan mengubah permission seluruh /srv hanya karena satu file bermasalah.

Kesalahan yang Sering Terjadi

  • Mengira r pada direktori berarti dapat membuka semua file di dalamnya.
  • Menggunakan chmod -R 644 pada direktori sehingga direktori kehilangan x.
  • Menggunakan chmod -R 777 untuk menghindari diagnosis.
  • Mengubah owner aplikasi ke root tanpa alasan operasional.
  • Lupa bahwa ACL dapat menambah aturan di balik output ls -l.
  • Mengira umask mengubah permission file yang sudah ada.
  • Menguji sebagai root lalu menganggap user service pasti dapat mengakses objek.

Penutup

Permission Linux paling mudah dipahami sebagai pemeriksaan berlapis: siapa prosesnya, kelas akses mana yang dipilih, apa arti bit pada objek tersebut, dan apakah seluruh path dapat ditelusuri. Mulai dari ls -l, lanjutkan dengan id, stat, getfacl, dan namei -l, kemudian ubah hanya bagian yang memang diperlukan. Pendekatan ini lebih aman dan lebih mudah dipelihara daripada membuka akses sistem secara membabi buta.