Cygwin mkdir membuat direktori saya tidak memiliki izin untuk

10

Menggunakan versi terbaru cygwin64 di Windows 10. Saya telah berhasil mendapatkan direktori fooyang memiliki sesuatu yang aneh tentang izinnya. Saya tidak yakin bagaimana ini terjadi tetapi berikut adalah gejalanya:

$ cd /f/temp/foo
$ ls -lad .
drwxrwx---+ 1 Mm None 0 Jun 16 14:03 .
$ mkdir bar
$ ls -lad bar
d---rwx---+ 1 Mm None 0 Jun 16 14:17 .
$ cd bar
Permission denied
$ umask
0022

Ini tidak terjadi untuk direktori lain, mis /f/temp/ok. Menggunakan lssakelar, saya tidak bisa melihat perbedaan antara f/temp/okdan /f/temp/foo.

Jika saya melakukannya chmod 775 barmaka saya bisa masuk bar, tetapi kemudian membuat direktori di bawah barmemiliki masalah yang sama. Jadi masalah ini menghentikan saya lakukan git initdi /f/temp/foo. Berbuat chown -R Mm *pada orang tua tidak ada bedanya.

Pertanyaan saya adalah: Apa yang menyebabkan masalah ini dan apa perbaikan yang tepat?

Ada beberapa perbedaan yang terlihat icaclstetapi saya tidak yakin bagaimana menafsirkannya:

$ cd /f/temp
$ icacls ok  >ok.txt
$ icacls foo >foo.txt
$ diff -b ok.txt foo.txt
1c1
< ok NULL SID:(DENY)(Rc,S,REA,WEA,X,DC)
---
> foo NULL SID:(DENY)(Rc,S,REA,WEA,X,DC)
3c3
<   DESKTOP-AO2AIEC\None:(RX)
---
>    DESKTOP-AO2AIEC\None:(Rc,S,RA)
8c8
<   Everyone:(RX)
---
>    Everyone:(Rc,S,RA)
10,11c10,12
<   CREATOR OWNER:(OI)(CI)(IO)(F)
<   CREATOR GROUP:(OI)(CI)(IO)(RX)
---
>    CREATOR OWNER:(OI)(CI)(IO)(DENY)(S,RD,WD,AD,REA,WEA,X,DC)
>    CREATOR OWNER:(OI)(CI)(IO)(D,Rc,WDAC,WO,RA,WA)
>    CREATOR GROUP:(OI)(CI)(IO)(Rc,S,RA)
16c17
<   Everyone:(OI)(CI)(IO)(RX)
---
>    Everyone:(OI)(CI)(IO)(Rc,S,RA)

Saya telah mendapatkan solusi untuk saat ini: buat direktori lain di bawah /f/temp, lalu gunakan cp -runtuk menyalin semua file dari fooke dalam direktori baru, kemudian hapus foodan ganti nama direktori baru. Jika saya menggunakan cp -abukannya cp -rmasalah berlanjut.

MM
sumber
1
cobasetfacl -b foo
matzeri
@matzeri yang sepertinya berfungsi - jika Anda bisa menulis jawaban dengan penjelasan saya akan memilih dan menerima
MM

Jawaban:

10

Kelebihan DENY yang ditunjukkan oleh icacls dapat disebabkan oleh perubahan terbaru dalam cygwin dll (antara 2,3 dan 2,5 saat ini). Butuh beberapa putaran untuk menjadi benar dan bisa meninggalkan file atau direktori dengan membingungkan ACL.

Untuk membersihkan ACL, sebuah -bsaklar ditambahkan ke setfacl

setfacl -b foo

Untuk referensi https://cygwin.com/cygwin-ug-net/ov-new.html#ov-new2.4s

matzeri
sumber
1
Masalahnya berasal ketika saya membuka ritsleting beberapa file yang dibuat oleh seseorang dengan versi cygwin yang berbeda, sehingga penjelasannya masuk akal
MM