728x90
반응형

리눅스를 사용하다 보면 누구나 한 번쯤 마주하게 되는 명령어들이 있다.
바로 chmod, chown, umask다.
처음엔 파일에 권한을 줘야 해서 chmod 755를 치지만, 왜 그렇게 쓰는지 감이 안 올 때도 많다.
이번 글에서는 실무에서 꼭 알아야 할 다음 개념을 실습 중심으로 정리해본다:
chmod로 권한 부여/제거- 파일 vs 디렉터리에서
rwx의 의미 차이 chown으로 소유자 변경umask로 기본 권한 설정하기
chmod – 권한을 읽고 쓸 줄 알아야 진짜다
chmod [옵션] [권한] 파일명
rwx는 다음을 의미한다:
| 권한 | 의미 | 숫자값 |
|---|---|---|
r |
읽기(read) | 4 |
w |
쓰기(write) | 2 |
x |
실행(execute) | 1 |
chmod 755 script.sh
→ rwxr-xr-x
→ 소유자: 읽기/쓰기/실행, 그룹/기타: 읽기/실행만 가능
파일 vs 디렉터리에서 rwx의 의미 차이
| 권한 | 파일에서 의미 | 디렉터리에서 의미 |
|---|---|---|
| r | 파일 내용을 읽을 수 있음 (cat) |
디렉터리 내 파일 목록 보기 (ls) |
| w | 파일 내용을 수정 가능 | 디렉토리 내 파일 생성/삭제 |
| x | 파일 실행 가능 (./run.sh) |
디렉터리로 진입 가능 (cd) |
# 디렉토리에서 실행 권한 없으면?
cd mydir # Permission denied 에러 발생
# 쓰기 권한 없으면?
touch mydir/file.txt # 에러 발생 (쓰기 권한 없음)
디렉터리에서 x는 "들어갈 수 있음", w는 "내용 수정(파일 추가/삭제)"이다.
chown – 소유자와 그룹을 바꾸자
chown [소유자][:그룹] 대상파일
chown ubuntu:ubuntu file.txt
→ file.txt의 소유자와 그룹을 모두 ubuntu로 변경
chown root file.txt # 소유자만 변경
chown :dev file.txt # 그룹만 변경
옵션
| 옵션 | 설명 |
|---|---|
-R |
하위 디렉토리까지 재귀 변경 |
--from=A:B |
현재 소유자가 A, 그룹이 B일 때만 변경 |
umask – 새로 만든 파일의 기본 권한 설정
umask는 파일/디렉터리 생성 시 제외할 권한을 정하는 마스크(mask)다.- 기본값은 보통 0022 또는 0002로 되어 있음.
기본 공식
| 항목 | 권한 공식 | 예시 |
|---|---|---|
| 파일 | 666 - umask |
644 ← 666 - 022 |
| 디렉토리 | 777 - umask |
755 ← 777 - 022 |
예시
umask # 현재 값 확인
umask 0022 # 기본 설정
umask 0077 # 자신 외에는 아무도 접근 불가
umask는 보안을 위해 중요한 기본 설정이며, /etc/profile, ~/.bashrc 등에 설정할 수 있음
SetUID – 실행자 대신 파일 소유자 권한으로 실행
기본 개념
- 파일에
SetUID권한이 설정되면, 실행하는 사용자가 누구든 간에 파일 소유자의 권한으로 실행됨 - 주로 루트 권한으로 실행되어야 하는 명령어에 사용됨
사용 예
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 /usr/bin/passwd
s→ SetUID 설정됨- 소유자가
root→ 일반 유저도 실행 시root권한으로/etc/shadow수정 가능
설정 방법
chmod u+s 파일명
chmod 4755 file.sh
- 4xxx에서 4는 SetUID를 의미
SetGID – 실행자 대신 그룹 권한으로 실행
기본 개념
- SetGID는 두 가지 방식에서 의미가 다름
- ① 파일에 설정하면: 실행자 → 파일 그룹 권한으로 실행
chmod g+s 파일명
chmod 2755 file.sh
- ② 디렉터리에 설정하면: 그 디렉터리 안에 생성되는 모든 파일은 그 디렉터리의 그룹을 상속받음
chmod g+s shared_dir
- 예:
/project디렉터리에 SetGID 설정 시, 여기에 생성된 파일들은 자동으로project그룹 소속
팀 프로젝트에서 협업 시 파일들이 자동으로 같은 그룹으로 묶이게 해줌
Sticky Bit – 삭제는 소유자만 가능하게 제한
기본 개념
- 디렉터리에 설정하면, 그 안의 파일은 소유자만 삭제 가능
- 예: /tmp처럼 여러 사용자가 접근 가능한 디렉터리에서 필수
사용 예
ls -ld /tmp
drwxrwxrwt 10 root root 4096 ... /tmp
- 마지막
t가 Sticky Bit 설정을 의미
설정 방법
chmod +t 디렉터리명
chmod 1777 /public
1xxx에서1은 Sticky Bit
고급 권한 설정 요약
| 이름 | 설정 명령어 | 의미 | 사용 예 |
|---|---|---|---|
| SetUID | chmod u+s 또는 chmod 4xxx |
실행 시 소유자 권한으로 실행 | /usr/bin/passwd |
| SetGID (파일) | chmod g+s 또는 chmod 2xxx |
실행 시 그룹 권한으로 실행 | 제한적 사용 |
| SetGID (디렉터리) | chmod g+s |
생성 파일이 디렉터리 그룹 상속 | /project |
| Sticky Bit | chmod +t 또는 chmod 1xxx |
디렉터리 내 파일은 소유자만 삭제 가능 | /tmp, /public |
파일 권한 표시 변화
| 권한 문자열 | 의미 |
|---|---|
-rwsr-xr-x |
SetUID (소유자 s) |
-rwxr-sr-x |
SetGID (그룹 s) |
drwxrwxrwt |
Sticky Bit (t) |
s는 x 위치에 붙는다
S(대문자)는 실행권한(x)이 없는 상태에서의 setuid/gid 설정 (비정상)
마무리
권한 관리는 단순히 파일을 실행할 수 있게 만드는 걸 넘어, 시스템 보안의 핵심이다.
rwx가 파일과 디렉터리에서 어떻게 다르게 작동하는지 이해해야 chmod도 정확하게 다룰 수 있다.
실무에서는 chown -R, chmod 600, umask 0077 같은 명령어를 자주 쓰게 된다.
728x90
반응형
'linux' 카테고리의 다른 글
| [리눅스 프로세스 관리] ps와 kill 명령어 + 시그널까지 한 번에 정리하기 (0) | 2025.05.28 |
|---|---|
| [리눅스 명령어] linux tar 명령어 – 압축 및 해제 (0) | 2025.05.28 |
| [리눅스 유저 & 그룹 관리] useradd, usermod, passwd, groupadd (0) | 2025.05.26 |
| [리눅스 기본기] redirect, pipe, grep – 셋만 알아도 터미널이 쉬워진다 (0) | 2025.05.23 |
| [리눅스 기본기] vi 에디터 단축키 정리 - 이동, 복사, 삭제, 검색, 대치 (0) | 2025.05.22 |