일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SQL
- Spring
- LOB
- pwnable
- PWN
- Shell code
- 정보처리기사 실기
- hacking
- 정보보안기사
- 워게임
- stack overflow
- Pwnable.kr
- 해킹
- wargame
- webhacking
- 네트워크
- 웹해킹
- System
- 운영체제
- system hacking
- webhacking.kr
- OS
- Spring MVC
- Buffer Overflow
- Operating System
- 정보보안기사 실기
- Spring Framework
- Lord of BOF
- BOF
- Payload
- Today
- Total
DongDD's IT
File System - File, File System, Attributes, Operation, Directory, Directory Structure, Link, Mounting 본문
File System - File, File System, Attributes, Operation, Directory, Directory Structure, Link, Mounting
DongDD 2017. 11. 19. 17:13File System
File abstraction
1) User's view : Byte sequence의 이름
2) File System's view : Disk Block들의 집합
File System 역할
1) 이름과 offset을 가지고 disk block으로 변환해줌
2) File operation management : File 관련 operation을 관리함(open, read, write, close ...)
3) Directory management
File
Definition : 보조기억장치에 저장된 연관된 정보들의 집합
- data는 파일에 기록되지 않으면 보조기억장치에 저장될 수 없다.
Attributes
1) Name : 사람이 읽을 수 있는 형태의 정보로 되어있다.
2) Identifier : 파일 시스템 내에 file들을 구분하기 위한 number(inode)
3) Type : 다른 type을 지원하기 위한 system이 필요하다. executable file, document file등 여러 가지 type이 있음
4) Location : 기기내에 있는 파일의 위치를 가리키는 pointer
5) Size : File의 size를 나타낸다.
6) Protection : File에 대한 read, write, execute에 관한 권한을 제어한다.
7) Time, data, user identification : data를 보호하기 위한 정보등을 나타낸다.
Operation : File에 대한 모든 Operation은 System call이다.
1) Create : 파일을 생성하기 위한 공간을 찾고 새로운 파일을 생성하여 directory내에 file에 대한 entry를 생성한다.
2) Write : 현재 파일 위치를 가리키는 파일에 포함된 내용을 수정한다.
3) Read : 현재 파일 포인터가 가리키는 곳의 data를 읽어온다.
4) Repostion(seek,lseek) : 현재 위치하고 있는 파일 포인터 값을 변경해준다.
5) Delete : File을 삭제한다.
6) Truncate : Attributes를 남겨둔 채로 파일에 담겨있는 내용을 제거한다.
7) Open : Entry(Meta data)를 가져와 Memory에 올리고 Open된 파일에 대한 정보를 담고 있는 Open-file table을 생성한다.
-> Open은 File 이름을 통해 directory에서 찾고 directory entry를 open-file table에 복사한다. 그리고 open-file table에 있는 entry에 대한 pointer를 리턴한다.
Open file magage information
1) File pointer : 파일을 open한 프로세스별로 read/write operation을 하기 위한 pointer를 나타낸다.
2) File-open count : Open된 파일의 수를 나타낸다.
3) Disk location of the file : Data 접근 정보를 위한 cache를 나타낸다.
4) Access rights : 프로세스 별로 파일에 대한 access mode 정보를 나타낸다.
Directory
Definition : 파일들의 metadata를 가지고 있는 파일을 의미한다.
Operation : File에 대한 모든 Operation은 System call이다.
1) Search : 파일에 대한 탐색을 한다.
2) Create : 파일을 생성한다.
3) Delete : 파일을 삭제한다.
4) List : 디렉토리를 나열해 보여준다.
5) Rename : 파일을 이름을 수정한다.
6) Traverse : 파일 시스템을 순회한다.
Directory Structure
1) Single-Level Directory
- 하나의 Directory만 존재한다.
- 모든 파일의 하나의 directory에 포함되어 있다.
- 이름의 중복이 허용되지 않기 때문에 많은 양의 파일에 Naming하기 어렵다.
하나의 Root directory에 모든 파일이 존재한다. 그렇기 때문에 각 File은 Unique한 이름을 가져야한다.
2) Two-Level Directory
- Root directory에서 각각의 user directory를 사용하는 두 개의 Directory level을 사용한다.
- Single-Level에서 발생한 Naming문제를 해결할 수 있다.
- 2개의 level을 사용하여 directory를 형성했기 때문에 파일 공유에 문제가 생길 수 있다.
-> shared directory로 해결 가능.
Root Directory밑에 User directory를 두어 Two-Level directory를 형성한다.
위와 같이 다른 Directory에 존재하는 File의 이름은 중복되어도 상관이 없어진다.
3) Tree-Structured Directory(Hierarchy Structure)
- Tree구조를 가지는 Directory를 사용한다.
- 임의의 깊이를 가지는 Tree를 만들 수 있다.
- User들이 소유할 수 있는 개인의 Directory를 생성할 수 있다.
- Absolute Path(절대경로)와 Relative Path(상대경로)의 개념을 사용한다.
① Absolute Path : Root Directory부터의 파일의 경로
② Relative Path : 현재 Directory를 기준으로 한 파일의 경로
위와 같은 형태로 Tree구조를 가진다. 각 User directory에 또 다른 Subdirectory 생성이 가능하다.
4) Acyclic-graph Directory
- Tree-Structured Directory와 같은 형태를 가지지만 Link를 허용한다.
- Link를 통해 File 공유가 가능하다.
위와 같이 파일을 공유할 수 있다. 그러나 두 가지의 문제가 발생할 수 있다. 같은 파일이 두 개의 이름을 가질 수 있게 되고, 링크를 하고 있던 원래의 파일이 삭제될 경우 문제가 생긴다.
5) General Graph Directory
- Acyclic-graph Directory에서 Cycle이 허용된 Directory 구조이다.
- File Search에 있어 무한 루프가 발생할 수 있기 때문에 잘 사용하지 않는다.
위와 같이 파일간의 링크를 통해 cycle이 생길 수 있다. cycle을 허용하게 되면 무한 루프 등 문제점을 야기시킬 수 있다.
Hard Link vs Soft Link
Link : File 및 Subdirectory에 대한 Pointer
-> 파일을 공유하는 데에 효율적으로 사용된다.
1) Hard Link
- 존재하는 파일에 대해 File Pointer를 생성해준다.
- Reference count를 이용하여 원래의 파일이 삭제되더라도 이 값이 0이 아니라면 이 파일을 가리키는 Link가 존재한다고 판단하여 파일을 삭제하지 않고 Count값을 1 감소시킨다.
- 같은 파일이기 때문에 inode의 값이 같다.
- Hard Link를 생성할때마다 Reference count값이 1 증가한다.
2) Soft Link
- 원본 파일에 대한 Pointer를 생성해준다.
- Link가 유지되는 동안 원래의 파일이 삭제되는 경우 Dangling Pointer라는 문제점이 발생한다.
- 원본 파일과 Link File의 inode 값이 다르다.
위와 같이 aa라는 파일에 hard_link와 soft_link를 각각의 link 방법을 사용하여 생성했을 때의 모습이다. soft link의 경우 inode값이 다른 것을 볼 수 있고 size 또한 다르다. 하지만 hard link로 생성된 파일은 size와 inode number가 원본파일과 일치한다. 이 상태에서 원본파일인 aa를 삭제시켜보면 다음과 같다.
원본 파일을 삭제한 경우 soft link로 생성한 soft_link 파일은 dangling pointer가 되어 실행시킬 수 없게 된다. 하지만 hard link로 생성한 hard_link파일은 reference count=1의 값을 가지고 있기 때문에 삭제되어도 그대로 사용할 수 있다.
Dangling Pointer
- 원본 파일을 가리키고 있던 Soft Link가 원본 파일이 삭제되면서 가리킬 곳을 잃어버린 상태를 의미한다.
File System Mounting
Mounting : 파일 시스템을 사용하기 위한 과정
- 파일 시스템을 사용하기 위해 Mounting은 반드시 필요하다.
- Mount되지 않은 파일 시스템은 Mounting Point에 Mount된다.
- 임의의 Directory에 Mounting하는 경우 상위 Directory는 File System에 의해 경로가 감춰진다.
초기에는 Directory 2가 Root Directory에 연결되어 있지 않다. 이 것을 연결해주는 것을 Mounting이라고 볼 수 있다.