세 명령어 모두 파일/디렉토리의 권한과 소유권을 다루지만 역할이 다릅니다.
핵심 차이
명령어 역할 대상
| chmod | 권한(permission) 변경 | 읽기/쓰기/실행 권한 |
| chown | 소유자(owner) 변경 | 사용자, 그룹 모두 가능 (교수님 강조) |
| chgrp | 그룹(group) 변경 | 그룹만 변경 |
chmod — 권한 변경
숫자 방식 (Octal)
chmod 755 file.sh
# ↑↑↑
# │││ others: 5 = r-x
# ││owner: 7 = rwx
# │group: 5 = r-x
숫자 권한 의미
| 7 | rwx | 읽기+쓰기+실행 |
| 6 | rw- | 읽기+쓰기 |
| 5 | r-x | 읽기+실행 |
| 4 | r-- | 읽기만 |
| 0 | --- | 권한 없음 |
기호 방식 (Symbolic)
chmod u+x file.sh # 소유자에게 실행 권한 추가
chmod g-w file.txt # 그룹의 쓰기 권한 제거
chmod o=r file.txt # others는 읽기만
chmod a+x script.sh # 모두(all)에게 실행 권한
chmod u+x,g-w file # 복합 적용
대상 의미
| u | user (소유자) |
| g | group |
| o | others |
| a | all (u+g+o) |
자주 쓰는 패턴
chmod 644 file.txt # 일반 파일 (소유자 rw, 나머지 r)
chmod 755 script.sh # 실행 스크립트
chmod 700 secret.key # 소유자만 접근
chmod 777 shared/ # 모두 full (보안상 위험, 주의)
chmod -R 755 /var/www # 디렉토리 재귀 적용
chown — 소유자/그룹 변경
# 기본 문법
chown [소유자][:그룹] 파일
chown alice file.txt # 소유자만 alice로
chown alice:devteam file.txt # 소유자 + 그룹 동시 변경
chown :devteam file.txt # 그룹만 변경 (= chgrp와 동일)
chown alice: file.txt # 소유자 변경 + 그룹은 alice의 기본 그룹
chown -R alice:devteam /app # 디렉토리 재귀 적용
chown은 보통 root 또는 sudo 권한 필요
chgrp — 그룹 변경
chown :그룹과 기능은 같지만 그룹만 바꿀 때 명시적으로 사용
chgrp devteam file.txt # 그룹을 devteam으로
chgrp -R www-data /var/www # 재귀 적용
chgrp $(id -gn) file.txt # 현재 사용자의 기본 그룹으로
실전 시나리오
# 웹서버 배포 시
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
chmod -R 644 /var/www/html/*.html
# SSH 키 보안 설정
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa # 개인키: 소유자만 읽기
chmod 644 ~/.ssh/id_rsa.pub # 공개키: 읽기 공개
# 스크립트 실행 가능하게
chmod +x deploy.sh && ./deploy.sh
# 현재 권한 확인
ls -la file.txt
# -rw-r--r-- 1 alice devteam 1024 Jun 9 10:00 file.txt
# ↑↑↑↑↑↑↑↑↑ ↑↑↑↑↑ ↑↑↑↑↑↑↑
# 권한 소유자 그룹
ㅈ
- chmod → "이 파일을 누가 어떻게 쓸 수 있나" (권한)
- chown → "이 파일의 주인이 누구냐" (소유자 + 그룹)
- chgrp → "이 파일이 어느 팀 거냐" (그룹만)