본문으로 바로가기

사용자계정과 권한 - WSL

category 윈도우즈/WSL 2018. 2. 21. 11:00

WSL의 기본 사용자의 비밀번호 재설정, 비밀번호를 잃어버렸을때의 대체방안, WSL의 기본적인 윈도우와 리눅스간의 권한에 대하여 알아봅니다.

Windows Subsystem for Linux 사용자계정과 권한

WSL 설치시 설정하게되는 계정

WSL 설치시에 사용자 계정을 입력하도록 요구받는데, 이때 이 계정은 몇가지 특수 속성을 자동으로 부여받는다.

  • WSL을 실행하면 자동으로 로그인하는 기본 사용자(default user)로 구성된다.
  • 기본적으로 리눅스 관리자(administrator) sudo 그룹에 포함된다.

WSL 설치시 배포판을 선택할수 있듯이 각각의 배포판마다 자체적인 리눅스 사용자 계정과 암호를 설정하며, 배포판을 추가, 재설치 또는 재설정할 때마다 리눅스 사용자 계정을 구성해야한다.

리눅스 사용자 계정은 배포판마다 독립적이며, 윈도우즈 사용자 계정과도 독립된 계정이다.

리눅스 사용자 계정 비밀번호 재설정

리눅스 계정의 비밀번호를 알고 있다면 passwd 명령어를 입력하여 변경할 수 있다.

passwd

만일, 비밀번호를 잃어버렸다면 배포판마다 다르지만 root 유저를 기본 사용자로 등록하는 방법을 활용한다.

우분투 배포판 사용자

기본 사용자계정이 tester 라고 가정하에 진행해보자

  1. 윈도우즈상에서 CMD(명령 프롬프트)창을 연다.
  2. 기본 사용자(default user)를 root로 설정한다.
    c:\> ubuntu config --default-user root
  3. WSL을 실행하면 root로 로그인된다.
  4. 사용자 계정의 비밀번호를 재설정한다.
    $ passwd tester(사용자명)
  5. 다시 윈도우즈로 돌아와 CMD창을 열고 기본 사용자를 재설정한다.
    C:\> ubuntu config --default-user tester(사용자명)

다른 배포판 사용자

다른 배포판을 사용한다면 CMD창을 열고 배포판명.exe /?와 같은 명령어로 기본 사용자를 설정하는 방법을 알아낼수 있다.

WSL 권한(permission)

WSL 사용에 있어 유의해야할 두 가지 중요한 개념은 아래와 같다.

  • 윈도우즈 권한 모델은 윈도우즈 자원(resource)에 대한 프로세스를 통제한다.
  • 리눅스 권한 모델은 리눅스 자원(resource)에 대한 프로세스를 제어한다.

WSL에서 리눅스를 실행할때 리눅스는 실행하는 프로세스와 동일한 윈도우즈 권한을 가진다.

리눅스는 다음 두 가지 권한 수준 중 하나로 시작할 수 있다.

  • Normal (non-elevated) : 리눅스는 로그인 한 사용자의 권한으로 실행된다.
  • Elevated/admin : 리눅스는 elevated/admin 윈도우즈 권한으로 실행된다.
높은(elevated) 프로세스는 시스템 전반의 설정과 데이터를 변경/손상시킬 수 있으며 보호된 파일과 폴더에 접근/수정할수 있기때문에, 윈도우즈 또는 리눅스 응용 프로그램/도구/셸(shell)인지 여부에 상관없이 높은 프로세스를 시작하지 마십시오!

위의 윈도우즈 권한은 리눅스 인스턴스 내의 권한과는 별개이다. 이는 리눅스 "루트 권한"은 리눅스 환경 및 파일시스템내에서 사용자의 권한에만 영향을 주며 윈도우즈 권한에 아무런 영향을 미치지 않는다. 따라서 리눅스 프로세스를 루트(ex. sudo를 통해)로 실행하면 리눅스 환경에서 해당 프로세스 관리자 권한만 부여된다.

예를 들어, Administrator 권한이 없는 Bash 세션에서는 cd /mnt/c/Users/Administrator로 Administrator 폴더에 접근하면 "Permission Denied" 에러를 접하지만, 윈도우즈 Administrator 권한이 있는 Bash 세션에서는 접근이 가능하다.

리눅스에서는 윈도우즈내의 권한이 윈도우즈에 의해 관리되므로 sudo cd /mnt/c/Users/Administrator를 입력해도 Administrator 디렉토리에 대한 접근 권한이 부여되지 않는다.

리눅스 사용권한 모델은 사용자가 현재 리눅스 사용자를 기반으로 권한을 가진 리눅스 환경에서 중요하다. 예를들어, sudo 그룹의 사용자가 sudo apt update 실행할 수 있다.