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)
다음을 확인할 수 있습니다:
Administrators와SYSTEM은 완전한 제어 권한(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 파일의 완전한 제어 권한을 부여하면 한 줄의 명령으로 문제를 해결할 수 있습니다.