TL;DR
별도로 관련한 작업을 한 적이 없다면, 다음 명령을 통해서 바로 설정이 가능하다.
sed "s/^#auth/auth/" /etc/pam.d/sudo_local.template | sudo tee /etc/pam.d/sudo_local
개요
sudoer
는 Unix의 통합 인증 모듈인 PAM (Pluggable Authentication Modules)을 통해서 인증된다. 그리고 여기에는 macOS에서 pam에 지문 인증이 가능한 Touch ID도 존재한다. 이를 사용한다면, 잃어버릴 가능성도 있으면서 번거로운 비밀번호를 이용하지 않고도 sudo
권한을 취득할 수 있으니 매우 편리하다.
인증 모듈
개요
sudo
에 대한 pam 관리는 다음 명령을 통해서 확인해볼 수 있다.> cat /etc/pam.d/sudo # sudo: auth account password session auth include sudo_local auth sufficient pam_smartcard.so auth required pam_opendirectory.so account required pam_permit.so password required pam_deny.so session required pam_permit.so
보다시피 최우선 순위에 추가 모듈인
sudo_local
을 찾아서 진행하게 되어있고, 그 이후에 기본 등록된 모듈을 사용하는데, 후순위에 있는 session 모듈까지 진행하면서 계정과 암호 인증을 요구하는 것으로 보인다. 초기 설정 그대로 사용중이라면 일반적으로 sudo_local
파일은 존재하지 않는다. 대신에, 사용자가 sudo
파일을 손대지 않고 sudo_local
을 이용할 수 있도록 템플릿 파일을 제공하고 있다.> cat /etc/pam.d/sudo_local.template # sudo_local: local config file which survives system update and is included for sudo # uncomment following line to enable Touch ID for sudo #auth sufficient pam_tid.so
템플릿 파일에서는 이미 Touch ID에 대한 인증 예시를 추가해놨는데, 기본값으로 정하지 않은 이유는 지문 등록 절차가 필요하기 때문으로 보인다.
추가
그러면 이제, template 파일을 복사해서
sudo_local
파일을 생성하고 주석을 해제하도록 하자.sed "s/^#auth/auth/" /etc/pam.d/sudo_local.template | sudo tee /etc/pam.d/sudo_local
sed
명령을 통해서/etc/pam.d/sudo_local.template
파일 내의 #auth를 auth로 변경한다.
|
를 통해서 출력된 결과물을 전달한다.
tee
명령을 통해서 파이프로 전달받은 결과물을 저장한다.
결과
명령을 수행하면 다음과 같이 파일이 생성된 것을 확인할 수 있다.
> cat /etc/pam.d/sudo_local # sudo_local: local config file which survives system update and is included for sudo # uncomment following line to enable Touch ID for sudo auth sufficient pam_tid.so
그리고 새로 터미널을 열어서 아까와 같이
sudo echo
명령을 수행해보면 지문인식을 위한 화면이 나타난다.
앞으로는 지문 인식을 통해서
sudo
인증이 가능하다.