Search
Duplicate
🔐

sudo를 비밀번호 없이 실행해보자

간단소개
sudo로 모든 명령어 또는 특정 명령어에 대해서 비밀번호 없이 실행해보자
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Linux
태그
Scrap
8 more properties
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
혹시 잘못된 부분이 있다면 댓글로 지적 부탁드립니다!