지난번에 이어 리눅스(Linux)에 대한 추가 학습을 진행보려한다.
리눅스가 무엇이고 어떤 명령어들로 실행되고 동작하는지를 학습했으니 이제는 추가로 리눅스가 가지고 설정할 수 있는 권한과 시그널 등에 대해 학습해볼 것이다.
먼저 권한에 대한 내용으로 시작을 할텐데, 권한을 학습하기 전에 리눅스가 어떻게 설계되었는지를 다시 생각해보면
리눅스(Linux)는 기본적으로 여러 사용자가 동시에 사용하는 환경을 전제로 설계되었다는 것을 알 수 있다.
📌 리눅스 권한 (Permissions)
1️⃣ 다중 유저 (Multi-user)란?
리눅스는 기본적으로 여러 사용자가 동시에 사용하는 환경을 전제로 설계되었다.
✅ 핵심 포인트
- MacOS, Windows도 다중 사용자 환경 지원 (리눅스도 마찬가지)
- 각 유저는 고유한 계정과 그룹을 가짐
- 가상화(VM), 컨테이너(Docker) 시대에도 사용자 구분은 여전히 중요함
- 컨테이너/VM 안에서는 주로 root와 non-root 사용자로만 구분
💡 예시
- root 계정 → 최고 관리자
- ubuntu, nginx, mysql 등은 각기 다른 서비스용 유저
2️⃣ 리눅스 권한의 3가지 주체와 3가지 권한
🎯 3개의 주체 (소유 대상)
주체 | 설명 |
u (user) | 파일의 소유자 (Owner) |
g (group) | 파일의 소속 그룹 |
o (others) | 나머지 모든 사용자들 |
🔑 3개의 권한 (작업 유형)
권한 | 기호 | 의미 |
읽기 (Read) | r | 파일 보기 / 디렉토리 목록 보기 |
쓰기 (Write) | w | 파일 수정 / 디렉토리에 파일 추가/삭제 |
실행 (Execute) | x | 프로그램 실행 / 디렉토리 접근 |
3️⃣ 파일 권한의 비트 체계 (10자리 형식)
리눅스에서 ls -l 명령을 입력하면 다음과 같은 10자리 권한 비트가 보이게 된다.
예시:
-rwxr-xr--
예시와는 다르지만 맨 앞에 위치한 10자리 권한 비트를 보면 된다. 아래 설명을 통해 해당 문자들이 어떤 것들을 의미하는지 알아볼 것이다.
🧩 구성
위치 | 의미 |
1번째 | -는 일반 파일, d는 디렉토리 |
2~4 | 소유자(user) 권한 |
5~7 | 그룹(group) 권한 |
8~10 | 기타(other) 권한 |
🎯 비트 가중치 (숫자 권한과 연결됨)
권한 조합 | 비트 | 숫자 |
rwx | 111 | 7 |
rw- | 110 | 6 |
r-- | 100 | 4 |
r-x | 101 | 5 |
예시: -rwxr-xr--
- Owner: rwx → 7
- Group: r-x → 5
- Other: r-- → 4
👉 결과: chmod 754 파일명
위의 예시와 같이 리눅스 환경에서 test.txt 파일을 하나 생성하고, 해당 파일의 권한을 예시와 같이 변경해보았다.
4️⃣ chmod로 권한 변경
chmod 명령은 권한을 설정하거나 변경할 때 사용된다.
① 숫자 모드 (절대 권한 설정)
chmod 754 filename
대상 | 권한 | 숫자 |
User | rwx | 7 |
Group | r-x | 5 |
Other | r-- | 4 |
② 심볼릭 모드 (부분 변경 가능)
chmod u+rwx,g+rx,o-r filename
명령어: 의미 |
u+rwx: 소유자에게 읽기,쓰기,실행 권한 추가 |
g+rx: 그룹에 읽기, 실행 권한 추가 |
o-r: 기타 사용자에게서 읽기 권한 제거 |
🔄 비교 요약
방식 | 장점 | 단점 |
숫자 모드 | 간결, 반복 적용 쉬움 | 의미 기억 필요 |
심볼릭 모드 | 직관적, 일부만 변경 가능 | 명령이 길고 복잡 가능 |
5️⃣ stat 명령어로 메타데이터 확인
stat filename
📑 출력 정보
- 파일 권한 (rwx 등)
- 파일 소유자(user), 소속 그룹(group)
- 파일 크기, 수정 시간 등
👉 ls -l보다 더 많은 정보 제공
✅ 실무 적용 요약
항목 | 요약 내용 |
다중 유저 | 리눅스는 여러 사용자 계정을 지원하며, root와 일반 사용자 권한 구분이 핵심 |
3개의 주체 | 소유자(user), 그룹(group), 기타(other)로 권한 분리 |
3개의 권한 | 읽기(r), 쓰기(w), 실행(x) |
권한 비트 | 10자리로 구성되며, 숫자 권한으로 환산 가능 (rwx → 7 등) |
chmod | 권한 설정 명령, 숫자 모드(절대), 심볼릭 모드(상대)로 사용 가능 |
stat | 파일의 권한, 소유자, 그룹, 크기 등의 메타 정보 확인 명령 |
리눅스는 위와 같은 일반 권한이 아니라 추가적으로 특수 권한이라는 개념을 가지고 있다.
📌 리눅스 특수 권한 (Special Permissions)
리눅스의 일반 권한(rwx) 외에, 특정 상황에서 파일이나 디렉토리의 동작 방식을 변경해주는 추가적인 권한 비트가 존재하는데,
이걸 특수 권한(Special Permission) 이라고 한다.
✅ 특수 권한이란?
이름 | 설명 |
SUID (Set-UID) | 실행 시 해당 파일 소유자의 권한으로 실행 |
SGID (Set-GID) | 실행 시 파일의 그룹 권한으로 실행, 디렉토리에서는 그룹 상속 |
Sticky Bit | 공용 디렉토리에서 본인만 삭제/수정 가능하게 제한 |
1️⃣ SUID (Set User ID)
✅ 개념 요약
: 실행할 때만 유저 권한으로 실행
"내가 이 프로그램을 실행하면 이 파일의 주인처럼 동작할 수 있게 해줘!"
- 보통은 프로그램을 실행한 사용자의 권한으로 실행
- SUID가 설정된 실행 파일은, 그 프로그램의 소유자(=파일 주인)의 권한으로 실행
🧠 비유
마치 학생이 학교 사무실 문을 열어야 할 때,
사무실 열쇠를 가진 교무실 선생님 이름표를 잠깐 빌려서 문을 여는 느낌
💡 예시
- /usr/bin/passwd ← 일반 사용자가 실행해도 자기 비밀번호를 root 권한으로 변경할 수 있어야 함
- 이 프로그램은 소유자가 root이고, SUID가 설정됨
항목 | 설명 |
목적 | 프로그램 실행 시 파일 소유자의 권한으로 동작하게 함 |
사용 예 | /usr/bin/passwd → 일반 사용자가 root 권한으로 비밀번호 변경 가능 |
설정 명령어 | chmod u+s 파일명 |
퍼미션 표시 | -rwsr-xr-x (사용자 실행 비트가 s) |
숫자 모드 | 4xxx (예: chmod 4755 파일) |
위험성 | 잘못 설정 시 권한 상승(Privilege Escalation) 취약점이 됨 |
✅ 예시
ls -l /usr/bin/passwd

