Linux - tidak dapat menghapus file yang dimiliki dengan 777 izin

29

Saya punya beberapa file yang tidak bisa saya hapus menggunakan rf -Rfperintah. Saya adalah pemilik dari file-file itu dan grup yang ditugaskan ke file-file itu juga merupakan grup yang digunakan oleh pengguna saya. Yang lebih aneh lagi adalah saya dapat mengedit konten mereka dan saya dapat mengubah izin untuknya, tetapi saya tidak dapat memindahkan atau Hapus mereka.

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

Adakah yang bisa memberi tahu saya apa yang terjadi?

RaYell
sumber
5
Secara umum, pertimbangkan untuk menggunakan rm -rf DIRECTORY_NAME dan bukan "*". Ini akan menyelamatkan Anda dari suatu saat ketika Anda akan berpikir diri Anda dalam direktori / beberapa / di mana / aman tetapi sebaliknya di / rumah
Sardathrion - Reinstate Monica
Sebenarnya saya sudah mencobanya, hanya 3 file yang tidak bisa saya hapus jadi saya sudah menyederhanakan prosedurnya untuk keperluan posting ini.
RaYell
Jangan lupa perintah lsattr dan chattr ...

Jawaban:

61

Untuk menghapus satu file Anda harus menulis izin pada direktori yang berisi ¹ file ini.

Di sini izinnya dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .Jadi tidak seorang pun (selain root) dapat menghapus file di dalam direktori ini. Pemilik harus menggunakannya chmodterlebih dahulu.

-
1. Ada alasan yang cukup bagus untuk itu. Dengan 'menghapus' file dengan rm, Anda sebenarnya mencoba untuk memutuskan tautannya dari direktori (salinan yang di- link tidak akan dihapus).

Stéphane Gimenez
sumber
1

Saya memiliki masalah yang sama, dan chmodsendirian tidak melakukan trik. Saya pertama kali harus mengubah pemilik (pengguna dan grup) dari file yang ingin saya hapus.

sudo chown -hR root:admin dir_to_delete

Penjelasan:

  • sudo: pastikan Anda memiliki hak yang tepat
  • chown: Perintah Linux untuk mengubah pemilik file
  • -hR: ganti pemilik direktori dan semua subdirektori. Saya menemukannya di sini .
  • root: nama pengguna baru
  • admin: nama grup baru

Saya sudah mengubah modifikator menjadi 777; Saya tidak tahu apakah itu perlu atau tidak.

ketertarikan fisik
sumber
Izin file dalam direktori tidak relevan, hanya menulis izin pada direktori itu sendiri yang penting. Mungkin sebelumnya chownAnda bukan pemilik direktori atau anggota grup pemilik direktori.
sgnsajgon
1

Pertanyaan lain yang mungkin adalah atribut

lsattr file

Perintah ini akan menunjukkan kepada Anda atribut file dan file dengan atribut 'i' tidak dapat dimodifikasi (dan dihapus)

jadi periksa atribut file Anda dan hapus atribut 'i' jika atribut sudah disetel

chattr -i file
LJP-TW
sumber
2
Pertanyaannya menunjukkan bahwa itu adalah izin direktori yang tidak memungkinkan penulisan. Tidak perlu melihat lebih jauh.
Toby Speight
0

Alasannya adalah direktori induk memiliki chmod 705atau sesuatu seperti itu. Anda dapat chmoddirektori induk dengan perintah berikut:

chmod -R 777 directory_name

Setelah ini, Anda dapat menghapus direktori itu dan file-file di dalamnya.

Tim Tomagen
sumber
4
Tolong jangan memaafkan membuat direktori dapat ditulis oleh semua orang . Itu bukan saran yang bagus.
Toby Speight
+1 - Setuju, jangan ikuti saran ini, luar biasa, bagaimana ini diplester di internet ... Banyaknya rasa tidak aman, yang disebabkan oleh orang-orang yang menganjurkan ini luar biasa ...
André Figueira