Linux / 명령어 / chown - 파일 소유자와 그룹 변경

chown은 파일이나 디렉터리의 소유 사용자와 소유 그룹을 변경합니다. 서비스 데이터 디렉터리의 소유권을 맞출 때 유용하지만 잘못된 재귀 적용은 서비스 접근을 막을 수 있습니다.

chown 명령어란?

소유자:그룹을 지정하면 두 속성을 함께 바꾸고, 소유자만 지정하면 보통 그룹은 그대로 둡니다. 변경 권한은 시스템 정책에 따라 제한되며 일반적으로 관리자 권한이 필요합니다. 접근 권한 비트 자체는 chmod로 관리합니다.

기본 문법

chown [옵션] 소유자[:그룹] 파일 ...

설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man chown으로 현재 시스템의 설명을 확인하세요.

사용 예제

소유자만 변경

파일의 소유자를 계정에 맞춥니다. 중요한 시스템 경로에서는 먼저 대상 확인이 필요합니다.

sudo chown alice report.txt

소유자와 그룹 함께 변경

사용자와 그룹을 명시해 모호함을 줄입니다.

sudo chown alice:editors report.txt

변경 결과 확인

소유자·그룹을 확인한 뒤 필요한 경우에만 변경합니다.

stat -c '%U:%G %n' report.txt

소유자·그룹 변경 결과 확인하기

다음 예시는 alice 사용자와 developers 그룹이 실제로 존재한다는 전제입니다. 소유자 변경에는 보통 관리자 권한이 필요합니다.

sudo chown alice:developers demo.txt
stat -c '%U:%G %n' demo.txt

예시 출력:

alice:developers demo.txt

chown 성공 시에는 대개 출력이 없으므로 stat이나 ls -l로 결과를 확인합니다. -R은 디렉터리 아래 전체에 적용되므로 웹 루트나 시스템 디렉터리에서 사용하기 전에 경로와 심볼릭 링크 처리 방식을 확인하세요. 소유권 변경이 서비스 접근 정책을 바꿀 수 있습니다.

컨테이너나 네트워크 파일시스템에서는 이름이 같아도 내부 숫자 UID·GID가 달라 예상과 다른 소유권으로 보일 수 있습니다. 자동화에서는 id 사용자와 대상의 stat -c '%u:%g'를 함께 확인하세요. 서비스 계정의 소유권은 임의로 바꾸면 쓰기·실행 권한 오류가 생길 수 있습니다.

주요 옵션과 형식

옵션·형식 설명
-R 하위 항목까지 소유권을 재귀 변경합니다.
-h 심볼릭 링크의 대상 대신 링크 자체를 대상으로 합니다.
--reference=파일 참조 파일의 소유자·그룹을 복사합니다.
-v 처리한 파일을 자세히 표시합니다.

사용할 때 주의할 점

경로 하나를 잘못 지정한 chown -R은 많은 파일의 소유권을 한 번에 바꿀 수 있습니다. 먼저 stat이나 find로 범위를 확인하고, 가능하면 좁은 경로에만 적용하세요. 심볼릭 링크와 특수 권한 비트의 처리는 파일 시스템·옵션에 영향을 받을 수 있습니다.

자주 묻는 질문

chown alice report.txt와 chown alice:editors report.txt의 차이는?

앞은 소유 사용자만 변경하고, 뒤는 소유 사용자와 그룹을 함께 지정합니다.

공식 문서

옵션의 정확한 동작과 구현별 차이는 chown 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / unxz - xz 압축 파일 풀기

Linux / 명령어 / unxz - xz 압축 파일 풀기

Linux unxz 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / su - 사용자 계정 전환

Linux / 명령어 / su - 사용자 계정 전환

Linux su 명령어로 다른 사용자 권한의 셸과 단일 명령을 실행하는 방법을 설명합니다. su와 su --login 차이, 환경 변수, PAM 인증, sudo·runuser 선택 기준과 보안 주의사항을 정리합니다.

Linux / 명령어 / clear - 터미널 화면 정리

Linux / 명령어 / clear - 터미널 화면 정리

Linux clear 명령어로 터미널 화면을 정리하는 방법을 설명합니다. 스크롤백을 보존하는 -x 옵션과 Ctrl+L·reset·tput의 차이, TERM 오류 해결법을 다룹니다.

Linux / 명령어 / printenv - 환경 변수 값 출력

Linux / 명령어 / printenv - 환경 변수 값 출력

Linux printenv 명령어로 전체 또는 특정 환경 변수 값을 확인하는 방법을 설명합니다. 셸 변수와 환경 변수의 차이, 종료 상태, NUL 구분 출력과 env와의 차이를 정리합니다.

Linux / 명령어 / fg - 셸 작업을 포그라운드로 가져오기

Linux / 명령어 / fg - 셸 작업을 포그라운드로 가져오기

Linux fg 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / ln - 하드 링크와 심볼릭 링크 생성

Linux / 명령어 / ln - 하드 링크와 심볼릭 링크 생성

Linux ln 명령어로 하드 링크와 심볼릭 링크를 만드는 방법을 설명합니다. 두 링크의 차이, 상대 경로, 깨진 링크와 기존 링크 교체 시 주의점도 정리합니다.

Linux / 명령어 / rpm - RPM 패키지와 설치 데이터베이스 조회

Linux / 명령어 / rpm - RPM 패키지와 설치 데이터베이스 조회

Linux rpm 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / locate - 파일 이름 색인에서 빠르게 경로 검색

Linux / 명령어 / locate - 파일 이름 색인에서 빠르게 경로 검색

Linux locate 명령어로 파일 이름 색인을 빠르게 검색하는 방법을 설명합니다. updatedb, 최신성 한계, 패턴과 정규 표현식, find와의 차이를 정리합니다.

Linux / 명령어 / cd - 디렉터리 이동

Linux / 명령어 / cd - 디렉터리 이동

Linux cd 명령어로 절대·상대 경로, 홈과 이전 디렉터리로 이동하는 방법을 설명합니다. 심볼릭 링크 처리, CDPATH, 스크립트와 sudo cd의 한계 및 오류 해결법도 정리합니다.

Linux / 명령어 / lscpu - CPU 아키텍처와 코어 정보 확인

Linux / 명령어 / lscpu - CPU 아키텍처와 코어 정보 확인

Linux lscpu 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.