Memahami permission Linux: rwx, chmod, dan chown tanpa asal memakai 777
Pelajari cara membaca permission file dan direktori, mengubahnya secara terkontrol dengan chmod, memahami ownership, serta mendiagnosis Permission denied tanpa membuka akses berlebihan.
Dipublikasikan 5 Oktober 2026
Tujuan latihan
Membaca permission symbolic dan octal, memilih mode minimum yang diperlukan, memverifikasi hasil perubahan, serta membedakan masalah permission, ownership, dan akses pada parent directory.
Persiapan
Terminal Linux dengan GNU Coreutils dan direktori latihan yang boleh Anda ubah. Gunakan file latihan milik sendiri; jangan menjalankan chmod atau chown recursive pada direktori sistem maupun data produksi.
User menjalankan akses→
Owner / group / others→
rwx pada setiap class→
Diizinkan atau ditolak
Masalah
Pesan Permission denied sering diselesaikan dengan chmod 777 atau sudo tanpa memahami penyebabnya. Cara ini dapat membuka file ke semua user, menyembunyikan masalah ownership, dan menambah risiko. Diagnosis yang aman dimulai dengan membaca tipe file, owner, group, permission setiap class, serta akses pada seluruh direktori di path.
Persiapan lab yang aman
Buat direktori latihan di working directory saat ini. Perintah berikut tidak menyentuh file sistem atau data lain. Jalankan pwd dan ls lebih dulu agar lokasi target jelas.
pwd
mkdir -p permission-lab
cd permission-lab
printf '%s\n' 'catatan latihan' > catatan.txt
ls -l catatan.txt
1. Baca output ls -l
Kolom pertama menggabungkan tipe file dan sembilan permission bits. Contoh -rw-r----- berarti regular file (-), owner mendapat read dan write (rw-), group hanya read (r--), dan others tidak mendapat akses (---). Kolom owner dan group di sebelahnya menentukan siapa yang masuk dua class pertama.
ls -l catatan.txt
Contoh output ls (simulasi)
Output ini hanya contoh format. Nama user, group, waktu, dan permission awal pada sistem Anda dapat berbeda.
-rw-r--r-- 1 alice developers 16 Oct 5 03:10 catatan.txt
2. Gunakan stat untuk melihat symbolic dan octal
stat dapat menampilkan mode human-readable, angka octal, owner, group, dan nama file dalam satu baris. Field %A adalah bentuk symbolic, %a adalah mode octal, %U owner name, dan %G group name.
stat -c 'mode=%A octal=%a owner=%U group=%G file=%n' catatan.txt
3. Pahami r, w, dan x pada file
Pada regular file, r mengizinkan membaca isi, w mengizinkan memodifikasi isi, dan x mengizinkan file dijalankan sebagai program bila format serta interpreter-nya valid. Permission execute bukan jaminan program aman atau dapat berjalan; mount option, interpreter, SELinux/AppArmor, dan isi file masih dapat memengaruhi hasil.
4. Pahami r, w, dan x pada direktori
Arti permission direktori berbeda. r memungkinkan membaca daftar nama entry, w memungkinkan membuat atau menghapus entry ketika permission lain mendukung, dan x berarti search/traverse—masuk atau melewati direktori untuk mengakses path di dalamnya. File dapat terlihat memiliki read permission tetapi tetap tidak dapat dibuka jika salah satu parent directory tidak memberi traverse.
5. Kenali owner, group, dan others
Linux mengevaluasi class yang sesuai dengan identity proses. u adalah owner, g adalah anggota group file, dan o adalah user lain. Permission tidak ditambahkan dari semua class; jika proses cocok sebagai owner, bit owner yang digunakan. Periksa identity dan group session sebelum menyimpulkan hasil.
id
stat -c 'owner=%U group=%G mode=%A' catatan.txt
6. Hitung mode octal 4-2-1
Setiap class memakai read=4, write=2, execute=1. Jumlahnya membentuk satu digit: 7=rwx, 6=rw-, 5=r-x, 4=r--, dan 0=---. Tiga digit umum mewakili owner, group, lalu others. Contoh 640 berarti owner rw-, group r--, dan others ---.
7. Terapkan permission minimum dengan mode octal
Untuk catatan yang boleh dibaca dan ditulis owner, hanya dibaca group, serta tidak dapat diakses others, gunakan 640. Opsi --changes hanya melaporkan file yang benar-benar berubah. Verifikasi segera dengan stat.
chmod --changes 640 catatan.txt
stat -c 'mode=%A octal=%a file=%n' catatan.txt
Contoh hasil 640 (simulasi)
Mode berikut berarti owner dapat membaca/menulis, group hanya membaca, dan others tidak mempunyai permission.
mode=-rw-r----- octal=640 file=catatan.txt
8. Gunakan symbolic mode untuk perubahan yang spesifik
Symbolic mode lebih jelas ketika Anda hanya ingin menambah atau menghapus satu hak tanpa menulis ulang semua class. u, g, o memilih class; + menambah, - menghapus, dan = menetapkan persis. Contoh berikut menambah write untuk group lalu menghapusnya kembali.
chmod g+w catatan.txt
stat -c '%A %a %n' catatan.txt
chmod g-w catatan.txt
stat -c '%A %a %n' catatan.txt
9. Jangan memberi execute pada semua file
File teks atau konfigurasi biasanya tidak membutuhkan x. Untuk membuat script latihan, beri execute hanya kepada owner terlebih dahulu. Shebang memilih interpreter; permission execute hanya salah satu syarat.
10. Pilih mode berdasarkan kebutuhan, bukan hafalan
Mode 600 cocok untuk file privat owner, 640 untuk file yang perlu dibaca group, 644 untuk file publik yang hanya ditulis owner, dan 755 sering dipakai pada direktori atau executable yang perlu dibaca/dijalankan semua user. Angka tersebut bukan template universal: data sensitif, shared directory, web server, dan service account memiliki kebutuhan berbeda.
11. Bedakan permission dari ownership
chmod mengubah mode akses, sedangkan chown mengubah owner dan/atau group. Jika file dimiliki user atau group yang salah, menambah permission others bukan perbaikan yang baik. Sintaks chown owner:group file biasanya membutuhkan privilege yang sesuai. Jangan memakai sudo sebelum owner dan group yang benar dikonfirmasi.
12. Salin permission dari file referensi bila kebijakannya sama
--reference mengurangi salah ketik saat dua file memang harus memiliki mode identik. Perintah ini hanya menyalin permission, bukan owner atau group. Periksa kedua file sebelum dan sesudah perubahan.
Catat command dan path yang gagal. Periksa identity dengan id, tipe/owner/mode target dengan stat, lalu mode parent directory dengan ls -ld. Untuk script, cek execute bit dan shebang. Untuk file di path bertingkat, setiap parent directory membutuhkan traverse. Jika permission Unix terlihat benar, lanjutkan ke ACL, read-only filesystem, mount noexec, SELinux/AppArmor, atau policy service sesuai environment.
id
stat -c 'type=%F mode=%A octal=%a owner=%U group=%G path=%n' catatan.txt
ls -ld . ..
test -r catatan.txt; printf 'readable_exit=%s\n' "$?"
test -w catatan.txt; printf 'writable_exit=%s\n' "$?"
14. Tafsirkan test -r, -w, dan -x dengan benar
test menilai akses dari konteks user yang menjalankan shell. Exit code 0 berarti kondisi benar dan non-zero berarti tidak. Hasil root atau privileged process dapat berbeda dari service account. Karena itu, pengujian ideal dilakukan sebagai identity aplikasi yang benar melalui prosedur yang disetujui, bukan dengan mengubah permission agar test user sementara berhasil.
15. Periksa umask untuk file baru
Jika permission berubah lagi ketika file baru dibuat, periksa umask dan konfigurasi aplikasi. umask mengurangi permission default saat proses membuat file/direktori; ia tidak mengubah file lama. Jangan mengubah umask global hanya untuk memperbaiki satu file.
umask
umask -S
16. Hindari chmod -R tanpa inventaris
Recursive chmod dapat menyamakan permission file dan direktori padahal kebutuhan execute berbeda. Ia juga dapat mengikuti scope yang lebih luas dari perkiraan bila path salah. Mulai dari target tunggal, tampilkan path absolut atau pwd, audit isi, gunakan --changes, lalu verifikasi. Jangan menjalankan chmod -R 777 sebagai troubleshooting.
Decision path
Jika owner/group salah, validasi identity yang seharusnya lalu lakukan perubahan ownership melalui prosedur admin. Jika owner/group benar tetapi mode kurang, tambahkan hanya permission yang diperlukan. Jika file benar tetapi akses tetap gagal, periksa x pada setiap parent directory. Jika script tidak dapat dieksekusi, periksa execute bit, shebang, interpreter, dan mount noexec. Jika permission Unix sudah sesuai, periksa ACL serta SELinux/AppArmor. Jika perubahan kembali sendiri, cari umask, deployment, package manager, atau automation yang mengelola file.
Kesalahan umum
Jangan memakai 777 untuk menghilangkan error, memberi execute pada semua file, menjalankan chmod/chown recursive dari path yang belum diverifikasi, atau memakai sudo sebagai langkah pertama. Jangan menganggap read pada file cukup tanpa traverse pada parent directory. Jangan lupa bahwa service berjalan dengan identity berbeda dari user shell dan bahwa ACL atau mandatory access control dapat tetap menolak akses.
Checklist verifikasi
Catat command yang gagal, path, identity dan groups; periksa file type, owner, group, symbolic mode, octal mode, serta parent directory; tentukan kebutuhan minimum; ubah satu target secara terkontrol; verifikasi dengan stat dan test; uji sebagai identity yang benar; pastikan tidak ada 777 atau permission execute yang tidak perlu; dan dokumentasikan rollback atau mode sebelumnya.
Pelajaran
Permission Linux menjadi lebih mudah ketika dibaca sebagai keputusan berlapis: identity proses memilih class owner/group/others, bit rwx menentukan operasi, dan direktori pada path ikut menentukan akses. Gunakan bukti dari id, stat, dan parent directory sebelum chmod atau chown agar perbaikan tepat tanpa memperluas akses.