sudo는 명령어나 프로그램을 실행할 때 관리자의 권한을 실행시켜주는 안전하고 간편한 명령어입니다.
다만 터미널을 키고 sudo를 실행하면 password를 입력해야 하는 것이 간혹 귀찮을 때가 있습니다.
또는 특정 작업을 할 때 sudo를 사용해서 권한을 얻어야 하지만 password를 입력하지 못하는 난감한 경우가 발생하곤 합니다.
이번 글에서는 sudo로 특정 명령어를 실행 할 때 비밀번호 없이 실행하는 방법에 대해서 설명드리겠습니다.
sudo의 보안 정책 모듈 sudoers
sudoers는 sudo의 보안과 권한, 설정 등을 관리하는 보안 정책 모듈입니다. /etc/sudoers 에 위치 하고 있으며, sudo를 이용해 visudo라는 명령어로 수정이 가능합니다.
born2beroot를 진행할 때 보통은 sudoers 파일을 경로나 로그 저장 등의 정책을 적용시킬 때 수정하실겁니다. 그리고 특정 사용자가 sudo 권한을 얻게할 때는 해당 사용자를 sudo 그룹에 속하게 하여 sudo 권한을 부여할 것입니다.
하지만 sudo 권한은 sudo 그룹에 속하게 하는 것 외에도 sudoers에 직접 사용자를 입력하여 권한을 얻게 하는 방법이 있습니다.
sudoers에서 사용자(그룹) 정책 설정하기
sudoers 파일을 여시면 이런 항목들을 보신 적이 있으실겁니다. 각 항목들은 사용자 또는 그룹에 대한 정책을 설정하는 것으로, 다음과 같은 형식으로 구성되어있습니다.
USER[GROUP] HOST[NETWORK]=(RUNAS) CMD
Bash
복사
•
USER/GROUP: sudo를 사용하는 사용자 또는 그룹입니다
•
HOST(NETWORK): 사용자가 현재 접속하고 있는 호스트(네트워크)입니다
◦
이 항목은 실제 네트워크 인터페이스에 대해서만 검사합니다. 따라서 127.0.0.1에 대해서는 적용되지 않습니다
•
RUNAS: 해당 명령어를 실행할 때 얻는 사용자의 권한입니다
◦
특정 사용자의 권한을 따로 설정하지 않는다면 생략 가능합니다. 이 때 적용되는 권한은 모든 사용자의 권한이 됩니다.
◦
해당 옵션은 (ALL:ALL)로도 표기하는데, 이 때 왼쪽은 사용자, 오른쪽은 그룹의 권한을 뜻합니다
•
CMD: 해당 sudo 권한을 적용시킬 명령어입니다.
예를 들어, doohkim이라는 사용자에게 10.0.2.0/24 네트워크 범위에서 root의 권한을 얻어 모든 명령어를 수행하고자 하면 다음과 같이 입력해야 합니다.
doohkim 10.0.2.0/24=(root) ALL
Bash
복사
그룹도 마찬가지로 입력해야 하며, 그룹명 왼쪽에는 %가 붙어야합니다
비밀번호 없이 sudo 사용하기
sudo를 비밀번호없이 사용하려면 해당 사용자나 그룹을 다음과 같이 입력해야 합니다
# 모든 명령어
USER[GROUP] ALL=(ALL) ALL NOPASSWD: ALL
# useradd, userdel
USER[GROUP] ALL=(ALL) ALL NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel
Bash
복사
주의사항으로 사용자가 여러 그룹에 속하거나 sudoers 파일에 사용자에 대한 규칙이 있을 경우, 해당 사용자와 일치하는 항목 중 가장 마지막에 해당하는 규칙을 적용됩니다. 이는 규칙의 복잡성과는 상관없이 적용됩니다.
# doohkim이 sudo그룹에 속할 경우
# 규칙은 가장 마지막에 적혀있는 sudo에 대한 규칙이 적용됩니다
doohkim ALL:(ALL) NOPASSWD: ALL
%sudo ALL:(ALL) ALL
Bash
복사
출처
sudoers
혹시 잘못된 부분이 있다면 댓글로 지적 부탁드립니다!