메뉴

문서정보

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=chmod">chmod</a>(2)

1장. chmod(2)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 에러
1.5절. 예제

파일의 권한 변경


1.1절. 사용법

#include <sys/types.h>
#include <sys/stat.h>

int chmod(const char *path, mode_t mode);
		


1.2절. 설명

path로 주어진 파일의 모드를 mode 모드로 변경한다. 모드는 다음과 같이 or'ing 에 의해서 변경할수 있다.

S_ISUID

04000 실행을 위한 사용자 ID 설정

S_ISGID

02000 실행을 위한 그룹 ID 설정

S_ISVTX

01000 스티키 비트

S_IRUSR

04000 유저에 대하여 읽기 권한

S_IWUSR

02000 유저에 대하여 쓰기권한

S_IXUSR

00100 유저에 대하여 실행/접근 권한

S_IRGRP

00040 그룹에 대하여 읽기 권한

S_IWGRP

00020 그룹에 대하여 쓰기권한

S_IXGRP

00010 그룹에 대하여 실행/접근 권한

S_IXGRP

00010 그룹에 대하여 실행/접근 권한

S_IROTH

00004 다른 사람에 대하여 읽기 권한

S_IWOTH

00002 다른 사람에 대하여 쓰기 권한

S_IXOTH

00001 다른 사람에 대하여 실행/접근 권한

프로세스의 유효 UID 는 0(root)이거나 파일의 소유자와 같아야 한다.

프로세스의 유효 UID 가 0이 아니고 파일의 그룹의 프로세스의 그룹 유효 ID나 추가 그룹 ID중 하나가 다르다면 S_ISGID 비트는 꺼지게 된다. 그러나 에러를 유발하지는 않는다.


1.3절. 반환값

성공할경우 0을 실패했을경우에는 -1을 반환하며, 적당한 errno 값을 설정한다.


1.4절. 에러

EPERM

유효 UID가 파일의 소유자와 같지 않고 0이 아니다.

EROFS

파일이 읽기전용 파일시스템상에 위치하고 있다.

EFAULT

path가 접근 불가능한 공간에 있다.

ENOENT

파일이 존재하지 않는다.

ENOTDIR

path가 디렉토리가 아니다.

EACCES

접근(찾기) 권한이 없다.

EBADF

파일 지정자가 적절하지 않다.


1.5절. 예제

#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>

int main(int argc, char **argv)
{
    if(chmod(argv[1], S_IRUSR|S_IWUSR) < 0)
    {
        perror("chmod error :");
        exit(0);
    }
}
		
인자로 주어진 파일을 유저에 대하여 읽기/쓰기 권한을 준다. 그룹이나 다른 사람에게는 아무런 권한도 주어지지 않는다.