Rm -rf ile dizin ağacını kaldıramıyorum


9

Bu bana çok garip geliyor. Çekirdek 2.6.37.2 çalıştırıyorum ve koştu:

~]$ cp -r /proc/ here
~]$ rm -rf here

Beklendiği gibi kopyalama yaparken bazı izinler reddediyorum ve sonunda Control-C'ye basıyorum. Permission deniedYeni dizini ve dosyaları kaldırmaya çalışırken çok fazla dosya alıyorum .

Bir not olarak, bu garip davranışı buldum çünkü bir arkadaşım bana direktifinin .tgzbir anlık görüntüsünü gönderdi /proc. Dizini çıkarttım ve aramayı bitirdiğimde aynı problemi yaşadım.

rm -rf gibi kök çalışır.

lsattr e özniteliğini gösterir (tüm dosyalarım / dizinlerim budur).


Sorunun başlığını biraz genelleştirdim çünkü asıl mesele hakkında değil /proc. Bu arada, bu süre için biraz geç, ancak soruyu gönderdikten sonra cevabı anlarsanız , kendiniz cevaplamak ve benzer bir sorunla karşılaşabilecek diğer insanlar için bırakmak iyidir .
Gilles 'SO

Yanıtlar:


16

Yazma izniniz olmayan boş olmayan bir dizin varsa, içeriğini kaldıramazsınız.

$ mkdir foo
$ touch foo/bar
$ chmod a-w foo
$ rm -rf foo
rm: cannot remove `foo/bar': Permission denied

Bunun nedeni, rmdiğer komutlar gibi izinlere bağlı olması ve kaldırma barizninin üzerine yazma izni gerektirmesidir foo. rmKök olarak her zaman bir dosyayı kaldırma iznine sahip olduğu için bu, root olarak çalıştırdığınızda geçerli değildir .

Dizin ağacını silinebilir yapmak için içindeki tüm dizinleri yazılabilir yapın (silme söz konusu olduğunda normal dosyaların izinleri önemli değildir rm -f). Aşağıdaki komutlardan birini kullanabilirsiniz:

chmod -R u+w here        # slow if you have a lot of regular files
find here -type d -exec chmod u+w {} +

Yine aynı sonuç "Operasyona izin verilmiyor"
Legionar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.