Cygwin mkdir tworzy katalog, do którego nie mam uprawnień


10

Korzystając z najnowszej wersji cygwin64 w Windows 10. Udało mi się uzyskać katalog, fooktóry ma coś dziwnego w swoich uprawnieniach. Nie jestem do końca pewien, jak to się stało, ale oto objawy:

$ 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

Nie dzieje się tak w przypadku innych katalogów, np /f/temp/ok. Za pomocą lsprzełączników nie widzę żadnej różnicy między f/temp/oki /f/temp/foo.

Jeśli to zrobię chmod 775 bar, mogę wejść bar, ale utworzenie katalogu poniżej barma ten sam problem. Więc ten problem jest zatrzymanie mnie robi git initw /f/temp/foo. Robienie chown -R Mm *u rodzica nie ma znaczenia.

Moje pytanie brzmi: co powoduje ten problem i jaka jest właściwa poprawka?

Widoczne są pewne różnice, icaclsale nie jestem pewien, jak je interpretować:

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

Mam na razie obejście: utwórz inny katalog poniżej /f/temp, a następnie użyj, cp -raby skopiować wszystkie pliki foodo nowego katalogu, a następnie usuń fooi zmień nazwę nowego katalogu. Jeśli użyję cp -azamiast cp -rproblem nadal występuje.


1
trysetfacl -b foo
matzeri

@matzeri, które wydawało się działać - jeśli możesz napisać odpowiedź z wyjaśnieniem, zagłosuję i zaakceptuję
MM

Odpowiedzi:


10

Nadmiar DENY pokazany przez icacl może być spowodowany ostatnimi zmianami w cygwin dll (między 2.3 a obecnym 2.5). Zajęło trochę rundy, aby mieć rację i mogło pozostawić pliki lub katalog z zagadkową listą ACL.

Aby zdezynfekować listy ACL, -bdo setfacl dodano przełącznik

setfacl -b foo

W celach informacyjnych https://cygwin.com/cygwin-ug-net/ov-new.html#ov-new2.4s


1
Problem powstał, gdy rozpakowałem niektóre pliki utworzone przez kogoś z inną wersją cygwina, więc wyjaśnienie ma sens
MM
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.