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.