WSL2 접근 거부 오류(E_ACCESSDENIED) 완전 해결 방안

WSL을 시스템 드라이브가 아닌 다른 드라이브(예: D 드라이브)로 이동한 후 다시 시작할 때 "접근 거부" 오류가 발생할 수 있습니다. 본 문서는 이 문제를 해결하기 위한 전체 점검 및 복원 과정을 기록합니다.

문제 현상

PowerShell을 열고 wsl을 입력하여 시작하면 다음과 같은 오류가 발생합니다:

PS D:\file\군고리기술> wsl
WSL2에 디스크"\\?\D:\Software\wsl\ext4.vhdx"를 연결할 수 없음: 접근 거부.
오류 코드: Wsl/Service/CreateInstance/MountDisk/HCS/E_ACCESSDENIED

근본 원인: 현재 Windows 사용자가 WSL2 가상 디스크 파일 ext4.vhdx에 대해 완전한 제어 권한이 없어 WSL이 디스크를 마운트할 수 없습니다.

해결 단계

2.1 WSL 종료

먼저 WSL이 완전히 종료되었는지 확인합니다:

wsl --shutdown

2.2 현재 파일 권한 확인

icacls "D:\Software\wsl\ext4.vhdx"

다음과 같은 출력이 표시됩니다:

D:\Software\wsl\ext4.vhdx BUILTIN\Administrators:(I)(F)
                          NT AUTHORITY\SYSTEM:(I)(F)
                          NT AUTHORITY\Authenticated Users:(I)(M)
                          BUILTIN\Users:(I)(RX)

다음을 확인할 수 있습니다:

  • AdministratorsSYSTEM은 완전한 제어 권한 (F)을 가지고 있습니다
  • 일반 사용자는 읽기 및 실행 권한 (RX)만 가지며, 쓰기 권한이 부족합니다

2.3 현재 사용자 이름 확인

$env:USERNAME

출력된 사용자 이름(예: 23670)을 기억합니다. 다음 단계에서 사용합니다.

2.4 관리자 권한으로 권한 복구

일반 터미널은 해당 파일의 ACL을 수정할 권한이 없습니다. icacls /grant를 직접 실행하면 "접근 거부" 오류가 발생합니다:

# ❌ 일반 권한에서는 실패
icacls "D:\Software\wsl\ext4.vhdx" /grant "23670:(F)"
# 출력: D:\Software\wsl\ext4.vhdx: 접근 거부.

올바른 방법 - Start-Process -Verb RunAs로 권한 상승하여 실행하면 UAC 관리자 확인 창이 나타나며, **"예"**를 클릭합니다:

Start-Process powershell -Verb RunAs -ArgumentList "-Command", "icacls 'D:\Software\wsl\ext4.vhdx' /grant '사용자이름:(F)'; icacls 'D:\Software\wsl' /grant '사용자이름:(OI)(CI)(F)'; pause"

참고: 사용자이름을 이전 단계에서 얻은 실제 사용자 이름으로 바꿉니다.

예를 들어 사용자 이름이 23670이면, 전체 명령어는 다음과 같습니다:

Start-Process powershell -Verb RunAs -ArgumentList "-Command", "icacls 'D:\Software\wsl\ext4.vhdx' /grant '23670:(F)'; icacls 'D:\Software\wsl' /grant '23670:(OI)(CI)(F)'; pause"

매개변수 설명:

매개변수 의미
(F) Full Control, 완전한 제어 권한
(OI) Object Inherit, 하위 파일에 이 권한 상속
(CI) Container Inherit, 하위 폴더에 이 권한 상속

관리자 창에 **"계속하려면 아무 키나 누르십시오"**가 표시되면 권한 복구가 성공한 것입니다.

2.5 WSL 다시 시작

wsl

정상 출력:

관리자 권한으로 명령을 실행하려면(사용자 "root") "sudo <명령>"를 사용하십시오.
자세한 내용은 "man sudo_root"를 참조하십시오.

(base) wyj@wyj:/mnt/d/file/군고리기술$

WSL 시작 성공!

일반적인 원인 요약

원인 설명
WSL이 시스템 드라이브가 아닌 곳으로 이동 C 드라이브에서 D 드라이브로 이동한 후, 새 위치의 파일 권한이 올바르게 상속되지 않음
Windows 업데이트 시스템 업데이트 후 일부 폴더 권한이 재설정될 수 있음
vhdx 파일 수동 이동 가상 디스크 파일을 복사/이동할 때 권한이 손실됨
다중 사용자 환경 다른 관리자가 생성한 WSL 인스턴스로 현재 사용자가 권한이 없음

보충: localhost 프록시 경고에 대해서

시작 시 다음과 같은 경고가 표시될 수 있습니다:

wsl: localhost 프록시 구성을 감지했지만 WSL에 미러링되지 않았습니다. NAT 모드의 WSL은 localhost 프록시를 지원하지 않습니다.

이 경고는 WSL의 정상적인 사용에 영향을 주지 않으므로 무시할 수 있습니다. 제거하려면 %USERPROFILE%\.wslconfig에 다음을 추가합니다:

[wsl2]
networkingMode=mirrored

저장 후 실행:

wsl --shutdown
wsl

다시 시작하면 경고가 사라집니다.

핵심 단계 요약

단계 명령어
WSL 종료 wsl --shutdown
권한 확인 icacls "D:\Software\wsl\ext4.vhdx"
사용자 이름 확인 $env:USERNAME
권한 상승 복구 Start-Process powershell -Verb RunAs ...
WSL 재시작 wsl

핵심 아이디어: 관리자 권한으로 현재 사용자에게 vhdx 파일의 완전한 제어 권한을 부여하면 한 줄의 명령으로 문제를 해결할 수 있습니다.

태그: WSL2 Windows 가상 디스크 권한 설정 PowerShell

6월 27일 20:08에 게시됨