Menggunakan versi terbaru cygwin64 di Windows 10. Saya telah berhasil mendapatkan direktori foo
yang 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 ls
sakelar, saya tidak bisa melihat perbedaan antara f/temp/ok
dan /f/temp/foo
.
Jika saya melakukannya chmod 775 bar
maka saya bisa masuk bar
, tetapi kemudian membuat direktori di bawah bar
memiliki masalah yang sama. Jadi masalah ini menghentikan saya lakukan git init
di /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 icacls
tetapi 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 -r
untuk menyalin semua file dari foo
ke dalam direktori baru, kemudian hapus foo
dan ganti nama direktori baru. Jika saya menggunakan cp -a
bukannya cp -r
masalah berlanjut.
setfacl -b foo
Jawaban:
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
-b
saklar ditambahkan ke setfaclUntuk referensi https://cygwin.com/cygwin-ug-net/ov-new.html#ov-new2.4s
sumber