Permission denied di Linux: 10 kasus, termasuk /dev/null

Lingkungan ujiKeluarga RHELAlmaLinux 9.8akun rootDebian 12 akun biasaDiperiksa 2026-11-05
Mencari penyebab Permission denied

Permission denied adalah galat Linux yang muncul saat akun Anda sekarang tidak punya izin untuk memakai file, folder, atau perintah tersebut. Pilih kasus Anda dari nama perintah dan path di awal baris galat, periksa izin dan pemiliknya dengan ls -l, lalu jalankan lagi dengan izin atau akun yang sesuai untuk mengatasinya.

Output di bawah berasal dari akun root di server AlmaLinux 9.8 dan akun biasa di server Debian 12; nama akun dan host serta waktu pada output /dev/null adalah nilai contoh.

1️⃣ Mencari penyebab Permission denied

Baris galat berakhir dalam bentuk [perintah: target: Permission denied], dan dari nama perintah serta path di depannya Anda bisa melihat di mana pemblokirannya terjadi. Pada diagram di bawah, pilih pesan galat yang mirip dengan di layar Anda untuk melihat perintah yang perlu diperiksa dulu dan bagian artikel ini yang perlu dibaca.

🧭 Pilih kasus Anda dari pesan galat
Diagram penjelasan
🧭 Pesan galat
Pesan galatcat: secret.txt: Permission deniedls: cannot access 'web/index.html': Permission denied./deploy.sh: Permission deniedls: cannot open directory '/proc/1/fd': Permission deniedbash: /root/test.txt: Permission denieduser@server1: Permission denied (publickey)(13)Permission denied-bash: /dev/null: Permission denied
➜
Periksa dululs -l secret.txtls -ld webls -l deploy.shidsudo sh -cIzin folder home dan filegetenforce · findmntls -l /dev/null
➜
Bagian di artikel ini🔲 Izin baca dan tulis file🔲 Izin melewati folder🔲 Izin eksekusi🔲 Membaca informasi khusus root🔲 Saat > diblokir meski memakai sudo🔲 Login SSH ditolak3️⃣ Permission denied yang jarang muncul🔲 Saat /dev/null berubah menjadi file biasa
Jika perintah yang membaca atau mengubah file ditolak, periksa dulu izin r dan w file itu serta pemiliknya.
Jika nama folder di tengah path muncul di galat, periksa apakah folder itu punya izin x.
Jika menjalankan skrip secara langsung ditolak, periksa apakah file itu punya izin x.
Jika membaca informasi sistem dengan akun biasa diblokir, periksa akun sekarang lalu jalankan lagi sebagai root.
Jika pengalihan > diblokir meski memakai sudo, jalankan pengalihannya juga sebagai root.
Jika akun dan alamat server muncul di depan galat, login ditolak pada tahap autentikasi.
Jika ditolak padahal kolom izin sudah benar atau sudah dijalankan sebagai root, periksa SELinux, noexec, dan bit eksekusi.
Jika baris ini muncul berulang tepat setelah login, periksa apakah /dev/null sudah berubah menjadi file biasa.

2️⃣ Permission denied yang sering muncul

🔲 Izin baca dan tulis file

Untuk membaca file, akun memerlukan izin baca (r), dan untuk mengubah atau membuat file baru memerlukan izin tulis (w). secret.txt yang izinnya 600 hanya bisa dibaca dan ditulis oleh pemiliknya, root.

ls -l secret.txt
-rw------- 1 root root 16 Oct 29 00:29 secret.txt
runuser -u daemon -- cat secret.txt
cat: secret.txt: Permission denied

Saat file yang sama dibaca dengan akun lain, daemon, langsung ditolak. Membuat file di dalam folder tanpa izin tulis juga memberi galat yang sama; di server Debian 12, touch dengan akun biasa diblokir di folder lock yang izinnya 000.

touch ~/touchtest/lock/x.txt
touch: cannot touch '/home/user/touchtest/lock/x.txt': Permission denied

Di kolom pertama ls -l, lihat apakah ada r dan w untuk pemilik, grup, dan akun lain secara berurutan, lalu tambahkan izin hanya untuk akun yang memerlukannya dengan chmod atau ganti pemiliknya dengan chown.

🔲 Izin melewati folder

Meski izin file sudah benar, Anda tidak bisa mencapai file di dalamnya jika folder di tengah path tidak punya izin x. Pada folder, x adalah izin untuk melewati folder itu dan masuk ke dalamnya, sedangkan r adalah izin untuk membaca daftar nama di dalamnya.

web/ ── drw-r--r-- · r ada · x tidak ada → diblokir di sini
css/ ── nama terlihat, izin · ukuran ?
style.css ── tidak terjangkau
index.html ── nama terlihat, izin · ukuran ?
ls -ld web web/css
drw-r--r-- 3 root root 35 Oct 29 00:29 web
drw-r--r-- 2 root root 23 Oct 29 00:29 web/css
runuser -u daemon -- ls -l web
ls: cannot access 'web/css': Permission denied
ls: cannot access 'web/index.html': Permission denied
total 0
d????????? ? ? ? ?            ? css
-????????? ? ? ? ?            ? index.html

