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: rwsrwsrwt (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(각 계정 변경하고 싶을 때) 을 이용해서 변경 가능 |