문제 해결

문제 해결

내 Windows 10 노트북에는 관리자 계정 Admin, 관리자가 아닌 계정 User.Name및 기본 Public 계정이 있습니다.

Admin또는 User.Name계정 에서 ~/ 트리에 생성된 파일에는 읽기/쓰기 권한이 있습니다.사용자하지만그룹. 이 명령은 ls -l그룹을 로 표시합니다 None. 다음 예에서는 명령이 여기에 표시된 것과 다른 순서로 실행되므로 타임스탬프는 그다지 유익하지 않습니다.

~/tmp계정 예시 User.Name:

User.Name@Laptop-Hostname ~/tmp
$ echo "Hello" > Test.txt

User.Name@Laptop-Hostname ~/tmp
$ zip Test.zip Test.txt
  adding: Test.txt (stored 0%)

User.Name@Laptop-Hostname ~/tmp
$ ls -l Test.{txt,zip}
-rw------- 1 User.Name None   6 2023-08-11 00:42 Test.txt
-rw------- 1 User.Name None 172 2023-08-11 01:05 Test.zip

~/tmp계정 예시 Admin:

Admin@Laptop-Hostname ~/tmp
$ echo "Hello" > Test.txt

Admin@Laptop-Hostname ~/tmp
$ zip Test.zip Test.txt
  adding: Test.txt (stored 0%)

Admin@Laptop-Hostname ~/tmp
$ ls -l Test.{txt,zip}
-rw------- 1 Admin None   6 2023-08-11 00:44 Test.txt
-rw------- 1 Admin None 172 2023-08-11 01:02 Test.zip

그러나 계정에서 User.Name또는 트리에 파일을 생성 Admin하면 사용자가/c/Users/Public/그리고이 그룹에는 읽기/쓰기 권한이 있습니다.

~/tmp계정 예시 User.Name:

User.Name@Laptop-Hostname ~/tmp
$echo "Hello" > /c/Users/Public/tmp/TestFromUser.Name.txt

User.Name@Laptop-Hostname ~/tmp
$zip /c/Users/Public/tmp/TestFromUser.Name.zip Test.txt
  adding: Test.txt (stored 0%)

User.Name@Laptop-Hostname ~/tmp
$ls -l /c/Users/Public/tmp/TestFromUser.Name.{txt,zip}
-rw-rw----+ 1 User.Name None   6 2023-08-11 00:52 /c/Users/Public/tmp/TestFromUser.Name.txt
-rw-rw----+ 1 User.Name None 172 2023-08-11 00:53 /c/Users/Public/tmp/TestFromUser.Name.zip

~/tmp계정 예시 Admin:

Admin@Laptop-Hostname ~/tmp
$ echo "Hello" > /c/Users/Public/tmp/TestFromAdmin.txt

Admin@Laptop-Hostname ~/tmp
$ zip /c/Users/Public/tmp/TestFromAdmin.zip Test.txt
  adding: Test.txt (stored 0%)

Admin@Laptop-Hostname ~/tmp
$ ls -l /c/Users/Public/tmp/TestFromAdmin.{txt,zip}
-rw-rw----+ 1 Admin None   6 2023-08-11 00:47 /c/Users/Public/tmp/TestFromAdmin.txt
-rw-rw----+ 1 Admin None 172 2023-08-11 00:47 /c/Users/Public/tmp/TestFromAdmin.zip

/c/Users/Public/tmp/Test.zip계정에서 zip 파일을 생성하여 더 많은 공개 권한을 확인했습니다 User.Name. 그런 다음 Cygwin의 명령을 사용하여 zip계정에서 파일을 추가할 수 있습니다 . 또한 Cygwin의 명령을 사용하여 계정에서 파일을 추가할 수 있습니다./c/Users/Public/tmp/Test.zipAdminzip/c/Users/Public/tmp/Test.zipUser.Name

이것이 제가 가장 편리하다고 생각하는 동작이지만 Windows 탐색기를 사용하지 않기 때문에 알고 싶습니다.Cygwin은 /c/User/Public 파일 트리의 파일을 사용자 및 그룹이 읽고 쓸 수 있도록 만드는 방법을 어떻게 알 수 있습니까? 이를 이해하려면 문서의 어느 부분에 집중해야 합니까?

관련 문서를 찾아보니POSIX 계정, 권한 및 보안, 하지만 솔직히 말해서 그 중 많은 부분이 너무 자세하게 설명되어 있어서 이해할 근거가 없습니다. "Cygwin은 특정 수준에서 Windows와 상호 작용하여 계정 전체에서 파일을 생성하고 수정하기 위한 보안 동작을 상속합니다"와 같이 높은 수준의 동작에 대해 더 간단한 설명이 있을 수 있는지 궁금합니다. 디자인 동작을 간결하게 표현하면 사용자가 다양한 교차 계정 작업에서 무엇을 기대하는지 이해하는 데 도움이 됩니다.

문제 해결

Public문제 해결을 관리하기 쉽게 만들기 위해 사용자 자신의 파일 공간 에 기록되는 파일과 사용자 자신의 파일 공간에 기록되는 파일 사이에 차이가 있는 것으로 나타났습니다 . 따라서 User.Name작성된 파일 공간 User.NameUser.Name작성된 파일 공간을 비교합니다 Public. 즉, 과의 비교는 생략합니다 Admin.

기반으로G-맨스제안으로, /home파일이 루팅된 더 큰 Windows 파일 트리가 아닌 루트의 Cygwin 파일 트리에 파일을 작성하여 다른 권한이 발생했는지 테스트했습니다 /c/Users. 이는 서로 다른 권한이 트리 대 트리 Public 에 쓰는 대신 계정에 쓰기 때문에 발생함을 확인하는 관련 없는 것 같습니다 ./c/Users/home

