chgrp 명령어 사용법

파일이나 디렉터리의 그룹 소유자를 변경하는 명령어입니다.

권한·보안 관리연결 실습 문제 3개Rocky Linux 8 기준 · 실행 결과는 실습 컨테이너에서 확인

기본 문법

chgrp [옵션] 그룹 파일...

chgrp(change group)는 파일과 디렉터리의 그룹 소유자를 바꾸는 명령어입니다. 리눅스의 권한 체계는 소유자(user), 그룹(group), 기타 사용자(other) 세 단계로 나뉘는데, 이 중 그룹 권한이 어느 그룹에 적용될지를 결정하는 것이 그룹 소유자입니다. 따라서 chmod로 그룹 권한을 g+rwx로 열어 두었더라도 그룹 소유자가 의도한 그룹이 아니면 해당 사용자들은 그 권한을 적용받지 못합니다.

주로 여러 사용자가 함께 쓰는 공유 디렉터리를 구성할 때 사용합니다. groupadd로 팀 그룹을 만들고, usermod로 팀원을 그룹에 추가한 뒤, 공유 디렉터리의 그룹 소유자를 chgrp로 해당 그룹에 맞추고 chmod로 2775 같은 setgid 권한을 부여하는 흐름이 일반적입니다.

리눅스마스터·RHCSA·LPIC 등의 시험에서도 협업 디렉터리 구성 문제의 한 단계로 출제됩니다. 소유자까지 함께 바꿔야 할 때는 chown user:group 형식으로 한 번에 처리할 수 있으므로, chgrp와 chown의 관계를 함께 정리해 두면 좋습니다.

자주 쓰는 옵션

옵션의미
-R, --recursive디렉터리 하위의 모든 파일과 디렉터리까지 재귀적으로 변경chgrp -R demo_ops /srv/project-share
-v, --verbose처리한 모든 파일에 대해 진단 메시지 출력(그룹이 유지된 파일도 표시)chgrp -v demo_ops report.txt
-c, --changes실제로 그룹이 바뀐 파일에 대해서만 메시지 출력chgrp -c demo_ops report.txt
-f, --silent, --quiet대부분의 오류 메시지를 출력하지 않음(종료 코드는 별도로 확인 필요)chgrp -f demo_ops nofile.txt
--reference=RFILE지정한 기준 파일과 동일한 그룹으로 맞춤chgrp --reference=/etc/passwd report.txt
-h, --no-dereference심볼릭 링크가 가리키는 대상 대신 링크 자체의 그룹을 변경chgrp -h demo_ops link.txt
--dereference심볼릭 링크가 가리키는 대상의 그룹을 변경(기본 동작)chgrp --dereference demo_ops link.txt
-H-R와 함께 쓸 때, 명령행 인자로 지정한 심볼릭 링크만 따라감chgrp -RH demo_ops /srv/share
-L-R와 함께 쓸 때, 하위에서 만나는 모든 심볼릭 링크를 따라감chgrp -RL demo_ops /srv/share
-P-R와 함께 쓸 때, 심볼릭 링크를 따라가지 않음(재귀 시 기본값)chgrp -RP demo_ops /srv/share

실무 예시

파일 하나의 그룹 바꾸기

준비: mkdir -p /tmp/demo/ex1; echo report > /tmp/demo/ex1/report.txt

$ chgrp daemon /tmp/demo/ex1/report.txt && ls -l /tmp/demo/ex1/report.txt
-rw-r--r--. 1 root daemon 7 Sep 16 11:11 /tmp/demo/ex1/report.txt

그룹 소유자만 daemon으로 바뀌고 소유자(root)와 권한 비트는 그대로 유지됩니다.

디렉터리 전체에 재귀 적용

준비: mkdir -p /tmp/demo/ex2/sub; echo a > /tmp/demo/ex2/a.sh; echo b > /tmp/demo/ex2/sub/b.sh

$ chgrp -R bin /tmp/demo/ex2 && ls -lR /tmp/demo/ex2
/tmp/demo/ex2:
total 4
-rw-r--r--. 1 root bin  2 Sep 16 11:11 a.sh
drwxr-xr-x. 2 root bin 18 Sep 16 11:11 sub

