WSL2에서의 permission 수정하기

00_8_3·2022년 8월 16일
0

도입

AWS EC2를 접속하기 위해서 pem키를 사용하였는데
WSL2를 이용하여 접속하려 하니 400으로 권한을 좁혀 달라는 문장이 나왔다.

chomod 400 key.pem을 이용하여 그대로 실행을 하였지만

ls -la를 통해 권한을 확인하니 수정이 되긴 하였지만
-r-xr-xr-x으로 엉뚱한 권한으로 수정이 되었다.

해결 과정

찾아보니 400으로 정확히 권한을 수정하려면
WSL2의 home 디렉토리로 옮겨서 수정하고 다시 복사해 오면된다고 하였다.(실제로 잘 됨)

하지만 번거롭게 계속 옮길 수 없어 다시 찾아 보았다.

해결

결론부터 말하자면 아래의 명령어를 입력 후 터미널을 재실행하면 잘된다.

$ sudo umount /mnt/c 
$ sudo mount -t drvfs C: /mnt/c -o metadata

What is DrvFs?

DrvFs는 WSL와 윈도우 파일 시스템간 상호 운용을 지원하기 위해 디자인된 파일시스템 플러그인 입니다.
DrvFs/mnt 또는 /mnt/c, /mnt/d 등등의 파일시스템 아래에 드라이브가 마운트 되도록 WSL을 가능하게 합니다.

Support for Additional Metadata

리눅스 권한은 파일에 추가적인 메타데이터로 추가되는데
파일이 리눅스와 윈도우의 read/write/execute 권한 bits를 갖는 것을 뜻합니다.

How did permissions work in the past?

Prior to Build 17063, all files/folders list “root” as the owner and belonged to the group “root”. The permission bits on each file/folder was derived from Windows permissions–no write bit checked for Windows meant no write bit set in WSL.

How do permissions work now?

메타데이터를 갖지 않는 파일들은 17063빌드 이전의 방식으로 접근하며
지금은 chmod/chown은 파일 또는 폴더에 메타데이터를 할당 가능합니다. WSL에 새롭게 생성된 파일들은 기본적으로 메타데이터와 같이 생기고 우리가 설정한 마운트 옵션 또는 .mkdir/open을 실행 할 때 전달 하는 권한을 따릅니다.

파일 또는 폴더가 메타데이터를 가지면 윈도우와 리눅스 권한이 서로 갖게 행동하지는 않습니다.

Important Caveats

There are a few things to make sure you’re aware of when tinkering with the new metadata:

  1. 윈도우 에디터로 파일을 수정하는 것은 파일의 리눅스 메타데이터를 삭제할 수 도 있는데,
    이러한 경우에는 기본 권한으로 복구됩니다.

  2. WSL에서 파일의 모든 write bits를 삭제하는 것은 윈도우가 해당 파일을 read-only로 표시하게 합니다.

  3. 여러 WSL 배포판이 설치되어 있거나 WSL이 설치된 여러 Windows 사용자가 있는 경우
    모두 동일한 파일에서 동일한 메타데이터를 사용합니다.
    각 WSL 사용자 계정의 uid는 다를 수 있습니다. 권한을 설정할 때 고려해야 할 사항입니다.

e.g

  1. WSL으로 한 파일의 Write 권한을 삭제 하여도 윈도우에서는 Write 권한이 있어 수정이 가능.
  2. 반대로 Windows Write 권한을 삭제하고 Wsl에서는 권한이 있지만 Wsl에서는 수정이 불가능.

파일 또는 폴더의 권한은 WSL보다 Windows가 우선.

출처

https://devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements/

https://superuser.com/questions/1323645/unable-to-change-file-permissions-on-ubuntu-bash-for-windows-10

0개의 댓글