chown — 소유자와 그룹 변경
Linux / 파일 및 디스크 관리 / chown.html
💬 "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)을 사용합니다.
실제 실행 화면
웹 루트 소유자를 웹서버 계정으로 변경한 뒤 확인한 결과입니다.

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