반응형
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 :
반응형
'C언어 header > sys | stat.h' 카테고리의 다른 글
mkdir(2) - directory 생성 (0) | 2019.10.04 |
---|---|
umask(2) - 파일 및 디렉토리의 생성권한을 통제하는 mask값 설정 (0) | 2019.09.29 |
chmod(2) - 파일의 접근 권한(permission) 변경 (0) | 2019.09.29 |