chown — 소유자와 그룹 변경

Linux / 파일 및 디스크 관리 / chown.html

파일 및 디스크 관리원문등록 2026-10-18

💬 "chown 명령어"

권한이 맞아도 소유자가 틀리면 접근이 안 됩니다. chown은 소유자/그룹을 바꿉니다.

형식은 chown 사용자:그룹 경로입니다.

  • 개념: 파일의 소유자와 그룹을 변경합니다.
  • 왼쪽 인자: 사용자 또는 사용자:그룹 형식입니다.
  • 오른쪽 인자: 대상 파일/디렉터리입니다.
  • 확인: stat 또는 ls -l로 변경 결과를 확인합니다.

자주 쓰는 옵션

옵션설명
-R하위 항목까지 재귀 변경합니다
--reference=f다른 파일과 동일한 소유자/그룹으로 맞춥니다
-h심볼릭 링크 자체의 소유자를 바꿉니다
-c변경된 항목만 출력합니다

필수 명령어 조합 3가지

  • chown -R www-data:www-data /var/www/html — 웹 루트 전체를 웹서버 계정 소유로 변경
  • chown deploy:deploy /opt/app/current/public/index.php — 배포 파일 소유자 지정
  • chown --reference=/etc/nginx/nginx.conf /etc/nginx/conf.d/site.conf — 설정 파일 소유자 통일

💬 "이 명령으로 시간대별 추세를 보는 예시 알려줘"

실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.

1단계 · 현재 소유자 확인

누가 소유하는지, 웹서버 계정이 무엇인지 봅니다.

stat -c '%n %U:%G' /var/www/html

2단계 · 소유자 변경

웹 루트는 보통 www-data(또는 nginx)가 소유합니다.

chown -R www-data:www-data /var/www/html

3단계 · 검증

응답과 로그를 확인합니다.

curl -sI https://example.com | head -1

실무에서는 이렇게 씁니다

1. 배포 후 소유자 어긋남

상황 — 배포 스크립트가 root로 실행돼 파일이 root 소유가 됐습니다.

chown -R deploy:www-data /opt/app/current

결과 — 앱이 파일을 쓸 수 있게 되고 권한 오류가 사라집니다.

포인트 — 배포 사용자와 서비스 사용자, 그룹 구조를 미리 정해두면 반복 문제를 막습니다.

2. 업로드 쓰기 실패

상황 — 업로드만 계속 실패합니다. 읽기는 됩니다.

chown -R www-data:www-data /var/www/html/uploads && chmod 755 /var/www/html/uploads

결과 — 서비스 계정이 디렉터리에 쓸 수 있게 됩니다.

포인트 — 쓰기 실패는 소유자 문제인 경우가 많습니다. 권한만 만지작거리지 말고 소유자를 봅니다.

주의할 점

  • -R을 시스템 경로(/)에 잘못 실행하면 서버가 심각하게 손상됩니다. 절대 경로를 재확인합니다.
  • 심볼릭 링크에서는 기본적으로 대상의 소유자가 바뀝니다. 링크 자체를 바꾸려면 -h를 씁니다.
  • 앱이 만든 새 파일은 실행 사용자의 소유가 되므로, 필요하면 그룹 상속(setgid)을 사용합니다.

실제 실행 화면

웹 루트 소유자를 웹서버 계정으로 변경한 뒤 확인한 결과입니다.

chown 명령어 실행 결과: 소유자·그룹 확인

실제 운영 중인 서버

이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.