728x90

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는 모든 사용자가 사용하지만, 각자의 파일만 삭제할 수 있음
728x90

+ Recent posts