Infra & Security Eng/Linux Fundamentals

파일구조, 파일 종류, 퍼미션, 퍼미션 제어, SUID, SGID, Sticky Bit,chown, chgrp, umask

엔지니어 E 2025. 12. 30. 17:58
반응형

1️⃣ 파일 구조

drwxr-x---  2 root root 4095 Dec 19 12:30 aa
퍼미션 하드 링크 수  소유자 그룹 소유자 크기 마지막 변경 일자 파일명 

* 파일에 문제가 생기면 소유자가 책임을 지게 됨 

* atime이 변경되면 ctime(파일의 속성 - 퍼미션, 하드링크 수, 소유자 등)이 같이 변경됨 

 

2️⃣ 파일의 종류

기호 파일 종류 
- 일반 파일
d 디렉토리
l 링크 파일
b 블록 디바이스 파일 
c 문자 디바이스 파일( = 캐릭터형 디바이스 파일)

 

💡 참고사항

  • ^d: d로 시작 하는것만 보여줘

 

3️⃣ 퍼미션(Permission)

  • 파일, 디렉토리에 대한 사용자의 허가 정도를 나타냄
  • 사용자는 소유자(user), 그룹 소유자(group), 이외 모든 사용자(other)로 구별 
구분 파일 디렉토리
r 읽기 파일 목록 보기
w 쓰기(수정) 파일 생성(삭제)
x 실행 들어가기

 

구조

rwx(user) rwx(group) rwx(other)

표기

퍼미션은 각 문자의 합으로 표현 
r:4 / w:2 / x:1 

ex)
rwxr-xr-x: 755 (4+2+1= 7 / 4+0+1= 5 / 4+0+1=5)

 

4️⃣ 퍼미션 제어

📌 chmod 명령어 (소유자, /만 수정이 가능, 그룹 소유자는 수정 불가)

# chmod [옵션] [퍼미션] [파일]

ex)
# chmod 755 a.txt
a.txt 라는 파일에 대해 커미션을 755로 바꿔줘

옵션

-R: 디렉토리인 경우 하위 디렉토리와 파일까지 수정 

 

대상 : u(user), g(group), o(other), a(all)
operator : +(추가), -(삭제), =(지정항목만 설정, chattr과 동일)
퍼미션 : r,w,x,s,t

ex)
chmod o+x, g-x a.txt
a.txt 라는 파일에 대해 o(thers) 에게 x 실행 권한을 주고, g(roup)에 대해 실행 권한을 빼줘

 

5️⃣ SUID, SGID, Sticky Bit

suid 와 sgid, sticky bit는 추가된 퍼미션으로 실행 및 삭제 권한을 보완

4777: (u+s) - user한테 sid 만 준 것 
2777:(g+s) - group한테 sid만 준 것 
Sticky Bit: 디렉토리에 대해서만 퍼미션을 주는 것 

suid(4), sgid(2), sticky bit(1)

suid와 sgid 는 user와 group 퍼미션에 s로 표시되고, sticky bit 는 other 퍼미션에 t로 표시된다

ex) 
7777: rwsrwsrw(4+2+1 = 7 / 4+2+1 = 7 / 4+2+1 = 7)
777에서 s=4 + s=2 + t=1 앞에 7이 부여되서 7777 이 오게 됨 

4777: rwsrwxrwx (u+x)
2777: rwxrwsrwx (g+s)
1777: rwxrwxrwt (o+t)

 

📌 suid, sgid 개념

실행 파일에만 적용됨. 파일이 실행된 프로세스는 실행한 사용자 소유로 실행 권한이 부여되지만 suid, sgid를 설정한 파일의 프로세스는 파일 소유자나 그룹 소유자의 ID로 실행된다. 실행 권한에 S로 명시

suid: 4000, u+s
sgid: 2000, g+s

 

📌 chown, chgrp 개념

원래는 / 만 사용하는 명령어 , 소유자 또는 그룹 소유자 변경

# chown [-R] [유저명] [대상]
대상의 소유자를 유저명으로 바꾸는 명령어 

# chown [-R] [유저명].[그룹명] [대상] - 비표준명령
# chgrp [-R] [그룹명] [대상]

ex)
chown root.root a.txt
첫번째 root: 계정 / 두번째 root: 그룹 (유닉스에서만)
다른 프로그램에서는 범위가 큰 것(그룹)이 앞에 옴. 범위가 작은 것(계정) 이 뒤에 옴

 

📌 umask 개념

  • 파일이나 디렉토리 다 특수 권한이 있음
  • 022(기본 설정값) - 사용자한테 어떤 권한을 빼고 줄지 지정하는 것
  • 디렉토리 퍼미션: 755(0755), 파일 퍼미션: 644(0644)
- 디렉토리 기본 권한 777-022=755(0755)
- 파일 기본 권한 666-022=644(0644)

 

📌 umask 명령

  • umask 확인
# umask
  • umask 변경 
# umask [제외할 퍼미션]
# umask 077(0077)

/etc/profile(시스템 전반 umask 변경 하고 싶을 때)
~/.bash_profile(각 계정 변경하고 싶을 때) 을 이용해서 변경 가능