Bagaimana cara menghentikan cygwin dari membuat file yang tidak dapat dihapus? Atau bisakah saya menghapusnya entah bagaimana?


2

Sesekali cygwin tampaknya membuat file yang sepertinya tidak bisa dilepas sama sekali. Ketika menghapus dari cygwin itu tidak terjadi ( rmmengatakan apa-apa, tetapi file tersebut masih ada). Ketika mencoba dari explorer dikatakan bahwa saya memerlukan izin dari administrator (dan saya adalah administrator, item hapus di menu drop-down memiliki perisai dan saya kira itu berarti bahwa saya mencoba ini dengan hak administrator). Ketika mencoba dari total komandan, saya pertama kali mendapatkan kesalahan dan ditanya apakah saya tidak mau mencoba lagi sebagai administrator dan kemudian saya masih tidak memiliki izin untuk menghapus file.

Saya mendapatkan masalah yang sama jika saya mencoba untuk melihat file. Masalah ketika saya mencoba untuk melihat properti keamanan - harus menekan tombol perisai untuk menjadi administrator dan kemudian diberi tahu bahwa saya tidak diizinkan untuk melihatnya kecuali saya mengambil kepemilikan (yang saya tidak boleh melakukannya).

Menggunakan shell cygwin saya diizinkan untuk melihat, tetapi tidak memodifikasi ACL (bahkan jika shell dijalankan sebagai administrator):

$ getfacl makefile.wine
# file: makefile.wine
# owner: Unknown+User
# group: Unknown+Group
user::rw-
group::r--
other:---
$ setfacl -b makefile.wine
setfacl: Permission denied

Namun ketika restart windows tidak ada masalah hanya dengan menghapus file.

Mengapa / bagaimana cygwin membuat file-file ini (saya tahu bahwa itu dibuat saat dijalankan sed -i)? Bagaimana saya bisa menghindari ini? Dan akhirnya adakah cara yang waras untuk menghapus file?


Coba langkah-langkah ini - stackoverflow.com/questions/3739477/…
hkdtam

@ hkdtam Saya tidak yakin langkah mana yang Anda maksud. Jawaban yang ditautkan tampaknya menyarankan untuk hanya menunggu dan file harus pergi, itu belum terjadi. Solusi lain pada dasarnya menunjukkan hasil yang sama, saya sepertinya tidak diizinkan melakukan hal-hal itu (bahkan jika menjalankan shell sebagai administrator).
meroket

Jawaban:


1

cygwin seharusnya tidak membuat file yang tidak terhapus, setidaknya tidak lagi. Dengan asumsi Anda memiliki instalasi yang diperbarui (cygwin 2.5.1): periksa file ACL dengan: getfacl "nama file" Anda dapat membersihkan izin ACL dengan: setfacl -b "filename" Lihat manual getfacl dan setfacl untuk detailnya. Bacaan tambahan https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-files

Seperti yang Anda miliki dari getfacl

pemilik: Tidak Diketahui + Pengguna

grup: Tidak Diketahui + Grup

Itu berarti cygwin tidak mengenali pemiliknya. Dua kemungkinan:

1) pemilik tidak lagi berlaku di mesin windows

2) Anda menggunakan beberapa jenis koneksi VPN atau Domain dan pengguna basis data windows tidak dapat diakses dalam kondisi tertentu.

Sebagai admin windows Anda harus dapat mengubah pemilik, juga dari cygwin.


Saya tampaknya menjalankan cygwin 2.5.0, mungkin 2.5.1 tidak akan membuat file-file ini. Namun solusi yang Anda usulkan untuk menghapus file sepertinya tidak berfungsi.
meroket

setfacl -b "nama file" tidak menghapus file. tapi itu membersihkan ACL. Setelah itu Anda dapat mengubah izin dan menghapus yang Anda inginkan.
matzeri

Apakah setfacl membersihkan ACL bahkan jika itu menampilkan pesan "setfacl: Izin ditolak"? Dalam hal ini itu adalah diagnostik yang membingungkan ...
melonjak

Apa output dari icacls "nama file"?
matzeri

@matzeri Situasi yang sama, dapatkan akses ditolak dari icacls
Prodigle

0

Silakan coba dengan takeownperintah. Dalam shell CMD hak istimewa admin, keluarkan perintah berikut,

takeown /F makefile.wine

dan lihat sekarang jika Anda dapat menghapusnya,

rm makefile.wine

Pembaruan: Terima kasih telah melaporkan dan itu adalah kekeliruan saya. Setelah takeownperintah, dapatkah Anda melakukan klik kanan pada file itu di explorer untuk melihat tentang informasi kepemilikan dan melakukan penyesuaian dari sana?


Seperti disebutkan, itu adalah salah satu solusi yang Anda tautkan yang tidak berfungsi.
meroket

0

Saya akhirnya memecahkan ini, gunakan Process Explorer (secara default di versi windows terbaru) mencari dalam menangani untuk setiap proses menggunakan nama file itu dan membunuh proses.

Saya sudah merinci semua ini di blog saya .

Jangan mencoba mengembalikan izin, itu tidak akan berhasil.


1
Selamat Datang di Pengguna Super! Kami lebih suka jawaban yang berisi sebanyak mungkin, jadi bisakah Anda mengedit jawaban Anda untuk memasukkan informasi yang relevan dari artikel jika tautan rusak? Untuk informasi lebih lanjut, lihat Cara Menjawab .
Ben N

0

Saya memiliki masalah yang sama dengan Cygwin tetapi tidak memiliki admin yang benar. Saya memiliki folder dengan izin seperti ini:

d---r-xr-x    1 jac  root        0 Feb  7 13:25 ciao

Dalam kasus saya, saya memecahkan seperti ini:

  1. Dari Windows explorer, klik kanan pada file / folder dan pilih properti.
  2. Buka tab Keamanan.
  3. Di: "Grup atau nama pengguna" klik Edit ...
  4. Di: "Grup atau nama pengguna" klik Tambah ...
  5. Dalam: Masukkan nama objek untuk memilih masukkan nama pengguna Anda
  6. Tekan OK, jika beberapa nama ditemukan, Anda mungkin perlu mengonfirmasi nama yang mana
  7. Pilih pengguna Anda dan izinkan kendali penuh atas file dengan mencentang kotak centang.
  8. Tekan OK di semua dialog, Anda seharusnya sekarang dapat menghapus file.

Diuji pada Windows 7.

Semoga itu bisa membantu orang lain menghadapi masalah yang sama.


Ini hanya akan berfungsi jika ACL tidak rusak. Seperti dalam situasi OP, ACL tidak dapat mengenali pemilik yang valid sehingga setiap & semua akses ke izin akan diblokir.
Prodigle
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.