Linux - 777 izne sahip olan dosyayı kaldıramıyor


29

rf -RfKomutu kullanarak kaldıramadığım birkaç dosya var . Bu dosyanın sahibiyim ve bu dosyalara atanan grup da kullanıcımın içinde bulunduğu bir grup. İçeriğindeki en tuhaf şey de içeriğini düzenleyebilmem ve izinlerini değiştirebilmem ama hareket edemiyorum veya onları sil.

ls -al
total 12
dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
drwxr-xr-x 3 rayell pg1083760 4096 2011-09-02 04:33 ..
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 default.settings.php
drwxrwxrwx 2 rayell pg1083760 4096 2011-09-02 04:33 files
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 settings.php


rm -Rf *
rm: cannot remove `default.settings.php': Permission denied
rm: cannot remove directory `files': Permission denied
rm: cannot remove `settings.php': Permission denied

Biri bana neler olduğunu söyleyebilir mi?


5
Genel olarak, "*" değil, rm -rf DIRECTORY_NAME kullanmayı düşünün. Dizinde kendinizi düşünecek zaman o tek seferde kurtaracak / bazı / nerede / güvenli ama vardır yerine / home
Sardathrion - Eski Monica

Aslında bunu denedim, kaldıramadığım sadece 3 dosya vardı, bu yüzden bu yazının amacı için biraz işlem yapmayı basitleştirdim.
RaYell

Yanıtlar:


61

Bir dosyayı kaldırmak için , bu dosyayı içeren dizine yazma izni vermeniz gerekir .

İşte izinler: dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .Böylece hiç kimse (dışında root) bu dizinin içindeki dosyaları kaldıramaz. chmodİlk önce sahibi kullanmalı .

-
1. Bunun için oldukça iyi sebepler var. Bir dosyayı 'kaldırarak' rm, aslında dizinden bağlantısını kaldırmaya çalışıyorsunuzdur (basılı kopyalar silinmeyecektir).


1

Ben de aynı problemi yaşadım ve chmodyalnız başına hile yapmadım. Önce kaldırmak istediğim dosyaların sahibini (kullanıcı ve grup) değiştirmek zorunda kaldım.

sudo chown -hR root:admin dir_to_delete

Açıklama:

  • sudo: uygun haklara sahip olduğunuzdan emin olun
  • chown: Bir dosyanın sahibini değiştirmek için Linux komutu
  • -hR: dizinin ve tüm alt dizinlerin sahibini değiştir. Onu burada buldum .
  • root: yeni kullanıcının adı
  • admin: yeni grubun adı

Değiştiricileri zaten 777 olarak değiştirmiştim; Bunun gerekli olup olmadığını bilmiyorum.


Dizin içindeki dosyaların izinleri ilgisizdir, yalnızca dizinin kendisiyle ilgilenir. Muhtemelen daha önce chownne dizin sahibi ne de sahibi olan gruba üye olmadınız.
sgnsajgon

1

Başka bir olası soru niteliktir

lsattr file

Bu komut size dosyanın özniteliğini gösterir ve 'i' özniteliğine sahip bir dosya değiştirilemez (ve silinemez)

bu nedenle dosyanızın özniteliğini kontrol edin ve öznitelik ayarlanmışsa 'i' özniteliğini kaldırın

chattr -i file

2
Soru, bunun yazma izni verilmeyen dizin izinleri olduğunu gösteriyor. Daha fazla aramaya gerek yok.
Toby Speight

0

Bunun nedeni, ana dizinin chmod 705veya buna benzer bir şey olmasıdır. Şunları yapabilirsiniz chmodaşağıdaki komutla üst dizin:

chmod -R 777 directory_name

Bundan sonra, bu dizini ve içerdiği dosyaları kaldırabilirsiniz.


4
Lütfen dizinleri herkes tarafından yazılabilir hale getirme . Bu iyi bir tavsiye değil.
Toby Speight

+1 - Katılıyorum, bu tavsiyeye uyma, şaşırtıcı, bunun internet üzerinden nasıl sıyrıldığı ... Bunu savunan kişilerin neden olduğu güvensizlik miktarı ... inanılmaz ...
André Figueira
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.