groupadd 명령어 사용법

새 그룹을 시스템에 생성하는 명령어입니다.

사용자·그룹/인증연결 실습 문제 5개Rocky Linux 8 기준 · 실행 결과는 실습 컨테이너에서 확인

기본 문법

groupadd [옵션] 그룹명

groupadd는 /etc/group과 /etc/gshadow에 새 항목을 추가하여 그룹을 생성하는 명령어입니다. 그룹은 여러 사용자가 같은 파일·디렉터리 접근 권한을 공유하기 위한 단위이므로, 협업 디렉터리나 서비스 계정을 구성할 때 먼저 실행하게 됩니다.

실무에서는 부서·프로젝트 단위 공유 디렉터리를 만들기 전에 그룹을 먼저 만들고, useradd -g(기본 그룹) 또는 usermod -aG(보조 그룹)로 사용자를 연결합니다. 시스템 데몬용 그룹이 필요하면 -r 옵션으로 시스템 그룹 범위에 생성합니다. Rocky Linux 8의 /etc/login.defs 기본값에서는 일반 그룹이 GID_MIN~GID_MAX(1000~60000), 시스템 그룹이 SYS_GID_MIN~SYS_GID_MAX(201~999) 범위에서 할당됩니다.

리눅스마스터, RHCSA, LPIC 시험에서는 '그룹 생성 후 특정 GID 지정', '사용자를 보조 그룹에 추가', 'set-GID 공유 디렉터리 구성' 형태로 출제됩니다. 러닉스 실습 문제에서도 sysadms, devops, apps, proj_team 같은 그룹을 만드는 것이 첫 단계로 나옵니다.

자주 쓰는 옵션

옵션의미
-g, --gid GID그룹 ID(GID)를 직접 지정합니다. 기본적으로 이미 사용 중인 GID는 지정할 수 없습니다.groupadd -g 5000 devops
-r, --system시스템 그룹으로 생성합니다. GID를 시스템 그룹 범위(Rocky 8 기본값 201~999)에서 할당합니다.groupadd -r apps
-f, --force그룹이 이미 있으면 오류 없이 종료 코드 0으로 끝냅니다. -g로 지정한 GID가 이미 사용 중이면 -g를 무시하고 사용 가능한 GID를 자동으로 할당합니다.groupadd -f devops
-o, --non-uniqueGID 중복을 허용합니다. -g와 함께 사용합니다.groupadd -o -g 5000 team2
-K, --key KEY=VALUE/etc/login.defs 설정값(GID_MIN, GID_MAX 등)을 이 명령에 한해 덮어씁니다.groupadd -K GID_MIN=6000 devops
-p, --password PASSWORD그룹 비밀번호를 지정합니다. crypt(3) 형식의 암호화된 문자열만 그대로 저장되며, 평문을 넣으면 평문이 그대로 기록됩니다. 명령줄 인자는 프로세스 목록에 노출되므로 실무에서는 gpasswd를 사용하는 편이 안전합니다.groupadd -p '$6$salt$해시문자열' demo_grp
-R, --root CHROOT_DIR지정한 디렉터리를 루트로 chroot한 뒤 작업합니다. 해당 디렉터리에 /etc/group 등 설정 파일이 갖춰진 정상적인 시스템 트리가 있어야 합니다.groupadd -R /mnt/sysimage devops
-h, --help사용 가능한 옵션 목록을 출력합니다.groupadd --help

실무 예시

그룹 생성과 확인

$ groupadd demo_sysadms; getent group demo_sysadms
demo_sysadms:x:1000:

그룹을 만든 뒤 getent로 등록 여부를 확인합니다. 출력의 세 번째 필드가 자동 할당된 GID이며, 실제 값은 서버에서 이미 사용 중인 GID에 따라 달라집니다.

GID를 직접 지정해 생성

$ groupadd -g 5000 demo_devops; getent group demo_devops
demo_devops:x:5000:

-g로 GID를 5000으로 고정합니다. 여러 서버에서 같은 그룹의 GID를 일치시켜야 할 때 사용합니다.

시스템 그룹으로 생성

$ groupadd -r demo_apps; getent group demo_apps
demo_apps:x:995:

-r은 시스템 그룹 범위(Rocky 8 기본값 201~999)에서 GID를 할당합니다. 이 범위에서 남아 있는 값 중 큰 쪽부터 내려오며 할당되므로 구체적인 숫자는 서버마다 다릅니다. 서비스 계정용 그룹에 적합합니다.

그룹 생성 후 사용자를 보조 그룹에 추가

준비: useradd demo_idhuser

$ groupadd demo_audit; usermod -aG demo_audit demo_idhuser; id demo_idhuser
uid=1000(demo_idhuser) gid=5001(demo_idhuser) groups=5001(demo_idhuser),5002(demo_audit)

기존 보조 그룹을 유지한 채(-a) 보조 그룹을 추가하는 전형적인 흐름입니다. id 출력의 groups 항목에서 확인합니다. uid와 gid 숫자는 해당 서버의 할당 상황에 따라 달라집니다.

기본 그룹 지정과 공유 디렉터리 구성

준비: mkdir -p /tmp/demo

$ groupadd demo_proj; useradd -g demo_proj demo_user1; mkdir -p /tmp/demo/proj_shared; chgrp demo_proj /tmp/demo/proj_shared; chmod 2770 /tmp/demo/proj_shared; ls -ld /tmp/demo/proj_shared
drwxrws---. 2 root demo_proj 6 Sep 16 11:29 /tmp/demo/proj_shared

그룹 생성 → 기본 그룹을 지정한 사용자 생성 → 공유 디렉터리에 set-GID(2770) 적용까지의 흐름입니다. 권한 문자열의 s가 set-GID 비트로, 이 디렉터리에 새로 만들어지는 파일의 그룹이 demo_proj로 상속됩니다. 권한 뒤의 점(.)은 SELinux 보안 컨텍스트가 있음을 뜻하고, 크기와 날짜는 환경에 따라 다릅니다.

주의할 점

  • 이미 존재하는 그룹명을 다시 만들면 'group already exists' 오류가 납니다. -f를 쓰거나 getent group으로 먼저 확인하세요.
  • -g로 지정한 GID가 이미 사용 중이면 실패합니다. 의도적으로 중복이 필요할 때만 -o를 함께 쓰세요. GID가 중복되면 소유권 표시와 감사 추적이 혼란스러워질 수 있습니다.
  • groupadd는 그룹만 만들며 사용자를 구성원으로 넣지 않습니다. 구성원 추가는 usermod -aG 또는 gpasswd -a로 따로 해야 합니다.
  • usermod -G를 -a 없이 쓰면 기존 보조 그룹이 모두 교체되어 사라집니다. 보조 그룹을 추가할 때는 -aG를 쓰세요.
  • usermod로 그룹을 추가해도 이미 로그인한 세션에는 즉시 반영되지 않습니다. 다시 로그인하거나 newgrp로 확인하세요.
  • /etc/group, /etc/gshadow를 일반 편집기로 직접 수정하는 것은 권장하지 않습니다. 파일 형식이 깨지거나 동시 수정으로 내용이 유실될 수 있으므로 groupadd, groupmod, gpasswd를 사용하고, 부득이한 경우 잠금을 처리하는 vigr을 쓰세요.
  • 공유 디렉터리에 777 같은 전체 쓰기 권한을 주는 대신, 그룹 소유권과 2770(set-GID) 조합으로 필요한 범위만 허용하세요.

이 명령어로 풀 수 있는 실습 문제

브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.

관련 명령어

마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.