🔐 chown·chmod로 배우는 리눅스 파일 권한 관리
리눅스의 권한 관리는 사용자(User)와 그룹(Group)을 기반으로 동작한다.

*Ubuntu/Debian 기준
sudo adduser <유저명> 명령어는 사용자를 생성하는 명령어이다. 비밀번호를 설정하고 Full Name / Room / Phone / Other 같은 사용자 정보(GECOS)를 입력한다. (사용자 정보는 생략도 가능)
현재 로그인 되어있는 계정의 정보를 확인하기 위해서는 다음과 같은 명령어를 사용하면 된다.

*sudo 권한이 있는 경우 sudo -iu <유저명> 으로 계정 전환 가능
whoami 명령어는 현재 로그인한 사용자명을 출력한다. id는 현재 사용자의 UID/GID와 소속 그룹들을 보여주고 groups <유저명> 명령어는 해당 사용자가 속한 그룹의 목록을 출력한다.

ls -lh 명령어는 현재 폴더의 파일들과 권한을 함께 출력하는 명령어이다. project 폴더의 경우 소유자/그룹이 root:root 이고 권한이 *755이기 때문에 일반 사용자는 쓰기(w) 권한이 없어 Permission denied가 발생하는 것을 확인할 수 있다.
*권한 8진수 표기
각 자리(소유자/그룹/기타)를 8진수로 표현한 것 r = 4 (read) w = 2 (write) x = 1 (execute) 를 의미한다.
ex) 755
소유자: 7 = 4 + 2 + 1 = rwx
그룹: 5 = 4 + 1 = r-x
기타: 5 = 4 + 1 = r-x
따라서 sudo 권한이 있는 계정으로 전환한 후 chown 명령어로 소유권을 bluecool로 변경하였다.

ls -lh 명령어의 출력 결과를 보면 권한 변경이 반영된 것을 확인할 수 있고 이후 파일 생성도 정상적으로 된 것을 알 수 있다.
chown
파일/디렉터리의 소유자(owner)와 그룹(group)을 바꾸는 명령어이다.
chown [옵션] <소유자>[:<그룹>] <경로...>
chown [옵션] :<그룹> <경로...> # 그룹만 변경
chown [옵션] <소유자>: <경로...> # 소유자만 변경
chown [옵션] --reference=<기준파일> <경로...> # 기준파일과 동일한 owner:group으로 변경
이름 대신 UID/GID로도 변경이 가능하며 콜론(:) 사용을 권장한다. 함께 자주 사용되는 옵션은 다음과 같다.
- -R, --recursive : 하위 모두 재귀 적용
- -v, --verbose : 처리한 모든 항목을 출력
- -c, --changes : 실제로 변경된 항목만 출력
- -f, --silent : 오류 메시지 최소화
예시
# 디렉터리 소유자/그룹을 bluecool로 변경
sudo chown bluecool:bluecool /srv/project
# 재귀적으로 하위까지 모두 변경
sudo chown -R bluecool:bluecool /srv/project
# 그룹만 devteam으로 변경
sudo chown :devteam /srv/project
소유자 변경은 보통 root/sudo만 가능하며 파일을 지우거나 새로 만들기 위해서는 부모 디렉터리의 w(쓰기) + x(진입) 권한이 있어야 한다.
chmod
chmod는 파일/디렉터리의 권한(rwx)을 변경하는 명령어이다.
chmod [옵션] <모드> <경로...>
모드 종류에는 숫자(8진수) 모드, 기호 모드가 있다.
기호 모드 요소
대상: u(소유자) g(그룹) o(기타) a(전체)
연산: +(추가) -(제거) =(정확히 설정)
권한: r(4) 읽기 / w(2) 쓰기 / x(1) 실행
X: 디렉터리와 기존에 실행 비트가 있던 파일에만 x 적용
예시
# 스크립트 실행 권한 부여
chmod +x deploy.sh
# 디렉터리 공유(그룹 쓰기 허용 + setgid)
chmod 2775 /srv/project
# 민감 파일/SSH 키 권한 설정 (소유자만 rw)
chmod 600 ~/.ssh/id_rsa
# 기호 모드로 정확히 지정
chmod u=rwx,g=rx,o=rx app
*기호 모드의 특수 비트
4xxx - setuid
실행 파일을 파일 소유자 권한으로 실행
2xxx - setgid
파일: 실행 중 파일의 그룹 권한으로 동작
디렉터리: 해당 디렉터리 안에서 새로 만든 항목의 그룹을 디렉터리의 그룹으로 상속
1xxx - sticky
디렉터리에서 본인 소유만 삭제 가능