Folder web hanya punya r, jadi daemon bisa membaca nama di dalamnya, css dan index.html, tetapi tanpa x izin dan ukurannya tetap berupa tanda tanya. Sebaliknya, folder site yang punya x tetapi tidak punya r memblokir daftar isi, sedangkan file yang namanya sudah diketahui bisa dibaca.

ls -ld site
drwx--x--x 2 root root 24 Oct 29 00:29 site
runuser -u daemon -- ls site
ls: cannot open directory 'site': Permission denied
runuser -u daemon -- cat site/index.html
<h1>index</h1>

Jika path-nya panjang, periksa dengan ls -ld satu per satu dari folder paling atas apakah ada x, lalu tambahkan ke folder yang diblokir hanya x yang diperlukan akun itu untuk lewat.

🔲 Izin eksekusi

Untuk menjalankan skrip sebagai ./nama file, file itu harus punya izin x. deploy.sh yang izinnya 644 ditolak saat dijalankan.

ls -l deploy.sh
-rw-r--r-- 1 root root 8 Oct 29 00:29 deploy.sh
./deploy.sh
bash: line 1: ./deploy.sh: Permission denied

Setelah chmod u+x menambahkan x untuk pemilik, kolom pertama berubah menjadi [-rwxr--r--].

chmod u+x deploy.sh
ls -l deploy.sh
-rwxr--r-- 1 root root 8 Oct 29 00:29 deploy.sh

Jika eksekusi ditolak padahal ada izin x, periksa apakah sistem file tempat file itu berada dikaitkan dengan noexec.

🔲 Membaca informasi khusus root

Akun biasa tidak bisa membaca informasi yang disediakan sistem khusus untuk root, seperti proses yang dijalankan root atau informasi kata sandi akun lain. Di server Debian 12, membuka folder fd milik proses 1 dengan akun biasa memunculkan galat izin.

ls /proc/1/fd
ls: cannot open directory '/proc/1/fd': Permission denied
chage -l daemon
chage: Permission denied.

Informasi masa berlaku kata sandi akun lain juga diblokir karena alasan yang sama; /etc/shadow yang berisi informasi itu adalah file yang memang dibuat tidak bisa dibaca oleh pengguna biasa. Untuk galat seperti ini, jangan memperluas izin, tetapi jalankan lagi perintahnya dengan sudo atau sebagai root.

🔲 Saat > diblokir meski memakai sudo

sudo hanya menjalankan perintah yang ditulis di belakangnya sebagai root, sedangkan membuka file untuk pengalihan (>) dilakukan oleh shell akun sekarang sebelum perintah dijalankan. Karena itu, jika Anda mengalihkan output sudo echo ke file yang hanya bisa ditulis root, baris galat dimulai dengan nama shell dalam bentuk [bash: path file: Permission denied].

sudo echo x > /root/test.txt

Agar pengalihan juga dilakukan sebagai root, bungkus seluruh baris dengan sh -c sehingga shell-nya ikut dijalankan dengan sudo; manual resmi sudo juga memberi contoh menjalankan di dalam sh -c agar pengalihan berfungsi.

sudo sh -c 'echo x > /root/test.txt'

tee menerima input standar dan menulisnya langsung ke file yang Anda berikan, jadi jika tee dijalankan dengan sudo, file dibuka oleh tee dengan hak root. tee juga menampilkan sekali lagi isi yang diterimanya ke layar.

echo x | sudo tee /root/test.txt

🔲 Login SSH ditolak

Jika di depan Permission denied ada [akun@alamat server:] dan di dalam tanda kurung ada metode autentikasi seperti publickey, login ditolak pada tahap autentikasi, dan tempat yang perlu diperiksa berbeda dari izin file. Di server, sshd memakai StrictModes dengan nilai bawaan yes, jadi sebelum menerima login ia memeriksa izin dan pemilik folder home serta file akun tersebut. Jika salah satu saja dari folder home, folder ~/.ssh, dan ~/.ssh/authorized_keys bisa ditulis akun lain, sshd tidak memakai file kunci itu, jadi periksa dengan ls -ld bahwa ketiganya tidak memberi izin w kepada akun lain.

⌨️ Simulator Permission denied

Simulator di bawah dimulai dengan akun root, dan dengan runuser Anda bisa menjadi akun lain, daemon, lalu melihat sendiri output saat pembacaan file, lewat folder, dan izin eksekusi diblokir.

Simulator Permission deniedcoreutils 8.32
[root@server1 work]#
Hanya berjalan di browser Anda. Dimulai dengan akun root; tambahkan cat atau ls setelah runuser -u daemon -- untuk melihat output yang dijalankan dengan akun lain, daemon.

3️⃣ Permission denied yang jarang muncul

Jika ditolak padahal kolom izin sudah benar, ada yang memblokir di luar bit izin, seperti kebijakan SELinux atau mount noexec. Jika eksekusi ditolak meski sebagai root, periksa apakah file itu sama sekali tidak punya bit x.