→ 권한 비트 중 s 표시 → SUID 설정 완료된 상태
2️⃣ SGID (Set Group ID)
✅ 개념 요약
항목 | 설명 |
파일에 설정 시 | 실행 시 해당 그룹 권한으로 실행 |
디렉토리에 설정 시 | 생성되는 파일들이 그 디렉토리의 그룹을 자동 상속 |
설정 명령어 | chmod g+s 파일/디렉토리 |
퍼미션 표시 | -rwxr-sr-x (그룹 실행 비트가 s) |
숫자 모드 | 2xxx (예: chmod 2755 디렉토리) |
실무 활용 | 협업 디렉토리에서 공통 그룹 적용에 유용 |
✅ 예시
mkdir shared_dir
sudo chown :devteam shared_dir
sudo chmod 2775 shared_dir
→ 여기서 만든 파일은 모두 devteam 그룹을 따르게 된다.
3️⃣ Sticky Bit
✅ 개념 요약
누구나 들어갈 수 있는 디렉토리여도,
"본인이 만든 파일만 삭제 가능하게" 제한하는 권한
- 주로 /tmp 같은 공용 디렉토리에 사용됨
- 삭제 제한을 통해 보안성을 확보함
🧠 비유
학교 사물함에서 누구나 물건을 넣을 수 있지만,
남의 물건은 못 꺼내게 자물쇠를 건 느낌!
항목 | 설명 |
적용 대상 | 디렉토리만 (파일 X) |
효과 | 디렉토리 내의 파일은 소유자만 삭제/이름 변경 가능 |
활용 | /tmp, 공용 공유 디렉토리의 파일 삭제 제한 |
설정 명령어 | chmod +t 디렉토리 |
퍼미션 표시 | drwxrwxrwt (기타 실행 비트가 t) |
숫자 모드 | 1xxx (예: chmod 1777 /shared) |
✅ 예시
mkdir /tmp/shared
chmod 1777 /tmp/shared
→ 누구나 접근 가능하지만, 본인 파일만 삭제 가능
🔍 퍼미션 표시 요약 (ls -l)
권한 타입 | 예시 출력 | 의미 |
SUID | -rwsr-xr-x | 사용자 실행 위치에 s |
SGID | -rwxr-sr-x | 그룹 실행 위치에 s |
Sticky Bit | drwxrwxrwt | 기타 실행 위치에 t |
비정상 설정 시 | S, T (대문자) | 실행 권한 없이 설정만 있을 때 (권한 오류 가능) |
🧪 실습
1. SUID 테스트
cp /usr/bin/id ./id_suid
sudo chown root:root id_suid
sudo chmod 4755 id_suid ./id_suid
→ 출력 결과에서 euid=0(root) 나오는지 확인
2. SGID 디렉토리 테스트
mkdir shared_sgid
sudo chown :staff shared_sgid
sudo chmod 2775 shared_sgid
touch shared_sgid/test.txt
ls -l shared_sgid
→ 생성된 파일의 그룹이 staff로 자동 설정되는지 확인
3. Sticky Bit 테스트
mkdir shared_sticky
chmod 1777 shared_sticky
sudo su - testuser
touch shared_sticky/test.txt
exit
sudo su - ubuntu
rm shared_sticky/test.txt
# Permission denied 나와야 정상!
✅ 정리 표
권한 | 설정 명령어 | ls 표시 | 작동 방식 |
SUID | chmod u+s | rws | 실행 시 파일 소유자 권한으로 실행 |
SGID | chmod g+s | r-s | 실행 시 그룹 권한으로 실행, 디렉토리 내 그룹 상속 |
Sticky Bit | chmod +t | t | 디렉토리 내 소유자만 삭제/이름 변경 가능 |
위와 같이 리눅스(Linux)의 권한에 대한 개념을 정리하며 학습해보았다.
하지만 이 개념들이 어떤 경우에 사용되기에 이렇게 권한을 설정하는 것들이 필요한 것인지가 이해가 되지 않았기에 이 부분을 살펴보았다.
해당 부분은 추가로 학습하며 찾은 내용들이기에 확실한 정답이 아닐 수 있다.
✅ SUID, SGID, Sticky Bit는 왜 필요할까?
1️⃣ SUID – “사용자보다 높은 권한이 필요한 프로그램 실행”
📌 왜 필요할까?
리눅스는 보안상 일반 사용자에게 시스템 설정을 직접 변경할 권한을 주지 않는다.
하지만 어떤 작업은 일반 사용자도 해야만 하는데, 그 작업을 하려면 root 권한이 꼭 필요할 수도 있다.
💡 대표 사례: 비밀번호 변경
- /usr/bin/passwd 명령은 사용자의 비밀번호를 수정하는데,
- 이 작업은 /etc/shadow 같은 root 전용 파일을 수정해야 한다.
- 그런데 일반 사용자도 비밀번호는 바꿔야 한다.
✅ 해결책:
passwd 프로그램 자체에 SUID를 설정해두면,
사용자는 root처럼 이 프로그램을 실행할 수 있음 → 자기 비밀번호 변경 가능
2️⃣ SGID – “협업할 때 그룹 권한 유지”
📌 왜 필요할까?
팀 단위로 하나의 폴더를 공유할 때, 누가 만든 파일이든 팀 전체가 접근 가능해야 한다.
하지만 기본 리눅스 설정에서는
새로 만든 파일은 자기의 기본 그룹으로 설정된다. → 다른 팀원이 접근 못 함 ❌
💡 대표 사례: 공동 프로젝트 폴더
mkdir /project/team1
chown :devteam /project/team1
chmod 2775 /project/team1
→ 이 디렉토리에 파일을 만들면 무조건 devteam 그룹 소유가 됨
→ 팀원들끼리 접근 및 수정이 가능함.
3️⃣ Sticky Bit – “공용 디렉토리에서 내 파일 보호”
📌 왜 필요할까?
/tmp, /var/tmp 같은 디렉토리는 누구나 쓰는 공유 공간이다.
그런데 여기서 다른 사용자가 내 파일을 삭제하거나 바꾸면 보안 문제가 생길 수 있다.
예: A가 만든 임시파일을 B가 지운다? → 절대 안 됨 ❌
✅ 해결책: Sticky Bit을 설정하면:
- 누구나 디렉토리에 들어가서 파일은 만들 수 있지만,
- 자기 파일만 삭제 / 수정 가능함.
💡 대표 사례: /tmp 디렉토리
ls -ld /tmp

✅ 맨 끝 t가 sticky bit 설정된 것!
🧩 종합 요약표
특수 권한 | 필요 이유 | 대표 사용 사례 |
SUID | 특정 프로그램만 파일 소유자 권한으로 실행 | passwd, ping |
SGID | 파일 그룹을 유지/공유 → 협업 가능 | 공동 프로젝트 디렉토리 |
Sticky Bit | 공용 디렉토리에서 남의 파일 보호 | /tmp, 업로드 폴더 |
본 후기는 [카카오엔터프라이즈x스나이퍼팩토리] 카카오클라우드로 배우는 AIaaS 마스터 클래스 (B-log) 리뷰로 작성 되었습니다.