우분투 사용자·권한 관리의 핵심 - addgroup 명령어 동작 원리와 실무 가이드

개요

리눅스 시스템에서 사용자 권한 분리와 프로젝트 협업 관리를 위해 신규 그룹 생성은 필수적입니다. 본 글에서는 우분투 환경에서 addgroup 명령어를 사용해 그룹을 생성하고 설정하는 방법부터 /etc/group 파일과 연동되는 내부 동작 원리까지 터미널 실습을 통해 상세히 알아봅니다.

addgroup 기본 사용법과 신규 일반 그룹 생성

시스템에 addgroup 명령어가 없는 경우 실습을 진행할 수 있도록 adduser 패키지 설치 여부를 확인하고 설치합니다.

which addgroup >/dev/null 2>&1 || (apt-get update -qq && apt-get install -y adduser)

addgroup 명령어는 시스템에 새로운 사용자 그룹을 추가합니다.
별도의 옵션을 지정하지 않으면 일반 사용자 그룹용 GID 범위 내에서 사용 가능한 번호를 자동으로 할당하여 그룹을 생성합니다.
⚙️ [주요 옵션]

--gid GID : 생성할 그룹에 특정 GID 번호를 수동으로 지정합니다.
--system : 일반 그룹 대신 시스템 관리용 시스템 그룹(보통 1000 미만 GID)을 생성합니다.
--quiet : 명령어 실행 중 출력되는 진행 상황 안내 메시지를 숨깁니다.
--debug : 그룹 생성 과정의 상세 디버그 정보를 화면에 출력합니다.
--force-badname : 기본 이름 정책에 맞지 않는 특수문자 등이 포함된 그룹 이름 생성을 허용합니다.

addgroup devteam

tail -n 3 /etc/group 명령어를 실행하여 그룹 정보 파일인 /etc/group의 마지막 3줄을 확인합니다.
앞서 생성한 devteam 그룹이 지정된 GID와 함께 파일 끝에 정상적으로 등록되었는지 검증할 수 있습니다.

tail -n 3 /etc/group

특정 GID 지정 및 시스템 그룹(–system) 생성

--gid 옵션을 사용하여 특정 GID를 수동으로 지정한 qa-team 일반 그룹을 생성합니다.
자동 할당 대신 사용자가 명시한 1500번 GID가 그룹에 정상적으로 부여됩니다.

addgroup –gid 1500 qa-team

백그라운드 서비스나 데몬 계정 관리를 위해 --system 옵션으로 시스템 그룹 app-service를 생성합니다.
일반 그룹과 달리 시스템 그룹 범위(100~999) 내에서 비어 있는 GID(103)를 자동으로 선택하여 할당합니다.

addgroup –system app-service

grep 명령어로 /etc/group 파일에서 앞서 생성한 그룹 정보를 검색하여 등록 상태를 확인합니다.
qa-team 그룹은 일반 GID인 1500으로, app-service 그룹은 시스템 GID인 103으로 각각 올바르게 설정된 것을 검증할 수 있습니다.

grep -E ‘qa-team|app-service’ /etc/group

기존 사용자를 그룹에 추가하고 멤버십 확인하기

그룹 멤버십 등록 실습을 진행하기 위해 testuser 계정이 존재하는지 확인하고, 없는 경우 홈 디렉터리와 기본 셸을 포함하여 계정을 생성합니다.

id testuser >/dev/null 2>&1 || useradd -m -s /bin/bash testuser

addgroup 명령어를 사용하여 기존 사용자인 testuser를 보조 그룹 devteam의 구성원으로 추가합니다.
사용자 이름과 그룹 이름을 차례로 지정하면 해당 사용자가 대상 그룹에 보조 그룹원으로 즉시 등록됩니다.

addgroup testuser devteam

id 명령어를 실행하여 testuser 사용자의 현재 UID, 기본 GID 및 소속된 보조 그룹 정보를 확인합니다.
계정 정보 조회를 통해 사용자의 식별자 정보와 그룹 소속 상태를 한눈에 파악할 수 있습니다.

id testuser

addgroup 내부 동작 원리와 설정 파일 분석

grep -E '^(FIRST_GID|LAST_GID|FIRST_SYSTEM_GID|LAST_SYSTEM_GID)' /etc/adduser.conf 명령어를 실행하여 /etc/adduser.conf 설정 파일에 정의된 시스템 그룹 및 일반 그룹의 GID 할당 범위를 검색합니다.
기본 설정 파일 내에서 새 그룹 생성 시 참조되는 GID 범위 지정 설정의 존재 여부와 기준 규칙을 검토할 수 있습니다.

grep -E ‘^(FIRST_GID|LAST_GID|FIRST_SYSTEM_GID|LAST_SYSTEM_GID)’ /etc/adduser.conf

grep 'devteam' /etc/group 명령어를 실행하여 /etc/group 파일에 등록된 devteam 그룹의 내부 저장 형식을 확인합니다.
그룹 이름, 비밀번호 대체 표기(x), 할당된 GID 번호(1001), 그룹 멤버 필드가 콜론(:) 구분자로 구성되어 있음을 확인할 수 있습니다.

grep ‘devteam’ /etc/group

grep 'devteam' /etc/gshadow 명령어를 실행하여 그룹 보안 정보가 별도로 저장되는 /etc/gshadow 파일의 엔트리를 조회합니다.
암호화된 그룹 비밀번호 필드에 설정된 잠금 표시(!)와 그룹 관리자 정보 등 보안 속성이 기록되는 내부 구조를 파악할 수 있습니다.

grep ‘devteam’ /etc/gshadow

지금까지 우분투 환경에서 사용자 및 권한 관리의 핵심인 addgroup 명령어의 동작 원리와 실무 활용법을 간단하게 살펴보았습니다.
적절한 그룹 권한 설정을 통해 더욱 안전하고 체계적인 리눅스 시스템을 구축해 보시기 바랍니다.