User.Name@Laptop-Hostname ~/tmp
$ # Permissions of one's Cygwin home directory.
$ # Not sure how relevant this is.
$ ls -ld ~
drwxr-xr-x 1 User.Name None 0 Aug 12 13:13 /home/User.Name

User.Name@Laptop-Hostname ~/tmp
$ # Permissions of one's own current directory.
$ # Not sure how relevant this is.
$ ls -ld ~/tmp
drwx------ 1 User.Name None 0 Aug 12 02:20 /home/User.Name/tmp

User.Name@Laptop-Hostname ~/tmp
$ # Permissions of file created in one's own Windows file tree.
$ # Only "User" has read/write access.
$ ls > /c/Users/User.Name/Documents/List.txt
$ ls -l /c/Users/User.Name/Documents/List.txt
-rw-------+ 1 User.Name None 414 2023-08-12 13:19 /c/Users/User.Name/Documents/List.txt

User.Name@Laptop-Hostname ~/tmp
$ # Permissions of file created in Public's Windows file tree
$ # Both "User" and "Group" have read/write access.
$ ls > /c/Users/Public/Documents/List.txt
$ ls -l /c/Users/Public/Documents/List.txt
-rw-rw----+ 1 User.Name None 414 2023-08-12 13:20 /c/Users/Public/Documents/List.txt

getfacl비교 중인 파일이 포함된 폴더 에 적용하라는 제안도 있었습니다 . 다음은 getfacl사용자의 Cygwin "tmp" 폴더, 사용자의 Windows "Documents" 폴더 및 Public사용자의 "Documents" 폴더에 대한 결과입니다.

User.Name@Laptop-Hostname ~/tmp
$ # FACL for user's Cygwin "tmp" folder
$ getfacl ~/tmp
# file: /home/User.Name/tmp
# owner: User.Name
# group: None
user::rwx
group::---
other::---
default:user::rwx
default:group::r-x
default:other::r-x

User.Name@Laptop-Hostname ~/tmp
$ # FACL for user's Windows "Documents" folder
$ getfacl /c/Users/User.Name/Documents/
# file: /c/Users/User.Name/Documents/
# owner: User.Name
# group: None
user::rwx
group::---
group:SYSTEM:rwx        #effective:---
group:Administrators:rwx        #effective:---
mask::---
other::---
default:user::rwx
default:group::---
default:group:SYSTEM:rwx        #effective:---
default:group:Administrators:rwx        #effective:---
default:mask::---
default:other::---

User.Name@Laptop-Hostname ~/tmp
$ # FACL for Public's Windows "Documents" folder
$ getfacl /c/Users/Public/Documents/
# file: /c/Users/Public/Documents/
# owner: SYSTEM
# group: SYSTEM
user::rwx
group::---
group:BATCH:rwx
group:INTERACTIVE:rwx
group:SERVICE:rwx
group:Administrators:rwx
mask::rwx
other::---
default:user::rwx
default:user:SYSTEM:rwx
default:group::---
default:group:BATCH:rwx
default:group:INTERACTIVE:rwx
default:group:SERVICE:rwx
default:group:Administrators:rwx
default:mask::rwx
default:other::---

FACL에 대해 읽었습니다. 여기. "이름이 지정된 사용자"와 "이름이 지정된 그룹"이 있다는 것을 알았습니다.둘 다"그룹 수업"에 속합니다. 이것효과적인권한은 3비트 "마스크"를 사용하는 특정 사용자/그룹에 대한 권한 비트의 최소값(비트 AND 연산)입니다. 이로써 위의 존재가 확인되었습니다 #effective:---. 본문에 따르면 그룹 권한은 ls -l다음과 같습니다 .마스크, 이는 특정 명명된 사용자/그룹보다 느슨하거나 느슨할 수 있습니다.

반직관적으로,가지다그룹 권한은 다음과 같습니다.아니요마스크와 AND로 연결됩니다(텍스트를 올바르게 이해한 경우).

나는 텍스트를 해석할 때 두 가지 가정을 했습니다. (1) "소유" 그룹은 소유자 사용자가 속한 그룹이고 (2) 해당 그룹 Nonegroup::.

위의 첫 번째 항목 getfacl은 새로 생성된 파일에 사용자 읽기/쓰기 권한이 있는 이유를 설명합니다 /home/User.Name/tmp.default아니요새 파일에 실행 권한이 없는 이유( x) 또한 이러한 default항목은 새 파일에 그룹/기타 읽기 및 실행 권한이 없다는 사실과 일치하지 않습니다.

다음은 .default 항목 getfacl입니다./c/Users/User.Name/Documents/---하다그룹/기타에 새로 생성된 파일에 대한 권한이 없는 이유를 설명합니다.

세 번째이자 마지막 것은 getfacl입니다 /c/Users/Public/Documents/. 이 default:user::rwx항목은 이와 같은 사용자가 다음을 User.Name통해 생성된 파일에 대한 읽기/쓰기 액세스 권한을 갖는 이유를 설명합니다.User.Nameuser디렉토리가 아닌 파일의 소유자/작성자를 참조한다고 가정합니다 .default:group:Administrators:rwx항목은 또한 이 Admin계정이 에서 제공한 답변에 추가될 수 있는 이유를 설명합니다 User.Name. 이 추론이 정확하다는 점을 확인해 주시면 감사하겠습니다(누군가 답변으로 게시하려는 경우 답변이 됩니다).

관련 정보