Tidak dapat menghapus file, bahkan saat dijalankan sebagai root

48

Saya sedang dalam proses migrasi mesin dari RHEL 4 ke 5. Daripada benar-benar melakukan upgrade, kami telah membuat VM baru (kedua mesin berada di cloud) dan saya sedang dalam proses menyalin data antara keduanya.

Saya telah menemukan file berikut, yang harus saya hapus dari mesin baru tetapi saya tidak bisa, bahkan ketika dijalankan sebagai root:

-rw-------  1 2003 2003  219 jan 11 14:22 .bash_history

File ini di dalam / home / USER /, di mana USER adalah akun orang yang membuat mesin. Dia tidak memiliki akun di mesin lama, jadi saya mencoba menghapus folder rumahnya sehingga mesin baru sesuai dengan yang lama, tetapi saya mendapatkan kesalahan berikut:

rm: ne peut enlever `.bash_history': Opération non permise

(diterjemahkan dari bahasa Prancis: tidak dapat menghapus XXX, operasi tidak diizinkan)

Saya telah mencoba menggunakan perintah berikut tetapi ini tidak membuat perbedaan:

chattr -i .bash_history

Apakah satu-satunya pilihan untuk membuat pengguna dengan ID 2003, atau adakah cara lain untuk mengatasinya?


Sunting

Saya sudah mencoba menggunakan rm -f, dan saya mendapatkan kesalahan yang sama. Saya mendapatkan jenis kesalahan yang sama menggunakan chmod 777pertama.

Saya sudah dapat chownfolder yang berisi file yang saya coba hapus, jadi itu adalah:

drwx------ 2 root root 1024 jan 24 15:58 USER

Edit2

Menjalankan lsattrperintah seperti yang disarankan oleh Angus memberikan output berikut:

-----a------- USER/.bash_history
------------- USER/..
------------- USER/.

File ditandai sebagai append-only - untuk mengubah flag ini menggunakan chattr -a .bash_historysaya dapat menghapus file.

Kaya
sumber

Jawaban:

55

Periksa izin direktori . Untuk menghapus file di dalamnya, itu harus ditulis oleh Anda

chmod ugo+w .

dan tidak dapat diubah atau hanya ditambahkan:

chattr -i -a .

Periksa dengan ls -ladan lsattr -a.

angus
sumber
terima kasih .. Saya harus menjalankan ini pada file * bernama yang tidak membersihkan setelah yum menghapus bind di Centos 7 minimal
onxx
Sayangnya, untuk /vendor/laracasts/generators/.git/objects/pack/, ketika saya menjalankan chattr -i -a ., saya dapat chattr: Inappropriate ioctl for device while reading flags on ., dan saya tidak dapat file rmsial .idxyang ditinggalkan Komposer (karena "Operasi tidak diizinkan").
Ryan
Ahhh, satu solusi bagi saya adalah keluar dari Laravel Homestead Vagrant VirtualBox saya kembali ke Windows 10 (masih menggunakan Git Bash) dan rmfile-file dari sana. Kemudian composer updatebisa menyelesaikan.
Ryan
chattr -i -abekerja.
xji
Bahkan setelah menggunakan Linux selama hampir 10 tahun, saya terus belajar hal baru. Belum pernah mendengar tentang atribut abadi sebelumnya!
Marlar
9

Saya memiliki masalah yang sama tetapi telah mencoba izin dan chattr sebelumnya tidak berhasil. Root di Terminal. CD ke Direktori.

Namun yang berhasil bagi saya adalah memeriksa izin direktori tempat file bermasalah berada - jika ok lanjutkan ke:

chmod ugo+w filename

ini gagal - lalu:

chattr -i -a filename 

yang diterima - lalu

chmod ugo+w 

yang diterima

rm filename

dan itu hilang.

Fedora 25 menggunakan hp workstation.

Keith Mann
sumber
'chmod ugo + w filename "benar-benar melakukan trik untuk saya
Alfishe
1

'sudo' dapat menjalankan perintah 'rm' menggunakan user.group yang sama

CATATAN : tidak yakin apakah ini juga akan berfungsi untuk id seperti yang Anda miliki.

Contoh:

ls /path/to/dir_being_deleted
  drwxrwxrwx 2 nfsnobody nfsnobody   4096 Mar  8 06:55 .
  drwxrwxrwx 7 nfsnobody nfsnobody   4096 Mar  8 06:57 ..
  -rwxrwxrwx 1 nfsnobody nfsnobody      0 Mar  8 06:55 filename.txt

sudo -u nfsnobody -g nfsnobody rm -rf /path/to/dir_being_deleted
awltux
sumber