sudo 명령어 패스워드 없이 사용하기

💡
sudo 명령어 사용 시, 패스워드를 요구하지 않도록 하는 것은 보안상 권장되지 않는다. 따라서 key를 이용한 ssh 접속이 가능한 환경 및 물리적인 서버에 혼자 접근이 가능한 환경 등, 기본적인 보안이 보장되는 경우에만 적용하도록 하자.

리눅스 운영체제는 대부분 sudo 명령어를 사용할 때, 일정 시간마다 해당 사용자의 패스워드를 요구한다. "이미 패스워드를 입력하고 접속했는데, 왜 굳이 또 패스워드 요구를?" 라고 생각할 수도 있지만, 이런 식으로 패스워드를 요구하는 이유는 root 권한 사용의 남용을 막기 위함이다. 예를 들어 당신이 별다방에서 터미널로 작업을 하다가 갑작스럽게 자리를 비웠다고 생각해 보자. 그걸 유심히 지켜보던 어떤 사람이 해당 터미널을 이용해 악의적인 접근을 할 수도 있을 것이다. 좀 억지다 만약 이런 일이 벌어질 때, 일정 시간 후 패스워드를 요구한다면 이런 악의적인 행위를 조금이라도 빠르게 멈출 수 있을 것이다. 물론 이건 그저 이해하기 쉽게 하기 위한 예시일 뿐이고 sudo 명령어 사용 시, 패스워드를 요구하는 행위는 최후의 마지노 선을 지키기 위함이라고 생각하면 된다.

하지만 굳이 보안을 챙길 필요가 없는 환경이라면 본인 스스로가 책임을 진다는 전제 하에 sudo 명령어 사용 시, 패스워드를 요구하지 않도록 변경할 수 있다. 이를 위해서는, sudo 권한을 관리하는 파일인 sudoers 파일을 수정하면 된다. 운영체제 별로 경로나 파일 명이 조금씩 상이할 수 있으므로, 파일 경로로 접근해 직접 수정하는 것 보다는 visudo 명령어를 사용하는 것이 좋다. 참고로 visudo를 사용하면 문법 체크까지 해주기 때문에, 실수로 오타를 냈다가 sudo 명령어를 못 쓰는 불상사도 막아줄 수 있다.

$ sudo visudo

visudo 명령어를 이용해 sudoers 파일을 열고 나면 다음의 내용을 추가해줘야 한다.

<user>	ALL=(ALL) NOPASSWD:ALL

이 때, 주의할 점이 있는데 해당 내용은 sudo 명령어 권한을 가진 그룹보다 밑에 기술해야 한다는 점이다. 예를 들어 Debian 계열의 운영체제인 경우에는

%sudo   ALL=(ALL:ALL) ALL
운영체제나, 버전 별로 조금씩 상이할 수 있다.

RHEL 계열의 운영체제인 경우에는

%wheel  ALL=(ALL)       ALL
운영체제나, 버전 별로 조금씩 상이할 수 있다.

보다 밑에 기술해야 정상적으로 동작한다. 만약 잘 모르겠다면 그냥 속 편하게 제일 밑 줄에 기술하도록 하자.

이후, 터미널에 재접속하고 나면 sudo 명령어 사용 시 더 이상 패스워드를 요구하지 않을 것이다.

만약, 모든 권한에 대한 패스워드 비 요구가 과하다고 생각한다면, 다음과 같이 특정 명령어에 대해서만 패스워드를 요구하지 않을 수 있다.

<user>	ALL(ALL) NOPASSWD:/usr/sbin/reboot, /usr/sbin/shutdown
NOPASSWD: 뒤에 패스워드를 요구하지 않을 명령어를 입력하면 된다.

위의 경우에는 rebootshutdown 명령어 사용 시에만, 패스워드를 요구하지 않게 될 것이다. 이런 식으로 필요한 명령어에 대해서만 패스워드를 요구하지 않을 수 있다.


정리하며

사실 자주 사용하는 내용이었는데, 미루다 미루다 이번 기회에 글을 적게 되었다. 위에서도 적은 내용이긴 하지만, sudo 명령어 사용 시, 패스워드를 요구하지 않도록 설정하는 것은 기본적인 보안이 갖춰진 환경에서만 해야 한다는 점을 명심해야 한다. sudo 명령어에는 막대한 권한이 있는 만큼 조심해서 다뤄야만 한다. 괜히 터미널에서 처음 sudo 명령어 사용 시, '큰 힘에는 큰 책임이 따릅니다.' 라는 경고가 뜨는 게 아니라는 점을 명심하자.