chmod 명령어
chmod(change mode)은 Linux/Unix 시스템에서 파일이나 디렉토리의 권한을 변경하는 명령어입니다.
사용권한은 읽기(read,), 쓰기(write), 실행(execute) 권한을 의미하며, 사용자(user), 그룹(group), 기타 사용자(others)로 나누어집니다.
chmod 명령어 사용방법
chmod [옵션] 권한 대상
예시 :
chmod 755 test.sh
chmod u+x test.sh
권한
기호 | 설명 |
r | 읽기(Read, 4) |
w | 쓰기(Write, 2) |
x | 실행(Execute, 1) |
사용자 그룹
그룹 | 설명 |
u | 사용자(User, 파일 소유자) |
g | 그룹(Group, 파일의 그룹 소유자) |
o | 기타(Others, 나머지 사용자) |
a | 모두(All = u + g + o) |
각 권한의 경우 알파벳으로 r, w, x로 표현할 수 있지만 10진수 숫자로도 표현이 가능하다.
권한 | 값 |
r | 4 |
w | 2 |
x | 1 |
없음 | 0 |
숫자를 사용하는 chmod 명령어 예시는 다음과 같다.
chmod 755 file
# 소유자: rwx (7), 그룹: rx (5), 기타: rx (5)
chmod 644 file
# 소유자: rw- (6), 그룹: r-- (4), 기타: r-- (4)
기호는 다음과 같이 사용할 수 있다.
chmod [ugoa][+-=][rwx] 파일
연산자 | 의미 |
+ | 권한 추가 |
- | 권한 제거 |
= | 정확히 설정 |
사용 예시
chmod u+x file # 사용자에게 실행 권한 추가
chmod go-w file # 그룹과 기타 사용자에게 쓰기 권한 제거
chmod a=r file # 모두에게 읽기 권한만 부여
chmod의 주요 옵션
옵션 | 설명 |
-v 또는 --verbose | 변경사항을 자세히 출력 |
-c 또는 --changes | 변경된 항목만 출력 |
-f 또는 --silent / --quit | 오류 메시지 표시하지 않음 |
-R 또는 --recursive | 디렉토리 및 그 하위 항목까지 재귀적으로 적용 |
chmod -R 755 /var/www/html
chmod -v u+x myscript.sh
특수 권한
권한 | 숫자 | 설명 |
Setuid | 4000 | 실행 시 소유자 권한으로 동작 |
Setgid | 2000 | 실행 시 그룹 권한으로 동작 |
Sticky bit | 1000 | 디렉토리 내에서 파일 소유자만 삭제 가능 |
chmod 4755 file # setuid + 755
chmod 2755 dir # setgid + 755
chmod 1777 /tmp # sticky bit + rwxrwxrwt
1. Setuid (Set User ID)
- 목적
- 일반 사용자가 파일 소유자의 권한으로 프로그램을 실행할 수 있게 함
- 주 용도
- 일반 사용자가 특정 시스템 기능을 사용할 수 있게 하되, 전체 권한은 주지 않을 때
-rwsr-xr-x 1 root root /usr/bin/passwd
- /usr/bin/passwd 명령은 사용자가 자신의 비밀번호를 변경할 수 있게 하지만, 실제 변경은 /etc/shadow 파일(루트 권한 필요)을 수정해야 함
- Setuid 를 통해 해당 프로그램이 루트권한으로 실행되도록 보장
2. Setgid (Set Group ID)
- 목적
- 디렉토리에 적용 시, 그 디렉토리 내의 모든 파일과 서브디렉토리는 자동으로 같은 그룹 소유가 됨
- 파일에 적용 시, 실행중인 프로그램이 그룹 소유자의 권한으로 동작
chmod g+s shared_dir
ls -ld shared_dir
drwxr-sr-x 2 user group shared_dir
- shared_dir에 저장되는 모든 파일의 그룹이 자동으로 group이 됨
- 협업 시 그룹 일관성을 유지하는데 유용
3. Sticky Bit
- 목적
- 디렉토리에 적용하여, 해당 디렉토리 안의 파일을 소유자만 삭제 가능하게 함
- 보안 강화 : 모든 사용자가 접근 가능한 디렉토리(예: /tmp)에서 다른 사용자의 파일 삭제 방지
chmod +t /tmp
ls -ld /tmp
drwxrwxrwt 10 root root /tmp
- 마지막 t는 Sticky Bit 설정됨을 의미
- /tmp는 모든 사용자가 사용하지만, 각자의 파일만 삭제할 수 있음
'정보보호' 카테고리의 다른 글
XXE Injection의 개념과 방어 방법 (0) | 2025.05.10 |
---|---|
X.509 인증서의 개념, Openssl을 사용한 인증서 생성 방법 (0) | 2025.05.08 |
가상사설망 VPN의 종류 IPsecVPN, SSLVPN (0) | 2025.05.07 |
SSRF(Server-Side Request Forgery)의 개념, 그리고 CSRF와의 차이 (0) | 2025.05.06 |
Buffer Overflow의 개념과 예방방법 (0) | 2025.05.05 |