본문 바로가기

클라우드(Cloud)

[스나이퍼팩토리] 카카오클라우드 AIaaS 마스터 클래스 4주차 - 리눅스(Linux) 권한_Permissions

https://fineproxy.org/ko/wiki/linux/

 

지난번에 이어 리눅스(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) 리뷰로 작성 되었습니다.