Linux'ta Permission denied: /dev/null dahil 10 durum

Test ortamıRHEL ailesiAlmaLinux 9.8root hesabıDebian 12 normal hesap2026-11-05 tarihinde kontrol edildi
Permission denied nedenini bulma

Permission denied, Linux'ta geçerli hesabınızın o dosyayı, klasörü veya komutu kullanma izni olmadığında çıkan bir hatadır. Hata satırının başındaki komut adı ve yola bakarak hangi durum olduğunu seçin, ls -l ile izinleri ve sahibi kontrol edin, ardından o duruma uygun izinler veya hesapla yeniden çalıştırarak sorunu çözün.

Aşağıdaki çıktı, bir AlmaLinux 9.8 sunucusundaki root hesabında ve bir Debian 12 sunucusundaki normal bir hesapta alınan sonuçlardır; hesap ve ana makine adları ile /dev/null çıktısındaki saatler örnek değerlerdir.

1️⃣ Permission denied nedenini bulma

Hata satırı [komut: hedef: Permission denied] biçiminde biter ve önündeki komut adı ile yoldan nerede engellendiğini görebilirsiniz. Aşağıdaki şemada ekranınızdakine benzeyen hata mesajını seçerseniz önce kontrol edeceğiniz komut ve bu yazıda okuyacağınız bölüm görünür.

🧭 Hata mesajına göre durumunuzu seçin
Açıklama diyagramı
🧭 Hata mesajı
Hata mesajıcat: 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
➜
Önce kontrol edinls -l secret.txtls -ld webls -l deploy.shidsudo sh -cEv klasörü ve dosya izinlerigetenforce · findmntls -l /dev/null
➜
Bu yazıdaki yeri🔲 Dosya okuma ve yazma izinleri🔲 Klasörden geçiş izni🔲 Çalıştırma izni🔲 root'a ayrılmış bilgileri okuma🔲 sudo eklenmesine rağmen > engellendiğinde🔲 SSH girişinin reddedilmesi3️⃣ Nadir görülen Permission denied hataları🔲 /dev/null normal bir dosyaya dönüştüğünde
Bir dosyayı okuyan veya değiştiren komut reddedilirse önce o dosyanın r, w izinlerini ve sahibini kontrol edin.
Hatada yolun ortasındaki bir klasörün adı geçiyorsa o klasörün x izni olup olmadığını kontrol edin.
Bir betiği doğrudan çalıştırmak reddedilirse o dosyanın x izni olup olmadığını kontrol edin.
Sistem bilgilerini normal bir hesapla okurken engellenirseniz geçerli hesabı kontrol edin ve root olarak yeniden çalıştırın.
sudo eklenmesine rağmen > yönlendirmesinde engellenirseniz yönlendirmeyi de root olarak çalıştırın.
Hatanın önünde hesap ve sunucu adresi varsa giriş, kimlik doğrulamada reddedilmiştir.
İzin sütunu doğru olduğu ya da root olarak çalıştırdığınız hâlde reddedilirse SELinux, noexec ve çalıştırma bitlerini kontrol edin.
Giriş yapar yapmaz bu satır art arda çıkıyorsa /dev/null dosyasının normal bir dosyaya dönüşüp dönüşmediğini kontrol edin.

2️⃣ Sık görülen Permission denied hataları

🔲 Dosya okuma ve yazma izinleri

Bir dosyayı okumak için hesabın okuma (r) iznine, değiştirmek veya yeni oluşturmak için yazma (w) iznine ihtiyacı vardır. İzinleri 600 olan secret.txt dosyasını yalnızca sahibi root okuyup yazabilir.

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

Aynı dosyayı başka bir hesap olan daemon ile okumak hemen reddedildi. Yazma izni olmayan bir klasörün içinde dosya oluştururken de aynı hata çıkar; Debian 12 sunucusundaki normal hesapta, izinleri 000 olan lock klasöründe touch engellendi.

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

ls -l çıktısının ilk sütununda sırasıyla sahip, grup ve diğer hesaplar için r ve w olup olmadığına bakın, ardından yalnızca ihtiyacı olan hesaba chmod ile izin ekleyin ya da chown ile sahibi değiştirin.

🔲 Klasörden geçiş izni

Dosya izinleri doğru olsa bile yolun ortasındaki bir klasörde x izni yoksa içindeki dosyaya ulaşamazsınız. Bir klasörde x, o klasörden geçip içeri girme izni, r ise içindeki adların listesini okuma iznidir.

web/ ── drw-r--r-- · r var · x yok → burada engellenir
css/ ── ad görünür, izinler · boyut ?
style.css ── ulaşılamaz
index.html ── ad görünür, izinler · boyut ?
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

