/엔지니어/보안 설정/sudo 권한 관리 — sudoers · 최소권한
보안 설정중급UbuntuDebianCentOSsudosudoers권한관리

sudo 권한 관리 — sudoers · 최소권한 · 감사 로그

sudoers 파일 문법, 사용자·그룹 sudo 권한 부여, 특정 명령만 허용하는 최소권한 설정, sudo 로그 감사 방법을 설명합니다.

sudoers 파일 기본

Bash
# 절대 직접 편집하지 말 것 — visudo 사용
sudo visudo

# 특정 파일 편집
sudo visudo -f /etc/sudoers.d/myuser

visudo는 저장 전 문법 검사를 수행해 잘못된 설정으로 sudo가 잠기는 것을 방지합니다.


sudoers 문법

CODE
사용자  호스트=(실행사용자:그룹) 명령
SUDOERS
# root는 모든 것 가능
root    ALL=(ALL:ALL) ALL

# deploy 사용자에게 모든 sudo 권한 (패스워드 필요)
deploy  ALL=(ALL:ALL) ALL

# wheel 그룹에 sudo 권한
%wheel  ALL=(ALL) ALL

# sudo 시 패스워드 생략
deploy  ALL=(ALL) NOPASSWD: ALL

# 특정 명령만 허용
deploy  ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx

# 특정 명령 금지 (허용 목록 뒤에 !로 추가)
deploy  ALL=(ALL) ALL, !/bin/su, !/usr/bin/passwd root

/etc/sudoers.d/ 활용 (권장)

메인 sudoers 파일 대신 개별 파일로 관리하면 추적이 쉽습니다.

Bash
# 파일 생성
sudo visudo -f /etc/sudoers.d/deploy

# 내용
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp

# 권한 설정 (필수)
sudo chmod 440 /etc/sudoers.d/deploy

최소권한 원칙 적용 예시

SUDOERS
# 배포 자동화 사용자 — 특정 서비스 재시작만 허용
ci-runner ALL=(ALL) NOPASSWD: \
    /usr/bin/systemctl restart myapp, \
    /usr/bin/systemctl reload nginx

# DBA — PostgreSQL 관련만 허용
dbadmin ALL=(postgres) NOPASSWD: /usr/bin/psql, /usr/bin/pg_dump

# 모니터링 — 읽기 전용 명령만
monitor ALL=(ALL) NOPASSWD: \
    /usr/bin/systemctl status *, \
    /usr/bin/journalctl -u *, \
    /bin/cat /var/log/*

sudo 로그 감사

Bash
# Ubuntu (journald)
sudo journalctl -u sudo | grep -i "command"

# 모든 sudo 명령 실시간 확인
sudo journalctl -f | grep sudo

# /var/log/auth.log에서 확인 (Ubuntu)
grep "sudo:" /var/log/auth.log | tail -50

# /var/log/secure (CentOS)
grep "sudo:" /var/log/secure | tail -50

# 특정 사용자의 sudo 기록
grep "sudo:.*deploy" /var/log/auth.log

sudo 타임아웃 설정

SUDOERS
# 기본 타임아웃 변경 (분 단위, 0=항상 물어봄)
Defaults timestamp_timeout=5

# 세션 재인증 없이 sudo 사용
Defaults timestamp_type=global

# 터미널별 개별 타임아웃
Defaults timestamp_type=tty

긴급 복구 — sudo 잠긴 경우

Bash
# 단일 사용자 모드로 부팅 후
mount -o remount,rw /
visudo    # 또는 직접 수정
# /etc/sudoers 백업 복원
cp /etc/sudoers.bak /etc/sudoers
#sudo#sudoers#권한관리#최소권한#보안#linux
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.