오늘은 C언어에서 파일 권한 변경에 대해 알아보겠습니다.
리눅스에서는 파일에 권한을 부여하여 사용자에 따라서 읽기/쓰기/실행을 할 수 있도록 컨트롤할 수 있습니다.
권한이 없다면, 임의의 사용자가 모든 파일에 접근하여 문제를 야기할 수 있습니다.
윈도우에서도 관리자 권한이라는 것을 보셨을 겁니다.
이 기능 또한 임의의 사용자가 특정 설정을 변경할 수 없도록 해놓은 기능입니다.
C언어에서 이 권한을 어떻게 변경하는지에 대해 알아보겠습니다.
리눅스 권한은 owner/group/other 에 따라 권한이 나뉘고, 그 하위에는 읽기/쓰기/실행으로 나뉘게됩니다
권한은 이진수로 체크를 하여 십진수로 보여집니다.
하위 권한별 값은 읽기(r) = 4, 쓰기(w) = 2, 실행(x) = 1 입니다. 합으로 계산하여 7이 됩니다.
제일 앞의 숫자가 owner 두번째의 숫자가 group 세번째의 숫자가 other 에 대한 권한입니다.
값이 777이라면 owner의 읽기/쓰기/실행, group의 읽기/쓰기/실행, other의 읽기/쓰기/실행 권한이 부여됩니다.
리눅스 상에서는 rwxrwxrwx 가 됩니다.
값이 641이라면 owner의 읽기/쓰기, group의 읽기, other의 실행 권한이 부여됩니다.
리눅스 상에서는 rw-r----x 가 됩니다
C언어에서는 chmod 함수를 사용하여 권한을 부여할 수 있습니다.
함수의 원형은 아래와 같습니다.
int chmod(const char *filepath, mode_t mode);
첫번째 인자에는 파일을 입력합니다.
두번째 인자에는 변경할 권한을 입력합니다.
리눅스에서 touch 명령어로 파일을 만들면 기본 권한은 644(rw-r--r--)가 됩니다
아래의 예제 프로그램을 간단히 만들어서 실행해보았습니다.
결과는 아래와 같습니다.
오늘 포스팅은 여기까지입니다.
'프로그래밍 > C' 카테고리의 다른 글
[C] 문자열에서 CRLF 찾는 방법 (0) | 2023.03.30 |
---|---|
[C] memcpy vs sprintf 차이? (0) | 2023.03.08 |
[C] 연산자 우선순위 (0) | 2022.11.29 |
[C] 대, 소문자 변환 함수 tolower() toupper() (0) | 2022.11.17 |
[C] undefined reference to `clock_gettime' (0) | 2022.11.16 |