WSL sudo 사용 시 Windows Hello 사용하기

Composite·2023년 8월 31일
0
post-thumbnail

WSL을 통해 설치한 리눅스는 물론 가상이고, 네 컴퓨터에 가지고 있는 지문인식이나 안면인식 모듈은 윈도우에 이미 통합한 상태이다.
따라서 피곤하게 굳이 기존 인증장치를 붙이거나, 별도의 인증장치를 구매해 생체인식할 생각 말고,
Github 에서 오픈소스로 제공한 아주 고마운 프로그램을 사용하여 편리하게 해결하도록 하자.

https://github.com/nullpo-head/WSL-Hello-sudo

솔직히 벨로그 말고 dev.to 쓰고 싶은데 그러면 너네들 외국물 짜다고 싫어하니까 말이지.
dev.to 가 더 풍부한 글쓰기 기능이 있고 벨로그는 어째 있던 기능이 사라지는 것 같은 느낌이지...

어쨌든, 오늘 사용할 프로그램이 어떻게 돌아가는지 맨 위에 있는 머릿글 움짤로 한방에 이해하도록 하자.

설치

설치는 윈도우가 아닌, WSL 상에 탑재된 리눅스 안에서 진행한다.
4줄로 설치하면 된다. wget 없거나 싫으면 curl -O [주소] 써도 된다.

$ wget http://github.com/nullpo-head/WSL-Hello-sudo/releases/latest/download/release.tar.gz
$ tar xvf release.tar.gz
$ cd release
$ ./install.sh

딱히 별도로 입력할 거 없다. 그냥 여느 설치 마법사 콘솔 버전처럼 엔터 치는데,
폴더 없으면 만들거냐(Directory not exists, create it?)는 질문에만 y 입력하면 된다.

설정

안타깝게도 자동으로 설정은 안해준다. 우분투냐 아니냐(또는 우분투인데 안될 경우)에 따라 진행한다.

우분투일 경우 (쉬움)

sudo pam-auth-update 입력한다. 아직 설정이 안끝났으므로 평소처럼 비밀번호를 입력한다.
그러면 CUI 화면이 뜨면서 PAM 선택 란이 뜬다. 최상단 Windows Hello 부분에 space 키로 체크하고, Enter 키를 눌러 OK 시켜서 설정을 완료하면 된다. 그런 다음 세션 하나 더 띄워서 sudo whoami 등으로 테스트해 보자.

우분투에서 안되거나 기타 리눅스일 경우 (보통)

우분투가 아니거나, 위 명령어가 안되거나, 난 끝까지 수동설정을 고집하는 이들에게는 아래 과정이 들어간다.

/etc/pam.d/sudo 파일을 vinano 등 텍스트 편집기로 편집한다.
공식에서는 su 입력에 대한 root 비밀번호를 설정하라고 권유하긴 하는데... 굳이 하지 않아도 된다.

대충 아래 내용처럼 파일 내용 맨 처음에 auth sufficient pam_wsl_hello.so 부분을 입력한다.
이렇게 하면 인증 시 Windows Hello 가 먼저 뜰 것이다.

#%PAM-1.0

auth       sufficient pam_wsl_hello.so
session    required   pam_env.so readenv=1 user_readenv=0
session    required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-auth
@include common-account
@include common-session-noninteractive

그런 다음 저장 후, 새 리눅스 세션으로 들어가 sudo whoamisudo 들어가는 아무 명령어를 쳐 본다.
만약 Windows Hello 가 뜨면 성공인 거고, Windows Hello 창에서 취소를 누르거나, 작동하지 않아도 기존 리눅스 사용자 비밀번호 입력이 나오니 걱정하지 말자.

이슈

만약 sudo 명령어를 쳤을 때, Windows Hello 화면이 뜨지만 창이 뒤로 밀렸을 경우, 지문이나 안면인식을 아무리 해도 작동하지 않을 때가 있다. 이럴 때는 어쩔 수 없이 마우스나 키보드 alt+tab 으로 Windows Hello 창을 활성화하면 생체인식이 동작할 것이다. 개발자 피셜, WinAPI 상의 문제로 보인다고 하며, 보통 윈도우 재시작 하면 해결할 수 있다고 한다.

만약 설명서대로 세팅했는데도 불구하고 작동하지 않는 경우, Troubleshooting 페이지에 가서 디버깅 방법을 확인하여 따라해본 뒤, 이슈일 경우 이슈 추가하면 된다. 영어 못하면 deepl 가서 번역해서 올려도 되긴 한다.

여담

이 프로그램은 Rust로 만들어졌다. 아쉽게도 2021년 이례로 추가개발은 없어 보이지만, 윈도우 11에서도 정상 작동한다고 하니, 윈도우 11 깔려 있어도 부담없이 설치하고 사용할 수 있다.
PAM 모듈에 대해 조금이라도 지식이 있다면, 리눅스에서도 OTP, 다단계 인증이나 생체 인식 등 다양한 인증 방식을 사용할 수 있다는 것 정도는 충분히 알 것이다. 하지만 WSL 에서는 편리한 생체 인식을 위한 장치 인식도 어렵다 보니 이런 불편함을 소프트웨어적으로 우회한 기발한 모듈이라고 할 수 있을 것이다.

물론 WSL은 리눅스로 먹고사는 엔지니어들에겐 애들 장난감 그 이상 그 이하 수준으로 취급하여 추천하지는 않을 것이다.
HyperV 리눅스보다도 느리고, 많은 기능 및 환경적 제약이 있다 등등...
하지만, 불가피하게 윈도우 환경에서 업무봐야 하는 상황에서 WSL은 정말 최고의 물건이다.
설치도 쉽고, 별도로 세팅하지 않아도 돌아가니까 말이지. 가장 큰 이유는 맥을 쓰는 명분 중 하나가 사라졌다는 점?

일부 업무 환경에서는 보안 우회 방지를 이유로 WSL을 막는 케이스도 있다. 내가 당해봤다... 금융권이나 대기업 일부 보안 빡센 계열사 등...

끗.

profile
지옥에서 온 개발자

0개의 댓글