태그: chmod

이번에는 존재하는 파일에 접근 권한을 변경하는 chmod와 fchmod 함수를 살펴봅시다.

#include <sys/types.h>

#include <sys/stat.h>

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

반환 값: 실패 시 -1, 성공 시 0

int fchmod(int fd, mode_t mode);

반환 값: 실패 시 -1, 성공 시 0

chmod나 fchmod로 파일의 접근 권한을 변경하기 위해서는 선행 조건으로 유효 사용자 ID가 파일의 쇼유자이거나 루트의 권한을 갖고 있어야 합니다.

 

두 개의 함수 모두 두 번째 입력 매개 변수는 설정할 모드로 다음처럼 매크로 상수로 정의하고 있습니다.

S_IRUSR: 사용자 읽기 권한

S_IWUSR: 사용자 쓰기 권한

S_IXUSR: 사용자 실행 권한

S_IRXWU: 사용자 읽기, 쓰기, 실행 권한

 

S_IRGRP: 그룹 읽기 권한

S_IWGRP: 그룹 쓰기 권한

S_IXGRP: 그룹 실행 권한

S_IRWXG: 그룹 읽기, 쓰기, 실행 권한

 

S_IROTH: 나머지 읽기 권한

S_IWOTH: 나머지 쓰기 권한

S_IXOTH: 나머지 실행 권한

S_IRWXO: 나머지 읽기, 쓰기, 실행 권한

 

S_ISUID set user id

S_ISGID set group id

S_ISVTX saved sticky bit

 

mode는 매크로 상수를 사용할 수도 있지만 8진수 세 자리로 간단히 권한을 부여할 수 있습니다. 8진수는 맨 앞 자리는 사용자, 두 번째는 그룹, 세 번째는 나머지를 의미하며 4는 읽기, 2는 쓰기 1은 실행 권한을 의미합니다. 따라서 0664는 사용자과 그룹은 읽기, 쓰기를 나머지에는 읽기 권한을 의미합니다.

 

다음은 파일의 권한을 변경하는 예제 코드입니다.

 

[그림 4.4] ex_chmod 실행 화면
[그림 4.4] ex_chmod 실행 화면