김 컴퓨터


chmod (Change Mode)

chmod는 파일이나 디렉터리의 읽기(Read), 쓰기(Write), 실행(Execute) 권한을 변경하는 명령어입니다. 리눅스 보안 관리에서 가장 중요한 명령어 중 하나입니다.


1. 권한 계산법 (8진수 모드)

각 권한은 비트(Bit) 값에 대응하며, 이 값들을 더하여(OR 연산) 최종 권한을 결정합니다.

이 숫자들을 합쳐서 세 자리 숫자로 표현합니다 (소유자 / 그룹 / 기타 사용자). * 7 (4+2+1): 모든 권한 (rwx) * 6 (4+2): 읽기 및 쓰기 (rw-) * 5 (4+1): 읽기 및 실행 (r-x)


2. 기본 사용법

chmod [옵션] 모드 파일명

3. 주요 옵션 및 활용 예시

명령어 설명
chmod 777 file 모든 사용자에게 모든 권한 부여 (매우 위험)
chmod 755 script.sh 소유자는 모든 권한, 나머지는 읽기/실행만 (일반적인 실행 파일)
chmod 644 file.txt 소유자는 읽기/쓰기, 나머지는 읽기만 (일반적인 문서 파일)
chmod -R 700 dir Recursive. 디렉터리와 그 내부의 모든 파일 권한을 한 번에 변경

문자를 이용한 변경 (Symbolic Mode)


4. [보너스] C언어 비트 연산과의 관계

리눅스 커널 내부에서 chmod 7은 비트 OR 연산으로 처리됩니다. $4 (100_2) \ | \ 2 (010_2) \ | \ 1 (001_2) = 7 (111_2)$

C언어 코드로 표현하면 다음과 같습니다:

// 읽기(4)와 쓰기(2) 권한을 합치는 과정
int permission = S_IRUSR | S_IWUSR; // 4 | 2 = 6