web klasöründe yalnızca r olduğu için daemon içindeki css ve index.html adlarını okuyabildi, ancak x olmadığından izinler ve boyutlar soru işareti olarak kaldı. Tersine, x olup r olmayan site klasöründe listeleme engellendi, adı bilinen dosya ise okunabildi.

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>

Yol uzunsa ls -ld ile en üstteki klasörden başlayarak tek tek x olup olmadığını kontrol edin ve engellenen klasöre yalnızca hesabın geçmesi için gereken x iznini ekleyin.

🔲 Çalıştırma izni

Bir betiği ./dosya adı biçiminde çalıştırmak için o dosyada x izni olmalıdır. İzinleri 644 olan deploy.sh dosyasının çalıştırılması reddedildi.

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

chmod u+x ile sahibe x eklenince ilk sütun [-rwxr--r--] oldu.

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

x izni olduğu hâlde çalıştırma reddedilirse dosyanın bulunduğu dosya sisteminin noexec ile bağlanıp bağlanmadığını kontrol edin.

🔲 root'a ayrılmış bilgileri okuma

Normal bir hesap, root'un başlattığı süreçler veya diğer hesapların parola bilgileri gibi sistemin root'a ayırdığı bilgileri okuyamaz. Debian 12 sunucusundaki normal hesapla 1 numaralı sürecin fd klasörü açılınca izin hatası çıktı.

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

Başka bir hesabın parola süresi bilgileri de aynı nedenle engellendi; bu bilgileri içeren /etc/shadow, normal kullanıcıların okuyamayacağı şekilde tutulan bir dosyadır. Bu tür hatalarda izinleri genişletmeyin, komutu sudo ile veya root hesabıyla yeniden çalıştırın.

🔲 sudo eklenmesine rağmen > engellendiğinde

sudo yalnızca arkasına yazılan komutu root olarak çalıştırır; yönlendirme (>) için dosyayı açma işini ise komut çalışmadan önce geçerli hesabın kabuğu yapar. Bu yüzden sudo echo çıktısını yalnızca root'un yazabildiği bir dosyaya yönlendirirseniz hata satırı kabuk adıyla başlayan [bash: dosya yolu: Permission denied] biçiminde çıkar.

sudo echo x > /root/test.txt

Yönlendirmeyi de root olarak yapmak için satırın tamamını sh -c ile sarıp kabuğu da sudo ile çalıştırın; sudo resmî kılavuzu da yönlendirmenin çalışması için sh -c içinde çalıştırma örneği verir.

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

tee standart girdiyi alıp verilen dosyalara doğrudan yazar; bu yüzden tee'yi sudo ile çalıştırırsanız dosyayı root yetkisiyle çalışan tee açar. tee aldığı içeriği ekrana da bir kez daha yazdırır.

echo x | sudo tee /root/test.txt

🔲 SSH girişinin reddedilmesi

Permission denied ifadesinin önünde [hesap@sunucu adresi:] varsa ve parantez içinde publickey gibi bir kimlik doğrulama yöntemi yazıyorsa giriş, kimlik doğrulama aşamasında reddedilmiştir ve kontrol edilecek yer dosya izinlerinden farklıdır. Sunucudaki sshd'de StrictModes ayarı varsayılan değer olan yes olduğundan, girişi kabul etmeden önce o hesabın ev klasörünün ve dosyalarının izinlerini ve sahibini denetler. Ev klasörü, ~/.ssh klasörü ve ~/.ssh/authorized_keys dosyasından biri bile başka bir hesap tarafından yazılabiliyorsa sshd o anahtar dosyasını kullanmaz; bu yüzden ls -ld ile üçünde de diğer hesaplara w izni verilmediğini kontrol edin.

⌨️ Permission denied simülatörü

Aşağıdaki simülatör root hesabıyla başlar; runuser ile başka bir hesap olan daemon'a geçip dosya okuma, klasörden geçiş ve çalıştırma izninde engellenen çıktıları kendiniz görebilirsiniz.

Permission denied simülatörücoreutils 8.32
[root@server1 work]#
Yalnızca tarayıcınızda çalışır. root hesabıyla başlar; runuser -u daemon -- arkasına cat veya ls eklerseniz başka bir hesap olan daemon ile çalıştırılmış çıktı görünür.

3️⃣ Nadir görülen Permission denied hataları

İzin sütunu doğru olduğu hâlde reddedilirseniz, SELinux politikası veya noexec bağlaması gibi izin bitlerinin dışında bir şey engellemiştir. root olarak çalıştırdığınız hâlde çalıştırma reddedilirse dosyada hiç x biti olup olmadığını kontrol edin.

