티스토리 뷰
*** 파일시스템의 기본 구조
부트 블록 | 수퍼 블록 | i-node 구조체 | 데이터 블록 |
*** i-note가 가지고 있는 각 파일들의 정보
파일 정보 | 설명 |
파일 유형(type) | 파일이 정규 파일(regular file)인지, 디렉토리인지 등에 관한 정보 |
파일의 접근 권한(permission) | 파일 소유주, 그룹, 다른 이용자의 파일에 대한 접근 권한 여부. (읽기, 쓰기, 실행) |
파일의 크기 | 파일의 크기 |
파일의 데이터 블록의 디스크 주소 | 파일의 실제 데이터가 저장도어 있는 물리적 디스크의 주소. i-node는 파일의 첫 번째 블록에 대한 주소를 가지고 있다. 첫 번째 데이터 블록은 두 번째 블록에 대한 주소를 가지고 있다. 이런 식으로 링크드 리스트 구조를 지닌다. |
파일의 소유자 | 파일의 소유자와 파일 소유 그룹에 대한 정보 |
파일 접근 시간 | 가장 최근 파일에 접근한 시간, 파일 변경 시간, i-node가 변경된 시간에 대한 정보를 지님 |
파일에 대한 링크 수 | 하드 링크 된 총 개수 |
*** 파일의 유형, 속성, 권한 설정 매크로
매크로 | 8진수 | 세부 사항 |
S_IFSOCK | 0140000 | 소켓 |
S_IFLNK | 0120000 | 심볼릭 링크 |
S_IFREG | 0100000 | 정규 파일 |
S_IFBLK | 0060000 | 블록 특수 파일 |
S_IFDIR | 0040000 | 디렉토리 |
S_IFCHR | 0020000 | 문자 특수 파일 |
S_IFIFO | 0010000 | FIFO |
S_ISUID | 0004000 | Set-UID bit |
S_ISGID | 0002000 | Set-GID bit |
S_ISVTX | 0001000 | Sticky bit |
S_IRWXU | 0000700 | 파일 소유주의 읽기, 쓰기, 실행 권한 |
S_IRUSR | 0000400 | 파일 소유주의 읽기 권한 |
S_IWUSR | 0000200 | 파일 소유주의 쓰기 권한 |
S_IXUSR | 0000100 | 파일 소유주의 실행 권한 |
S_IRWXG | 0000070 | 파일 소유 그룹의 읽기, 쓰기, 실행 권한 |
S_IRGRP | 0000040 | 파일 소유 그룹의 읽기 권한 |
S_IWGRP | 0000020 | 파일 소유 그룹의 쓰기 권한 |
S_IXGRP | 0000010 | 파일 소유 그룹의 실행 권한 |
S_IRWXO | 0000007 | 다른 이용자의 읽기, 쓰기, 실행 권한 |
S_IROTH | 0000004 | 다른 이용자의 읽기 권한 |
S_IWOTH | 0000002 | 다른 이용자의 쓰기 권한 |
S_IXOTH | 0000001 | 다른 이용자의 실행 권한 |
*** Sticky bit(= saved-text bit)
- 일반 파일 설정: 유닉스 시스템은 이 파일 실행시 스왑 역역에 저장하여 빈번한 실행시 보다 빠르게 실행 되도록 하였으나, 시스템 성능 향상 등으로 인하여 현재는 별 의미가 없음
- 디렉토리 설정: Sticky bit가 설정된 디렉토리 안에 있는 파일을 지우거나 이름을 바꾸기 위해서는 쓰기 권한이 있더라도 소유주가 아니면 안된다. 소유주나 슈버 유저만이 파일을 지우거나 파일의 이름을 바꿀 수 있다. (예: /tmp - 권한의 마지막 t 는 Sticky bit를 의미)
* 소유주가 아니더라도 쓰기 권한이 있다면 만드는 것은 가능
* 디렉토리에 설정된 Sticky bit는 공용 디렉토리에 다른 사용자의 파일을 함부로 지우는 것을 막아준다
'Linux' 카테고리의 다른 글
wait(), waitpid() (0) | 2019.08.24 |
---|---|
umask() (0) | 2019.08.22 |
time 명령으로 프로그램 실행시간 측정 (0) | 2019.08.22 |
vim 추천글(플러그인) (0) | 2019.08.21 |
open 함수 (0) | 2019.08.20 |