access

Autres langues

Langue: ko

Version: 1998년 1월 13일 (fedora - 25/11/07)

Autres sections - même nom

Section: 2 (Appels système)

이름

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일