파일 정보의 획득
- 파일 관련 각종 정보를 알아볼 수 있는 시스템콜
int stat (const char *pathname, struct stat *buf);
int fstat (int filedes, struct stat *buf); // open된 파일에 대해
st_dev, st_ino : identifier (논리적 장치번호와 inode 번호) st_mode : permission mode st_nlink : link의 수 st_uid, st_gid : user의 uid와 gid st_rdev : file이 장치인 경우만 사용 st_size : 논리적 크기 st_atime, st_mtime, st_ctime : file의 최근 access time, update time, stat 구조의 update time st_blksize : I/O block 크기 st_blocks : 파일에 할당된 block의 수 |
Permission
- if(s.st_mode&S_IRUSR) // 소유자 읽기 권한
- if(S_ISREG(s.st_mode));
- S_ISREG : 파일인지
- S_ISDIR : 디렉토리인지
- S_ISLNK : 링크가 있는지
- S_ISUID : 04000인지 - 실행이 시작되면, 소유자의 uid가 euid가 된다.
- S_ISGID : 02000인지 - 실행이 시작되면, 소유자의 gid가 egid가 된다.
사용자와 소유권
- 소유권자 : 파일을 생성한 사람, user-id인 uid로 구분
- 사용자 : 파일을 사용하는 사람, euid로 구분
access 시스템 호출
- 특정 파일에 대한 읽기/쓰기/실행이 가능한지 확인하는 시스템콜
- amode : R_OK , W_OK, X_OK, 또는 F_OK
- euid가 아니라 uid에 근거하여 process가 file에 접근 가능한지를 표현;
int access (cosnt char *pathname, int amode);
return : 0 / -1
chmod
- 특정 파일의 access permission을 변경하는 시스템콜 (소유자만 사용 가능)
int chmod(const char *pathname, mode_t mode);
int fchmod(int fd, mode_t mode);
link 시스템 호출
- 기존 파일에 새로운 이름을 부여하는 시스템콜
- 한 파일에 하나 이상의 이름 : 각 이름을 ‘hard link’라고 부름
- link count : link의 수
int link (const char *original_path, const char *new_path);
return : 0 / -1(new path가 존재하는 경우)
- 이름을 삭제하는 시스템콜 : unlink(”a.out”);
- link를 제거 → link_count- -
- 만약, link count가 0이 되면 실제로 제거(free block으로)
Symbolic link
- symbol형 link :
- link의 제한점 : 디렉토리에 대한 링크 생성 불가.
int symlink(const char *realname, const char *symname);
return : 0 or -1(symname이 존재하면)
- readlink 사용 : symname안에 있는 내용을 보고 싶으면.
int readlink (const char *symname, char *buffer, size_t buffsize);
- lstat 사용 : symbolic link가 가리키는 파일이 아닌 symbolic link 자체의 파일 정보를 전달
int lstat (const char *linkname, struct stat *buf);
'programming > Unix' 카테고리의 다른 글
[Unix Programming] 6. 프로세스 정보 (1) | 2024.12.11 |
---|---|
[Unix Programming] 5. 시스템 정보 (0) | 2024.12.11 |
[Unix Programming] 4. 파일 입출력 (1) | 2024.12.09 |
[Unix Programming] 2. 디렉터리 다루기 (0) | 2024.12.09 |
[Unix Programming] 개요 (0) | 2024.12.09 |