Di server yang SELinux-nya aktif, Permission denied muncul saat kebijakan SELinux memblokir meski bit izin sudah benar, jadi dalam hal ini periksa dulu catatan penolakan SELinux. Di server yang menjalankan daemon audit, penolakan tercatat di /var/log/audit/audit.log sebagai [avc: denied] bersama tindakan yang diblokir, nama perintah (comm), dan nama target (name).

Lihat dengan getenforce apakah SELinux aktif, lalu jalankan ausearch sebagai root untuk memeriksa penolakan hari ini.

getenforce
ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts today

Pada daemon rsync, [Permission denied (13)] saat menerima file juga merupakan kasus SELinux memblokir akses ke path modul.

Di sistem file yang dikaitkan dengan noexec, file tidak bisa dijalankan langsung, jadi meski ls -l menampilkan x, file ditolak dengan [bash: path skrip: Permission denied]. Berikan folder itu ke findmnt -T untuk melihat tempat folder itu dikaitkan dan opsinya; jika opsinya berisi noexec, inilah kasusnya.

findmnt -T /tmp -o TARGET,OPTIONS

root melewati sebagian besar pemeriksaan izin, tetapi eksekusi hanya diizinkan jika setidaknya salah satu dari pemilik, grup, atau akun lain punya x. Karena itu, skrip tanpa x sama sekali tetap ditolak meski root menjalankannya dengan ./.

Saat deploy.sh yang kolom pertamanya [-rw-r--r-- 1 root root] dijalankan dengan ./ dari akun root, muncul [bash: line 1: ./deploy.sh: Permission denied].

🔲 Saat /dev/null berubah menjadi file biasa

Jika tepat setelah masuk lewat SSH dengan akun biasa baris di bawah muncul beruntun sebelum prompt shell, periksa dulu apakah /dev/null, perangkat karakter yang dipakai semua akun untuk membuang output, sudah berubah menjadi file biasa milik root. Jumlah barisnya berbeda di tiap server sesuai banyaknya skrip profile yang dibaca saat login, dan di server yang sama galat ini tidak muncul setelah beralih ke root.

-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
...
ls -l /dev/null
-rw-r--r-- 1 root root 55 Jan 10 09:00 /dev/null
stat -c %F /dev/null
regular file

Kolom pertamanya [-rw-r--r--] dan di posisi ukuran tertulis 55; teks galat yang dibuang perintah lain sudah menumpuk di file itu. Jika baris perintah pembersihan yang berisi bentuk di bawah dijalankan sebagai root, rm menghapus file perangkat, lalu pengalihan 2>/dev/null pada perintah berikutnya membuat file biasa baru milik root dengan nama yang sama.

rm -f /dev/null 2>/dev/null

Jalankan baris di bawah sebagai root. Dengan membuat perangkat baru memakai nama di sebelahnya lalu menimpanya dengan mv, tidak ada saat ketika nama itu kosong, sehingga tidak tersisa celah bagi pengalihan lain untuk membuat file biasa lagi di antara penghapusan dan pembuatan.

mknod -m 666 /dev/null.new c 1 3 && mv -f /dev/null.new /dev/null && ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Jan 10 09:05 /dev/null
stat -c %F /dev/null
character special file

[c 1 3] pada mknod adalah nomor /dev/null di daftar nomor perangkat kernel. Setelah dipulihkan, echo x > /dev/null dengan akun biasa juga selesai tanpa galat. Reboot juga bisa mengembalikannya, tetapi satu baris di atas yang tidak menghentikan server lebih cepat.

KonfirmasiSebelum diperbaikiSetelah perbaikan
Kolom pertama ls -l-rw-r--r--crw-rw-rw-
Posisi ukuran ls -l551, 3
stat -c %Fregular filecharacter special file
Menulis dengan akun biasaPermission deniedTidak ada galat

Kirim output yang ingin dibuang hanya sampai >/dev/null atau 2>/dev/null, dan kecuali saat memulihkan, jangan pernah menulis /dev/null sebagai target rm atau mv.

🔢 FAQ & Konten yang Direkomendasikan

Menulis ke sistem file yang dikaitkan hanya-baca memunculkan [Read-only file system], dan ini galat yang berbeda (EROFS) dari Permission denied. Dalam hal ini, sebelum izin, periksa dulu dengan opsi apa sistem file itu dikaitkan.

Membuka baca, tulis, dan eksekusi untuk semua akun memang menghilangkan Permission denied di tempat itu, tetapi akun lain juga jadi bisa mengubah file itu. Menambahkan izin hanya untuk akun yang memerlukannya atau mengganti pemilik membuat cakupannya lebih sempit.

Memperluas izin saja memang menghilangkan Permission denied, tetapi /dev/null tetap file biasa sehingga output yang dibuang terus menumpuk di file itu. /dev/null baru pulih sebagai perangkat jika hasil stat kembali menjadi character special file.

ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Buktikan bahwa Anda manusia: 1   +   8   =