반응형

fchmod(2)

#include <sys/stat.h>

int fchmod(int fd, mode_t mode);

파일에 대해 owner, group, other user에 대한 읽기, 쓰기, 실행권한을 변경합니다. 디렉토리에 대해 owner, group, other user에 대한 읽기, 쓰기, 탐색권한을 변경합니다.

 

파라미터

fd
    - open(2) 등으로 열린 file descriptor
mode
    - 설정할 접근 권한 값으로 아래의 상수들에 대해 bit or 연산으로 조합할 수 있습니다.

 S_ISUID  (04000)  set-user-ID (set process effective user ID on execve(2))
 S_ISGID  (02000)  set-group-ID (set process effective group ID on execve(2))
 S_ISVTX  (01000)  sticky bit 
       - 디렉토리에 sticky bit가 설정되면, 파일의 권한 777이라도 파일의 owner외에는 삭제못함

 S_IRWXU : (00700) - owner에 대한 읽기, 쓰기, 실행권한 모두 설정
 S_IRUSR : (00400) - owner에 대한 읽기 권한
 S_IWUSR : (00200) - owner에 대한 쓰기 권한
 S_IXUSR : (00100) - owner에 대한 실행 권한
 S_IRWXG : (00070) - group에 대한 읽기, 쓰기, 실행권한 모두 설정
 S_IRGRP : (00040) - Group에 대한 읽기 권한
 S_IWGRP : (00020) - Group에 대한 쓰기 권한
 S_IXGRP : (00010) - Group에 대한 실행 권한
 S_IRWXO : (00007) - Other에 대한 읽기, 쓰기, 실행권한 모두 설정
 S_IROTH : (00004) - Other에 대한 읽기 권한
 S_IWOTH : (00002) - Other에 대한 쓰기 권한
 S_IXOTH : (00001) - Other에 대한 실행 권한

 

RETURN

0
    - 정상적으로 파일 또는 디렉토리의 권한을 변경하였습니다.

-1
    - 오류가 발생하였으며, 상세한 오류 내용 errno 전역변수에 설정되었습니다.

 EBADF : file descriptor가 유효하지 않습니다.
 EIO   : I/O 오류가 발생하였습니다.
 EPERM : 변경 권한이 없습니다.
 EROFS : path가 read only 파일 시스템에 있습니다.

 


활용 예제

 

Sample

#include <sys/stat.h>

    .....

    int fd;

    ......


    if(fchmod(fd, 0644) == -1) {
        fprintf(stderr, "chmod error: %s\n", strerror(errno));
        return -1;
    }
    
    ......

 


see also :

    File 속성 정보 및 파일 관리 Library

    Directory 정보 조회 및 관리 Library

    System Call File I/O Library

    Stream File I/O Library

 

반응형
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,