다음을 통해 공유


WSL에 대한 파일 권한

이 페이지에서는 Linux용 Windows 하위 시스템에서 Linux 파일 사용 권한을 해석하는 방법, 특히 NT 파일 시스템의 Windows 내 리소스에 액세스하는 방법을 자세히 설명합니다. 이 설명서에서는 Linux 파일 시스템 권한 구조umask 명령에 대한 기본적인 이해를 가정합니다.

WSL에서 Windows 파일에 액세스할 때 파일 사용 권한은 Windows 사용 권한에서 계산되거나 WSL에서 파일에 추가된 메타데이터에서 읽습니다. 이 메타데이터는 기본적으로 사용하도록 설정되지 않습니다.

Windows 파일의 WSL 메타데이터

WSL에서 메타데이터를 탑재 옵션으로 사용하도록 설정하면 Windows NT 파일의 확장 특성을 추가하고 해석하여 Linux 파일 시스템 권한을 제공할 수 있습니다.

WSL은 4개의 NTFS 확장 특성을 추가할 수 있습니다.

특성 이름 설명
$LXUID 사용자 소유자 ID
$LXGID 그룹 소유자 ID
$LXMOD 파일 모드(파일 시스템 권한 8진수 및 형식( 예: 0777)
$LXDEV 디바이스 파일인 경우

또한 일반 파일 또는 디렉터리가 아닌 파일(예: symlinks, FIFO, 블록 디바이스, unix 소켓 및 문자 디바이스)에도 NTFS 재분석 지점이 있습니다. 이렇게 하면 확장된 특성을 쿼리하지 않고도 지정된 디렉터리의 파일 종류를 훨씬 더 빠르게 확인할 수 있습니다.

파일 액세스 시나리오

다음은 Linux용 Windows 하위 시스템을 사용하여 다양한 방법으로 파일에 액세스할 때 사용 권한을 결정하는 방법에 대한 설명입니다.

Linux에서 Windows 드라이브 파일 시스템(DrvFS)의 파일 액세스

이러한 시나리오는 WSL /mnt/c에서 Windows 파일에 액세스할 때 발생합니다.

기존 Windows 파일에서 파일 사용 권한 읽기

결과는 파일에 이미 기존 메타데이터가 있는지여부에 따라 달라집니다.

DrvFS 파일에 메타데이터가 없습니다(기본값)

파일에 연결된 메타데이터가 없는 경우 Windows 사용자의 유효 사용 권한을 읽기/쓰기/실행 비트로 변환하고 이를 사용자, 그룹 및 기타의 동일한 값으로 설정합니다. 예를 들어 Windows 사용자 계정에 읽기 및 실행 액세스 권한이 있지만 파일에 대한 쓰기 권한이 없는 경우 사용자, 그룹 및 기타에 대해 r-x 표시됩니다. 파일에 Windows에서 '읽기 전용' 특성이 설정된 경우 Linux에서 쓰기 권한을 부여하지 않습니다.

파일에 메타데이터가 있습니다.

파일에 메타데이터가 있는 경우 Windows 사용자의 유효 사용 권한을 변환하는 대신 해당 메타데이터 값을 사용하기만 하면 됩니다.

chmod를 사용하여 기존 Windows 파일에 대한 파일 권한 변경

결과는 파일에 이미 기존 메타데이터가 있는지여부에 따라 달라집니다.

chmod 파일에 메타데이터가 없음(기본값)

Chmod는 파일의 모든 쓰기 특성을 제거하면 Windows 파일의 '읽기 전용' 특성이 설정됩니다. 이는 Linux의 SMB(서버 메시지 블록) 클라이언트인 CIFS(일반 인터넷 파일 시스템)와 동일한 동작이기 때문입니다.

chmod 파일에 메타데이터가 있습니다.

Chmod는 파일의 기존 메타데이터에 따라 메타데이터를 변경하거나 추가합니다.

메타데이터에 해당한다고 해도 Windows에 있는 것보다 더 많은 액세스 권한을 부여할 수 없습니다. 예를 들어 메타데이터를 설정하여 파일에 대한 쓰기 권한이 있음을 표시할 수 있지만 해당 파일에 chmod 777액세스하려고 하면 여전히 파일에 쓸 수 없습니다. 이는 Windows 파일에 대한 모든 읽기 또는 쓰기 명령이 Windows 사용자 권한을 통해 라우팅되므로 상호 운용성 덕분에 적용됩니다.

DriveFS에서 파일 만들기

결과는 메타데이터가 사용되는지여부에 따라 달라집니다.

메타데이터를 사용할 수 없음(기본값)

새로 만든 파일의 Windows 사용 권한은 특정 보안 설명자 없이 Windows에서 파일을 만든 경우와 동일하며 부모의 사용 권한을 상속합니다.

메타데이터 사용

파일의 권한 비트는 Linux umask를 따르도록 설정되며 파일은 메타데이터와 함께 저장됩니다.

어떤 Linux 사용자 및 Linux 그룹이 파일을 소유하나요?

결과는 파일에 이미 기존 메타데이터가 있는지여부에 따라 달라집니다.

사용자 파일에 메타데이터가 없습니다(기본값)

기본 시나리오에서는 Windows 드라이브를 자동 탑재할 때 파일의 UID(사용자 ID)가 WSL 사용자의 사용자 ID로 설정되고 그룹 ID(GID)가 WSL 사용자의 주 그룹 ID로 설정되도록 지정합니다.

사용자 파일에 메타데이터가 있습니다.

메타데이터에 지정된 UID 및 GID는 파일의 사용자 소유자 및 그룹 소유자로 적용됩니다.

를 사용하여 Windows에서 Linux 파일에 액세스 \\wsl$

Linux 파일을 통해 \\wsl$ 액세스하면 WSL 배포의 기본 사용자가 사용됩니다. 따라서 Linux 파일에 액세스하는 모든 Windows 앱은 기본 사용자와 동일한 권한을 갖습니다.

새 파일 만들기

Windows에서 WSL 배포의 내부에 새 파일을 만들 때 기본 umask가 적용됩니다. 기본 umask는 022그룹 및 다른 사용자에게 쓰기 권한을 제외한 모든 권한을 허용합니다.

Linux에서 Linux 루트 파일 시스템의 파일 액세스

Linux 루트 파일 시스템에서 생성, 수정 또는 액세스된 모든 파일은 새로 만든 파일에 umask를 적용하는 것과 같은 표준 Linux 규칙을 따릅니다.

파일 권한 구성

wsl.conf의 탑재 옵션을 사용하여 Windows 드라이브 내에서 파일 권한을 구성할 수 있습니다. 탑재 옵션을 사용하면 설정 umaskdmaskfmask 사용 권한 마스크를 사용할 수 있습니다. 모든 umask 파일에 적용되고 디렉터 dmask 리에만 적용되며 fmask 파일에만 적용됩니다. 그런 다음 이러한 권한 마스크는 파일에 적용할 때 논리적 OR 작업을 통해 배치됩니다. 예를 들어 값이 있고 값 023 이 있는 경우 umask 파일에 대한 결과 사용 권한 마스크가 됩니다023.022fmask

자세한 정보: wsl.conf를 사용하는 배포별 구성 옵션입니다.