반응형
파일 접근 권한 검색 - 상수를 이용한 파일 접근 권한 검색
- 접근 권한 상수 목록 (운영체제에서 제공)
- 소유자의 접근권한 추출과 관련된 상수만 정의
- 소유자 외 그룹과 기타사용자의 접근권한은?
- shift 연산자를 이용하여 오른쪽으로 3비트,6비트 이동시켜서 AND 연산을 수행한다.
- st_mode & (S_IREAD >> 3)
- POSIX에서 정의한 접근권한 검색 관련 상수 목록
statAccess.c - 상수를 이용해 파일 접근 권한 검색
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> int main(void) { struct stat buf; stat("unix.txt", &buf); printf("Mode = %o (Hexdeacimal : %x)\n", (unsigned int)buf.st_mode, (unsigned int)buf.st_mode); if((buf.st_mode & S_IREAD) != 0) printf("unix.txt : user has a read permission\n"); if((buf.st_mode & (S_IREAD >> 3 )) != 0) printf("unix.txt : group has a read permission\n"); if ((buf.st_mode & S_IROTH) != 0 ) printf("unix.txt : other have a read permission\n"); return 0; } |
실행 결과
파일 접근 권한 검색 - 함수를 사용하여 파일 접근 권한 검색 access(2)
- path에 지정된 파일이 amode로 지정한 권한을 가졌는지 확인하고 리턴
- 접근 권한이 있으면 0을, 오류가 있으면 -1을 리턴
- 오류 메시지
- ENOENT : 파일이 없음
- EACCESS : 접근 권한이 없음
- amode 값
- R_OK : 읽기 권한 확인
- W_OK : 쓰기 권한 확인
- X_OK : 실행 권한 확인
- F_OK : 파일이 존재하는 지 확인
access 함수를 이용해 접근 권한 검색
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <sys/errno.h> #include <unistd.h> #include <stdio.h> extern int errno; int main(void) { int per; if (access("unix.bak", F_OK) == -1 && errno == ENOENT) printf("unix.bak : File not exist.\n"); per = access("unix.txt", R_OK); if (per == 0) printf("uinx.txit : Read permission is permitted. \n"); else if (per == -1 && errno == EACCES) printf("uinx.txt : Read permission is not permitted. \n"); return 0; } |
실행 결과
- access는 accessInfo의 실행 권한으로 권한을 확인한다.
반응형
'Programming > C/C++' 카테고리의 다른 글
C/Linux/링크 파일 생성 (0) | 2017.11.09 |
---|---|
C/Linux/파일 접근권한 변경 (0) | 2017.11.09 |
C/Linux 파일 종류 검색 (0) | 2017.11.02 |
C/Linux 파일 정보 검색 (0) | 2017.11.02 |
C/고수준 파일 입출력/임시 파일 생성 (0) | 2017.10.26 |