Cygwin mkdir crea una directory per la quale non ho i permessi


9

Utilizzando l'ultima versione di cygwin64 in Windows 10. Sono riuscito a ottenere una directory fooche ha qualcosa di strano nelle sue autorizzazioni. Non sono sicuro di come sia successo, ma ecco i sintomi:

$ 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

Questo non accade per altre directory, ad es /f/temp/ok. Usando gli lsswitch non vedo alcuna differenza tra f/temp/oke /f/temp/foo.

Se lo faccio, chmod 775 barposso entrare bar, ma fare una directory sotto barha lo stesso problema. Quindi questo problema è fermare me fare git initin /f/temp/foo. Fare chown -R Mm *nel genitore non fa differenza.

La mia domanda è: cosa sta causando questo problema e qual è la soluzione corretta?

Ci sono alcune differenze visibili con icaclsma non sono sicuro di come interpretarle:

$ 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)

Per ora ho una soluzione alternativa: crea un'altra directory sotto /f/temp, quindi usa cp -rper copiare tutti i file dalla foonuova directory, quindi elimina fooe rinomina la nuova directory. Se uso al cp -aposto del cp -rproblema persiste.


1
trysetfacl -b foo
— matzeri

@matzeri che sembrava funzionare - se riesci a scrivere una risposta con una spiegazione, voterò e accetterò
— MM

Risposte:


10

L'eccesso di DENY mostrato da icacls può essere causato dai recenti cambiamenti nella cygwin dll (tra la 2.3 e la 2.5 attuale). Ci sono voluti alcuni round per avere ragione e potrebbe aver lasciato file o directory con ACL sconcertante.

Per disinfettare gli ACL, è -bstato aggiunto uno switch a setfacl

setfacl -b foo

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


1
Il problema ha avuto origine quando ho decompresso alcuni file creati da qualcuno con una versione diversa di cygwin, quindi questa spiegazione ha senso
— MM
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.