Bayangkan situasi sehari-hari ini: Anda punya file dokumen penting bernama catatan.txt. Karena isinya penting, Anda ingin membuat salinannya secara otomatis. Anda pun menulis sebuah script sederhana bernama backup.sh yang tugasnya menyalin file catatan tersebut ke folder lain.
Namun, begitu Anda mencoba menjalankan script itu lewat terminal
./backup.sh
Terminal malah menolak perintah tersebut dengan pesan error
bash: ./backup.sh: Permission denied
(atau pada beberapa shell muncul: ./backup.sh exists but is not an executable file)
Padahal Anda sendiri yang mengetik script tersebut beberapa menit yang lalu. Mengapa Linux menolak menjalankannya?
Masalah ini terjadi bukan karena kode script Anda salah, melainkan karena aturan permission Linux. Mari kita telusuri alur kasus ini dari awal sampai script Anda benar-benar berjalan normal.
1. Memeriksa Masalah: Mengapa Script Menolak Dijalankan?
Langkah pertama saat menghadapi kendala ini adalah memeriksa status file backup.sh Anda. Buka terminal di folder yang sama, lalu ketik
ls -l
Di layar, Anda akan melihat baris informasi seperti ini:
-rw-r--r-- 1 kusena kusena 22 Sep 10:28 backup.sh
-rw-r--r-- 1 kusena kusena 22 Sep 10:27 catatan.txt

Perhatikan deretan kode -rw-r--r-- di baris paling kiri file backup.sh. Kode ini adalah kunci jawaban mengapa script Anda gagal jalan:
-
Tanda strip di awal (
-): Menandakan bahwa ini adalah file teks biasa. -
Tiga huruf berikutnya (
rw-): Izin untuk Anda sebagai pembuat/pemilik (owner). Anda hanya punya izin membaca (r / Read) dan mengedit (w / Write). -
Huruf-huruf setelahnya (
r--r--): Izin untuk grup dan pengguna lain yang hanya boleh membaca isinya saja.
Secara bawaan (default), sistem Linux menganggap setiap file baru yang Anda buat hanyalah dokumen teks biasa. Linux sengaja mengunci hak jalan demi keamanan agar tidak ada file asing yang berjalan otomatis tanpa izin Anda.
Karena tidak ada huruf x (Execute) pada deretan izin tersebut, sistem menganggap backup.sh bukan program yang boleh dieksekusi.
2. Memberi Izin Jalan Menggunakan Perintah chmod
Agar script cadangan tersebut bisa dijalankan, Anda harus menambahkan hak eksekusi (x) ke file backup.sh. Untuk mengubah aturan ini, kita menggunakan perintah chmod (Change Mode).
Ada dua cara mudah yang bisa Anda pakai:
Cara 1: Menggunakan Simbol Huruf (Paling Cepat)
Jika Anda hanya ingin menambahkan hak jalan untuk akun Anda sendiri, jalankan perintah
chmod u+x backup.sh
-
uartinya User (pemilik file). -
+xartinya menambahkan izin Execute.
Sekarang, cek kembali status file Anda dengan ls -l. Tampilannya akan berubah menjadi
-rwxr--r-- 1 kusena kusena 22 Sep 10:28 backup.sh
Huruf x kini sudah menempel di hak milik Anda. Sekarang, jalankan kembali script Anda
./backup.sh
Script akan langsung berjalan tanpa ada pesan penolakan lagi.
Cara 2: Menggunakan Angka (Metode Standar Server)
Selain menggunakan tanda tambah (+), Anda juga bisa mengatur izin menggunakan angka 3 digit. Di Linux, setiap huruf izin memiliki bobot nilai:
-
Read (r) bernilai 4
-
Write (w) bernilai 2
-
Execute (x) bernilai 1
-
Tidak ada izin (-) bernilai 0
Nilai-nilai ini dijumlahkan untuk tiga kelompok: Pemilik, Grup, dan Orang Lain.

