ACCESS
Section: 시스템 호출
(2)
Updated: 1998년 1월 13일
Index
Return to Main Contents
이름
access - 파일의 사용자 권한을 체크한다.
사용법
#include <unistd.h>
int access(const char *pathname, int mode);
설명
access
는 프로세스가 파일에 읽고,쓰고 것이 가능한지 체크한다.
만일 경로명이 심볼릭링크라면 링크 테스트로 원본 파일을
체크하게 된다.
mode
는 하나이상의 R_OK , W_OK , X_OK and F_OK로 구성된 허상(mask)
이다.
R_OK, W_OK and X_OK
는 각각 파일의 존재, 읽기, 쓰기, 실행권한 체크를 요구한다. F_OK는
단지 파일의 존재유무의 체크만을 요구한다.
테스트는 파일이 위치하고 있는 디렉토리의 권한에 의존하고, 디렉토리와 심
볼릭 링크 파일도 같은 이치이다.
커널에의해 실행될때의 id보다는 프로세스의 실제 UID나 GID를 체크하게 된다.
이것은 set-UID프로그램실행을 허락하기 위함이다.
파일 타입이나 내용이 아닌 억세스 비트(access bits)만을 체트한다. 그러므로,
만일 디렉토리가 "쓰기 가능"이라면, 디렉토리안에 파일을 생성할 수 있지만,
디렉토리가 파일로써 쓰여질수 있는것은 아니다.
반환값
모든 요구하는 권한이 받아들여져 성공하게 되면, 0이 반환된다.
적어도 하나 이상이 거절되거나 에러가 나면 -1이 반환되고, errno가 적절하게 셋팅된다.
에러
- EACCES
-
요구한 접근이 파일에 의해 거절되거나 경로명안의 어느 한 디렉토리에 의해 거절되었다.
- EROFS
-
쓰기 권한이 read-only인 파일 시스템에 의해 거절되었다.
- EFAULT
-
경로명
의 위치가 당신이 접근할 수 있는 주소공간 밖에 있다.
- EINVAL
-
모드
가 적절하지 않다.
- ENAMETOOLONG
-
경로명
이 너무길다.
- ENOENT
-
경로명
의 디렉토리 구성이 접근 가능하지만 존재하지 않거나 깨진 링크이다.
- ENOTDIR
-
경로명
의 디렉토리가 실제 디렉토리가 아니다.
- ENOMEM
-
커널 메모리가 부족하다.
- ELOOP
-
너무많은 심볼릭링크가
경로명
안에 존재한다.
- EIO
-
I/O 에러.
RESTRICTIONS
access
는 요구한 접근타입(access types)의 호출이 실패하면, 다른 타입이 성공
한다하더라도 에러를 반환한다.
access
는 UID 맵핑이 가능한 NFS파일 시스템에서 작동하지 않을 수 있다. 왜냐하면
UID맵핑은 사용자가 볼 수없는 서버에서 실행되기 때문이다.
호환
SVID, AT&T, POSIX, X/OPEN, BSD 4.3
관련 항목
stat(2),
open(2),
chmod(2),
chown(2),
setuid(2),
setgid(2)
역자
ASPLINUX<man@asp-linux.co.kr>, 2000년 7월 29일
Index
- 이름
-
- 사용법
-
- 설명
-
- 반환값
-
- 에러
-
- RESTRICTIONS
-
- 호환
-
- 관련 항목
-
- 역자
-
This document was created by
man2html,
using the manual pages.
Time: 08:06:59 GMT, March 25, 2004