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

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

Ich verwende die neueste Version von cygwin64 in Windows 10. Mir ist es gelungen, ein Verzeichnis zu finden foo, dessen Berechtigungen etwas Seltsames aufweisen. Ich bin mir 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

Bei anderen Verzeichnissen passiert das nicht, zB /f/temp/ok. Bei der Verwendung lsvon Schaltern kann ich keinen Unterschied zwischen f/temp/okund erkennen /f/temp/foo.

Wenn ich chmod 775 bardas tue, kann ich eingeben bar, aber dann bartritt das Erstellen eines Verzeichnisses darunter dasselbe Problem auf. Dieses Problem hält mich also davon ab, git initin ein Verzeichnis einzugeben /f/temp/foo. Das Eingeben chown -R Mm *im übergeordneten Verzeichnis macht keinen Unterschied.

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

Es sind einige Unterschiede sichtbar, 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 einen Workaround: Erstelle ein weiteres Verzeichnis unter /f/temp, kopiere dann mit cp -ralle Dateien aus fooin das neue Verzeichnis, lösche dann foodas neue Verzeichnis und benenne es um. Wenn ich cp -astatt verwende cp -r, besteht das Problem weiterhin.

Antwort1

Der von icacls angezeigte Überschuss an DENY kann durch die jüngsten Änderungen in der Cygwin-DLL (zwischen 2.3 und der aktuellen Version 2.5) verursacht werden. Es hat einige Zeit gedauert, bis es richtig war, und es könnten Dateien oder Verzeichnisse mit rätselhafter ACL zurückgeblieben sein.

Um die ACLs zu bereinigen, -bwurde ein Schalter zu setfacl hinzugefügt.

setfacl -b foo

Als Referenzhttps://cygwin.com/cygwin-ug-net/ov-new.html#ov-new2.4s

verwandte Informationen