Sebagai contoh pada file catatan.txt dan backup.sh kita:
-
Nilai 644 (
chmod 644 catatan.txt):Pemilik mendapat nilai 6 (Read 4 + Write 2), sedangkan grup dan orang lain mendapat nilai 4 (Read saja). Permission ini umum digunakan untuk file dokumen biasa ketika pemilik perlu membaca dan mengubah file, sementara pengguna lain hanya dapat membacanya.
-
Nilai 755 (
chmod 755 backup.sh):Pemilik mendapat nilai 7 (Read 4 + Write 2 + Execute 1), sehingga memiliki akses penuh. Grup dan orang lain mendapat nilai 5 (Read 4 + Execute 1), sehingga dapat membaca dan menjalankan script, tetapi tidak dapat mengubahnya.
3. Masalah Lanjutan: Script Gagal Mengakses File Cadangan
Katakanlah script backup.sh Anda bertugas membuat salinan file catatan.txt ke dalam folder sistem bernama /var/backups/.
Saat Anda jalankan ./backup.sh, kali ini script-nya berhasil jalan, tetapi muncul error baru di baris perintah:
cp: cannot create regular file '/var/backups/catatan.txt': Permission denied
Kenapa hal ini bisa terjadi padahal script Anda sudah diberi izin jalan?
Penyebabnya bergeser ke hak kepemilikan folder tujuan. Folder /var/backups/ adalah folder milik sistem (root), bukan milik akun Anda (kusena). Akun biasa tidak diizinkan menulis data ke folder tersebut secara sembarangan.
4. Memperbaiki Hak Milik Menggunakan Perintah chown
Untuk mengatasi kendala ini, ada dua konsep yang perlu Anda bedakan:
-
chmoddigunakan untuk mengatur apa yang boleh dilakukan pada file. -
chown(Change Owner) digunakan untuk mengatur siapa yang memiliki file atau folder tersebut.
Jika Anda ingin menjadikan folder backup tersebut sebagai ruang kerja pribadi akun Anda, pindahkan kepemilikannya menggunakan perintah chown:
Bash
sudo chown kusena /var/backups/
Karena Anda sedang mengubah area sistem, Anda memerlukan awalan sudo untuk izin administrator.
Sekarang, folder tujuan tersebut sudah resmi menjadi milik akun Anda. Ketika Anda menjalankan script ./backup.sh sekali lagi, proses pencadangan file catatan.txt akan langsung selesai dengan sukses tanpa hambatan.
Rangkuman Alur Kerja Izin File Linux
Agar pekerjaan Anda tetap tertata rapi saat mengelola script dan data di terminal, ingat urutan sederhana ini:
-
File dokumen teks biasa: Cukup gunakan izin
644(bisa dibaca dan diedit pemilik, orang lain hanya membaca). -
File script program: Tambahkan izin eksekusi menjadi
755atau gunakanchmod +x namafileagar sistem mengizinkannya untuk berjalan. -
Pesan “not an executable file”: Tandanya izin jalan (x) belum terpasang di file tersebut.
-
Pesan “Permission denied” saat menulis file: Periksa kepemilikan folder tujuan lewat
ls -l, lalu sesuaikan pemiliknya menggunakan perintahchown.
Pertanyaan yang Sering Diajukan (FAQ)
Mengapa Linux tidak otomatis memberi izin jalan pada semua script baru?
Tujuannya untuk menjaga keamanan komputer Anda. Jika semua file langsung memiliki izin jalan secara otomatis, script berbahaya yang terunduh dari internet bisa berjalan di latar belakang tanpa Anda sadari.
Bolehkah saya langsung memberi izin chmod 777 agar tidak ribet?
Sangat tidak disarankan. Izin 777 memberikan hak akses total kepada siapa pun di sistem untuk membaca, mengubah, hingga menghapus file tersebut. Memberikan hak seperlunya (seperti 755 untuk script atau 644 untuk teks) jauh lebih aman untuk jangka panjang.
Kapan saya harus menggunakan chown dibanding chmod?
Gunakan chmod jika Anda ingin menambah atau mencabut hak baca, tulis, atau jalan. Gunakan chown jika pemilik file atau folder tersebut tertulis sebagai akun lain (misalnya root) dan Anda perlu mengembalikannya ke akun pribadi Anda.
Kesimpulan
Menghadapi penolakan izin di terminal Linux sebenarnya bukan hal yang rumit. Sistem hanya memastikan bahwa setiap berkas berada di bawah kendali pemilik yang tepat dan dijalankan secara sadar.
Dengan memahami arti kode pada ls -l, Anda tahu kapan harus menambahkan hak eksekusi lewat chmod, serta kapan harus mengatur pemilik folder melalui chown. Alur ini akan membuat Anda jauh lebih tenang saat mengelola file dan script di Linux.