SELinux etkin bir sunucuda izin bitleri doğru olsa bile SELinux politikası engellerse Permission denied çıkar; bu durumda önce SELinux'un reddetme kayıtlarını kontrol edin. audit arka plan programının çalıştığı sunucularda reddetmeler /var/log/audit/audit.log dosyasına [avc: denied] olarak, engellenen işlem, komut adı (comm) ve hedef adı (name) ile birlikte kaydedilir.

getenforce ile SELinux'un etkin olup olmadığına bakın ve root olarak ausearch çalıştırıp bugünkü reddetme kayıtlarını kontrol edin.

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

rsync arka plan programı ile alırken çıkan [Permission denied (13)] de SELinux'un modül yoluna erişimi engellediği bir durumdu.

noexec ile bağlanmış bir dosya sisteminde dosyalar doğrudan çalıştırılamaz; bu yüzden ls -l çıktısında x görünse bile [bash: betik yolu: Permission denied] ile reddedilir. findmnt -T komutuna o klasörü verirseniz klasörün bağlandığı yer ve seçenekler görünür; seçeneklerde noexec varsa durum budur.

findmnt -T /tmp -o TARGET,OPTIONS

root izin denetimlerinin çoğunu aşar, ancak çalıştırma yalnızca sahip, grup ve diğer hesaplardan en az birinde x olduğunda izinlidir. Bu yüzden hiç x olmayan bir betik, root ./ ile çalıştırsa bile reddedilir.

İlk sütunu [-rw-r--r-- 1 root root] olan deploy.sh dosyası root hesabında ./ ile çalıştırılınca [bash: line 1: ./deploy.sh: Permission denied] çıktı.

🔲 /dev/null normal bir dosyaya dönüştüğünde

Normal bir hesapla SSH'a girer girmez kabuk isteminden önce aşağıdaki satırlar art arda çıkıyorsa, önce tüm hesapların çıktıyı atmak için kullandığı karakter aygıtı /dev/null dosyasının root'a ait normal bir dosyaya dönüşüp dönüşmediğini kontrol edin. Satır sayısı, girişte okunan profile betiklerinin sayısına göre sunucudan sunucuya değişir; aynı sunucuda root'a geçtikten sonra bu hata çıkmadı.

-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

İlk sütun [-rw-r--r--] idi ve boyut yerinde 55 yazıyordu; diğer komutların attığı hata metinleri dosyada birikmişti. Temizlik komut satırına aşağıdaki biçim karışıp root olarak çalıştırılırsa rm aygıt dosyasını siler, sonraki komutun 2>/dev/null yönlendirmesi de aynı adla root'a ait yeni bir normal dosya oluşturur.

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

Aşağıdaki satırı root olarak çalıştırın. Yeni aygıtı yan taraftaki bir adla oluşturup ardından mv ile üzerine yazarsanız adın boş kaldığı bir an olmaz; böylece silme ile oluşturma arasında başka bir yönlendirmenin yine normal dosya oluşturacağı bir boşluk kalmaz.

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

mknod komutundaki [c 1 3], çekirdeğin aygıt numarası listesinde /dev/null'un numarasıdır. Kurtarmadan sonra normal hesaptaki echo x > /dev/null da hatasız bitti. Yeniden başlatma da onu geri getirebilir, ancak sunucuyu durdurmayan yukarıdaki tek satır daha hızlıdır.

Kontrol etDüzeltmeden önceDüzeltmeden sonra
ls -l ilk sütunu-rw-r--r--crw-rw-rw-
ls -l boyut yeri551, 3
stat -c %Fregular filecharacter special file
Normal hesapla yazmaPermission deniedHata yok

Atılacak çıktıyı yalnızca >/dev/null veya 2>/dev/null ile göndermekle yetinin; kurtarma dışında /dev/null'u asla rm veya mv hedefi olarak yazmayın.

🔢 SSS & önerilen içerikler

Salt okunur bağlanmış bir dosya sistemine yazmaya çalışırsanız [Read-only file system] çıkar ve bu, Permission denied'dan farklı bir hatadır (EROFS). Bu durumda izinlerden önce o dosya sisteminin hangi seçeneklerle bağlandığını kontrol edin.

Tüm hesaplara okuma, yazma ve çalıştırma izni açarsanız o noktadaki Permission denied kaybolur, ancak diğer hesaplar da o dosyayı değiştirebilir hâle gelir. Yalnızca ihtiyacı olan hesaba izin eklemek ya da sahibi değiştirmek kapsamı daha dar tutar.

Yalnızca izinleri genişletmek Permission denied hatasını kaldırır, ancak /dev/null normal dosya olarak kalır ve atılan çıktılar o dosyada birikmeye devam eder. Aygıt olarak kurtarılmış sayılması için stat sonucunun yeniden character special file olması gerekir.

ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İnsan olduğunuzu kanıtlayın: 7   +   2   =