/tmp/demo/ex2/sub:
total 4
-rw-r--r--. 1 root bin 2 Sep 16 11:11 b.sh

-R를 주면 대상 디렉터리 자신뿐 아니라 하위 디렉터리와 그 안의 파일까지 모두 그룹이 bin으로 바뀝니다. ls -lR 출력에서 하위 디렉터리 sub의 내용도 함께 확인할 수 있습니다.

변경된 항목만 출력하기

준비: mkdir -p /tmp/demo/ex3; echo x > /tmp/demo/ex3/x.txt; echo y > /tmp/demo/ex3/y.txt; chgrp adm /tmp/demo/ex3/x.txt

$ chgrp -c adm /tmp/demo/ex3/x.txt /tmp/demo/ex3/y.txt
changed group of '/tmp/demo/ex3/y.txt' from root to adm

이미 adm 그룹인 x.txt는 메시지 없이 넘어가고, 실제로 바뀐 y.txt만 출력됩니다. -v를 쓰면 그룹이 유지된 파일도 'retained as' 메시지로 함께 표시됩니다.

다른 파일의 그룹을 그대로 복사

준비: mkdir -p /tmp/demo/ex4; echo src > /tmp/demo/ex4/src.txt; echo dst > /tmp/demo/ex4/dst.txt; chgrp daemon /tmp/demo/ex4/src.txt

$ chgrp --reference=/tmp/demo/ex4/src.txt /tmp/demo/ex4/dst.txt && ls -l /tmp/demo/ex4
total 8
-rw-r--r--. 1 root daemon 4 Sep 16 11:11 dst.txt
-rw-r--r--. 1 root daemon 4 Sep 16 11:11 src.txt

그룹 이름을 직접 적지 않고 기준 파일의 그룹에 맞출 수 있어, 기존 파일과 그룹 설정을 통일할 때 사용합니다.

협업 디렉터리에 그룹 + setgid 적용

준비: groupadd demo_ops 2>/dev/null; mkdir -p /tmp/demo/project-share

$ chgrp demo_ops /tmp/demo/project-share && chmod 2775 /tmp/demo/project-share && ls -ld /tmp/demo/project-share
drwxrwsr-x. 2 root demo_ops 6 Sep 16 11:11 /tmp/demo/project-share

그룹을 demo_ops로 지정하고 setgid 비트(2)를 주면, 이후 이 디렉터리 안에 새로 만들어지는 파일과 디렉터리가 demo_ops 그룹을 상속합니다. 권한 문자열의 그룹 실행 자리에 s가 표시되는 것으로 setgid 적용을 확인합니다. 이미 들어 있던 파일의 그룹은 바뀌지 않으므로 필요하면 chgrp -R로 따로 맞춰야 합니다.

주의할 점

  • chgrp는 그룹만 바꿉니다. 소유자까지 함께 지정하려면 chown user:group 형식을 사용하세요.
  • 그룹을 바꿔도 권한 비트는 그대로입니다. 그룹 구성원이 쓰기를 하려면 chmod로 g+w 권한도 함께 부여해야 합니다.
  • -R 없이 디렉터리에만 실행하면 디렉터리 자신의 그룹만 바뀌고, 이미 들어 있는 파일의 그룹은 그대로입니다.
  • 일반 사용자는 자신이 소유한 파일을, 자신이 속한 그룹으로만 변경할 수 있습니다. 그 외에는 root 권한이 필요합니다.
  • setgid는 설정 이후 새로 생성되는 항목에만 그룹 상속이 적용됩니다. 기존 파일은 chgrp -R로 별도 정리해야 합니다.
  • /etc, /usr, /var 등 시스템 경로에 chgrp -R을 실행하면 서비스가 동작하지 않을 수 있습니다. 재귀 변경은 /srv, /home 아래의 공유 디렉터리처럼 대상 경로를 명확히 한정해 실행하세요.

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

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

관련 명령어

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