Cygwin mkdir erstellt ein Verzeichnis, für das ich keine Berechtigungen habe

3737
M.M

Verwendung der neuesten Version von cygwin64 in Windows 10. Ich habe es geschafft, ein Verzeichnis zu erhalten foo, das etwas seltsame Berechtigungen hat. Ich bin nicht ganz sicher, wie das passiert ist, aber hier sind die Symptome:

$ 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 

Dies geschieht nicht für andere Verzeichnisse, z /f/temp/ok. Mit lsSwitches sehe ich keinen Unterschied zwischen f/temp/okund /f/temp/foo.

Wenn ich es chmod 775 bardann mache kann ich eingeben bar, aber dann macht das Erstellen eines Verzeichnisses bardas gleiche Problem. Dieses Problem hält mich also davon git initab /f/temp/foo. Beim chown -R Mm *Elternteil macht es keinen Unterschied.

Meine Frage ist: Was verursacht dieses Problem und was ist die richtige Lösung?

Es gibt einige sichtbare Unterschiede, icaclsaber ich bin nicht sicher, wie ich sie interpretieren soll:

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

Ich habe jetzt eine Problemumgehung: Erstellen Sie ein anderes Verzeichnis unter /f/temp, cp -rkopieren Sie dann alle Dateien fooin das neue Verzeichnis, löschen Sie foodas neue Verzeichnis und benennen Sie es um. Wenn ich cp -aanstelle des cp -rProblems benutze, bleibt das bestehen.

8
probiere `setfacl -b foo` matzeri vor 7 Jahren 1
@matzeri das schien zu funktionieren - wenn Sie eine Antwort mit einer Erklärung aufschreiben können, stimme ich zu und akzeptiere M.M vor 7 Jahren 0

1 Antwort auf die Frage

7
matzeri

Der von icacls gezeigte DENY-Überschuss kann durch die jüngsten Änderungen in cygwin dll (zwischen 2.3 und 2.5) verursacht werden. Es hat einige Zeit gedauert, um richtig zu sein, und Dateien oder Verzeichnis mit rätselhafter ACL hätten verlassen können.

Um die ACLs -bzu bereinigen, wurde ein Schalter zu setfacl hinzugefügt

setfacl -b foo 

Für Referenz https://cygwin.com/cygwin-ug-net/ov-new.html#ov-new2.4s

Das Problem entstand, als ich einige Dateien entpackt habe, die von jemandem mit einer anderen Version von cygwin erstellt wurden. Daher ist die Erklärung sinnvoll M.M vor 7 Jahren 1