← 아티클 목록

리눅스 사용자 권한 관리 — 그룹·sudo·파일 권한 정리

2027-05-31#linux#권한#운영

Permission denied. 멀쩡히 만든 계정이 특정 디렉터리에 못 들어가거나, 새 운영자가 sudo를 못 쓸 때 가장 먼저 보는 메시지입니다. 추측하지 말고 누가(user) → 어느 그룹에 속했고(group) → 대상의 권한이 무엇인지(mode) 순서로 좁힙니다.

1단계 — 현재 누구이고 어디 속했나 (id)

로컬 터미널
id                  # 내 uid·gid·소속 그룹 전체
id deploy           # 특정 사용자 확인
groups deploy       # 소속 그룹만 간단히

uid(사용자), gid(기본 그룹), 그리고 추가 그룹 목록이 한 줄로 나옵니다. 권한 문제의 8할은 "이 사용자가 그 그룹에 안 들어가 있다"입니다.

2단계 — 그룹에 추가 (usermod)

예를 들어 deploy 계정이 도커를 쓰려면 docker 그룹에 있어야 합니다.

로컬 터미널
sudo usermod -aG docker deploy    # -aG: 기존 그룹 유지하며 추가

-a(append)를 빠뜨리고 -G만 쓰면 기존 보조 그룹이 전부 날아갑니다. 반드시 -aG로 붙입니다. 그룹 변경은 새 로그인 세션부터 반영되니, 적용 후 다시 로그인하거나 newgrp docker로 즉시 반영합니다.

3단계 — sudo 권한 부여 (visudo)

sudo 권한은 /etc/sudoers를 직접 열지 말고 항상 visudo로 편집합니다. 문법 오류를 저장 전에 검사해줘서 sudo 자체가 잠기는 사고를 막습니다.

로컬 터미널
sudo visudo
# 한 줄 추가:
# deploy  ALL=(ALL)  NOPASSWD: /usr/bin/systemctl restart myapp

전체 권한이 필요하면 배포판별 관리자 그룹(wheel 또는 sudo)에 넣는 편이 깔끔합니다.

로컬 터미널
sudo usermod -aG wheel deploy     # RHEL 계열
sudo usermod -aG sudo deploy      # Debian/Ubuntu 계열

4단계 — 파일·디렉터리 권한 (chmod·chown)

소유자가 틀렸으면 그룹에 넣어도 못 읽습니다. 소유권과 모드를 함께 봅니다.

로컬 터미널
ls -l /srv/app                    # 소유자·그룹·권한 확인
sudo chown -R deploy:deploy /srv/app   # 소유자·그룹 변경
chmod 750 /srv/app                # 소유자 rwx, 그룹 r-x, 기타 없음

숫자 모드는 r=4 w=2 x=1 합산입니다. 750은 소유자 7(rwx), 그룹 5(r-x), 기타 0. 디렉터리는 들어가려면 실행 비트(x)가 필요하다는 점을 자주 놓칩니다.

점검 순서

로컬 터미널
id <user>                         # 소속 그룹
sudo usermod -aG <group> <user>   # 그룹 추가(-a 필수)
sudo visudo                       # sudo 부여(직접 편집 금지)
ls -l <경로> && chown/chmod       # 파일 소유권·모드

사용자·그룹·sudo·파일 권한을 직접 만들고 끊어보는 실습은 리눅스 트랙에서 회원가입 없이 무료로 익힐 수 있습니다.