Cygwin mkdir tạo thư mục tôi không có quyền


10

Sử dụng phiên bản mới nhất của cygwin64 trong Windows 10. Tôi đã quản lý để có được một thư mục foocó cái gì đó lạ về quyền của nó. Tôi không chắc chắn điều này xảy ra như thế nào nhưng đây là các triệu chứng:

$ 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

Điều này không xảy ra đối với các thư mục khác, ví dụ /f/temp/ok. Sử dụng các lscông tắc tôi không thể thấy bất kỳ sự khác biệt giữa f/temp/ok/f/temp/foo.

Nếu tôi làm chmod 775 barthì tôi có thể nhập bar, nhưng sau đó tạo một thư mục bên dưới barcó cùng một vấn đề. Vì vậy, vấn đề này đang khiến tôi dừng lại làm git inittrong /f/temp/foo. Làm chown -R Mm *trong cha mẹ không làm cho sự khác biệt.

Câu hỏi của tôi là: Điều gì gây ra vấn đề này và cách khắc phục thích hợp là gì?

Có một số khác biệt có thể nhìn thấy icaclsnhưng tôi không chắc cách giải thích chúng:

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

Bây giờ tôi đã có một cách giải quyết: tạo một thư mục khác bên dưới /f/temp, sau đó sử dụng cp -rđể sao chép tất cả các tệp ra khỏi foothư mục mới, sau đó xóa foovà đổi tên thư mục mới. Nếu tôi sử dụng cp -athay vì cp -rvấn đề vẫn tồn tại.


1
thửsetfacl -b foo
matzeri

@matzeri dường như hoạt động - nếu bạn có thể viết câu trả lời với lời giải thích tôi sẽ bỏ phiếu và chấp nhận
MM

Câu trả lời:


10

Sự dư thừa của DENY được hiển thị bởi icacls có thể được gây ra bởi những thay đổi gần đây trong cygwin dll (giữa 2,3 và 2,5 hiện tại). Phải mất một số vòng để được bên phải và có thể có các tập tin hoặc thư mục bên trái với ACL khó hiểu.

Để vệ sinh ACL, một -bcông tắc đã được thêm vào setfacl

setfacl -b foo

Để tham khảo https://cygwin.com/cygwin-ug-net/ov-new.html#ov-new2.4s


1
Vấn đề bắt nguồn khi tôi giải nén một số tệp được tạo bởi một người có phiên bản khác của cygwin, vì vậy lời giải thích đó có ý nghĩa
MM
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.