access 시스템 호출


access 시스템 호출은 소유자가 해당 파일의 읽기, 쓰기, 실행 접근 권한을 가졌는지 조사한다.


#include <unistd.h>


int access(const char *pathname, int amode);


첫 번째 인수는 조사하려는 파일명이다.

두 번째 인수는 접근 방법을 나타내는 값으로 다음과 같다.

  • R_OK : 호출 프로세스가 읽기 접근 권한을 가지고 있는가?
  • W_OK : 호출 프로세스가 쓰기 접근 권한을 가지고 있는가?
  • X_OK : 호출 프로세스가 파일을 실행시킬 수 있는가?
  • F_OK : 파일이 존재하는가?
이 시스템 호출의 반환값은 두 번째 인수에 대한 대답에 YES라면 0을 반환하고, 오류 발생시에는 -1을 반환한다.


chmod 시스템 호출


#include <sys/types.h>

#include <sys/stat.h>


int chmod(const char *pathname, mode_t newmode);


chmod 시스템 호출은 기존 파일의 허가를 변경한다.

이 시스템 호출은 허가를 변경할 수 있는 권한을 가진 경우, 즉 파일 소유자나 수퍼 사용자만이 사용할 수 있다.


첫 번째 인수는 변경하려는 파일명이다.

두 번째 인수는 변경할 새로운 파일 모드이다.


if(chmod(pathname, 0644) == -1)

printf("파일 허가 변경에 실패하였습니다.\n");


위와 같이 변경할 새로운 파일 모드를 입력하면 된다.



chown 시스템 호출


#include <sys/types.h>

#include <unistd.h>


int chown(const char *pathname, uid_t owner_id, gid_t group_id);


chown은 파일의 소유자와 그룹을 함께 변경할 수 있다.


첫 번째 인수는 변경하려는 파일명이다.

두 번째 인수는 새 소유자를 나타낸다.

세 번째 인수는 새 그룹을 나타낸다.


성공 시 0을 반환하고, 오류 발생 시 -1을 반환한다.


uid_t와 gid_t는 <sys/types.h>에 정의된 유형들이다.


chown은 파일의 소유자나 수퍼 사용자만 사용할 수 있고, 한 번 소유권이 바뀌면 원래 사용자의 사용자 식별 번호와 파일의 사용자 식별 번호가 서로 달라지기 때문에 이를 취소할 수 없다.

'개발 > System' 카테고리의 다른 글

파일 정보의 획득  (0) 2012.10.29
다수의 이름을 갖는 파일  (0) 2012.10.29
다중 사용자 환경에서의 파일  (0) 2012.10.28
리눅스의 파일 시스템  (0) 2012.10.28
UNIX 파일 접근 프리미티브 : 파일 제거  (0) 2012.10.28

+ Recent posts